Ignore:
Timestamp:
Apr 19, 2018, 3:16:47 PM (7 years ago)
Author:
emillour
Message:

Mars GCM:
CO2 code updates:

  • make co2cloud a module and save mem_* variables (initialized via phys_state_var_init)
  • make improvedCO2cloud a module
  • read/write mem_* variables in phyetat0.F and phyredem.F

DB

File:
1 edited

Legend:

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

    r1921 r1922  
     1      MODULE improvedCO2clouds_mod
     2     
     3      IMPLICIT NONE
     4
     5      CONTAINS
     6 
    17      subroutine improvedCO2clouds(ngrid,nlay,microtimestep,
    28     &             pplay,pplev,pteff,sum_subpdt,
    39     &             pqeff,sum_subpdq,subpdqcloudco2,subpdtcloudco2,
    410     &             nq,tauscaling,
    5      &             memdMMccn,memdMMh2o,memdNNccn)
     11     &             mem_Mccn_co2,mem_Mh2o_co2,mem_Nccn_co2)
    612      USE comcstfi_h, only: pi, g, cpp
    713      USE updaterad, only: updaterice_micro, updaterice_microco2
     
    3642c Memory of the origin of the co2 particles is kept and thus the
    3743c water cycle shouldn't be modified by this.
    38 cWARNING: no sedimentation of the water ice origin is performed
     44c WARNING: no sedimentation of the water ice origin is performed
    3945c in the microphysical timestep in co2cloud.F.
    4046
     
    104110      DOUBLE PRECISION Mo,No,No_dust,Mo_dust
    105111      DOUBLE PRECISION  Rn, Rm, dev2,dev3, n_derf, m_derf
    106       DOUBLE PRECISION memdMMccn(ngrid,nlay)
    107       DOUBLE PRECISION memdMMh2o(ngrid,nlay)
    108       DOUBLE PRECISION memdNNccn(ngrid,nlay)
     112      DOUBLE PRECISION mem_Mccn_co2(ngrid,nlay) ! Memory of CCN mass of H2O and dust used by CO2
     113      DOUBLE PRECISION mem_Mh2o_co2(ngrid,nlay) ! Memory of H2O mass integred into CO2 crystal
     114      DOUBLE PRECISION mem_Nccn_co2(ngrid,nlay) ! Memory of CCN number of H2O and dust used by CO2
    109115     
    110116!     Radius used by the microphysical scheme (m)
     
    506512                zq(ig,l,igcm_h2o_ice) = zq(ig,l,igcm_h2o_ice)-dMh2o_ice
    507513                zq(ig,l,igcm_ccn_mass)= zq(ig,l,igcm_ccn_mass)-dMh2o_ccn
    508                 memdMMh2o(ig,l)=memdMMh2o(ig,l)+dMh2o_ice
    509                 memdMMccn(ig,l)=memdMMccn(ig,l)+dMh2o_ccn
    510                 memdNNccn(ig,l)=memdNNccn(ig,l)+dNNh2o
     514                mem_Mh2o_co2(ig,l)=mem_Mh2o_co2(ig,l)+dMh2o_ice
     515                mem_Mccn_co2(ig,l)=mem_Mccn_co2(ig,l)+dMh2o_ccn
     516                mem_Nccn_co2(ig,l)=mem_Nccn_co2(ig,l)+dNNh2o
    511517             endif ! of if co2useh2o
    512518           ENDIF   ! of is satu >1
     
    566572! On sublime tout
    567573                 if (co2useh2o) then
    568                    if (memdMMccn(ig,l) .gt. 0) then
     574                   if (mem_Mccn_co2(ig,l) .gt. 0) then
    569575                    zq(ig,l,igcm_ccn_mass)=zq(ig,l,igcm_ccn_mass)
    570      &                   +memdMMccn(ig,l)
     576     &                   +mem_Mccn_co2(ig,l)
    571577                   endif
    572                    if (memdMMh2o(ig,l) .gt. 0) then
     578                   if (mem_Mh2o_co2(ig,l) .gt. 0) then
    573579                    zq(ig,l,igcm_h2o_ice)=zq(ig,l,igcm_h2o_ice)
    574      &                   +memdMMh2o(ig,l)
     580     &                   +mem_Mh2o_co2(ig,l)
    575581                   endif
    576582                 
    577                    if (memdNNccn(ig,l) .gt. 0) then
     583                   if (mem_Nccn_co2(ig,l) .gt. 0) then
    578584                    zq(ig,l,igcm_ccn_number)=zq(ig,l,igcm_ccn_number)
    579      &                   +memdNNccn(ig,l)
     585     &                   +mem_Nccn_co2(ig,l)
    580586                   endif
    581587                 endif
     
    583589     &                   zq(ig,l,igcm_dust_mass)
    584590     &                   + zq(ig,l,igcm_ccnco2_mass)-
    585      &                   (memdMMh2o(ig,l)+memdMMccn(ig,l))
     591     &                   (mem_Mh2o_co2(ig,l)+mem_Mccn_co2(ig,l))
    586592                    zq(ig,l,igcm_dust_number) =
    587593     &                   zq(ig,l,igcm_dust_number)
    588      &                   + zq(ig,l,igcm_ccnco2_number)-memdNNccn(ig,l)
     594     &                   + zq(ig,l,igcm_ccnco2_number)
     595     &                   -mem_Nccn_co2(ig,l)
    589596                 
    590597                    zq(ig,l,igcm_co2) = zq(ig,l,igcm_co2)
     
    594601                 zq(ig,l,igcm_co2_ice)=0.
    595602                 zq(ig,l,igcm_ccnco2_number)=0.
    596                  memdNNccn(ig,l)=0.
    597                  memdMMh2o(ig,l)=0.
    598                  memdMMccn(ig,l)=0.
     603                 mem_Nccn_co2(ig,l)=0.
     604                 mem_Mh2o_co2(ig,l)=0.
     605                 mem_Mccn_co2(ig,l)=0.
    599606                 riceco2(ig,l)=0.
    600607
     
    643650
    644651
    645         end
    646      
    647      
    648      
     652c     TEST D.BARDET
     653      call WRITEDIAGFI(ngrid,"No_dust","Nombre particules de poussière"
     654     &        ,"part/kg",3,No_dust)
     655      call WRITEDIAGFI(ngrid,"Mo_dust","Masse particules de poussière"
     656     &        ,"kg/kg ",3,Mo_dust)     
     657
     658        END SUBROUTINE improvedCO2clouds
     659
     660        END MODULE improvedCO2clouds_mod
     661     
     662     
     663     
Note: See TracChangeset for help on using the changeset viewer.