Ignore:
Timestamp:
Feb 16, 2021, 12:31:33 PM (4 years ago)
Author:
emillour
Message:

Mars GCM:

  • Adding the deuterium chemistry now that the HDO cycle is included.
  • Chemistry still works as before if deuterium tracers are not present.
  • Added handling of hdo in molecular diffusion (moldiff_red).

FGG+JYC+EM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/aeronomars/moldiff_red.F90

    r2157 r2461  
    4343      real*8 masseU,kBolt,RgazP,Rmars,Grav,Mmars
    4444      real*8 rho0,D0,T0,H0,time0,dZ,time,dZraf,tdiff,Zmin,Zmax
    45       real*8 FacEsc,invsgmu,PhiEscH,PhiEscH2
     45      real*8 FacEsc,invsgmu,PhiEscH,PhiEscH2,PhiEscD
    4646      real*8 hp(nlayer)
    4747      real*8 pp(nlayer)
     
    6464      real*8,dimension(:),allocatable,save ::  wi,Wad,Uthermal,Lambdaexo,Hspecie
    6565      real*8,dimension(:),allocatable,save :: Mtot1,Mtot2,Mraf1,Mraf2
    66       integer,parameter :: ListeDiffNb=15
     66      integer,parameter :: ListeDiffNb=16
    6767      character(len=20),dimension(ListeDiffNb) :: ListeDiff
    6868      real*8,parameter :: pi=3.141592653
     
    7575      integer,save :: i_h2 
    7676      integer,save :: i_h
     77      integer,save :: i_d
    7778! vertical index limit for the molecular diffusion
    7879      integer,save :: il0 
     
    130131        ListeDiff(14)='n'
    131132        ListeDiff(15)='he'
     133        ListeDiff(16)='hdo_vap'
    132134        i_h=1000
    133135        i_h2=1000
     136        i_d=1000
    134137! On regarde quelles especes diffusables sont presentes
    135138
     
    162165        if (noms(nn) .eq. 'h') i_h=n
    163166        if (noms(nn) .eq. 'h2') i_h2=n
     167        if (noms(nn) .eq. 'd') i_d=n
    164168        endif
    165169        enddo
     
    222226        PhiEscH=0D0
    223227        PhiEscH2=0D0
     228        PhiEscD=0D0
    224229
    225230      do ig=1,ngrid
     
    403408     &  (Rmars+Zraf(nlraf))/kbolt/Traf(nlraf)
    404409        wi(nn)=0D0
    405         if (nn .eq. i_h .or. nn .eq. i_h2) then
     410        if (nn .eq. i_h .or. nn .eq. i_h2 .or. nn .eq. i_d) then
    406411        wi(nn)=Uthermal(nn)/2d0/sqrt(PI)*exp(-Lambdaexo(nn))*           &
    407412     &  (Lambdaexo(nn)+1d0)
     
    409414        enddo
    410415
    411 !       print*,'wi',wi(i_h),wi(i_h2),Uthermal,Lambdaexo,mmol(gcmind(:))
     416!       print*,'wi',wi(i_h),wi(i_h2),wi(i_d),Uthermal,Lambdaexo,mmol(gcmind(:))
    412417!       print*,'wi',wi
    413 !       stop
    414418
    415419! Compute time step for diffusion
     
    594598! the trend only at the end
    595599
    596         PhiEscH=PhiEscH+wi(i_h)*Nrafk(nlraf,i_h)*cell_area(ig) ! in s-1
    597         PhiEscH2=PhiEscH2+wi(i_h2)*Nrafk(nlraf,i_h2)*cell_area(ig) ! in s-1 (U in m/s, aire in m2, Nrafk in m-3)
    598 !       print*,'test',ig,wi(i_h),Nrafk(nlraf,i_h),wi(i_h2),Nrafk(nlraf,i_h2),cell_area(ig),PhiEscH,PhiEscH2,i_h,i_h2
     600        if (i_h .ne. 1000) PhiEscH=PhiEscH+wi(i_h)*Nrafk(nlraf,i_h)*cell_area(ig) ! in s-1
     601        if (i_h2 .ne. 1000) PhiEscH2=PhiEscH2+wi(i_h2)*Nrafk(nlraf,i_h2)*cell_area(ig) ! in s-1 (U in m/s, aire in m2, Nrafk in m-3)
     602        if (i_d .ne. 1000) PhiEscD=PhiEscD+wi(i_d)*Nrafk(nlraf,i_d)*cell_area(ig)
     603!       print*,'test',ig,wi(i_h),wi(i_h2),Nrafk(nlraf,i_h),Nrafk(nlraf,i_h2),Nrafk(nlraf,i_d),cell_area(ig),PhiEscH,PhiEscH2,i_h,i_h2,i_d,PhiEscD
    599604!       stop
    600605
     
    651656
    652657       enddo  ! ig loop         
    653 !       print*,'Escape flux H, H2 (s-1)',PhiEscH,PhiEscH2
     658!       print*,'Escape flux H, H2,D (s-1)',PhiEscH,PhiEscH2,PhiEscD
    654659
    655660      return
Note: See TracChangeset for help on using the changeset viewer.