Ignore:
Timestamp:
Dec 10, 2021, 4:27:25 PM (3 years ago)
Author:
mvals
Message:

Mars GCM:
hdo_surfex_mod.F, vdifc_mod.F: addings to account for the effect of kinetics in the fractionation by condensation of HDO at the surface
MV

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/phymars/hdo_surfex_mod.F

    r2378 r2593  
    66
    77      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,
    1010     &                      hdoflux)
    1111
     
    1515      use surfdat_h, only: watercaptag
    1616      use geometry_mod, only: longitude_deg,latitude_deg
     17      use comcstfi_h, only: pi
    1718
    1819      implicit none
     
    2324c------------------------------------------------------------------
    2425      include "callkeys.h"
    25 
     26      include "microphys.h"
    2627c------------------------------------------------------------------
    2728c     Arguments:
     
    3334      REAL, INTENT(IN) :: ptimestep             ! pas de temps physique (s)
    3435      REAL, INTENT(IN) :: zt(ngrid,nlay)       ! local value of temperature
     36      REAL, INTENT(IN) :: pplay(ngrid,nlay)     ! pression au milieu des couches (Pa)
    3537      REAL, INTENT(IN) :: zq(ngrid,nlay,nq)    ! local value of tracers
    3638      REAL, INTENT(IN) :: pqsurf(ngrid,nq)
    3739      REAL, INTENT(IN) :: old_h2o_vap(ngrid)     ! traceur d'eau avant
    3840                                           !traitement de l'eau (kg/kg)
     41      REAL, INTENT(IN) :: qsat(ngrid) ! saturation mixing ratio
    3942      REAL, INTENT(IN) :: dwatercap_dif(ngrid)  ! trend related to permanent ice
    4043      REAL, INTENT(INOUT) :: pdqsdif(ngrid,nq)    ! tendance towards surface
     
    4750c     Local variables:
    4851
    49       REAL alpha_c(ngrid)  ! fractionation factor
     52      REAL alpha(ngrid)    ! equilibrium fractionation factor
     53      REAL alpha_c(ngrid)  ! real fractionation factor
    5054      REAL extrasublim ! sublimation in excess of surface ice
    5155      REAL tmpratio(ngrid)   ! D/H ratio in flux to surf
    5256      REAL h2oflux(ngrid)       ! value of vapour flux of H2O
    5357                                      ! 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
    5561      INTEGER ig,l
    5662
     
    5965c-----------------------------------------------------------------------
    6066c    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.
    6372
    6473        DO ig=1,ngrid
     
    105114
    106115               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
     127c               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.)
    109132               else
    110133                alpha_c(ig) = 1.
Note: See TracChangeset for help on using the changeset viewer.