Ignore:
Timestamp:
Jul 11, 2014, 11:48:09 AM (11 years ago)
Author:
emillour
Message:

Generic and Mars GCM:
LMDZ.COMMON dynamics sends mass flux to physics and not vertical velocity.
Add the computation of vertical velocity from input mass flux in the physics,
and also modify "old" LMDZ.GENERIC and LMDZ.MARS dynamics to be consistent.
EM

Location:
trunk/LMDZ.GENERIC/libf
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/libf/dyn3d/calfis.F

    r1216 r1312  
    4343c       pmasse          masse d'air dans chaque maille
    4444c       pts             surface temperature  (K)
    45 c       pw              flux vertical (kg m-2)
     45c       pw              flux vertical (kg/s)
    4646c
    4747c    Output :
     
    308308c On interpole "lineairement" la temperature entre les couches(FF,10/95)
    309309
    310       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
     310!      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
    327327
    328328c    .........  Reindexation : calcul de zvervel au MILIEU des couches
    329        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
     329!       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
    334334c      (dans la couche llm, on garde la valeur à la limite inférieure llm)
    335335
     
    430430     ,     zplev,zplay,zphi,
    431431     ,     zufi, zvfi,ztfi, zqfi, 
    432      ,     zvervel,
     432!     ,     zvervel,
     433     ,     pw,
    433434C - sorties
    434435     s     zdufi, zdvfi, zdtfi, zdqfi,zdpsrf,tracer)
  • trunk/LMDZ.GENERIC/libf/phystd/physiq.F90

    r1309 r1312  
    55                  pplev,pplay,pphi,        &
    66                  pu,pv,pt,pq,             &
    7                   pw,                      &
     7                  flxw,                    &
    88                  pdu,pdv,pdt,pdq,pdpsrf,tracerdyn)
    99 
     
    9898!    ptdyn(ngrid,nlayer)     / corresponding variables
    9999!    pqdyn(ngrid,nlayer,nq) /
    100 !    pw(ngrid,?)           vertical velocity
     100!    flxw(ngrid,nlayer)      vertical mass flux (kg/s) at layer lower boundary
    101101!
    102102!   output
     
    161161      real,intent(in) :: pt(ngrid,nlayer) ! temperature (K)
    162162      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
    165165
    166166
     
    210210      real aerosol(ngrid,nlayer,naerkind)
    211211      real zh(ngrid,nlayer)      ! potential temperature (K)
     212      real pw(ngrid,nlayer) ! vertical velocity (m/s) (>0 when downwards)
    212213
    213214      character*80 fichier
     
    803804      enddo
    804805
     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
    805817
    806818!-----------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.