Changeset 3913


Ignore:
Timestamp:
Sep 5, 2025, 3:21:38 PM (4 months ago)
Author:
jbclement
Message:

Mars PCM:
Partial reversion of r3847: removal of the incompatibility test requires 'microphys'?. Therefore, in "updatereffrad_mod.F", without microphysics, we use a typical value for 'tau' (0.2) to assess the number of cloud condensation nuclei in the same way than done before r744. Comments and unused variables are cleaned.
JBC

Location:
trunk/LMDZ.MARS
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/changelog.txt

    r3912 r3913  
    49694969
    49704970== 05/09/2025 == JBC
    4971 Prescription of the atmospheric water ice profile in 1D. The boolean 'ctrl_h2oice' activates the option, the file "profile_ref_h2ovap" defines the prescribed profile and the value 'relaxtime_h2oice', if positive, activates the relaxation and gives the constant of time.
     4971Prescription of the atmospheric water ice profile in 1D. The boolean 'ctrl_h2oice' activates the option, the file "profile_ref_h2oice" defines the prescribed profile and the value 'relaxtime_h2oice', if positive, activates the relaxation and gives the constant of time.
     4972
     4973== 05/09/2025 == JBC
     4974Partial reversion of r3847: removal of the incompatibility test ['activice' requires 'microphys']. Therefore, in "updatereffrad_mod.F", without microphysics, we use a typical value for 'tau' (0.2) to assess the number of cloud condensation nuclei in the same way than done before r744. Comments and unused variables are cleaned.
  • trunk/LMDZ.MARS/libf/phymars/conf_phys.F

    r3904 r3913  
    889889        endif
    890890
    891          if (activice .and. .not. microphys) then
    892            print*,'if activice is used, then microphys must be used!'
    893            call abort_physic(modname,
    894      &          "activice requires microphys",1)
    895          endif
    896 
    897891! Instantaneous scavenging by CO2
    898892! -> expected to be replaced by scavenging with microphysics (flag scavenging) one day
  • trunk/LMDZ.MARS/libf/phymars/updaterad.F90

    r2562 r3913  
    3939real, parameter :: rccnmax  = 500.e-6
    4040
    41 
    42 
    4341real, parameter :: ndust_threshold  = 1.
    4442real, parameter :: qdust_threshold  = 1.e-20
     
    5048real, parameter :: rdustmax  = 500.e-6 
    5149
    52 
    5350real, parameter :: rdust0 = 0.8e-6
    5451
    55 
    56      
    5752
    5853contains
     
    150145! Update ice radius from a typical profile if microphys == false
    151146subroutine updaterice_typ(qice,tau,pzlay,rice)
     147
    152148use tracer_mod, only: rho_ice
    153 USE comcstfi_h
     149USE comcstfi_h, only: pi
     150
    154151implicit none
    155152
     
    158155real, intent(in)  :: pzlay ! altitude at the middle of the layers
    159156real, intent(out) :: rice
    160 real rccn,nccn ! radius  and number of ice crystals
     157real :: rccn, nccn ! radius  and number of ice crystals
    161158
    162159!   Typical CCN profile following Montmessin et al. 2004
    163 !   (N0=2e6 m-3 has been converted into N0=1.3e8 kg-1, otherwise the equation for rice is not homogeneous...)
    164      nccn  = 1.3e+8*max(tau,0.001)/0.1*exp(-pzlay/10000.)
     160!   (N0=2e6 m-3 has been converted into N0=1.3e8 kg-1 using a typical atmospheric density,
     161!   otherwise the equation for rice is not homogeneous...)
     162     nccn = 1.3e+8*max(tau,0.001)/0.1*exp(-pzlay/10000.)
    165163!   The previously used profile was not correct:
    166164!   Nccn=( epaisseur/masse ) * 2.e+6/0.1*max(tau,0.001)*exp(-pzlay/10000.)
    167      
     165
    168166if (nccn .le. 1) then
    169167
     
    174172! Typical dust radius profile:
    175173  rccn = max(rdust0*exp(-pzlay/18000.),1.e-9)
    176   rice  = qice * 0.75 / pi / rho_ice / nccn + rccn*rccn*rccn
    177        
     174  rice = qice * 0.75 / pi / rho_ice / nccn + rccn*rccn*rccn
     175
    178176  if (rice .le. r3icemin) then
    179177    rice = ricemin
     
    185183
    186184endif
    187  
     185
    188186end subroutine updaterice_typ
    189187!============================================================================
  • trunk/LMDZ.MARS/libf/phymars/updatereffrad_mod.F

    r3726 r3913  
    4040c     to be a log-normal distribution, with effective radius "reffrad" and
    4141c     variance "nueffrad".
    42 c   At firstcall, "rice" and "nuice" are not known, because
    43 c     the H2O ice microphysical scheme is called after the radiative
    44 c     transfer in physiq.F. That's why we assess the size of the
    45 c     water-ice particles at firstcall (see part 1.2 below).
     42c   At firstcall or without microphysics, "rice" and "nuice" are not known,
     43c     because the H2O ice microphysical scheme ("aeropacity.F") is called after
     44c     the radiative transfer. That's why we assess the size of the water-ice
     45c     particles (see part 1.2 below).
    4646c
    4747c   author:   
     
    5858c     Inputs/outputs:
    5959c     ------
    60 
    6160      INTEGER, INTENT(in) :: ngrid,nlayer
    6261c     Ice geometric mean radius (m)
     
    8382c     Local variables:
    8483c     ---------------
    85 
    8684      INTEGER :: ig,l          ! 3D grid indices
    8785      INTEGER :: iaer          ! Aerosol index
    88 
    89 c     Number of cloud condensation nuclei near the surface
    90 c     (only used at firstcall). This value is taken from
    91 c     Montmessin et al. 2004 JGR 109 E10004 p5 (2E6 part m-3), and
    92 c     converted to part kg-1 using a typical atmospheric density.
    93 
    94       REAL, PARAMETER :: ccn0 = 1.3E8, threshold = 1e-30 ! limit value
    95      
    96 c     For microphysics only:     
    97       REAL Mo,No                       ! Mass and number of ccn
    98       REAL rhocloud(ngrid,nlayer)  ! Cloud density (kg.m-3)
     86      REAL, PARAMETER :: threshold = 1e-30 ! limit value
     87      REAL :: Nccnco2, Qccnco2, Niceco2, Nccnco2_h2o, Qccnco2_h2o
     88c     For microphysics only:
     89      REAL :: rhocloud(ngrid,nlayer) ! Cloud density (kg.m-3)
    9990c     For CO2 microphysics only:
    100       REAL :: rhocloudco2(ngrid, nlayer) ! co2 cloud density
    101 
    102       LOGICAL,SAVE :: firstcall=.true.
    103       REAL Nccnco2, Qccnco2, Niceco2
    104       REAL Nccnco2_h2o, Qccnco2_h2o
    105       REAL CBRT
    106       EXTERNAL CBRT
    107 
    108 
    109 !$OMP THREADPRIVATE(firstcall)
     91      REAL :: rhocloudco2(ngrid,nlayer) ! co2 cloud density
    11092
    11193c==================================================================
     
    156138c       1.2 Water-ice particles
    157139c       -----------------------
    158 
    159140        IF (water.AND.activice) THEN
    160141         IF (microphys) THEN
    161        
     142
    162143c    At firstcall, the true number and true mass of cloud condensation nuclei are not known.
    163144c    Indeed it is scaled on the prescribed dust opacity via a 'tauscaling' coefficient
    164 c    computed after radiative transfer. If tauscaling is not in startfi, we make an assumption for its value.
    165 
    166           IF (firstcall) THEN
    167             !IF (minval(tauscaling).lt.0) tauscaling(:) = 1.e-3 ! default value when non-read in startfi is -1
    168             !IF (freedust)                tauscaling(:) = 1.    ! if freedust, enforce no rescaling at all
    169             firstcall = .false.
    170           ENDIF
    171  
     145c    computed after radiative transfer.
     146c    Therefore, 'tauscaling' is read in startfi for the first call (=1 if not found).
    172147          DO l=1,nlayer
    173148            DO ig=1,ngrid
     
    180155            ENDDO
    181156          ENDDO
    182          
     157
    183158        ELSE ! if not microphys
    184          
     159
     160c    Without microphysics, we use a typical value for 'tau' (0.2) to assess
     161c    the number of cloud condensation nuclei near the surface.
    185162          DO l=1,nlayer
    186163            DO ig=1,ngrid   
    187               call updaterice_typ(pq(ig,l,igcm_h2o_ice),
    188      &                          tau(ig,1),pplay(ig,l),rice(ig,l))
     164              call updaterice_typ(pq(ig,l,igcm_h2o_ice),0.2,
     165     &                            pplay(ig,l),rice(ig,l))
    189166              nuice(ig,l) = nuice_ref
    190167            ENDDO
    191168          ENDDO
    192  
     169
    193170        ENDIF ! of if microphys
    194171       ENDIF ! of if (water.AND.activice)
    195172
    196 
    197173c       1.3 CO2-ice particles
    198 
     174c       ---------------------
    199175        IF (co2clouds.AND.activeco2ice) THEN
    200176          DO l=1,nlayer
Note: See TracChangeset for help on using the changeset viewer.