Changeset 3901 for trunk/LMDZ.MARS/libf/phymars/vlz_fi.F
- Timestamp:
- Aug 20, 2025, 4:25:12 PM (3 days ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/vlz_fi.F
r3727 r3901 10 10 c 11 11 c ******************************************************************** 12 c Shema d'advection " pseudo amont " dans la verticale13 c pour appel dans la physique(sedimentation)12 c "pseudo upstream" Advection scheme along the vertical 13 c to be used in the physics (sedimentation) 14 14 c ******************************************************************** 15 c q rapport de melange (kg/kg)... 16 c masse : masse de la couche Dp/g 17 c w : masse d'atm ``transferee'' a chaque pas de temps (kg.m-2) 18 c pente_max = 2 conseillee 19 c 20 c 21 c -------------------------------------------------------------------- 15 22 16 IMPLICIT NONE 23 17 c … … 29 23 integer,intent(in) :: ngrid ! number of atmospheric columns 30 24 integer,intent(in) :: nlay ! number of atmospheric layers 31 real masse(ngrid,nlay),pente_max 32 REAL q(ngrid,nlay) 33 REAL w(ngrid,nlay) 34 REAL wq(ngrid,nlay+1) 25 real,intent(in) :: masse(ngrid,nlay) ! mass of atmospheric layer delta(P)/g 26 real,intent(in) :: pente_max ! maximum slope for the scheme (2 is recommended) 27 real,intent(inout) :: q(ngrid,nlay) ! tracer mixing ratio (kg/kg) 28 real,intent(inout) :: w(ngrid,nlay) ! mass of atmosphere "transfered" over the time step (kg.m-2) 29 real,intent(out) :: wq(ngrid,nlay+1) ! trancer increment due to advection (kg) 35 30 c 36 31 c Local … … 45 40 integer m 46 41 47 REAL SSUM,CVMGP,CVMGT48 integer ismax,ismin49 42 50 51 c On oriente tout dans le sens de la pression c'est a dire dans le 52 c sens de W 43 c Orientation follows pressure, i.e. follows W 53 44 54 45 do l=2,nlay … … 61 52 do l=2,nlay-1 62 53 do ij=1,ngrid 63 #ifdef CRAY64 dzq(ij,l)=0.5*65 , cvmgp(dzqw(ij,l)+dzqw(ij,l+1),0.,dzqw(ij,l)*dzqw(ij,l+1))66 #else67 54 if(dzqw(ij,l)*dzqw(ij,l+1).gt.0.) then 68 55 dzq(ij,l)=0.5*(dzqw(ij,l)+dzqw(ij,l+1)) … … 70 57 dzq(ij,l)=0. 71 58 endif 72 #endif 59 73 60 dzqmax=pente_max*min(adzqw(ij,l),adzqw(ij,l+1)) 74 61 dzq(ij,l)=sign(min(abs(dzq(ij,l)),dzqmax),dzq(ij,l)) … … 81 68 enddo 82 69 c --------------------------------------------------------------- 83 c .... c alcul des termes d'advection verticale.......70 c .... compute vertical advection terms ....... 84 71 c --------------------------------------------------------------- 85 72 86 c c alcul de - d( q * w )/ d(sigma) qu'on ajoute a dq pour calculerdq73 c compute - d( q * w )/ d(sigma) , later added to dq to compute dq 87 74 c 88 75 c No flux at the model top:
Note: See TracChangeset
for help on using the changeset viewer.