Skip to content
Snippets Groups Projects
mode_lima_droplets_autoconversion.f90 4.44 KiB
Newer Older
  • Learn to ignore specific revisions
  • !MNH_LIC Copyright 2018-2021 CNRS, Meteo-France and Universite Paul Sabatier
    !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
    !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
    !MNH_LIC for details. version 1.
    !-------------------------------------------------------------------------------
    
    MODULE MODE_LIMA_DROPLETS_AUTOCONVERSION
      IMPLICIT NONE
    CONTAINS
    
    !     ##########################################################################
    
      SUBROUTINE LIMA_DROPLETS_AUTOCONVERSION (LDCOMPUTE,                      &
                                               PRHODREF,                       &
                                               PRCT, PCCT, PLBDC, PLBDR,       &
                                               P_RC_AUTO, P_CC_AUTO, P_CR_AUTO )
    
    !     ##########################################################################
    !
    !!    PURPOSE
    !!    -------
    !!      Compute the autoconversion of cloud droplets
    !!
    !!
    !!    AUTHOR
    !!    ------
    !!      J.-M. Cohard     * Laboratoire d'Aerologie*
    !!      J.-P. Pinty      * Laboratoire d'Aerologie*
    !!      S.    Berthet    * Laboratoire d'Aerologie*
    !!      B.    Vié        * Laboratoire d'Aerologie*
    !!
    !!    MODIFICATIONS
    !!    -------------
    !!      Original             15/03/2018 
    !!      B. Vie 02/03/2020 : missing CC process
    
    !       Delbeke/Vie     03/2022 : KHKO option
    
    !-------------------------------------------------------------------------------
    !
    !*       0.    DECLARATIONS
    !              ------------
    !
    
    USE MODD_PARAM_LIMA,      ONLY : XRTMIN, XCTMIN, LKHKO, LKESSLERAC, NMOM_C
    
    USE MODD_PARAM_LIMA_WARM, ONLY : XLAUTR, XAUTO1, XLAUTR_THRESHOLD, &
                                     XITAUTR, XAUTO2, XITAUTR_THRESHOLD, &
    
                                     XACCR4, XACCR5, XACCR3, XACCR1, XAC, XR0
    USE MODD_CST,             ONLY : XPI, XRHOLW
    
    !
    IMPLICIT NONE
    !
    !*       0.1   Declarations of dummy arguments :
    !
    LOGICAL, DIMENSION(:),INTENT(IN)    :: LDCOMPUTE
    !
    REAL, DIMENSION(:),   INTENT(IN)    :: PRHODREF ! Reference Exner function
    !
    REAL, DIMENSION(:),   INTENT(IN)    :: PRCT    ! Cloud water m.r. at t
    REAL, DIMENSION(:),   INTENT(IN)    :: PCCT    ! Cloud water conc. at t
    REAL, DIMENSION(:),   INTENT(IN)    :: PLBDC   ! 
    REAL, DIMENSION(:),   INTENT(IN)    :: PLBDR   ! 
    !
    REAL, DIMENSION(:),   INTENT(OUT)   :: P_RC_AUTO
    REAL, DIMENSION(:),   INTENT(OUT)   :: P_CC_AUTO
    REAL, DIMENSION(:),   INTENT(OUT)   :: P_CR_AUTO
    !
    !*       0.2   Declarations of local variables :
    !
    REAL, DIMENSION(SIZE(PRCT)) :: ZW1, ZW2, ZW3 ! work arrays
    !
    !-------------------------------------------------------------------------------
    !
    P_RC_AUTO(:) = 0.0
    P_CC_AUTO(:) = 0.0
    P_CR_AUTO(:) = 0.0
    !
    ZW3(:) = 0.0
    ZW2(:) = 0.0
    ZW1(:) = 0.0
    
    !
    IF (NMOM_C.EQ.1 .AND. LKESSLERAC) THEN
       P_RC_AUTO(:) = - 1.E-3 * MAX ( PRCT(:) - 0.5E-3 / PRHODREF(:), 0. )
    ELSE IF (LKHKO) THEN
    !
    
    !        1. Autoconversion of cloud droplets
    !   	 -----------------------------------
    
    !
       WHERE ( PRCT(:)>XRTMIN(2) .AND. PCCT(:)>XCTMIN(2) .AND. LDCOMPUTE(:) )
    !
          ZW1(:)= 1350.0 * PRCT(:)**(2.47) * (PCCT(:)* PRHODREF(:)/1.0E6)**(-1.79) ! ZCCT in cm-3         
    !
          P_RC_AUTO(:) = - ZW1(:)
    !
          ZW2(:) = ZW1(:) * 3./(4.*XPI*XRHOLW*(XR0)**(3.))
          P_CR_AUTO(:) = ZW2(:)
    !
          ZW3(:) = - ZW1(:) * PCCT(:) / PRCT(:)
          P_CC_AUTO(:) = ZW3(:)
    !
       END WHERE
    !
    ELSE
    !
    !        2. Autoconversion of cloud droplets (Berry-Reinhardt parameterization)
    !   	 ----------------------------------------------------------------------
    !
       WHERE( PRCT(:)>XRTMIN(2) .AND. PCCT(:)>XCTMIN(2) .AND. PLBDC(:)>0. .AND. LDCOMPUTE(:) )
          ZW2(:) = MAX( 0.0, &
    
                         XLAUTR*PRHODREF(:)*PRCT(:)*(XAUTO1/min(PLBDC(:),1.e9)**4-XLAUTR_THRESHOLD) ) ! L 
    !
    
                         XITAUTR*ZW2(:)*PRCT(:)*(XAUTO2/PLBDC(:)-XITAUTR_THRESHOLD) ) ! L/tau
    !
    
          ZW1(:) = MIN( MIN( 1.2E4, &
                             (XACCR4/PLBDC(:)-XACCR5)/XACCR3 ), &
                             PLBDR(:)/XACCR1 )         ! D**-1 threshold diameter for 
                                                       ! switching the autoconversion regimes
                                                       ! min (80 microns, D_h, D_r)
          ZW3(:) = ZW3(:) * MAX( 0.0,ZW1(:) )**3 / XAC 
    
          P_CC_AUTO(:) = -ZW3(:)
          P_CR_AUTO(:) = ZW3(:)
    
    !
    !-------------------------------------------------------------------------------
    !
    END SUBROUTINE LIMA_DROPLETS_AUTOCONVERSION
    
    END MODULE MODE_LIMA_DROPLETS_AUTOCONVERSION