Changeset 626 for trunk/LMDZ.MARS/libf/phymars/growthrate.F
- Timestamp:
- Apr 18, 2012, 10:17:12 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/growthrate.F
r530 r626 1 subroutine growthrate(timestep,temp,pmid,ph2o,psat, 2 & seq,rcrystal,growth) 1 subroutine growthrate(temp,pmid,psat,seq,rcrystal,coeff1,coeff2) 3 2 4 3 IMPLICIT NONE … … 10 9 c Authors: F. Montmessin 11 10 c Adapted for the LMD/GCM by J.-B. Madeleine (October 2011) 11 c Use of resistances in the analytical function 12 c instead of growth rate - T. Navarro (2012) 12 13 c 13 14 c======================================================================= … … 27 28 c ---------- 28 29 29 REAL timestep 30 c Input 30 31 REAL temp ! temperature in the middle of the layer (K) 31 32 REAL pmid ! pressure in the middle of the layer (K) 32 REAL*8 ph2o ! water vapor partial pressure (Pa)33 33 REAL*8 psat ! water vapor saturation pressure (Pa) 34 REAL*8 seq ! Equilibrium saturation ratio 34 35 REAL rcrystal ! crystal radius before condensation (m) 35 REAL*8 seq ! Equilibrium saturation ratio 36 REAL*8 growth 36 37 c Output 38 REAL coeff1,coeff2 ! coefficients for the analytical relation between time and radius 39 37 40 38 41 c local: … … 43 46 REAL*8 afactor,Dv,lambda ! Intermediate computations for growth rate 44 47 REAL*8 Rk,Rd 48 49 45 50 46 51 c----------------------------------------------------------------------- … … 73 78 & ( pi * pmid * (molco2+molh2o)*(molco2+molh2o) 74 79 & * sqrt(1.+mh2o/mco2) ) 75 80 76 81 knudsen = temp / pmid * afactor / rcrystal 77 82 lambda = (1.333+0.71/knudsen) / (1.+1./knudsen) 78 Dv = Dv / (1. + lambda * knudsen) 83 84 c Dv is not corrected. Instead, we use below coefficients coeff1, coeff2 85 c Dv = Dv / (1. + lambda * knudsen) 79 86 80 87 c - Compute Rk … … 82 89 c - Compute Rd 83 90 Rd = rgp * temp *rho_ice / (Dv*psat*mh2o) 84 91 92 93 coeff1 = real(Rk + Rd*(1. + lambda * knudsen)) 94 coeff2 = real(Rk + Rd*(1. - lambda * knudsen)) 95 96 c Below are growth rate used for other schemes 85 97 c - Compute growth=rdr/dt, then r(t+1)= sqrt(r(t)**2.+2.*growth*dt) 86 growth = 1. / (seq*Rk+Rd)87 c 98 c growth = 1. / (seq*Rk+Rd) 99 c growth = (ph2o/psat-seq) / (seq*Rk+Rd) 88 100 c rf = sqrt( max( r**2.+2.*growth*timestep , 0. ) ) 89 101 c dr = rf-r
Note: See TracChangeset
for help on using the changeset viewer.