Ignore:
Timestamp:
Mar 14, 2025, 2:27:06 PM (5 months ago)
Author:
lrosset
Message:

Titan microphysics and physics : Outputs the nucleation rates and growth rates for the condensible species. (LR)

Location:
trunk/LMDZ.TITAN/libf/muphytitan
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.TITAN/libf/muphytitan/mm_clouds.f90

    r3496 r3682  
    101101    IF (mm_w_cloud_nucond) THEN
    102102      ! 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)
    104105    ENDIF
    105106
     
    134135  !-----------------------------------------------------------------------------
    135136
    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)
    137138    !! Get moments tendencies through nucleation/condensation/evaporation.
    138139    !!
     
    166167    REAL(kind=mm_wp), DIMENSION(:,:), INTENT(out) :: gazsat
    167168    !! 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
    168176    INTEGER                                       :: i,idx
    169177    REAL(kind=mm_wp), DIMENSION(:,:), ALLOCATABLE :: zdm0a,zdm3a,zdm0n,zdm3n
     
    175183    DO i = 1, mm_nesp
    176184      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
    178187    ENDDO
    179188
     
    200209  END SUBROUTINE mm_cloud_nucond
    201210
    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
    203212    !! Get moments tendencies through nucleation/condensation/evaporation of a given condensible specie.
    204213    !!
     
    230239    REAL(kind=mm_wp),INTENT(out), DIMENSION(:) :: Xsat
    231240    !! 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
    232249    INTEGER                                 :: i
    233250    REAL(kind=mm_wp)                        :: bef,aft
     
    281298    ! Then, from eq. 2:
    282299    ! 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   
    283304    cm0 = 4._mm_wp*mm_pi*nucr/mm_rm*mm_alpha_f(3._mm_wp)*mm_rcf**3*mm_dt
    284305    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
     
    317338    ! gets "true" growth rate
    318339    grate = grate * (newvap/qsat - seq)
     340    ! Copies the growth rate into an output variable
     341    Xgrate = grate
    319342
    320343    ! computes tendencies through condensation
     
    377400    REAL(kind=mm_wp), INTENT(in), DIMENSION(:)  :: sat  !! Saturation ratio of given specie (--).
    378401    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}\)).
    380403    INTEGER          :: i
    381404    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  
    522522  REAL(kind=mm_wp), DIMENSION(:,:), ALLOCATABLE, SAVE :: mm_ice_fluxes
    523523
     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
    524538  !> Condensible species saturation ratio (--).
    525539  !!
     
    583597  !$OMP THREADPRIVATE(mm_rcs,mm_rcf,mm_drad,mm_drho)
    584598  !$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)
    586600  !$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)
    587601  !$OMP THREADPRIVATE(mm_nla,mm_nle)
     
    12511265      ALLOCATE(mm_gazs_sat(mm_nla,mm_nesp)) ; mm_gazs_sat(:,:) = 0._mm_wp
    12521266    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
    12531274
    12541275    ! note mm_dzlev already from top to ground
  • trunk/LMDZ.TITAN/libf/muphytitan/mm_microphysic.f90

    r3496 r3682  
    163163  END FUNCTION muphys_nocld
    164164
    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)
    166166    !! Get various diagnostic fields of the microphysics.
    167167    !!
     
    171171    !! - Settling velocity (aerosols -total-, CCN and ices)
    172172    !! - Precipitations (aerosols -total-, CCN and ices)
    173     !! - condensible gazes saturation ratio
     173    !! - Condensible gazes saturation ratio
     174    !! - Nucleation and growth rates
    174175    !!
    175176    !! @note
     
    197198    REAL(kind=mm_wp), INTENT(out), OPTIONAL, DIMENSION(:,:) :: gazs_sat   !! Condensible gaz saturation ratios (--).
    198199    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}\)).
    199203
    200204    IF (PRESENT(aer_prec))   aer_prec   = ABS(mm_aer_prec) / dt
     
    211215      IF (PRESENT(ice_fluxes)) ice_fluxes = mm_ice_fluxes(mm_nla:1:-1,:)
    212216      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,:)
    213220    ELSE
    214221      IF (PRESENT(ccn_prec))   ccn_prec   = 0._mm_wp
     
    218225      IF (PRESENT(ice_fluxes)) ice_fluxes = 0._mm_wp
    219226      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
    220230    ENDIF
    221231  END SUBROUTINE mm_diagnostics
Note: See TracChangeset for help on using the changeset viewer.