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

Last change on this file since 2156 was 1266, checked in by aslmd, 11 years ago

LMDZ.MARS
IMPORTANT CHANGE

  • Remove all reference/use of nlayermx and dimphys.h
  • Made use of automatic arrays whenever arrays are needed with dimension nlayer
  • Remove lots of obsolete reference to dimensions.h
  • Converted iono.h and param_v4.h into corresponding modules

(with embedded subroutine to allocate arrays)
(no arrays allocated if thermosphere not used)

  • Deleted param.h and put contents into module param_v4_h
  • Adapted testphys1d, newstart, etc...
  • Made DATA arrays in param_read to be initialized by subroutine

fill_data_thermos in module param_v4_h

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