Changeset 1312
- Timestamp:
- Jul 11, 2014, 11:48:09 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/LMDZ.COMMON/libf/dyn3d/calfis.F ¶
r1302 r1312 128 128 REAL,INTENT(IN) :: pp(iip1,jjp1,llmp1) ! pressure at mesh interfaces (Pa) 129 129 REAL,INTENT(IN) :: ppk(iip1,jjp1,llm) ! Exner at mid-layer 130 REAL,INTENT(IN) :: flxw(iip1,jjp1,llm) ! Vertical mass flux on dynamics grid130 REAL,INTENT(IN) :: flxw(iip1,jjp1,llm) ! Vertical mass flux on lower mesh interfaces (kg/s) (on llm because flxw(:,:,llm+1)=0) 131 131 132 132 ! tendencies (in */s) from the physics -
TabularUnified trunk/LMDZ.COMMON/libf/dyn3dpar/calfis_p.F ¶
r1302 r1312 138 138 REAL,INTENT(IN) :: pp(iip1,jjp1,llmp1) ! pressure at mesh interfaces (Pa) 139 139 REAL,INTENT(IN) :: ppk(iip1,jjp1,llm) ! Exner at mid-layer 140 REAL,INTENT(IN) :: flxw(iip1,jjp1,llm) ! Vertical mass flux on dynamics grid140 REAL,INTENT(IN) :: flxw(iip1,jjp1,llm) ! Vertical mass flux on lower mesh interfaces (kg/s) (on llm because flxw(:,:,llm+1)=0) 141 141 142 142 ! tendencies (in */s) from the physics -
TabularUnified trunk/LMDZ.GENERIC/README ¶
r1308 r1312 1037 1037 dimension.h in the physics. 1038 1038 1039 == 11/07/2014 == EM 1040 - Changed the variable passed from LMDZ.GENERIC dynamics to physics: 1041 it is now a mass flux (kg/s) which is then converted to a vertical 1042 velocity (m/s) in the physics. This is to be consistent with what is 1043 done in LMDZ.COMMON. 1044 -
TabularUnified trunk/LMDZ.GENERIC/libf/dyn3d/calfis.F ¶
r1216 r1312 43 43 c pmasse masse d'air dans chaque maille 44 44 c pts surface temperature (K) 45 c pw flux vertical (kg m-2)45 c pw flux vertical (kg/s) 46 46 c 47 47 c Output : … … 308 308 c On interpole "lineairement" la temperature entre les couches(FF,10/95) 309 309 310 DO ig=1,ngridmx311 zvervel(ig,1)=0.312 END DO313 DO l=2,llm314 zvervel(1,l)=(pw(1,1,l)/apoln)315 & * r *0.5*(ztfi(1,l)+ztfi(1,l-1)) /zplev(1,l)316 ig0=2317 DO j=2,jjm318 DO i = 1, iim319 zvervel(ig0,l) = pw(i,j,l) * unsaire(i,j)320 & * r *0.5*(ztfi(ig0,l)+ztfi(ig0,l-1)) /zplev(ig0,l)321 ig0 = ig0 + 1322 ENDDO323 ENDDO324 zvervel(ig0,l)=(pw(1,jjp1,l)/apols)325 & * r *0.5*(ztfi(ig0,l)+ztfi(ig0,l-1)) /zplev(ig0,l)326 ENDDO310 ! DO ig=1,ngridmx 311 ! zvervel(ig,1)=0. 312 ! END DO 313 ! DO l=2,llm 314 ! zvervel(1,l)=(pw(1,1,l)/apoln) 315 ! & * r *0.5*(ztfi(1,l)+ztfi(1,l-1)) /zplev(1,l) 316 ! ig0=2 317 ! DO j=2,jjm 318 ! DO i = 1, iim 319 ! zvervel(ig0,l) = pw(i,j,l) * unsaire(i,j) 320 ! & * r *0.5*(ztfi(ig0,l)+ztfi(ig0,l-1)) /zplev(ig0,l) 321 ! ig0 = ig0 + 1 322 ! ENDDO 323 ! ENDDO 324 ! zvervel(ig0,l)=(pw(1,jjp1,l)/apols) 325 ! & * r *0.5*(ztfi(ig0,l)+ztfi(ig0,l-1)) /zplev(ig0,l) 326 ! ENDDO 327 327 328 328 c ......... Reindexation : calcul de zvervel au MILIEU des couches 329 DO l=1,llm-1330 DO ig=1,ngridmx331 zvervel(ig,l) = 0.5*(zvervel(ig,l)+zvervel(ig,l+1))332 END DO333 END DO329 ! DO l=1,llm-1 330 ! DO ig=1,ngridmx 331 ! zvervel(ig,l) = 0.5*(zvervel(ig,l)+zvervel(ig,l+1)) 332 ! END DO 333 ! END DO 334 334 c (dans la couche llm, on garde la valeur à la limite inférieure llm) 335 335 … … 430 430 , zplev,zplay,zphi, 431 431 , zufi, zvfi,ztfi, zqfi, 432 , zvervel, 432 ! , zvervel, 433 , pw, 433 434 C - sorties 434 435 s zdufi, zdvfi, zdtfi, zdqfi,zdpsrf,tracer) -
TabularUnified trunk/LMDZ.GENERIC/libf/phystd/physiq.F90 ¶
r1309 r1312 5 5 pplev,pplay,pphi, & 6 6 pu,pv,pt,pq, & 7 pw,&7 flxw, & 8 8 pdu,pdv,pdt,pdq,pdpsrf,tracerdyn) 9 9 … … 98 98 ! ptdyn(ngrid,nlayer) / corresponding variables 99 99 ! pqdyn(ngrid,nlayer,nq) / 100 ! pw(ngrid,?) vertical velocity100 ! flxw(ngrid,nlayer) vertical mass flux (kg/s) at layer lower boundary 101 101 ! 102 102 ! output … … 161 161 real,intent(in) :: pt(ngrid,nlayer) ! temperature (K) 162 162 real,intent(in) :: pq(ngrid,nlayer,nq) ! tracers (.../kg_of_air) 163 real,intent(in) :: pw(ngrid,nlayer) ! vertical velocity (m/s)164 163 real,intent(in) :: flxw(ngrid,nlayer) ! vertical mass flux (ks/s) 164 ! at lower boundary of layer 165 165 166 166 … … 210 210 real aerosol(ngrid,nlayer,naerkind) 211 211 real zh(ngrid,nlayer) ! potential temperature (K) 212 real pw(ngrid,nlayer) ! vertical velocity (m/s) (>0 when downwards) 212 213 213 214 character*80 fichier … … 803 804 enddo 804 805 806 ! Compute vertical velocity (m/s) from vertical mass flux 807 ! w = F / (rho*area) and rho = r*T/P 808 ! but first linearly interpolate mass flux to mid-layers 809 do l=1,nlayer-1 810 pw(1:ngrid,l)=0.5*(flxw(1:ngrid,l)+flxw(1:ngrid,l+1)) 811 enddo 812 pw(1:ngrid,nlayer)=0.5*flxw(1:ngrid,nlayer) ! since flxw(nlayer+1)=0 813 do l=1,nlayer 814 pw(1:ngrid,l)=(pw(1:ngrid,l)*pplay(1:ngrid,l)) / & 815 (r*pt(1:ngrid,l)*area(1:ngrid)) 816 enddo 805 817 806 818 !----------------------------------------------------------------------- -
TabularUnified trunk/LMDZ.MARS/README ¶
r1278 r1312 2132 2132 - Add possibility to use clim or MY31 dust scenarios (and realistic EUV for MY31). 2133 2133 2134 == 11/07/2014 == EM 2135 - Changed the variable passed from LMDZ.MARS dynamics to physics: it is now 2136 a mass flux (kg/s) which is then converted to a vertical velocity (m/s) in 2137 the physics. This is to be consistent with what is done in LMDZ.COMMON. 2138 -
TabularUnified trunk/LMDZ.MARS/libf/dyn3d/calfis.F ¶
r1130 r1312 43 43 c pmasse masse d'air dans chaque maille 44 44 c pts surface temperature (K) 45 c pw flux vertical (kg m-2)45 c pw flux vertical (kg/s) 46 46 c 47 47 c Output : … … 305 305 c On interpole "lineairement" la temperature entre les couches(FF,10/95) 306 306 307 DO ig=1,ngridmx308 zvervel(ig,1)=0.309 END DO310 DO l=2,llm311 zvervel(1,l)=(pw(1,1,l)/apoln)312 & * r *0.5*(ztfi(1,l)+ztfi(1,l-1)) /zplev(1,l)313 ig0=2314 DO j=2,jjm315 DO i = 1, iim316 zvervel(ig0,l) = pw(i,j,l) * unsaire(i,j)317 & * r *0.5*(ztfi(ig0,l)+ztfi(ig0,l-1)) /zplev(ig0,l)318 ig0 = ig0 + 1319 ENDDO320 ENDDO321 zvervel(ig0,l)=(pw(1,jjp1,l)/apols)322 & * r *0.5*(ztfi(ig0,l)+ztfi(ig0,l-1)) /zplev(ig0,l)323 ENDDO307 ! DO ig=1,ngridmx 308 ! zvervel(ig,1)=0. 309 ! END DO 310 ! DO l=2,llm 311 ! zvervel(1,l)=(pw(1,1,l)/apoln) 312 ! & * r *0.5*(ztfi(1,l)+ztfi(1,l-1)) /zplev(1,l) 313 ! ig0=2 314 ! DO j=2,jjm 315 ! DO i = 1, iim 316 ! zvervel(ig0,l) = pw(i,j,l) * unsaire(i,j) 317 ! & * r *0.5*(ztfi(ig0,l)+ztfi(ig0,l-1)) /zplev(ig0,l) 318 ! ig0 = ig0 + 1 319 ! ENDDO 320 ! ENDDO 321 ! zvervel(ig0,l)=(pw(1,jjp1,l)/apols) 322 ! & * r *0.5*(ztfi(ig0,l)+ztfi(ig0,l-1)) /zplev(ig0,l) 323 ! ENDDO 324 324 325 325 c ......... Reindexation : calcul de zvervel au MILIEU des couches 326 DO l=1,llm-1327 DO ig=1,ngridmx328 zvervel(ig,l) = 0.5*(zvervel(ig,l)+zvervel(ig,l+1))329 END DO330 END DO326 ! DO l=1,llm-1 327 ! DO ig=1,ngridmx 328 ! zvervel(ig,l) = 0.5*(zvervel(ig,l)+zvervel(ig,l+1)) 329 ! END DO 330 ! END DO 331 331 c (dans la couche llm, on garde la valeur à la limite inférieure llm) 332 332 … … 426 426 , zplev,zplay,zphi, 427 427 , zufi, zvfi,ztfi, zqfi, 428 , zvervel, 428 ! , zvervel, 429 , pw, 429 430 C - sorties 430 431 s zdufi, zdvfi, zdtfi, zdqfi,zdpsrf,tracer) -
TabularUnified trunk/LMDZ.MARS/libf/phymars/physiq.F ¶
r1292 r1312 5 5 $ ,pplev,pplay,pphi 6 6 $ ,pu,pv,pt,pq 7 $ , pw7 $ ,flxw 8 8 $ ,pdu,pdv,pdt,pdq,pdpsrf,tracerdyn) 9 9 … … 128 128 c ptdyn(ngrid,nlayer) | corresponding variables 129 129 c pqdyn(ngrid,nlayer,nq) | 130 c pw(ngrid,?) vertical velocity130 c flxw(ngrid,nlayer) vertical mass flux (kg/s) at layer lower boundary 131 131 c 132 132 c output: … … 159 159 c inputs: 160 160 c ------- 161 INTEGER ngrid,nlayer,nq 162 REAL ptimestep 163 REAL pplev(ngrid,nlayer+1),pplay(ngrid,nlayer) 164 REAL pphi(ngrid,nlayer) 165 REAL pu(ngrid,nlayer),pv(ngrid,nlayer) 166 REAL pt(ngrid,nlayer),pq(ngrid,nlayer,nq) 167 REAL pw(ngrid,nlayer) !Mars pvervel transmit par dyn3d 168 REAL zh(ngrid,nlayer) ! potential temperature (K) 169 LOGICAL firstcall,lastcall 170 171 REAL pday 172 REAL ptime 173 logical tracerdyn 161 INTEGER,INTENT(in) :: ngrid ! number of atmospheric columns 162 INTEGER,INTENT(in) :: nlayer ! number of atmospheric layers 163 INTEGER,INTENT(in) :: nq ! number of tracers 164 LOGICAL,INTENT(in) :: firstcall ! signals first call to physics 165 LOGICAL,INTENT(in) :: lastcall ! signals last call to physics 166 REAL,INTENT(in) :: pday ! number of elapsed sols since reference Ls=0 167 REAL,INTENT(in) :: ptime ! "universal time", given as fraction of sol (e.g.: 0.5 for noon) 168 REAL,INTENT(in) :: ptimestep ! physics timestep (s) 169 REAL,INTENT(in) :: pplev(ngrid,nlayer+1) ! inter-layer pressure (Pa) 170 REAL,INTENT(IN) :: pplay(ngrid,nlayer) ! mid-layer pressure (Pa) 171 REAL,INTENT(IN) :: pphi(ngrid,nlayer) ! geopotential at mid-layer (m2s-2) 172 REAL,INTENT(in) :: pu(ngrid,nlayer) ! zonal wind component (m/s) 173 REAL,INTENT(in) :: pv(ngrid,nlayer) ! meridional wind component (m/s) 174 REAL,INTENT(in) :: pt(ngrid,nlayer) ! temperature (K) 175 REAL,INTENT(in) :: pq(ngrid,nlayer,nq) ! tracers (.../kg_of_air) 176 REAL,INTENT(in) :: flxw(ngrid,nlayer) ! vertical mass flux (ks/s) 177 ! at lower boundary of layer 174 178 175 179 c outputs: 176 180 c -------- 177 181 c physical tendencies 178 REAL pdu(ngrid,nlayer),pdv(ngrid,nlayer) 179 REAL pdt(ngrid,nlayer),pdq(ngrid,nlayer,nq) 180 REAL pdpsrf(ngrid) ! surface pressure tendency 182 REAL,INTENT(out) :: pdu(ngrid,nlayer) ! zonal wind tendency (m/s/s) 183 REAL,INTENT(out) :: pdv(ngrid,nlayer) ! meridional wind tendency (m/s/s) 184 REAL,INTENT(out) :: pdt(ngrid,nlayer) ! temperature tendency (K/s) 185 REAL,INTENT(out) :: pdq(ngrid,nlayer,nq) ! tracer tendencies (../kg/s) 186 REAL,INTENT(out) :: pdpsrf(ngrid) ! surface pressure tendency (Pa/s) 187 LOGICAL,INTENT(out) :: tracerdyn ! signal to the dynamics to advect tracers or not 181 188 182 189 … … 273 280 REAL ztime_fin 274 281 REAL zdh(ngrid,nlayer) 282 REAL pw(ngrid,nlayer) ! vertical velocity (m/s) (>0 when downwards) 275 283 INTEGER length 276 284 PARAMETER (length=100) … … 569 577 endif 570 578 #endif 579 580 ! Compute vertical velocity (m/s) from vertical mass flux 581 ! w = F / (rho*area) and rho = r*T/P 582 ! but first linearly interpolate mass flux to mid-layers 583 do l=1,nlayer-1 584 pw(1:ngrid,l)=0.5*(flxw(1:ngrid,l)+flxw(1:ngrid,l+1)) 585 enddo 586 pw(1:ngrid,nlayer)=0.5*flxw(1:ngrid,nlayer) ! since flxw(nlayer+1)=0 587 do l=1,nlayer 588 pw(1:ngrid,l)=(pw(1:ngrid,l)*pplay(1:ngrid,l)) / & 589 (r*pt(1:ngrid,l)*area(1:ngrid)) 590 ! NB: here we use r and nor rnew since this diagnostic comes 591 ! from the dynamics 592 enddo 593 571 594 c----------------------------------------------------------------------- 572 595 c 2. Compute radiative tendencies :
Note: See TracChangeset
for help on using the changeset viewer.