Changeset 4133
- Timestamp:
- Apr 20, 2022, 11:44:24 PM (3 years ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/thermcell_dq.F90
r2311 r4133 17 17 !======================================================================= 18 18 19 integer ngrid,nlay,impl 20 21 real ptimestep 22 real masse(ngrid,nlay),fm(ngrid,nlay+1) 23 real entr(ngrid,nlay) 24 real q(ngrid,nlay) 25 real dq(ngrid,nlay) 26 integer lev_out ! niveau pour les print 27 28 real qa(ngrid,nlay),detr(ngrid,nlay),wqd(ngrid,nlay+1) 29 19 ! arguments 20 integer, intent(in) :: ngrid,nlay,impl 21 real, intent(in) :: ptimestep 22 real, intent(in), dimension(ngrid,nlay) :: masse 23 real, intent(inout), dimension(ngrid,nlay) :: entr,q 24 real, intent(in), dimension(ngrid,nlay+1) :: fm 25 real, intent(out), dimension(ngrid,nlay) :: dq,qa 26 integer, intent(in) :: lev_out ! niveau pour les print 27 28 ! Local 29 real, dimension(ngrid,nlay) :: detr,qold 30 real, dimension(ngrid,nlay+1) :: wqd,fqa 30 31 real zzm 31 32 32 integer ig,k 33 33 real cfl 34 34 35 real qold(ngrid,nlay),fqa(ngrid,nlay+1)36 35 integer niter,iter 37 36 CHARACTER (LEN=20) :: modname='thermcell_dq' … … 43 42 call thermcell_dq_o(ngrid,nlay,impl,ptimestep,fm,entr, & 44 43 & masse,q,dq,qa,lev_out) 45 return44 goto 1000 46 45 endif 47 46 … … 143 142 enddo 144 143 145 return 144 1000 continue 145 RETURN 146 146 end 147 147 -
LMDZ6/trunk/libf/phylmd/thermcell_flux2.F90
r4089 r4133 2 2 ! $Id$ 3 3 ! 4 SUBROUTINE thermcell_flux2(ngrid, klev,ptimestep,masse, &4 SUBROUTINE thermcell_flux2(ngrid,nlay,ptimestep,masse, & 5 5 & lalim,lmax,alim_star, & 6 6 & entr_star,detr_star,f,rhobarz,zlev,zw2,fm,entr, & … … 16 16 IMPLICIT NONE 17 17 18 ! arguments 19 INTEGER, intent(in) :: ngrid,nlay 20 REAL, intent(in) :: ptimestep 21 REAL, intent(in), dimension(ngrid,nlay) :: masse 22 INTEGER, intent(in), dimension(ngrid) :: lalim,lmax 23 REAL, intent(in), dimension(ngrid,nlay) :: alim_star,entr_star,detr_star 24 REAL, intent(in), dimension(ngrid) :: f 25 REAL, intent(in), dimension(ngrid,nlay) :: rhobarz 26 REAL, intent(in), dimension(ngrid,nlay+1) :: zw2,zlev 27 ! FH : laisser ca le temps de verifier qu'on a bien fait de commenter les 28 ! lignes faisant apparaitre zqla, zmax ... 29 ! REAL, intent(in), dimension(ngrid) :: zmax(ngrid) 30 ! enlever aussi zqla 31 REAL, intent(in), dimension(ngrid,nlay) :: zqla ! not used 32 integer, intent(in) :: lev_out, lunout1 33 34 REAL,intent(out), dimension(ngrid,nlay) :: entr,detr 35 REAL,intent(out), dimension(ngrid,nlay+1) :: fm 36 37 ! local 18 38 INTEGER ig,l 19 INTEGER ngrid,klev 20 21 REAL alim_star(ngrid,klev),entr_star(ngrid,klev) 22 REAL detr_star(ngrid,klev) 23 REAL zw2(ngrid,klev+1) 24 REAL zlev(ngrid,klev+1) 25 REAL masse(ngrid,klev) 26 REAL ptimestep 27 REAL rhobarz(ngrid,klev) 28 REAL f(ngrid) 29 INTEGER lmax(ngrid) 30 INTEGER lalim(ngrid) 31 REAL zqla(ngrid,klev) 32 REAL zmax(ngrid) 33 39 integer igout,lout 40 REAL zfm 34 41 integer ncorecfm1,ncorecfm2,ncorecfm3,ncorecalpha 35 42 integer ncorecfm4,ncorecfm5,ncorecfm6,ncorecfm7,ncorecfm8 36 43 37 38 REAL entr(ngrid,klev),detr(ngrid,klev)39 REAL fm(ngrid,klev+1)40 REAL zfm41 42 integer igout,lout43 integer lev_out44 integer lunout145 44 46 45 REAL f_old,ddd0,eee0,ddd,eee,zzz … … 90 89 91 90 if (check_debug) then 92 do l=1, klev91 do l=1,nlay 93 92 do ig=1,ngrid 94 93 if (l.le.lmax(ig)) then … … 118 117 !------------------------------------------------------------------------- 119 118 120 do l=1, klev119 do l=1,nlay 121 120 entr(:,l)=f(:)*(entr_star(:,l)+alim_star(:,l)) 122 121 detr(:,l)=f(:)*detr_star(:,l) … … 135 134 136 135 fm(:,1)=0. 137 do l=1, klev136 do l=1,nlay 138 137 do ig=1,ngrid 139 138 if (l.lt.lmax(ig)) then … … 154 153 ! autres corrections. 155 154 156 do l=1, klev155 do l=1,nlay 157 156 do ig=1,ngrid 158 157 if (detr(ig,l).gt.fm(ig,l)) then … … 164 163 165 164 ! if (prt_level.ge.10) & 166 ! & call printflux(ngrid, klev,lunout1,igout,f,lmax,lalim, &165 ! & call printflux(ngrid,nlay,lunout1,igout,f,lmax,lalim, & 167 166 ! & ptimestep,masse,entr,detr,fm,'2 ') 168 167 … … 178 177 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 179 178 180 do l=1, klev179 do l=1,nlay 181 180 182 181 do ig=1,ngrid … … 196 195 !------------------------------------------------------------------------- 197 196 198 ! do l=1, klev197 ! do l=1,nlay 199 198 do ig=1,ngrid 200 199 if (fm(ig,l+1).lt.0.) then … … 215 214 !------------------------------------------------------------------------- 216 215 if (iflag_thermals_optflux==0) then 217 ! do l=1, klev216 ! do l=1,nlay 218 217 do ig=1,ngrid 219 218 if (l.ge.lalim(ig).and.l.le.lmax(ig) & … … 241 240 !------------------------------------------------------------------------- 242 241 if (iflag_thermals_optflux==0) then 243 ! do l=1, klev242 ! do l=1,nlay 244 243 do ig=1,ngrid 245 244 if ((fm(ig,l+1).gt.fm(ig,l)).and.(l.gt.lalim(ig))) then … … 264 263 if(1.eq.1) then 265 264 266 ! do l=1, klev265 ! do l=1,nlay 267 266 268 267 … … 337 336 !------------------------------------------------------------------------- 338 337 339 ! do l=1, klev338 ! do l=1,nlay 340 339 do ig=1,ngrid 341 340 if (fm(ig,l+1).lt.0.) then … … 386 385 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 387 386 388 ! do l=1, klev387 ! do l=1,nlay 389 388 do ig=1,ngrid 390 389 if (zw2(ig,l+1).gt.1.e-10) then … … 393 392 f_old=fm(ig,l+1) 394 393 fm(ig,l+1)=zfm 395 ! zw2(ig,l+1)=0.396 ! zqla(ig,l+1)=0.397 394 detr(ig,l)=detr(ig,l)+f_old-fm(ig,l+1) 398 395 ! lmax(ig)=l+1 … … 415 412 416 413 ! if (prt_level.ge.10) & 417 ! & call printflux(ngrid, klev,lunout1,igout,f,lmax,lalim, &414 ! & call printflux(ngrid,nlay,lunout1,igout,f,lmax,lalim, & 418 415 ! & ptimestep,masse,entr,detr,fm,'8 ') 419 416 … … 426 423 if (1.eq.1) then 427 424 labort_physic=.false. 428 do l=1, klev-1425 do l=1,nlay-1 429 426 do ig=1,ngrid 430 427 eee0=entr(ig,l) … … 507 504 508 505 ! if (prt_level.ge.10) & 509 ! & call printflux(ngrid, klev,lunout1,igout,f,lmax,lalim, &506 ! & call printflux(ngrid,nlay,lunout1,igout,f,lmax,lalim, & 510 507 ! & ptimestep,masse,entr,detr,fm,'fin') 511 508 512 509 513 return510 RETURN 514 511 end -
LMDZ6/trunk/libf/phylmd/thermcell_main.F90
r4129 r4133 61 61 ! 15 and 17 correspond to the activation of the stratocumulus "bidouille" 62 62 ! 63 ! Using 64 ! abort_physic 65 ! iso_verif_aberrant_encadre 66 ! iso_verif_egalite 67 ! test_ltherm 68 ! thermcell_closure 69 ! thermcell_dq 70 ! thermcell_dry 71 ! thermcell_dv2 72 ! thermcell_env 73 ! thermcell_flux2 74 ! thermcell_height 75 ! thermcell_plume 76 ! thermcell_plume_5B 77 ! thermcell_plume_6A 78 ! 63 79 !======================================================================= 64 80 … … 75 91 real, intent(in), dimension(ngrid,nlay) :: pt,pu,pv,po,pplay,pphi,zpspsk 76 92 real, intent(in), dimension(ngrid,nlay+1) :: pplev 93 integer, intent(out), dimension(ngrid) :: lmax 77 94 real, intent(out), dimension(ngrid,nlay) :: pdtadj,pduadj,pdvadj,pdoadj,entr0,detr0 78 95 real, intent(out), dimension(ngrid,nlay) :: ztla,zqla,zqta,zqsatth,zthl 79 96 real, intent(out), dimension(ngrid,nlay+1) :: fm0,zw2,fraca 80 real, intent( out), dimension(ngrid) :: zmax0,f097 real, intent(inout), dimension(ngrid) :: zmax0,f0 81 98 real, intent(out), dimension(ngrid,nlay) :: ztva,ztv 82 99 logical, intent(in) :: debut 100 real,intent(out), dimension(ngrid,nlay) :: ratqscth,ratqsdiff 83 101 84 102 real, intent(out), dimension(ngrid) :: pcon … … 105 123 logical sorties 106 124 real, dimension(ngrid) :: linter,zmix, zmax_sec 107 integer,dimension(ngrid) :: lm ax,lmin,lmix,lmix_bis,nivcon125 integer,dimension(ngrid) :: lmin,lmix,lmix_bis,nivcon 108 126 real, dimension(ngrid,nlay) :: ztva_est 109 127 real, dimension(ngrid,nlay) :: deltaz,zlay,zh,zdthladj,zu,zv,zo,zl,zva,zua,zoa 110 128 real, dimension(ngrid,nlay) :: zta,zha,q2,wq,wthl,wthv,thetath2,wth2 111 real, dimension(ngrid,nlay) :: r atqscth,ratqsdiff,rho,masse129 real, dimension(ngrid,nlay) :: rho,masse 112 130 real, dimension(ngrid,nlay+1) :: zw_est,zlev 113 131 real, dimension(ngrid) :: wmax,wmax_tmp … … 136 154 ! --------------- 137 155 ! 138 139 156 fm=0. ; entr=0. ; detr=0. 140 157 … … 706 723 real seuil 707 724 character*21 comment 725 708 726 seuil=0.25 709 727
Note: See TracChangeset
for help on using the changeset viewer.