Changeset 2593 for trunk/LMDZ.MARS/libf/phymars/hdo_surfex_mod.F
- Timestamp:
- Dec 10, 2021, 4:27:25 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/hdo_surfex_mod.F
r2378 r2593 6 6 7 7 subroutine hdo_surfex(ngrid,nlay,nq,ptimestep, 8 & zt, zq,pqsurf,9 & old_h2o_vap, pdqsdif,dwatercap_dif,8 & zt,pplay,zq,pqsurf, 9 & old_h2o_vap,qsat,pdqsdif,dwatercap_dif, 10 10 & hdoflux) 11 11 … … 15 15 use surfdat_h, only: watercaptag 16 16 use geometry_mod, only: longitude_deg,latitude_deg 17 use comcstfi_h, only: pi 17 18 18 19 implicit none … … 23 24 c------------------------------------------------------------------ 24 25 include "callkeys.h" 25 26 include "microphys.h" 26 27 c------------------------------------------------------------------ 27 28 c Arguments: … … 33 34 REAL, INTENT(IN) :: ptimestep ! pas de temps physique (s) 34 35 REAL, INTENT(IN) :: zt(ngrid,nlay) ! local value of temperature 36 REAL, INTENT(IN) :: pplay(ngrid,nlay) ! pression au milieu des couches (Pa) 35 37 REAL, INTENT(IN) :: zq(ngrid,nlay,nq) ! local value of tracers 36 38 REAL, INTENT(IN) :: pqsurf(ngrid,nq) 37 39 REAL, INTENT(IN) :: old_h2o_vap(ngrid) ! traceur d'eau avant 38 40 !traitement de l'eau (kg/kg) 41 REAL, INTENT(IN) :: qsat(ngrid) ! saturation mixing ratio 39 42 REAL, INTENT(IN) :: dwatercap_dif(ngrid) ! trend related to permanent ice 40 43 REAL, INTENT(INOUT) :: pdqsdif(ngrid,nq) ! tendance towards surface … … 47 50 c Local variables: 48 51 49 REAL alpha_c(ngrid) ! fractionation factor 52 REAL alpha(ngrid) ! equilibrium fractionation factor 53 REAL alpha_c(ngrid) ! real fractionation factor 50 54 REAL extrasublim ! sublimation in excess of surface ice 51 55 REAL tmpratio(ngrid) ! D/H ratio in flux to surf 52 56 REAL h2oflux(ngrid) ! value of vapour flux of H2O 53 57 ! same sign as pdqsdif 54 58 REAL*8 satu(ngrid) ! Water vapor saturation ratio over ice 59 REAL zt1(ngrid),pplay1(ngrid) 60 REAL Dv,Dv_hdo ! Water/HDO vapor diffusion coefficient 55 61 INTEGER ig,l 56 62 … … 59 65 c----------------------------------------------------------------------- 60 66 c Calculation of the fluxes for HDO 61 62 alpha_c(1:ngrid)=0. 67 !! Calculation of the saturation ratio in the layer above the surface 68 satu(1:ngrid)=old_h2o_vap(1:ngrid) / qsat(1:ngrid) 69 !! Initialisation of the fractionation coefficient 70 alpha(1:ngrid)=1. 71 alpha_c(1:ngrid)=1. 63 72 64 73 DO ig=1,ngrid … … 105 114 106 115 if (hdofrac) then !do we use fractionation? 107 c alpha_c(ig) = exp(16288./zt(ig,1)**2.-9.34e-2) 108 alpha_c = exp(13525./zt(ig,1)**2.-5.59e-2) !Lamb 116 !! Calculation of the H2O vapor diffusion coefficient 117 Dv = 1./3. * sqrt( 8*kbz*zt(ig,1)/(pi*mh2o/nav) ) 118 & * kbz * zt(ig,1) / 119 & ( pi * pplay(ig,1) * (molco2+molh2o)*(molco2+molh2o) 120 & * sqrt(1.+mh2o/mco2) ) 121 !! Calculation of the HDO vapor diffusion coefficient 122 Dv_hdo = 1./3. * sqrt( 8*kbz*zt(ig,1)/(pi*mhdo/nav) ) 123 & * kbz * zt(ig,1) / 124 & ( pi * pplay(ig,1) * (molco2+molhdo)*(molco2+molhdo) 125 & * sqrt(1.+mhdo/mco2) ) 126 !! Calculation of the "equilibrium" fractionation coefficient 127 c alpha(ig) = exp(16288./zt(ig,1)**2.-9.34e-2) 128 alpha(ig) = exp(13525./zt(ig,1)**2.-5.59e-2) !Lamb 129 !! Calculation of the 'real' fractionnation coefficient (effect of kinetics, see Jouzel and Merlivat, 1984) 130 alpha_c(ig) = (alpha(ig)*satu(ig))/ 131 & ( (alpha(ig)*(Dv/Dv_hdo)*(satu(ig)-1.)) + 1.) 109 132 else 110 133 alpha_c(ig) = 1.
Note: See TracChangeset
for help on using the changeset viewer.