Changeset 3682 for trunk/LMDZ.TITAN/libf/muphytitan
- Timestamp:
- Mar 14, 2025, 2:27:06 PM (5 months ago)
- Location:
- trunk/LMDZ.TITAN/libf/muphytitan
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.TITAN/libf/muphytitan/mm_clouds.f90
r3496 r3682 101 101 IF (mm_w_cloud_nucond) THEN 102 102 ! Calls condensation/nucleation (and update saturation ratio diagnostic) 103 call mm_cloud_nucond(dm0a,dm3a,dm0n,dm3n,dm3i,dgazs,mm_gazs_sat) 103 ! ADDED : Extraction of nucleation and growth rates 104 call mm_cloud_nucond(dm0a,dm3a,dm0n,dm3n,dm3i,dgazs,mm_gazs_sat,mm_nrate,mm_grate) 104 105 ENDIF 105 106 … … 134 135 !----------------------------------------------------------------------------- 135 136 136 SUBROUTINE mm_cloud_nucond(dm0a,dm3a,dm0n,dm3n,dm3i,dgazs,gazsat )137 SUBROUTINE mm_cloud_nucond(dm0a,dm3a,dm0n,dm3n,dm3i,dgazs,gazsat,nrate,grate) 137 138 !! Get moments tendencies through nucleation/condensation/evaporation. 138 139 !! … … 166 167 REAL(kind=mm_wp), DIMENSION(:,:), INTENT(out) :: gazsat 167 168 !! Saturation ratio of each condensible specie. 169 170 ! ADDED : Extraction of the nucleation and growth rate 171 REAL(kind=mm_wp), DIMENSION(:,:),INTENT(out) :: nrate 172 !! Nucleation rate values of each condensible species (\(m^{-2}.s^{-1}\)). 173 REAL(kind=mm_wp), DIMENSION(:,:),INTENT(out) :: grate 174 !! Growth rate values of each condensible species (\(m^{2}.s^{-1}\)). 175 168 176 INTEGER :: i,idx 169 177 REAL(kind=mm_wp), DIMENSION(:,:), ALLOCATABLE :: zdm0a,zdm3a,zdm0n,zdm3n … … 175 183 DO i = 1, mm_nesp 176 184 call nc_esp(mm_xESPS(i),mm_gazs(:,i),mm_m3ice(:,i),dgazs(:,i),dm3i(:,i), & 177 zdm0a(:,i),zdm3a(:,i),zdm0n(:,i),zdm3n(:,i),gazsat(:,i)) 185 zdm0a(:,i),zdm3a(:,i),zdm0n(:,i),zdm3n(:,i),gazsat(:,i),nrate(:,i),grate(:,i)) 186 ! ADDED : Extraction of nucleation and growth rates 178 187 ENDDO 179 188 … … 200 209 END SUBROUTINE mm_cloud_nucond 201 210 202 SUBROUTINE nc_esp(xESP,vapX,m3iX,dvapX,dm3iX,dm0aer,dm3aer,dm0ccn,dm3ccn,Xsat )211 SUBROUTINE nc_esp(xESP,vapX,m3iX,dvapX,dm3iX,dm0aer,dm3aer,dm0ccn,dm3ccn,Xsat,Xnrate,Xgrate) ! ADDED : arguments nrate, grate 203 212 !! Get moments tendencies through nucleation/condensation/evaporation of a given condensible specie. 204 213 !! … … 230 239 REAL(kind=mm_wp),INTENT(out), DIMENSION(:) :: Xsat 231 240 !! Saturation ratio values on the vertical grid (--). 241 242 ! ADDED : Extraction of the nucleation and growth rate 243 REAL(kind=mm_wp),INTENT(out), DIMENSION(:) :: Xnrate 244 !! Nucleation rate values on the vertical grid for the species X (\(m^{-2}.s^{-1}\)). 245 REAL(kind=mm_wp),INTENT(out), DIMENSION(:) :: Xgrate 246 !! Growth rate values on the vertical grid for the species X (\(m^{2}.s^{-1}\)). 247 248 232 249 INTEGER :: i 233 250 REAL(kind=mm_wp) :: bef,aft … … 281 298 ! Then, from eq. 2: 282 299 ! Mn(k)[t+dt] = Mn(k)[t] + CST_M(k)/(1+CST_M(k))*Ma(k)[t] (4) 300 301 ! Copies the nucleation rate into an output variable 302 Xnrate = nucr 303 283 304 cm0 = 4._mm_wp*mm_pi*nucr/mm_rm*mm_alpha_f(3._mm_wp)*mm_rcf**3*mm_dt 284 305 cm3 = 4._mm_wp*mm_pi*nucr/mm_rm*mm_alpha_f(6._mm_wp)/mm_alpha_f(3._mm_wp)*mm_rcf**3*mm_dt … … 317 338 ! gets "true" growth rate 318 339 grate = grate * (newvap/qsat - seq) 340 ! Copies the growth rate into an output variable 341 Xgrate = grate 319 342 320 343 ! computes tendencies through condensation … … 377 400 REAL(kind=mm_wp), INTENT(in), DIMENSION(:) :: sat !! Saturation ratio of given specie (--). 378 401 TYPE(mm_esp), INTENT(in) :: xESP !! X specie properties (--). 379 REAL(kind=mm_wp), INTENT(out), DIMENSION(:) :: rate !! The nucleation rate (\(m^ -{2}.s^{-1}\)).402 REAL(kind=mm_wp), INTENT(out), DIMENSION(:) :: rate !! The nucleation rate (\(m^{-2}.s^{-1}\)). 380 403 INTEGER :: i 381 404 REAL(kind=mm_wp) :: r,t,s,sig,nX,rstar,gstar,x,zeldov,deltaf,fsh,fstar -
trunk/LMDZ.TITAN/libf/muphytitan/mm_globals.f90
r3657 r3682 522 522 REAL(kind=mm_wp), DIMENSION(:,:), ALLOCATABLE, SAVE :: mm_ice_fluxes 523 523 524 !> Condensible components nucleation rates. 525 !! 526 !! It is a 2D-array with the vertical layers in first dimension and the number of condensible 527 !! species in the second. 528 !! It is updated in [[mm_clouds(module):mm_cloud_microphysics(subroutine)]]. 529 REAL(kind=mm_wp), DIMENSION(:,:), ALLOCATABLE, SAVE :: mm_nrate 530 531 !> Condensible components growth rates. 532 !! 533 !! It is a 2D-array with the vertical layers in first dimension and the number of condensible 534 !! species in the second. 535 !! It is updated in [[mm_clouds(module):mm_cloud_microphysics(subroutine)]]. 536 REAL(kind=mm_wp), DIMENSION(:,:), ALLOCATABLE, SAVE :: mm_grate 537 524 538 !> Condensible species saturation ratio (--). 525 539 !! … … 583 597 !$OMP THREADPRIVATE(mm_rcs,mm_rcf,mm_drad,mm_drho) 584 598 !$OMP THREADPRIVATE(mm_m0as_vsed,mm_m3as_vsed,mm_m0af_vsed,mm_m3af_vsed) 585 !$OMP THREADPRIVATE(mm_aer_s_flux,mm_aer_f_flux,mm_ccn_vsed,mm_ccn_flux,mm_ice_prec,mm_ice_fluxes,mm_gazs_sat )599 !$OMP THREADPRIVATE(mm_aer_s_flux,mm_aer_f_flux,mm_ccn_vsed,mm_ccn_flux,mm_ice_prec,mm_ice_fluxes,mm_gazs_sat, mm_nrate, mm_grate) 586 600 !$OMP THREADPRIVATE(mm_m0as_min,mm_m3as_min,mm_rcs_min,mm_m0af_min,mm_m3af_min,mm_rcf_min,mm_m0n_min,mm_m3cld_min) 587 601 !$OMP THREADPRIVATE(mm_nla,mm_nle) … … 1251 1265 ALLOCATE(mm_gazs_sat(mm_nla,mm_nesp)) ; mm_gazs_sat(:,:) = 0._mm_wp 1252 1266 ENDIF 1267 ! ADDED : Allocate memory for nucleation and growth rate 1268 IF (.NOT.ALLOCATED(mm_nrate)) THEN 1269 ALLOCATE(mm_nrate(mm_nla,mm_nesp)) ; mm_nrate(:,:) = 0._mm_wp 1270 ENDIF 1271 IF (.NOT.ALLOCATED(mm_grate)) THEN 1272 ALLOCATE(mm_grate(mm_nla,mm_nesp)) ; mm_grate(:,:) = 0._mm_wp 1273 ENDIF 1253 1274 1254 1275 ! note mm_dzlev already from top to ground -
trunk/LMDZ.TITAN/libf/muphytitan/mm_microphysic.f90
r3496 r3682 163 163 END FUNCTION muphys_nocld 164 164 165 SUBROUTINE mm_diagnostics(dt,aer_prec,aer_s_w,aer_f_w,aer_s_flux,aer_f_flux,ccn_prec,ccn_w,ccn_flux,ice_prec,ice_fluxes,gazs_sat )165 SUBROUTINE mm_diagnostics(dt,aer_prec,aer_s_w,aer_f_w,aer_s_flux,aer_f_flux,ccn_prec,ccn_w,ccn_flux,ice_prec,ice_fluxes,gazs_sat,nrate,grate) 166 166 !! Get various diagnostic fields of the microphysics. 167 167 !! … … 171 171 !! - Settling velocity (aerosols -total-, CCN and ices) 172 172 !! - Precipitations (aerosols -total-, CCN and ices) 173 !! - condensible gazes saturation ratio 173 !! - Condensible gazes saturation ratio 174 !! - Nucleation and growth rates 174 175 !! 175 176 !! @note … … 197 198 REAL(kind=mm_wp), INTENT(out), OPTIONAL, DIMENSION(:,:) :: gazs_sat !! Condensible gaz saturation ratios (--). 198 199 REAL(kind=mm_wp), INTENT(out), OPTIONAL, DIMENSION(:) :: ice_prec !! Ice precipitations (\(kg.m^{-2}.s^{-1}\)). 200 ! Nucleation and growth rates 201 REAL(kind=mm_wp), INTENT(out), OPTIONAL, DIMENSION(:,:) :: nrate !! Nucleation rate (\(m^{-2}.s^{-1}\)). 202 REAL(kind=mm_wp), INTENT(out), OPTIONAL, DIMENSION(:,:) :: grate !! Growth rate (\(m^{2}.s^{-1}\)). 199 203 200 204 IF (PRESENT(aer_prec)) aer_prec = ABS(mm_aer_prec) / dt … … 211 215 IF (PRESENT(ice_fluxes)) ice_fluxes = mm_ice_fluxes(mm_nla:1:-1,:) 212 216 IF (PRESENT(gazs_sat)) gazs_sat = mm_gazs_sat(mm_nla:1:-1,:) 217 ! Nucleation and growth rates 218 IF (PRESENT(nrate)) nrate = mm_nrate(mm_nla:1:-1,:) 219 IF (PRESENT(grate)) grate = mm_grate(mm_nla:1:-1,:) 213 220 ELSE 214 221 IF (PRESENT(ccn_prec)) ccn_prec = 0._mm_wp … … 218 225 IF (PRESENT(ice_fluxes)) ice_fluxes = 0._mm_wp 219 226 IF (PRESENT(gazs_sat)) gazs_sat = 0._mm_wp 227 ! Nucleation and growth rates 228 IF (PRESENT(nrate)) nrate = 0._mm_wp 229 IF (PRESENT(grate)) grate = 0._mm_wp 220 230 ENDIF 221 231 END SUBROUTINE mm_diagnostics
Note: See TracChangeset
for help on using the changeset viewer.