Changeset 5885 for LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/yamada_c.F90
- Timestamp:
- Nov 24, 2025, 6:39:59 PM (6 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/yamada_c.F90
r5876 r5885 2 2 ! $Header$ 3 3 ! 4 MODULE yamada_c_mod 5 PRIVATE 6 7 INTEGER, SAVE :: iflag_tke_diff=0 8 !$OMP THTREADPRIVATE(iflag_tke_diff) 9 10 PUBLIC :: yamada_c_init, yamada_c 11 12 CONTAINS 13 14 SUBROUTINE yamada_c_init 15 USE ioipsl_getin_p_mod, ONLY : getin_p 16 IMPLICIT NONE 17 18 CALL getin_p('iflag_tke_diff',iflag_tke_diff) 19 20 END SUBROUTINE yamada_c_init 21 22 4 23 SUBROUTINE yamada_c(klon, ngrid,timestep,plev,play & 5 24 & ,pu,pv,pt,d_u,d_v,d_t,cd,q2,km,kn,kq,d_t_diss,ustar & 6 25 & ,iflag_pbl) 26 !$gpum horizontal klon ngrid 7 27 USE dimphy, ONLY: klev 8 28 USE print_control_mod, ONLY: prt_level 9 USE ioipsl_getin_p_mod, ONLY : getin_p10 29 USE yamada4_mod, ONLY : vdif_q2 11 30 USE yomcst_mod_h … … 80 99 integer nlay,nlev 81 100 82 logical first83 integer ipas84 save first,ipas101 !ym logical first 102 !ym integer ipas 103 !ym save first,ipas 85 104 !FH/IM data first,ipas/.true.,0/ 86 data first,ipas/.false.,0/87 ! $OMP THREADPRIVATE( first,ipas)88 INTEGER, SAVE :: iflag_tke_diff=089 ! $OMP THREADPRIVATE(iflag_tke_diff)105 !ym data first,ipas/.false.,0/ 106 !ym!$OMP THREADPRIVATE( first,ipas) 107 !ym INTEGER, SAVE :: iflag_tke_diff=0 108 !ym!$OMP THREADPRIVATE(iflag_tke_diff) 90 109 91 110 … … 102 121 real l(klon,klev+1) 103 122 real leff(klon,klev+1) 104 real,allocatable,save :: l0(:) 105 !$OMP THREADPRIVATE(l0) 123 real l0(klon) 124 !ym real,allocatable,save :: l0(:) 125 !ym!$OMP THREADPRIVATE(l0) 106 126 real sq(klon),sqz(klon),zz(klon,klev+1) 107 127 integer iter 108 128 109 real ric,rifc,b1,kap 110 save ric,rifc,b1,kap 111 data ric,rifc,b1,kap/0.195,0.191,16.6,0.4/ 112 !$OMP THREADPRIVATE(ric,rifc,b1,kap) 129 !ym real ric,rifc,b1,kap 130 !ym save ric,rifc,b1,kap 131 !ym data ric,rifc,b1,kap/0.195,0.191,16.6,0.4/ 132 !ym!$OMP THREADPRIVATE(ric,rifc,b1,kap) 133 real, parameter :: ric=0.195,rifc=0.191,b1=16.6,kap=0.4 113 134 real frif,falpha,fsm 114 135 real fl,zzz,zl0,zq2,zn2 … … 117 138 real lyam(klon,klev),knyam(klon,klev) 118 139 real w2yam(klon,klev),t2yam(klon,klev) 119 logical,save :: firstcall=.true.120 ! $OMP THREADPRIVATE(firstcall)140 !ym logical,save :: firstcall=.true. 141 !ym!$OMP THREADPRIVATE(firstcall) 121 142 CHARACTER(len=20),PARAMETER :: modname="yamada_c" 122 143 REAL, DIMENSION(klon,klev+1) :: fluxu,fluxv,fluxt … … 129 150 falpha(ri)=1.318*(0.2231-ri)/(0.2341-ri) 130 151 fsm(ri)=1.96*(0.1912-ri)*(0.2341-ri)/((1.-ri)*(0.2231-ri)) 152 !ym pas glop! pas glop! 153 !ym fl(zzz,zl0,zq2,zn2)= & 154 !ym & max(min(zl0(ig)*kap*zlev(ig,k)/(kap*zlev(ig,k)+l0(ig)) & 155 !ym & ,0.5*sqrt(q2(ig,k))/sqrt(max(n2(ig,k),1.e-10))) ,1.) 131 156 fl(zzz,zl0,zq2,zn2)= & 132 & max(min( l0(ig)*kap*zlev(ig,k)/(kap*zlev(ig,k)+l0(ig)) &133 & ,0.5*sqrt( q2(ig,k))/sqrt(max(n2(ig,k),1.e-10))) ,1.)157 & max(min(zl0*kap*zzz/(kap*zzz+zl0) & 158 & ,0.5*sqrt(zq2)/sqrt(max(zn2,1.e-10))) ,1.) 134 159 135 160 136 161 okiophys=klon==1 137 if (firstcall) then138 CALL getin_p('iflag_tke_diff',iflag_tke_diff)139 allocate(l0(klon))140 firstcall=.false.141 endif162 !ym if (firstcall) then 163 !ym CALL getin_p('iflag_tke_diff',iflag_tke_diff) 164 !ym allocate(l0(klon)) 165 !ym firstcall=.false. 166 !ym endif 142 167 143 168 IF (ngrid<=0) RETURN ! Bizarre : on n a pas ce probeleme pour coef_diff_turb … … 175 200 do k=1,klev-1 176 201 zlay(:,k+1)=zlay(:,k)+0.5*RCPD*(teta(:,k)+teta(:,k+1))*(exner(:,k)-exner(:,k+1))/RG 177 zlev(:,k)=0.5*(zlay(:,k)+zlay(:,k+1)) ! PASBO 202 zlev(:,k+1)=0.5*(zlay(:,k)+zlay(:,k+1)) ! PASBO 203 ! ym bugfix : zlev(:,k) => zlev(:,k+1) 178 204 enddo 179 205 … … 220 246 221 247 222 ipas=ipas+1248 !ym ipas=ipas+1 223 249 224 250 … … 312 338 l0(ig)=0.2*sqz(ig)/sq(ig) 313 339 enddo 340 l(:,1) = 0. 341 l(:,klev+1) = 0. 314 342 do k=2,klev 315 343 do ig=1,ngrid … … 326 354 327 355 l0(:)=150. 356 l(:,1) = 0. 357 l(:,klev+1) = 0. 328 358 do k=2,klev 329 359 do ig=1,ngrid … … 480 510 RETURN 481 511 END SUBROUTINE yamada_c 512 513 END MODULE yamada_c_mod
Note: See TracChangeset
for help on using the changeset viewer.
