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

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

Location:
trunk/LMDZ.PLUTO/libf/phypluto
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.PLUTO/libf/phypluto/mp2m_calmufi.F90

    r3957 r3962  
    11MODULE mp2m_calmufi
    22    use tracer_h
    3     use comcstfi_mod, only : mugaz
     3    use comcstfi_mod, only : mugaz, cpp
    44    use callkeys_mod, only : call_haze_prod_pCH4, haze_rho,&
    55                             callmuclouds
     
    4444    CONTAINS
    4545   
    46     SUBROUTINE calmufi(dt, plev, zlev, play, zlay, g3d, temp, pq, zdqfi, zdqmufi_prod, zdqmufi)
     46    SUBROUTINE calmufi(dt, plev, zlev, play, zlay, g3d, temp, pq, zdqfi, zdqmufi_prod, zdqmufi, zdtcond)
    4747        !! Interface subroutine to YAMMS model for LMD PCM.
    4848        !!
     
    6262        REAL(kind=8), DIMENSION(:,:,:), INTENT(IN)  :: zdqmufi_prod ! Aerosols production tendency (kg/kg_of_air/s).
    6363        REAL(kind=8), DIMENSION(:,:,:), INTENT(OUT) :: zdqmufi      ! Microphysical tendency for tracers (X.m-2 --> X.kg-1.s-1).
     64        REAL(kind=8), DIMENSION(:,:),   INTENT(OUT) :: zdtcond      ! Condensation heating rate (K.s-1).
    6465       
    6566        ! Local tracers:
     
    9091        REAL(kind=8), DIMENSION(:,:), ALLOCATABLE :: dm3ices  ! Tendencies of the 3rd order moments of each ice components (m3.m-2).
    9192        REAL(kind=8), DIMENSION(:,:), ALLOCATABLE :: dmugases ! Tendencies of each condensible gas species (mol.mol-1).
     93        REAL(kind=8), DIMENSION(:), ALLOCATABLE   :: dtlc     ! Latent heat of condensation (J.kg-1).
    9294       
    9395        ! Local variables:
     
    129131        ALLOCATE(dm3ices(nlay,nmicro_ices))
    130132        ALLOCATE(dmugases(nlay,nmicro_ices))
     133        ALLOCATE(dtlc(nlay))
    131134
    132135        ALLOCATE(int2ext(nlon,nlay)) 
     
    138141        ! Initialization of zdqmufi here since intent=out and no action performed on every tracers
    139142        zdqmufi(:,:,:) = 0.D0
     143
     144        ! Initialization of zdtcond here since intent=out
     145        zdtcond(:,:) = 0.D0
    140146       
    141147        ! Initialize tracers updated with former processes from physics
     
    191197           
    192198            ! Initializes tendencies
    193             dm0as(:) = 0._mm_wp ; dm3as(:) = 0._mm_wp ; dm0af(:) = 0._mm_wp ; dm3af(:) = 0._mm_wp
     199            dm0as(:)  = 0._mm_wp ; dm3as(:)  = 0._mm_wp ; dm0af(:)     = 0._mm_wp ; dm3af(:)      = 0._mm_wp
    194200            dm0ccn(:) = 0._mm_wp ; dm3ccn(:) = 0._mm_wp ; dm3ices(:,:) = 0._mm_wp ; dmugases(:,:) = 0._mm_wp
     201            dtlc(:)   = 0._mm_wp
    195202           
    196203        !----------------------------
     
    200207            ! Call microphysics
    201208            if (callmuclouds) then
    202                 if(.NOT.mm_muphys(m3as_prod,dm0as,dm3as,dm0af,dm3af,dm0ccn,dm3ccn,dm3ices,dmugases)) then
     209                if(.NOT.mm_muphys(m3as_prod,dm0as,dm3as,dm0af,dm3af,dm0ccn,dm3ccn,dm3ices,dmugases,dtlc)) then
    203210                    call abort_program(error("mm_muphys (clouds) aborted -> initialization not done !",-1))
    204211                endif
     
    232239                    zdqmufi(ilon,:,micro_gas_indx(i)) = dmugases(:,i) * (mmol(micro_gas_indx(i))/mugaz)
    233240                enddo
     241
     242                ! Compute condensation heating rate in K.s-1
     243                zdtcond(ilon,:) = dtlc(:) / cpp / dt
    234244            endif ! End of callmuclouds
    235245           
  • trunk/LMDZ.PLUTO/libf/phypluto/physiq_mod.F90

    r3957 r3962  
    411411      real pdqmufi_prod(ngrid,nlayer,nq) ! Aerosols production tendency (kg/kg_of_air/s).
    412412      real int2ext(ngrid,nlayer)         ! Intensive to extensive factor (kg_air/m3: X/kg_air --> X/m3).
     413      real zdtcond(ngrid,nlayer)         ! Condensation heating rate (K.s-1).
    413414
    414415! Local variables for LOCAL CALCULATIONS:
     
    16171618            pdqmufi(:,:,:) = 0.
    16181619
    1619             call calmufi(ptimestep,pplev,zzlev,pplay,zzlay,gzlat,pt,pq,pdq,pdqmufi_prod,pdqmufi)
     1620            call calmufi(ptimestep,pplev,zzlev,pplay,zzlay,gzlat,pt,pq,pdq,pdqmufi_prod,pdqmufi,zdtcond)
    16201621
    16211622            pdq(:,:,:) = pdq(:,:,:) + pdqmufi(:,:,:)
     
    25362537                  call write_output("m3"//TRIM(str(6:)),"Volume of "//TRIM(str(6:))//" ice","m3.m-3",zq(:,:,micro_ice_indx(iq))*int2ext(:,:))
    25372538               enddo
     2539               call write_output("dtcond","Condensation heating rate","K.s-1",zdtcond(:,:))
    25382540
    25392541               ! Diagnostics:
Note: See TracChangeset for help on using the changeset viewer.