Changeset 1996


Ignore:
Timestamp:
Sep 13, 2018, 3:27:26 PM (6 years ago)
Author:
emillour
Message:

Mars physics:

  • Turn watersat into a module.

CO2 cloud updates:

  • compute co2 condensation tendencies in the co2 cloud scheme and pass them on to vdifc (for tests; they might not be needed) and adapt newcondens.

DB+EM

Location:
trunk/LMDZ.MARS
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/README

    r1985 r1996  
    26382638Useful:
    26392639- in compute_dtau_mod.F90, the writediagfi of tauref_scenario has been added
     2640
     2641== 13/09/2018 == DB + EM
     2642- Turn watersat into a module.
     2643CO2 cloud updates:
     2644- compute co2 condensation tendencies in the co2 cloud scheme and pass them
     2645  on to vdifc (for tests; they might not be needed) and adapt newcondens.
     2646
  • trunk/LMDZ.MARS/libf/phymars/co2cloud.F

    r1938 r1996  
    1515     &                rsedcloudco2,rhocloudco2,
    1616     &                rsedcloud,rhocloud,pzlev,pdqs_sedco2,
    17      &                pdu,pu)
     17     &                pdu,pu,pcondicea)
    1818      USE ioipsl_getincom, only: getin
    1919      use dimradmars_mod, only: naerkind
     
    9494      real, INTENT(IN) :: pdq(ngrid,nlay,nq)    ! tendencies before condensation  (kg/kg.s-1)
    9595      real, intent(OUT) :: pdqcloudco2(ngrid,nlay,nq) ! tendency due to CO2 condensation (kg/kg.s-1)
     96      real, intent(OUT) :: pcondicea(ngrid,nlay)
    9697      real, intent(OUT) :: pdtcloudco2(ngrid,nlay)    ! tendency on temperature due to latent heat
    9798      INTEGER, INTENT(IN) :: nq                 ! number of tracers
     
    187188      DOUBLE PRECISION:: rho,zu,NN,gradT !For Saturation Index computation
    188189      DOUBLE PRECISION :: SatIndex(ngrid,nlay),SatIndexmap(ngrid)
     190
     191c D. BARDET : sensibility test
     192      REAL :: No_dust(ngrid,nlay)
     193      REAL :: Mo_dust(ngrid,nlay)
    189194     
    190195c      logical :: CLFvaryingCO2
     
    433438             ENDDO
    434439           ELSE
    435 !SatIndex not favorable for GW : leave pt untouched
     440! SatIndex not favorable for GW : leave pt untouched
    436441             pteff(ig,l)=pt(ig,l)
    437442             co2cloudfrac(ig,l)=mincloud
    438443           ENDIF                 ! of if(SatIndexmap...
    439444         ENDDO ! of DO ig=1,ngrid
    440 !     Totalcloud frac of the column missing here
     445! Totalcloud frac of the column missing here
    441446c
    442447c No sub-grid cloud representation (CLFvarying=false)
     
    608613     &     pplay,pplev,pteff,sum_subpdt,
    609614     &     pqeff,sum_subpdq,subpdqcloudco2,subpdtcloudco2,
    610      &     nq,tauscaling,mem_Mccn_co2,mem_Mh2o_co2,mem_Nccn_co2)
     615     &     nq,tauscaling,mem_Mccn_co2,mem_Mh2o_co2,mem_Nccn_co2,
     616     &     No_dust,Mo_dust)
     617c D. BARDET: sensibility test
     618c      call WRITEDIAGFI(ngrid,"No_dust","Nombre particules de poussiere"
     619c     &        ,"part/kg",3,No_dust)
     620c      call WRITEDIAGFI(ngrid,"Mo_dust","Masse particules de poussiere"
     621c     &        ,"kg/kg ",3,Mo_dust)
    611622c ==============================================================================
    612623c      3.  Updating tendencies after cloud scheme:
     
    657668c   Compute final tendencies after time loop:
    658669c------------------------------------------------
     670c Condensation/sublimation tendency after clouds scheme (to replace
     671c zcondicea in newcondens.F
     672
     673      DO l=nlay, 1, -1
     674        DO ig = 1, ngrid
     675           pcondicea(ig,l) = sum_subpdq(ig,l,igcm_co2_ice)
     676     &                       /real(imicroco2)
     677        ENDDO
     678      ENDDO
     679
    659680c CO2 flux at surface (kg.m-2.s-1)
    660681      do ig=1,ngrid
     
    856877      ENDDO
    857878     
    858 c     A correction if a lot of subliming CO2 fills the 1st layer FF04/2005
    859 c     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    860 c     Then that should not affect the ice particle radius
    861        
     879c ======================================================================     
     880c A correction if a lot of subliming CO2 fills the 1st layer FF04/2005
     881c Then that should not affect the ice particle radius
     882c ======================================================================         
    862883      do ig=1,ngrid
    863884        if(pdpsrf(ig)*ptimestep.gt.0.9*(pplev(ig,1)-pplev(ig,2)))then
     
    896917        enddo
    897918      enddo
    898 !Everything modified by CO2 microphysics must be wrt co2cloudfrac
     919! Everything modified by CO2 microphysics must be wrt co2cloudfrac
    899920      IF (CLFvaryingCO2) THEN
    900921        DO l=1,nlay
     
    964985      call WRITEDIAGFI(ngrid,"mem_Mh2o_co2","H2O mass in CO2 crystal"
    965986     &        ,"kg/kg ",3,mem_Mh2o_co2)         
    966 
     987c D.BARDET: sensibility test
     988c      call WRITEDIAGFI(ngrid,"No_dust","Nombre particules de poussiere"
     989c     &        ,"part/kg",3,No_dust)
     990c      call WRITEDIAGFI(ngrid,"Mo_dust","Masse particules de poussiere"
     991c     &        ,"kg/kg ",3,Mo_dust)
    967992      END SUBROUTINE co2cloud
     993
     994c ===================================================================
    968995c Subroutines used to write variables of memory in start files       
     996c ===================================================================
     997
    969998      SUBROUTINE ini_co2cloud(ngrid,nlayer)
    970999 
     
    9791008
    9801009      END SUBROUTINE ini_co2cloud
    981 
     1010c ----------------------------------
    9821011      SUBROUTINE end_co2cloud
    9831012
  • trunk/LMDZ.MARS/libf/phymars/improvedCO2clouds_mod.F

    r1939 r1996  
    99     &             pqeff,sum_subpdq,subpdqcloudco2,subpdtcloudco2,
    1010     &             nq,tauscaling,
    11      &             mem_Mccn_co2,mem_Mh2o_co2,mem_Nccn_co2)
     11     &             mem_Mccn_co2,mem_Mh2o_co2,mem_Nccn_co2,
     12     &             No_dust,Mo_dust)
    1213      USE comcstfi_h, only: pi, g, cpp
    13       USE updaterad, only: updaterice_micro, updaterice_microco2
     14      USE updaterad, only: updaterice_micro, updaterice_microco2,
     15     &                     updaterccnCO2
    1416      use tracer_mod, only: igcm_dust_mass, igcm_dust_number, rho_dust,
    1517     &                      igcm_h2o_ice, igcm_ccn_mass,
     
    1719     &                      igcm_co2, igcm_co2_ice, igcm_ccnco2_mass,
    1820     &                      igcm_ccnco2_number, nuiceco2_sed,
    19      &                      rho_ice_co2
     21     &                      rho_ice_co2,nuiceco2_ref
    2022      use conc_mod, only: mmean
    2123      use datafile_mod, only: datadir
     
    8486      REAL,INTENT(out) :: subpdtcloudco2(ngrid,nlay)  ! tendency on temperature due
    8587                                   ! to latent heat
     88      REAL,INTENT(out) :: No_dust(ngrid,nlay)
     89      REAL,INTENT(out) :: Mo_dust(ngrid,nlay)
    8690
    8791c------------------------------------------------------------------
     
    108112      DOUBLE PRECISION pco2,psat  ! Co2 vapor partial pressure (Pa)
    109113      DOUBLE PRECISION satu ! Co2 vapor saturation ratio over ice
    110       DOUBLE PRECISION Mo,No,No_dust,Mo_dust
     114      DOUBLE PRECISION Mo ,No
     115     
     116c D.BARDET: sensibility test
     117c      REAL, SAVE :: No ! when sensibility test
     118c      DOUBLE PRECISION No_dust(ngrid,nlay) ! when sensibility test
     119c      DOUBLE PRECISION Mo_dust(ngrid,nlay) ! when sensibility test
     120     
    111121      DOUBLE PRECISION  Rn, Rm, dev2,dev3, n_derf, m_derf
    112122      DOUBLE PRECISION mem_Mccn_co2(ngrid,nlay) ! Memory of CCN mass of H2O and dust used by CO2
     
    297307        l3=0.0528288d0
    298308        l4=-0.000103183d0
     309       
     310c D.BARDET:
     311c        No = 1.e10       
    299312        firstcall=.false.
    300313      END IF
     
    377390           IF ( satu .ge. 1 ) THEN ! if there is condensation
    378391
    379 c We do rdust computation "by hand" because we don't want to
    380 c change the mininumum rdust value in updaterad... It would
    381 c mess up various part of the GCM !
    382              
    383               rdust(ig,l)= zq(ig,l,igcm_dust_mass)
    384      &             *0.75/(pi*rho_dust
    385      &             * zq(ig,l,igcm_dust_number))
    386               rdust(ig,l)= rdust(ig,l)**(1./3.)
    387               if (zq(ig,l,igcm_dust_mass)*tauscaling(ig) .le. 1.e-20
    388      &             .or.  zq(ig,l,igcm_dust_number)*tauscaling(ig) .le.1
    389      &             .or. rdust(ig,l) .le. 1.e-9) then
    390                  rdust(ig,l)=1.e-9
    391               endif
    392               rdust(ig,l)=min(5.e-4,rdust(ig,l))
     392          call updaterccnCO2(zq(ig,l,igcm_dust_mass),
     393     &          zq(ig,l,igcm_dust_number),rdust(ig,l),tauscaling(ig))
     394
     395c D.BARDET: sensibility test
     396c              rdust=2.e-6
    393397     
    394398c Expand the dust moments into a binned distribution
     
    397401              m_aer(:)=0.
    398402
    399               Mo = zq(ig,l,igcm_dust_mass)* tauscaling(ig)+1.e-30
     403              Mo =4.*pi*rho_dust*No*rdust(ig,l)**(3.)
     404     &           *dexp(9.*nuiceco2_ref/2.)/3. ! in Madeleine et al 2011
     405     
    400406              No = zq(ig,l,igcm_dust_number)* tauscaling(ig)+1.e-30
    401407
     
    526532c Indeed, if we are supersaturated and still don't have at least one nuclei, we should better wait
    527533c to avoid unrealistic value for nuclei radius and so on for cases that remain negligible.
    528            No   = zq(ig,l,igcm_ccnco2_number)* tauscaling(ig)+1.e-30
    529            IF (No .ge. 1)THEN   ! we trigger crystal growth
    530               interm1 = DBLE(zq(ig,l,igcm_co2_ice))
    531               interm2 = DBLE(zq(ig,l,igcm_ccnco2_mass))
    532               interm3 = DBLE(zq(ig,l,igcm_ccnco2_number))
    533               call updaterice_microco2(interm1,
    534      &            interm2,interm3,
     534             IF (zq(ig,l,igcm_ccnco2_number)
     535     &         * tauscaling(ig)+1.e-30.ge. 1)THEN   ! we trigger crystal growth
     536             
     537              call updaterice_microco2(zq(ig,l,igcm_co2_ice),
     538     &            zq(ig,l,igcm_ccnco2_mass),zq(ig,l,igcm_ccnco2_number),
    535539     &            tauscaling(ig),riceco2(ig,l),rhocloudco2(ig,l))
    536540
  • trunk/LMDZ.MARS/libf/phymars/improvedclouds_mod.F

    r1976 r1996  
    1212      USE ioipsl_getincom
    1313      USE updaterad
     14      USE watersat_mod, ONLY: watersat
    1415      use tracer_mod, only: rho_ice, nuice_sed, igcm_h2o_vap,
    1516     &                      igcm_h2o_ice, igcm_dust_mass,
  • trunk/LMDZ.MARS/libf/phymars/newcondens.F

    r1779 r1996  
    44     $                  piceco2,psolaralb,pemisurf,
    55     $                  pdtc,pdtsrfc,pdpsrf,pduc,pdvc,pdqc,
    6      $                  fluxsurf_sw,zls)
     6     $                  fluxsurf_sw,zls,
     7     $                  zdqssed_co2,pcondicea_co2microp,
     8     $                  zdtcloudco2)
    79                                                   
    810       use tracer_mod, only: noms
     
    2426c   author:   Francois Forget     1994-1996
    2527c   ------
     28c             adapted to external CO2 ice clouds scheme by Deborah Bardet (2018) '
    2629c
    2730c   input:
     
    9093      REAL,INTENT(IN) :: pdq(ngrid,nlayer,nq) ! tendency on tracers from
    9194                                              ! previous physical processes
     95
     96      REAL,INTENT(IN) :: zdqssed_co2(ngrid)  ! CO2 flux at the surface  (kg.m-2.s-1)
     97      REAL,INTENT(IN) :: pcondicea_co2microp(ngrid,nlayer)! tendency due to CO2 condensation (kg/kg.s-1)
     98      REAL,INTENT(IN) :: zdtcloudco2(ngrid,nlayer) ! tendency on temperature due to latent heat                 
     99
    92100      REAL,INTENT(INOUT) :: piceco2(ngrid) ! CO2 ice on the surface (kg.m-2)
    93101      REAL,INTENT(INOUT) :: psolaralb(ngrid,2) ! albedo of the surface
     
    173181      integer flag
    174182
     183c D.BARDET: to debug
     184      real ztc3D(ngrid,nlayer)
     185      REAL ztm3D(ngrid,nlayer)
     186      REAL zmflux3D(ngrid,nlayer)
    175187c----------------------------------------------------------------------
    176188
     
    280292      end if
    281293
     294      IF (.NOT. co2clouds) then
    282295c     forecast of atmospheric temperature zt and frost temperature ztcond
    283296c     --------------------------------------------------------------------
     
    329342         ENDDO
    330343      ENDDO
     344     
     345      ELSE
     346         
     347        DO ig=1,ngrid
     348         zfallice(ig,1) = zdqssed_co2(ig)
     349        ENDDO
     350        DO l=nlayer , 1, -1
     351            DO ig=1,ngrid
     352         zcondicea(ig,l) = pcondicea_co2microp(ig,l)*
     353     &                        (pplev(ig,l) - pplev(ig,l+1))/g
     354            ENDDO
     355        ENDDO
     356        DO l=nlayer, 1, -1
     357         DO ig=1, ngrid
     358            zt(ig,l)=pt(ig,l)+ pdt(ig,l)*ptimestep
     359            pdtc(ig,l)=0.
     360         ENDDO
     361      ENDDO
     362      ENDIF ! if not co2clouds
     363
     364      call WRITEdiagfi(ngrid,"pdtc_atm",
     365     &         "temperature tendency due to CO2 condensation",
     366     &         " ",3,pdtc)
     367     
     368       call WRITEdiagfi(ngrid,"zcondicea",
     369     &         "",
     370     &         " ",3,zcondicea)         
     371     
     372       call WRITEdiagfi(ngrid,"zfallice",
     373     &         "",
     374     &         " ",2,zfallice(ngrid,1))
    331375
    332376c     *************************
     
    624668c           """"""""""""""""""""""""
    625669            DO l=1,nlayer
    626  
     670               IF(.not. co2clouds) THEN
    627671c             Tendencies on T
    628672                zdtsig(ig,l) = (1/masse(l)) *
     
    630674     &        - zmflux(l+1)*(ztm(l+1) - ztc(l))
    631675     &        + zcondicea(ig,l)*(ztcond(ig,l)-ztc(l))  )
     676               ELSE
     677                zdtsig(ig,l) = (1/masse(l)) *
     678     &        ( zmflux(l)*(ztm(l) - ztc(l))
     679     &        - zmflux(l+1)*(ztm(l+1) - ztc(l)))               
     680               ENDIF
     681c D.BARDET: for diagnotics
     682                zmflux3D(ig,l)=zmflux(l)
     683                ztm3D(ig,l)=ztm(l)
     684                ztc3D(ig,l)=ztc(l)
     685               
    632686                pdtc(ig,l) =  pdtc(ig,l) + zdtsig(ig,l)
    633687
     
    799853#endif
    800854
    801       return
    802855      end
    803856
     
    924977c         end if
    925978
    926       return
    927979      end
  • trunk/LMDZ.MARS/libf/phymars/physiq_mod.F

    r1974 r1996  
    1414     $            ,pdu,pdv,pdt,pdq,pdpsrf)
    1515
    16       use watercloud_mod
     16      use watercloud_mod, only: watercloud
     17      use watersat_mod, only: watersat
    1718      use co2cloud_mod, only: co2cloud, mem_Mccn_co2, mem_Mh2o_co2,
    1819     &                        mem_Nccn_co2
     
    238239      real rhocloudco2(ngrid,nlayer) !co2 Cloud density (kg.m-3)
    239240      real zdqssed_co2(ngrid)  ! CO2 flux at the surface  (kg.m-2.s-1)
     241      real zcondicea_co2microp(ngrid,nlayer)
    240242c     Variables used by the photochemistry
    241243      logical :: asis             ! true  : adaptative semi-implicit symmetric (asis) chemical solver
     
    11081110     $        zdum1,zdum2,zdh,pdq,zflubid,
    11091111     $        zdudif,zdvdif,zdhdif,zdtsdif,q2,
    1110      &        zdqdif,zdqsdif,wstar,zcdv,zcdh,hfmax_th,sensibFlux,
    1111      &        dustliftday,local_time)
     1112     &        zdqdif,zdqsdif,wstar,zcdv,zcdh,hfmax_th,
     1113     &        zcondicea_co2microp,sensibFlux,
     1114     &        dustliftday,local_time)
    11121115
    11131116          DO ig=1,ngrid
     
    12691272
    12701273
    1271 
    12721274c-----------------------------------------------------------------------
    12731275c   8. Specific parameterizations for tracers
     
    13541356           endif ! of if scavenging
    13551357                     
    1356 
    13571358         END IF  ! of IF (water)
    13581359
     
    13851386     &           rsedcloudco2,rhocloudco2,
    13861387     &           rsedcloud,rhocloud,zzlev,zdqssed_co2,
    1387      &           pdu,pu)
     1388     &           pdu,pu,zcondicea_co2microp)
    13881389
    13891390
     
    14791480      END IF                    ! of IF (co2clouds)
    14801481
    1481 
    14821482c   8b. Aerosol particles
    14831483c     -------------------
     
    17091709     $              co2ice,albedo,emis,
    17101710     $              zdtc,zdtsurfc,pdpsrf,zduc,zdvc,zdqc,
    1711      $              fluxsurf_sw,zls)!,
    1712 c     &              zzlev,zdqssed_co2,zdqcloudco2,
    1713 c     &              zdtcloudco2)
     1711     $              fluxsurf_sw,zls,
     1712     $              zdqssed_co2,zcondicea_co2microp,
     1713     &              zdtcloudco2)
    17141714
    17151715         DO l=1,nlayer
     
    17591759#endif
    17601760     
    1761       ENDIF  ! of IF (callcond)     
     1761      ENDIF  ! of IF (callcond)
     1762
    17621763c-----------------------------------------------------------------------
    17631764c   11. Surface  and sub-surface soil temperature
     
    21422143c               if (icetot(ig)*1e3.lt.0.01) rave(ig)=0.
    21432144             enddo
     2145
    21442146             call watersat(ngrid*nlayer,zt,zplay,zqsat)
    21452147             satu(:,:) = zq(:,:,igcm_h2o_vap)/zqsat(:,:)
     
    26172619            call WRITEDIAGFI(ngrid,'co2_ice','co2_ice','kg/kg',
    26182620     &                       3,zq(:,:,igcm_co2_ice))
    2619           endif ! of if (co2clouds)
     2621            call WRITEDIAGFI(ngrid,'precip_co2_ice',
     2622     &                       'surface deposition of co2 ice',
     2623     &                       'kg.m-2.s-1',2,
     2624     &                       zdqssed(1:ngrid,igcm_co2_ice))
     2625           endif ! of if (co2clouds)
    26202626         endif ! of if (tracer.and.(igcm_co2.ne.0))
    26212627        ! Output He tracer, if there is one
  • trunk/LMDZ.MARS/libf/phymars/simpleclouds.F

    r1779 r1996  
    44     &             nq,tau,rice)
    55      USE updaterad
     6      USE watersat_mod, ONLY: watersat
    67      use tracer_mod, only: igcm_h2o_vap, igcm_h2o_ice
    78      USE comcstfi_h
  • trunk/LMDZ.MARS/libf/phymars/updaterad.F90

    r1816 r1996  
    3434real, parameter :: r3ccnmin = 1.e-21    ! ie rccnmin = 0.1 microns
    3535real, parameter :: rccnmin  = 0.1e-6
     36real, parameter :: rccnCO2min  = 1e-9
    3637
    3738real, parameter :: r3ccnmax = 125.e-12  ! ie rccnmax  = 500 microns
     
    289290
    290291
     292
     293
     294!============================================================================
     295!============================================================================
     296!============================================================================
     297! This subroutine computes the mass mean radius,
     298! used for heterogenous nucleation on CCNs in microphysics of CO2.
     299! For a lognormal distribution :
     300! geometric mean radius = mass mean radius x exp(-1.5 sigma0^2)
     301subroutine updaterccnCO2(qccn,nccn,rccn,tauscaling)
     302use tracer_mod, only: rho_dust
     303USE comcstfi_h
     304implicit none
     305
     306real, intent(in) :: qccn,nccn ! needed if doubleq
     307real, intent(in), optional :: tauscaling ! useful for realistic thresholds
     308
     309real, intent(out) :: rccn
     310
     311real coeff
     312
     313
     314if (present(tauscaling)) then
     315  coeff = tauscaling ! threshold on realistic values
     316else
     317  coeff = 1. ! threshold on virtual values
     318endif
     319
     320if ((nccn .le. nccn_threshold/coeff) .or. (qccn .le. qccn_threshold/coeff)) then
     321
     322   rccn = rccnCO2min
     323
     324else
     325
     326   rccn  =  qccn * 0.75 / pi / rho_dust / nccn
     327   rccn = rccn**(1./3.)
     328
     329endif
     330
     331rccn=min(5.E-4,rccn)
     332     
     333end subroutine updaterccnCO2
     334!============================================================================
     335!============================================================================
     336!============================================================================
     337
     338
     339
    291340end module updaterad
    292341
  • trunk/LMDZ.MARS/libf/phymars/vdifc_mod.F

    r1974 r1996  
    1212     $                pdudif,pdvdif,pdhdif,pdtsrf,pq2,
    1313     $                pdqdif,pdqsdif,wstar,zcdv_true,zcdh_true,
    14      $                hfmax,sensibFlux,dustliftday,local_time)
     14     $                hfmax,pcondicea_co2microp,sensibFlux,
     15     $                dustliftday,local_time)
    1516
    1617      use tracer_mod, only: noms, igcm_dust_mass, igcm_dust_number,
     
    2021      use surfdat_h, only: watercaptag, frost_albedo_threshold, dryness
    2122      USE comcstfi_h, ONLY: cpp, r, rcp, g
     23      use watersat_mod, only: watersat
    2224      use turb_mod, only: turb_resolved, ustar, tstar
    2325      use compute_dtau_mod, only: ti_injection,tf_injection
     
    6971      REAL,INTENT(IN) :: co2ice (ngrid), ppopsk(ngrid,nlay)
    7072      logical,INTENT(IN) :: lecrit
    71 
     73      REAL,INTENT(IN) :: pcondicea_co2microp(ngrid,nlay)! tendency due to CO2 condensation (kg/kg.s-1)
     74     
    7275      REAL,INTENT(IN) :: pz0(ngrid) ! surface roughness length (m)
    7376
     
    633636c      (computation of zcondicea and dmice)
    634637
    635       zcondicea(ig,:)=0.
    636       pdtc(ig,:)=0.
    637 
    638       DO l=nlay , 1, -1
     638      IF (.NOT. co2clouds) then
     639       DO l=nlay , 1, -1
    639640           IF(zt(ig,l).LT.ztcond(ig,l)) THEN
    640641               pdtc(ig,l)=(ztcond(ig,l) - zt(ig,l))/ptimestep
     
    643644              dmice(ig,l)= dmice(ig,l) + zcondicea(ig,l)*ptimestep
    644645            END IF
    645       ENDDO
    646 
    647          ENDDO    !of Do j=1,XXX
    648 
    649       ENDDO   !of Do ig=1,nlay
     646       ENDDO
     647      ELSE
     648       DO l=nlay , 1, -1
     649         zcondicea(ig,l)= 0.!pcondicea_co2microp(ig,l)*
     650c     &                        (pplev(ig,l) - pplev(ig,l+1))/g
     651         dmice(ig,l)= 0.!dmice(ig,l) + zcondicea(ig,l)*ptimestep
     652         pdtc(ig,l)=0.
     653       ENDDO   
     654      ENDIF
     655     
     656       ENDDO!of Do j=1,XXX
     657
     658      ENDDO   !of Do ig=1,ngrid
    650659
    651660      pdtsrf(:)=(ztsrf2(:)-ptsrf(:))/ptimestep
  • trunk/LMDZ.MARS/libf/phymars/watercloud_mod.F

    r1976 r1996  
    1414     &                     updaterice_typ
    1515      USE improvedclouds_mod, ONLY: improvedclouds
     16      USE watersat_mod, ONLY: watersat
    1617      use tracer_mod, only: nqmx, igcm_h2o_vap, igcm_h2o_ice,
    1718     &                      igcm_dust_mass, igcm_dust_number,
  • trunk/LMDZ.MARS/libf/phymars/watersat.F

    r689 r1996  
     1      MODULE watersat_mod
     2     
     3      IMPLICIT NONE
     4     
     5      CONTAINS
     6     
    17      SUBROUTINE watersat(naersize,t,p,qsat)
     8     
    29      IMPLICIT NONE
    310
     
    714c   and Temperature (K) array
    815c
     16c  Move in module by Deborah BARDET 02/07/18
    917c=======================================================================
    1018
     
    1523
    1624c   INPUT
    17       integer naersize
    18       real t(naersize) , p(naersize)
     25      integer, intent(in) :: naersize
     26      real, intent(in) :: t(naersize)
     27      real, intent(in) :: p(naersize)
    1928c   OUTPUT
    20       real qsat(naersize)
     29      real, intent(out) :: qsat(naersize)
    2130
    2231c   local:
    2332c   ------
    2433      INTEGER i
    25       REAL r2,r3,r4 , To, es
    26       SAVE r2,r3,r4
    27       DATA r2,r3,r4/611.14,21.875,7.66/
    28       SAVE To
    29       DATA To/273.16/
    30          
     34      REAL,PARAMETER :: r2 = 611.14
     35      REAL,PARAMETER :: r3 = 21.875
     36      REAL,PARAMETER :: r4 = 7.66
     37      REAL,PARAMETER :: To = 273.16
     38      REAL es
     39     
     40     
    3141      do i=1,naersize
    3242c        pression de vapeur saturante :
     
    4454      enddo
    4555
    46       RETURN
    47       END
    48 
     56      END SUBROUTINE watersat
     57     
     58      END MODULE watersat_mod
Note: See TracChangeset for help on using the changeset viewer.