source: trunk/LMDZ.MARS/libf/phymars/growthrate.F @ 626

Last change on this file since 626 was 626, checked in by tnavarro, 13 years ago

New scheme for the clouds, no more sub-timestep. Clouds sedimentation is done with the dust one in callsedim.F like it was before. Added latent heat for sublimating ground ice. Bugs corrected. THIS VERSION OF THE WATER CYCLE SHOULD NOT BE USED WITH THERMALS DUE TO NEGATIVE TRACERS ISSUES.

File size: 3.5 KB
Line 
1      subroutine growthrate(temp,pmid,psat,seq,rcrystal,coeff1,coeff2)
2
3      IMPLICIT NONE
4
5c=======================================================================
6c
7c     Determination of the water ice crystal growth rate
8c
9c     Authors: F. Montmessin
10c       Adapted for the LMD/GCM by J.-B. Madeleine (October 2011)
11c       Use of resistances in the analytical function
12c            instead of growth rate - T. Navarro (2012)
13c     
14c=======================================================================
15
16c-----------------------------------------------------------------------
17c   declarations:
18c   -------------
19
20#include "dimensions.h"
21#include "dimphys.h"
22#include "comcstfi.h"
23#include "tracer.h"
24#include "microphys.h"
25
26c
27c   arguments:
28c   ----------
29
30c     Input
31      REAL temp     ! temperature in the middle of the layer (K)
32      REAL pmid     ! pressure in the middle of the layer (K)
33      REAL*8 psat   ! water vapor saturation pressure (Pa)
34      REAL*8 seq    ! Equilibrium saturation ratio
35      REAL rcrystal ! crystal radius before condensation (m)
36
37c     Output
38      REAL coeff1,coeff2     ! coefficients for the analytical relation between time and radius
39
40
41c   local:
42c   ------
43
44      REAL*8 k,Lv                 
45      REAL*8 knudsen           ! Knudsen number (gas mean free path/particle radius)
46      REAL*8 afactor,Dv,lambda       ! Intermediate computations for growth rate
47      REAL*8 Rk,Rd
48     
49     
50
51c-----------------------------------------------------------------------
52c      Ice particle growth rate by diffusion/impegement of water molecules
53c                r.dr/dt = (S-Seq) / (Seq*Rk+Rd)
54c        with r the crystal radius, Rk and Rd the resistances due to
55c        latent heat release and to vapor diffusion respectively
56c-----------------------------------------------------------------------
57
58c     - Equilibrium saturation accounting for KeLvin Effect
59c      seq=exp(2*sigh2o*mh2o/(rho_ice*rgp*t*r))
60c      (already computed in improvedcloud.F)
61
62c     - Thermal conductibility of CO2
63      k  = (0.17913 * temp - 13.9789) * 4.184e-4
64c     - Latent heat of h2o (J.kg-1)
65      Lv = (2834.3
66     &        - 0.28  * (temp-To)
67     &        - 0.004 * (temp-To) * (temp-To) ) * 1.e+3
68
69c     - Constant to compute gas mean free path
70c     l= (T/P)*a, with a = (  0.707*8.31/(4*pi*molrad**2 * avogadro))
71      afactor = 0.707*rgp/(4 * pi * molco2 * molco2 * nav)
72
73c     - Compute Dv, water vapor diffusion coefficient
74c       accounting for both kinetic and continuum regime of diffusion,
75c       the nature of which depending on the Knudsen number.
76
77      Dv = 1./3. * sqrt( 8*kbz*temp/(pi*mh2o/nav) )* kbz * temp /
78     &   ( pi * pmid * (molco2+molh2o)*(molco2+molh2o)
79     &        * sqrt(1.+mh2o/mco2) )
80     
81      knudsen = temp / pmid * afactor / rcrystal
82      lambda  = (1.333+0.71/knudsen) / (1.+1./knudsen)
83     
84c      Dv is not corrected. Instead, we use below coefficients coeff1, coeff2
85c      Dv      = Dv / (1. + lambda * knudsen)
86
87c     - Compute Rk
88      Rk = Lv**2 * rho_ice * mh2o / (k*rgp*temp*temp)
89c     - Compute Rd
90      Rd = rgp * temp *rho_ice / (Dv*psat*mh2o)
91     
92     
93      coeff1 = real(Rk + Rd*(1. + lambda * knudsen))
94      coeff2 = real(Rk + Rd*(1. - lambda * knudsen))
95     
96c Below are growth rate used for other schemes
97c     - Compute growth=rdr/dt, then r(t+1)= sqrt(r(t)**2.+2.*growth*dt)
98c      growth = 1. / (seq*Rk+Rd)
99c      growth = (ph2o/psat-seq) / (seq*Rk+Rd)
100c      rf   = sqrt( max( r**2.+2.*growth*timestep , 0. ) )
101c      dr   = rf-r
102
103      RETURN
104      END
105
Note: See TracBrowser for help on using the repository browser.