Changeset 3913
- Timestamp:
- Sep 5, 2025, 3:21:38 PM (4 months ago)
- Location:
- trunk/LMDZ.MARS
- Files:
-
- 4 edited
-
changelog.txt (modified) (1 diff)
-
libf/phymars/conf_phys.F (modified) (1 diff)
-
libf/phymars/updaterad.F90 (modified) (6 diffs)
-
libf/phymars/updatereffrad_mod.F (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/changelog.txt
r3912 r3913 4969 4969 4970 4970 == 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. 4971 Prescription 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 4974 Partial 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 889 889 endif 890 890 891 if (activice .and. .not. microphys) then892 print*,'if activice is used, then microphys must be used!'893 call abort_physic(modname,894 & "activice requires microphys",1)895 endif896 897 891 ! Instantaneous scavenging by CO2 898 892 ! -> expected to be replaced by scavenging with microphysics (flag scavenging) one day -
trunk/LMDZ.MARS/libf/phymars/updaterad.F90
r2562 r3913 39 39 real, parameter :: rccnmax = 500.e-6 40 40 41 42 43 41 real, parameter :: ndust_threshold = 1. 44 42 real, parameter :: qdust_threshold = 1.e-20 … … 50 48 real, parameter :: rdustmax = 500.e-6 51 49 52 53 50 real, parameter :: rdust0 = 0.8e-6 54 51 55 56 57 52 58 53 contains … … 150 145 ! Update ice radius from a typical profile if microphys == false 151 146 subroutine updaterice_typ(qice,tau,pzlay,rice) 147 152 148 use tracer_mod, only: rho_ice 153 USE comcstfi_h 149 USE comcstfi_h, only: pi 150 154 151 implicit none 155 152 … … 158 155 real, intent(in) :: pzlay ! altitude at the middle of the layers 159 156 real, intent(out) :: rice 160 real rccn,nccn ! radius and number of ice crystals157 real :: rccn, nccn ! radius and number of ice crystals 161 158 162 159 ! 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.) 165 163 ! The previously used profile was not correct: 166 164 ! Nccn=( epaisseur/masse ) * 2.e+6/0.1*max(tau,0.001)*exp(-pzlay/10000.) 167 165 168 166 if (nccn .le. 1) then 169 167 … … 174 172 ! Typical dust radius profile: 175 173 rccn = max(rdust0*exp(-pzlay/18000.),1.e-9) 176 rice = qice * 0.75 / pi / rho_ice / nccn + rccn*rccn*rccn177 174 rice = qice * 0.75 / pi / rho_ice / nccn + rccn*rccn*rccn 175 178 176 if (rice .le. r3icemin) then 179 177 rice = ricemin … … 185 183 186 184 endif 187 185 188 186 end subroutine updaterice_typ 189 187 !============================================================================ -
trunk/LMDZ.MARS/libf/phymars/updatereffrad_mod.F
r3726 r3913 40 40 c to be a log-normal distribution, with effective radius "reffrad" and 41 41 c variance "nueffrad". 42 c At firstcall , "rice" and "nuice" are not known, because43 c the H2O ice microphysical scheme is called after the radiative44 c t ransfer in physiq.F. That's why we assess the size of the45 c water-ice particles at firstcall(see part 1.2 below).42 c At firstcall or without microphysics, "rice" and "nuice" are not known, 43 c because the H2O ice microphysical scheme ("aeropacity.F") is called after 44 c the radiative transfer. That's why we assess the size of the water-ice 45 c particles (see part 1.2 below). 46 46 c 47 47 c author: … … 58 58 c Inputs/outputs: 59 59 c ------ 60 61 60 INTEGER, INTENT(in) :: ngrid,nlayer 62 61 c Ice geometric mean radius (m) … … 83 82 c Local variables: 84 83 c --------------- 85 86 84 INTEGER :: ig,l ! 3D grid indices 87 85 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 88 c For microphysics only: 89 REAL :: rhocloud(ngrid,nlayer) ! Cloud density (kg.m-3) 99 90 c 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 110 92 111 93 c================================================================== … … 156 138 c 1.2 Water-ice particles 157 139 c ----------------------- 158 159 140 IF (water.AND.activice) THEN 160 141 IF (microphys) THEN 161 142 162 143 c At firstcall, the true number and true mass of cloud condensation nuclei are not known. 163 144 c 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 145 c computed after radiative transfer. 146 c Therefore, 'tauscaling' is read in startfi for the first call (=1 if not found). 172 147 DO l=1,nlayer 173 148 DO ig=1,ngrid … … 180 155 ENDDO 181 156 ENDDO 182 157 183 158 ELSE ! if not microphys 184 159 160 c Without microphysics, we use a typical value for 'tau' (0.2) to assess 161 c the number of cloud condensation nuclei near the surface. 185 162 DO l=1,nlayer 186 163 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)) 189 166 nuice(ig,l) = nuice_ref 190 167 ENDDO 191 168 ENDDO 192 169 193 170 ENDIF ! of if microphys 194 171 ENDIF ! of if (water.AND.activice) 195 172 196 197 173 c 1.3 CO2-ice particles 198 174 c --------------------- 199 175 IF (co2clouds.AND.activeco2ice) THEN 200 176 DO l=1,nlayer
Note: See TracChangeset
for help on using the changeset viewer.
