Ignore:
Timestamp:
Nov 17, 2025, 11:02:59 AM (5 weeks ago)
Author:
debatzbr
Message:

Pluto PCM: Calculates the latent heat released by condensation from the microphysical module.
BBT

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.PLUTO/libf/muphypluto/mp2m_microphysics.F90

    r3957 r3962  
    2222    USE MP2M_CLOUDS
    2323    USE MP2M_METHODS
     24    USE MP2M_CLOUDS_METHODS
    2425    IMPLICIT NONE
    2526   
     
    3536    CONTAINS
    3637 
    37     FUNCTION muphys_all(m3as_prod,dm0as,dm3as,dm0af,dm3af,dm0ccn,dm3ccn,dm3ices,dmugases) RESULT(ret)
     38    FUNCTION muphys_all(m3as_prod,dm0as,dm3as,dm0af,dm3af,dm0ccn,dm3ccn,dm3ices,dmugases,dtlc) RESULT(ret)
    3839        !! Compute the evolution of moments tracers through haze microphysics processes.
    3940        !!
     
    4849        !! before the latter are called to initialize a new step.
    4950        !!
    50 
    5151        ! Production of the 3rd order moment of the spherical mode distribution (m3.m-2).
    5252        REAL(kind=mm_wp), INTENT(in), DIMENSION(:) :: m3as_prod
     
    6767        ! Tendencies of each condensible gaz species (mol.mol-1).
    6868        REAL(kind=mm_wp), INTENT(inout), DIMENSION(:,:) :: dmugases
     69        ! Latent heat of condensation (J.kg-1).
     70        REAL(kind=mm_wp), INTENT(inout), DIMENSION(:) :: dtlc
    6971
    7072        ! .true. on succes (i.e. model has been initialized at least once previously), .false. otherwise.
    7173        LOGICAL :: ret
    7274       
    73         ! Local variables.
     75        ! Local variables:
     76        !~~~~~~~~~~~~~~~~~
    7477        INTEGER :: i
    7578        ! Production of the spherical aerosols (m3.m-3).
     
    8285        ALLOCATE(m3a_s_prod(mm_nla))
    8386
    84         ! Sanity check for initialization
     87        ! Sanity check for initialization:
     88        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8589        ret = (mm_ini_col.AND.mm_ini_aer)
    8690        if (.NOT.ret) then
     
    9599        m3a_s_prod = m3as_prod(mm_nla:1:-1) / mm_dzlev(:)
    96100
    97         ! Calls haze microphysics (/!\ tendencies in X/m-3)
     101        ! Initialize latent heat
     102        dtlc(:) = 0._mm_wp
     103
     104        ! Calls haze microphysics (/!\ tendencies in X/m-3):
     105        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    98106        call mm_haze_microphysics(m3a_s_prod,Hdm0as,Hdm3as,Hdm0af,Hdm3af)
    99107
    100         ! Calls cloud microphysics (/!\ tendencies in X/m-3)
     108        ! Calls cloud microphysics (/!\ tendencies in X/m-3):
     109        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    101110        if (mm_call_clouds) then
    102111            call mm_cloud_microphysics(Hdm0as,Hdm3as,Hdm0af,Hdm3af,&
     
    110119                dm3ices(:,i)  = dm3ices(mm_nla:1:-1,i) * mm_dzlev(mm_nla:1:-1)
    111120                dmugases(:,i) = dmugases(mm_nla:1:-1,i)
     121
     122                ! Compute condensation heating rate
     123                dtlc(:) = dtlc(:) + (dmugases(:,i) * mm_xESPS(i)%fmol2fmas * mm_LheatX(mm_temp,mm_xESPS(i)))
    112124            enddo
    113125         
    114126        else
    115             Cdm0as(:) = 0._mm_wp ; Cdm3as(:) = 0._mm_wp ; Cdm0af(:) = 0._mm_wp ; Cdm3af(:) = 0._mm_wp
     127            Cdm0as(:) = 0._mm_wp ; Cdm3as(:) = 0._mm_wp ; Cdm0af(:)    = 0._mm_wp ; Cdm3af(:)    = 0._mm_wp
    116128            dm0ccn(:) = 0._mm_wp ; dm3ccn(:) = 0._mm_wp ; dm3ices(:,:) = 0._mm_wp ; dmugases(:,:) = 0._mm_wp
     129            dtlc(:)   = 0._mm_wp
    117130        endif ! end of mm_call_clouds
    118131       
     
    140153        !! before the latter are called to initialize a new step.
    141154        !!
    142 
    143155        ! Production of the 3rd order moment of the spherical mode distribution (m3.m-2).
    144156        REAL(kind=mm_wp), INTENT(in), DIMENSION(:) :: m3as_prod
     
    155167        LOGICAL :: ret
    156168       
    157         ! Local variables.
     169        ! Local variables:
     170        !~~~~~~~~~~~~~~~~~
    158171        ! Production of the spherical aerosols (m3.m-3).
    159172        REAL(kind=mm_wp), DIMENSION(:), ALLOCATABLE :: m3a_s_prod
    160173        ALLOCATE(m3a_s_prod(mm_nla))
    161174       
    162         ! Sanity check for initialization
     175        ! Sanity check for initialization:
     176        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    163177        ret = (mm_ini_col.AND.mm_ini_aer)
    164178        if (.NOT.ret) then
     
    173187        m3a_s_prod = m3as_prod(mm_nla:1:-1) / mm_dzlev(:)
    174188
    175         ! Calls haze microphysics
     189        ! Calls haze microphysics (/!\ tendencies in X/m-3):
     190        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    176191        call mm_haze_microphysics(m3a_s_prod,dm0as,dm3as,dm0af,dm3af)
    177192       
Note: See TracChangeset for help on using the changeset viewer.