Newer
Older
!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_RAIN_EVAPORATION
IMPLICIT NONE
CONTAINS
! ###############################################################################
SUBROUTINE LIMA_RAIN_EVAPORATION (PTSTEP, LDCOMPUTE, &
PRHODREF, PT, PLV, PLVFACT, PEVSAT, PRVSAT, &
PRVT, PRCT, PRRT, PCRT, PLBDR, &
P_TH_EVAP, P_RR_EVAP, P_CR_EVAP, &
PEVAP3D )
! ###############################################################################
!
!!
!! PURPOSE
!! -------
!! The purpose of this routine is to compute the raindrop evaporation
!!
!!
!! AUTHOR
!! ------
!! J.-M. Cohard * Laboratoire d'Aerologie*
!! J.-P. Pinty * Laboratoire d'Aerologie*
!! S. Berthet * Laboratoire d'Aerologie*
!! B. Vié * CNRM *
!!
!!
!! MODIFICATIONS
!! -------------
!! Original 15/03/2018
!!
! Delbeke/Vie 03/2022 : KHKO option
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_CST, ONLY : XRHOLW, XRV, XPI
USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCTMIN, LKHKO
USE MODD_PARAM_LIMA_WARM, ONLY : X0EVAR, XEX0EVAR, X1EVAR, XEX2EVAR, XEX1EVAR, XTHCO, XDIVA, XCEVAP
!
IMPLICIT NONE
!
!* 0.1 Declarations of dummy arguments :
!
REAL, INTENT(IN) :: PTSTEP ! Time step
LOGICAL, DIMENSION(:),INTENT(IN) :: LDCOMPUTE !
!
REAL, DIMENSION(:), INTENT(IN) :: PRHODREF ! Reference density
REAL, DIMENSION(:), INTENT(IN) :: PT ! Temperature
REAL, DIMENSION(:), INTENT(IN) :: PLV !
REAL, DIMENSION(:), INTENT(IN) :: PLVFACT !
REAL, DIMENSION(:), INTENT(IN) :: PEVSAT !
REAL, DIMENSION(:), INTENT(IN) :: PRVSAT !
!
REAL, DIMENSION(:), INTENT(IN) :: PRVT ! Water vapor m.r. at t
REAL, DIMENSION(:), INTENT(IN) :: PRCT ! Cloud water m.r. at t
REAL, DIMENSION(:), INTENT(IN) :: PRRT ! Rain water m.r. at t
REAL, DIMENSION(:), INTENT(IN) :: PCRT ! Rain water conc at t
REAL, DIMENSION(:), INTENT(IN) :: PLBDR ! Lambda(rain)
!
REAL, DIMENSION(:), INTENT(OUT) :: P_TH_EVAP
REAL, DIMENSION(:), INTENT(OUT) :: P_RR_EVAP
REAL, DIMENSION(:), INTENT(OUT) :: P_CR_EVAP
!
REAL, DIMENSION(:), INTENT(INOUT) :: PEVAP3D ! Rain evap profile
!
!* 0.1 Declarations of local variables :
!
!
LOGICAL, DIMENSION(SIZE(PRHODREF)) :: GEVAP
REAL, DIMENSION(SIZE(PRHODREF)) :: ZZW1, ZZW2
!
!-------------------------------------------------------------------------------
!
!
!* 1. PREPARE COMPUTATIONS - PACK
! ---------------------------
!
P_TH_EVAP(:) = 0.
P_RR_EVAP(:) = 0.
P_CR_EVAP(:) = 0.
!
ZZW1(:) = 0.
ZZW2(:) = 0.
!
GEVAP(:) = .FALSE.
GEVAP(:) = LDCOMPUTE(:) .AND. &
PRRT(:)>XRTMIN(3) .AND. &
PRVT(:)<PRVSAT(:) .AND. &
PCRT(:)>XCTMIN(3)
!
!
!
IF (LKHKO) THEN
ZZW1(:) = MAX((1.0 - PRVT(:)/ZZW1(:)),0.0) ! Subsaturation
ZZW2(:) = 1. / ( XRHOLW*((((PLV(:)/PT(:))**2)/(XTHCO*XRV)) + & ! G
(XRV*PT(:))/(XDIVA*PEVSAT(:))))
ZZW2(:) = 3.0 * XCEVAP * ZZW2(:) * (4.*XPI*XRHOLW/(3.))**(2./3.) * &
(PRRT(:))**(1./3.) * (PCRT(:))**(2./3.) * ZZW1(:)
P_RR_EVAP(:) = - ZZW2(:)
ZZW2(:) = ZZW2(:) * PCRT(:)/PRRT(:)
P_CR_EVAP = - ZZW2(:)
ELSE
WHERE ( GEVAP )
ZZW1(:) = MAX((1.0 - PRVT(:)/PRVSAT(:)),0.0) ! Subsaturation
!
! Compute the function G(T)
!
ZZW2(:) = 1. / ( XRHOLW*((((PLV(:)/PT(:))**2)/(XTHCO*XRV)) + (XRV*PT(:))/(XDIVA*PEVSAT(:)))) !G
!
! Compute the evaporation tendency
!
ZZW2(:) = ZZW2(:) * ZZW1(:) * PRRT(:) * &
(X0EVAR * PLBDR(:)**XEX0EVAR + X1EVAR * PRHODREF(:)**XEX2EVAR * PLBDR(:)**XEX1EVAR)
ZZW2(:) = MAX(ZZW2(:),0.0)
P_RR_EVAP(:) = - ZZW2(:)
! P_TH_EVAP(:) = P_RR_EVAP(:) * PLVFACT(:)
! PEVAP3D(:) = - P_RR_EVAP(:)
!
!-----------------------------------------------------------------------------
!
END SUBROUTINE LIMA_RAIN_EVAPORATION
END MODULE MODE_LIMA_RAIN_EVAPORATION