Changeset 4146 for trunk/LMDZ.GENERIC/libf/phygeneric/vdifc_mod.F
- Timestamp:
- Mar 19, 2026, 2:35:46 PM (3 weeks ago)
- File:
-
- 1 edited
-
trunk/LMDZ.GENERIC/libf/phygeneric/vdifc_mod.F (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/libf/phygeneric/vdifc_mod.F
r3236 r4146 8 8 & ptimestep,pcapcal,lecrit, 9 9 & pplay,pplev,pzlay,pzlev,pz0, 10 & pu,pv,p h,pq,ptsrf,pemis,pqsurf,10 & pu,pv,pt,ph,pq,ptsrf,pemis,pqsurf, 11 11 & pdhfi,pdqfi,pfluxsrf, 12 12 & pdudif,pdvdif,pdhdif,pdtsrf,sensibFlux,pq2, … … 18 18 use surfdat_h, only: dryness 19 19 use tracer_h, only: igcm_h2o_vap, igcm_h2o_ice 20 use comcstfi_mod, only: g, r , cpp, rcp20 use comcstfi_mod, only: g, rd_ref, cppd_ref, rcp_ref 21 21 use callkeys_mod, only: water,tracer,nosurf 22 22 … … 53 53 REAL,INTENT(IN) :: pplay(ngrid,nlay),pplev(ngrid,nlay+1) 54 54 REAL,INTENT(IN) :: pzlay(ngrid,nlay),pzlev(ngrid,nlay+1) 55 REAL,INTENT(IN) :: pu(ngrid,nlay),pv(ngrid,nlay),ph(ngrid,nlay) 55 REAL,INTENT(IN) :: pu(ngrid,nlay),pv(ngrid,nlay) 56 REAL,INTENT(IN) :: pt(ngrid,nlay),ph(ngrid,nlay) 56 57 REAL,INTENT(IN) :: ptsrf(ngrid),pemis(ngrid) 57 58 REAL,INTENT(IN) :: pdhfi(ngrid,nlay) … … 179 180 ENDDO 180 181 181 zcst1=4.*g*ptimestep/( R*R)182 zcst1=4.*g*ptimestep/(rd_ref*rd_ref) 182 183 DO ilev=2,nlev-1 183 184 DO ig=1,ngrid 184 185 zb0(ig,ilev)=pplev(ig,ilev)* 185 s (pplev(ig,1)/pplev(ig,ilev))**rcp /186 s (pplev(ig,1)/pplev(ig,ilev))**rcp_ref / 186 187 s (ph(ig,ilev-1)+ph(ig,ilev)) 187 188 zb0(ig,ilev)=zcst1*zb0(ig,ilev)*zb0(ig,ilev)/ … … 190 191 ENDDO 191 192 DO ig=1,ngrid 192 zb0(ig,1)=ptimestep*pplev(ig,1)/( R*ptsrf(ig))193 zb0(ig,1)=ptimestep*pplev(ig,1)/(rd_ref*ptsrf(ig)) 193 194 ENDDO 194 195 … … 246 247 ! ------------------------------------------------------ 247 248 248 call vdif_kc(ngrid,nlay,nq,ptimestep,g,pzlev,pzlay 249 & ,pu,pv,pq,ph,zcdv_true249 call vdif_kc(ngrid,nlay,nq,ptimestep,g,pzlev,pzlay, 250 & pplev,pplay,pu,pv,pt,pq,ph,zcdv_true 250 251 & ,pq2,zkv,zkh) 251 252 … … 405 406 DO ig=1,ngrid 406 407 407 z1(ig) = pcapcal(ig)*ptsrf(ig) + cpp*zb(ig,1)*zc(ig,1)408 & + zdplanck(ig)*ptsrf(ig) + pfluxsrf(ig)*ptimestep409 z2(ig) = pcapcal(ig) + cpp*zb(ig,1)*(1.-zd(ig,1))410 & +zdplanck(ig)411 ztsrf2(ig) = z1(ig) / z2(ig)412 pdtsrf(ig) = (ztsrf2(ig) - ptsrf(ig))/ptimestep413 zh(ig,1) = zc(ig,1) + zd(ig,1)*ztsrf2(ig)408 z1(ig)=pcapcal(ig)*ptsrf(ig)+cppd_ref*zb(ig,1)*zc(ig,1) 409 & + zdplanck(ig)*ptsrf(ig) + pfluxsrf(ig)*ptimestep 410 z2(ig) = pcapcal(ig) + cppd_ref*zb(ig,1)*(1.-zd(ig,1)) 411 & +zdplanck(ig) 412 ztsrf2(ig) = z1(ig) / z2(ig) 413 pdtsrf(ig) = (ztsrf2(ig) - ptsrf(ig))/ptimestep 414 zh(ig,1) = zc(ig,1) + zd(ig,1)*ztsrf2(ig) 414 415 ENDDO 415 416 … … 552 553 ! calculation of h0 and h1 553 554 do ig=1,ngrid 554 zdq0(ig) = dqsat(ig)555 zcq0(ig) = qsat(ig)-dqsat(ig)*ptsrf(ig)556 557 z1(ig) = pcapcal(ig)*ptsrf(ig) +cpp*zb(ig,1)*zc(ig,1)558 & + zdplanck(ig)*ptsrf(ig) + pfluxsrf(ig)*ptimestep559 & + zb(ig,1)*dryness(ig)*RLVTT*560 & ((zdq(ig,1)-1.0)*zcq0(ig)+zcq(ig,1))561 562 z2(ig) = pcapcal(ig) + cpp*zb(ig,1)*(1.-zd(ig,1))563 & +zdplanck(ig)564 & +zb(ig,1)*dryness(ig)*RLVTT*zdq0(ig)*565 & (1.0-zdq(ig,1))566 567 ztsrf2(ig) = z1(ig) / z2(ig)568 pdtsrf(ig) = (ztsrf2(ig) - ptsrf(ig))/ptimestep569 zh(ig,1) = zc(ig,1) + zd(ig,1)*ztsrf2(ig)555 zdq0(ig) = dqsat(ig) 556 zcq0(ig) = qsat(ig)-dqsat(ig)*ptsrf(ig) 557 558 z1(ig)=pcapcal(ig)*ptsrf(ig)+cppd_ref*zb(ig,1)*zc(ig,1) 559 & + zdplanck(ig)*ptsrf(ig) + pfluxsrf(ig)*ptimestep 560 & + zb(ig,1)*dryness(ig)*RLVTT* 561 & ((zdq(ig,1)-1.0)*zcq0(ig)+zcq(ig,1)) 562 563 z2(ig) = pcapcal(ig) + cppd_ref*zb(ig,1)*(1.-zd(ig,1)) 564 & +zdplanck(ig) 565 & +zb(ig,1)*dryness(ig)*RLVTT*zdq0(ig)* 566 & (1.0-zdq(ig,1)) 567 568 ztsrf2(ig) = z1(ig) / z2(ig) 569 pdtsrf(ig) = (ztsrf2(ig) - ptsrf(ig))/ptimestep 570 zh(ig,1) = zc(ig,1) + zd(ig,1)*ztsrf2(ig) 570 571 enddo 571 572 … … 664 665 665 666 DO ig=1,ngrid ! computing sensible heat flux (atm => surface) 666 sensibFlux(ig)=cpp*zb(ig,1)/ptimestep*(zh(ig,1)-ztsrf2(ig))667 sensibFlux(ig)=cppd_ref*zb(ig,1)/ptimestep*(zh(ig,1)-ztsrf2(ig)) 667 668 ENDDO 668 669
Note: See TracChangeset
for help on using the changeset viewer.
