Skip to content
Snippets Groups Projects
Commit a1e7305d authored by RIETTE Sébastien's avatar RIETTE Sébastien
Browse files

Sébastien 25/11/2021 Merge MNH->COMMON ice4_rimltc and ice4_rrhong

parent 9d54b015
No related branches found
No related tags found
No related merge requests found
......@@ -38,3 +38,7 @@ phyex/micro/ice4_tendencies.F90
phyex/micro/modi_ice4_tendencies.F90
phyex/micro/modi_ice4_rainfr_vert.F90
phyex/micro/ice4_rainfr_vert.F90
phyex/micro/ice4_rimltc.F90
phyex/micro/modi_ice4_rimltc.F90
phyex/micro/ice4_rrhong.F90
phyex/micro/modi_ice4_rrhong.F90
......@@ -42,8 +42,8 @@ USE MODD_RAIN_ICE_DESCR
USE MODD_PARAM_ICE, ONLY : CSNOWRIMING
USE MODI_ICE4_NUCLEATION
USE MODI_ICE4_RRHONG
USE MODI_ICE4_RIMLTC
USE MODE_ICE4_RRHONG, ONLY: ICE4_RRHONG
USE MODE_ICE4_RIMLTC, ONLY: ICE4_RIMLTC
USE MODE_ICE4_RSRIMCG_OLD, ONLY: ICE4_RSRIMCG_OLD
USE MODE_ICE4_COMPUTE_PDF, ONLY: ICE4_COMPUTE_PDF
USE MODE_ICE4_RAINFR_VERT, ONLY: ICE4_RAINFR_VERT
......@@ -237,6 +237,11 @@ ELSE
&ZT, ZRRT, &
&ZTHT, &
&PRRHONG_MR, PB_TH, PB_RR, PB_RG)
DO JL=1, KSIZE
PB_RG(JL) = PB_RG(JL) + PRRHONG_MR(JL)
PB_RR(JL) = PB_RR(JL) - PRRHONG_MR(JL)
PB_TH(JL) = PB_TH(JL) + PRRHONG_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
ENDDO
DO JL=1, KSIZE
ZRGT(JL) = ZRGT(JL) + PRRHONG_MR(JL)
ZRRT(JL) = ZRRT(JL) - PRRHONG_MR(JL)
......@@ -250,7 +255,12 @@ ELSE
&PEXN, PLVFACT, PLSFACT, &
&ZT, &
&ZTHT, ZRIT, &
&PRIMLTC_MR, PB_TH, PB_RC, PB_RI)
&PRIMLTC_MR)
DO JL=1, KSIZE
PB_RC(JL) = PB_RC(JL) + PRIMLTC_MR(JL)
PB_RI(JL) = PB_RI(JL) - PRIMLTC_MR(JL)
PB_TH(JL) = PB_TH(JL) - PRIMLTC_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
ENDDO
DO JL=1, KSIZE
ZRCT(JL) = ZRCT(JL) + PRIMLTC_MR(JL)
ZRIT(JL) = ZRIT(JL) - PRIMLTC_MR(JL)
......
SUBROUTINE ICE4_RIMLTC
!! dead code - inlined in ice4_tendencies.
!! R. El Khatib 24-Aug-2021
END SUBROUTINE ICE4_RIMLTC
SUBROUTINE ICE4_RRHONG
!! dead code - inlined in ice4_tendencies.
!! R. El Khatib 24-Aug-2021
END SUBROUTINE ICE4_RRHONG
!MNH_LIC Copyright 1994-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_ICE4_RIMLTC
IMPLICIT NONE
CONTAINS
SUBROUTINE ICE4_RIMLTC(KSIZE, LDSOFT, PCOMPUTE, &
&PEXN, PLVFACT, PLSFACT, &
&PT, &
&PTHT, PRIT, &
&PRIMLTC_MR, PB_TH, PB_RC, PB_RI)
&PRIMLTC_MR)
!!
!!** PURPOSE
!! -------
......@@ -20,10 +29,8 @@ SUBROUTINE ICE4_RIMLTC(KSIZE, LDSOFT, PCOMPUTE, &
!* 0. DECLARATIONS
! ------------
!
USE MODD_CST
USE MODD_RAIN_ICE_PARAM
USE MODD_RAIN_ICE_DESCR
USE MODD_PARAM_ICE, ONLY : LFEEDBACKT
USE MODD_CST, ONLY: XTT
USE MODD_PARAM_ICE, ONLY: LFEEDBACKT
USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
!
......@@ -40,10 +47,7 @@ REAL, DIMENSION(KSIZE), INTENT(IN) :: PLSFACT ! L_s/(Pi_ref*C_ph)
REAL, DIMENSION(KSIZE), INTENT(IN) :: PT ! Temperature
REAL, DIMENSION(KSIZE), INTENT(IN) :: PTHT ! Theta at t
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRIT ! Cloud ice at t
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRIMLTC_MR ! Mixing ratio change due to cloud ice melting
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_TH
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RC
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RI
REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRIMLTC_MR ! Mixing ratio change due to cloud ice melting
!
!* 0.2 declaration of local variables
!
......@@ -72,12 +76,8 @@ IF(.NOT. LDSOFT) THEN
ENDDO
ENDIF
ENDIF
DO JL=1, KSIZE
PB_RC(JL) = PB_RC(JL) + PRIMLTC_MR(JL)
PB_RI(JL) = PB_RI(JL) - PRIMLTC_MR(JL)
PB_TH(JL) = PB_TH(JL) - PRIMLTC_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
ENDDO
!
IF (LHOOK) CALL DR_HOOK('ICE4_RIMLTC', 1, ZHOOK_HANDLE)
!
END SUBROUTINE ICE4_RIMLTC
END MODULE MODE_ICE4_RIMLTC
!MNH_LIC Copyright 1994-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_ICE4_RRHONG
IMPLICIT NONE
CONTAINS
SUBROUTINE ICE4_RRHONG(KSIZE, LDSOFT, PCOMPUTE, &
&PEXN, PLVFACT, PLSFACT, &
&PT, PRRT, &
&PTHT, &
&PRRHONG_MR, PB_TH, PB_RR, PB_RG)
&PRRHONG_MR)
!!
!!** PURPOSE
!! -------
......@@ -20,10 +28,9 @@ SUBROUTINE ICE4_RRHONG(KSIZE, LDSOFT, PCOMPUTE, &
!* 0. DECLARATIONS
! ------------
!
USE MODD_CST
USE MODD_RAIN_ICE_PARAM
USE MODD_RAIN_ICE_DESCR
USE MODD_PARAM_ICE, ONLY : LFEEDBACKT
USE MODD_CST, ONLY: XTT
USE MODD_RAIN_ICE_DESCR, ONLY: XRTMIN
USE MODD_PARAM_ICE, ONLY: LFEEDBACKT
USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
!
......@@ -40,10 +47,7 @@ REAL, DIMENSION(KSIZE), INTENT(IN) :: PLSFACT ! L_s/(Pi_ref*C_ph)
REAL, DIMENSION(KSIZE), INTENT(IN) :: PT ! Temperature
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRRT ! Rain water m.r. at t
REAL, DIMENSION(KSIZE), INTENT(IN) :: PTHT ! Theta at t
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRRHONG_MR ! Mixing ratio change due to spontaneous freezing
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_TH
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RR
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RG
REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRRHONG_MR ! Mixing ratio change due to spontaneous freezing
!
!* 0.2 declaration of local variables
!
......@@ -71,12 +75,8 @@ IF(.NOT. LDSOFT) THEN
ENDDO
ENDIF
ENDIF
DO JL=1, KSIZE
PB_RG(JL) = PB_RG(JL) + PRRHONG_MR(JL)
PB_RR(JL) = PB_RR(JL) - PRRHONG_MR(JL)
PB_TH(JL) = PB_TH(JL) + PRRHONG_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
ENDDO
!
IF (LHOOK) CALL DR_HOOK('ICE4_RRHONG', 1, ZHOOK_HANDLE)
!
END SUBROUTINE ICE4_RRHONG
END MODULE MODE_ICE4_RRHONG
!MNH_LIC Copyright 1994-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 MODI_ICE4_RIMLTC
INTERFACE
SUBROUTINE ICE4_RIMLTC(KSIZE, LDSOFT, PCOMPUTE, &
&PEXN, PLVFACT, PLSFACT, &
&PT, &
&PTHT, PRIT, &
&PRIMLTC_MR, PB_TH, PB_RC, PB_RI)
IMPLICIT NONE
INTEGER, INTENT(IN) :: KSIZE
LOGICAL, INTENT(IN) :: LDSOFT
REAL, DIMENSION(KSIZE), INTENT(IN) :: PCOMPUTE
REAL, DIMENSION(KSIZE), INTENT(IN) :: PEXN ! Exner function
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLVFACT ! L_v/(Pi_ref*C_ph)
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLSFACT ! L_s/(Pi_ref*C_ph)
REAL, DIMENSION(KSIZE), INTENT(IN) :: PT ! Temperature
REAL, DIMENSION(KSIZE), INTENT(IN) :: PTHT ! Theta at t
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRIT ! Cloud ice at t
REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRIMLTC_MR ! Mixing ratio change due to cloud ice melting
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_TH
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RC
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RI
END SUBROUTINE ICE4_RIMLTC
END INTERFACE
END MODULE MODI_ICE4_RIMLTC
SUBROUTINE ICE4_RIMLTC(KSIZE, LDSOFT, PCOMPUTE, &
&PEXN, PLVFACT, PLSFACT, &
&PT, &
&PTHT, PRIT, &
&PRIMLTC_MR, PB_TH, PB_RC, PB_RI)
!!
!!** PURPOSE
!! -------
!! Computes the RIMLTC process
!!
!! AUTHOR
!! ------
!! S. Riette from the splitting of rain_ice source code (nov. 2014)
!!
!! MODIFICATIONS
!! -------------
!!
!
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_CST, ONLY: XTT
USE MODD_PARAM_ICE, ONLY: LFEEDBACKT
!
IMPLICIT NONE
!
!* 0.1 Declarations of dummy arguments :
!
INTEGER, INTENT(IN) :: KSIZE
LOGICAL, INTENT(IN) :: LDSOFT
REAL, DIMENSION(KSIZE), INTENT(IN) :: PCOMPUTE
REAL, DIMENSION(KSIZE), INTENT(IN) :: PEXN ! Exner function
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLVFACT ! L_v/(Pi_ref*C_ph)
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLSFACT ! L_s/(Pi_ref*C_ph)
REAL, DIMENSION(KSIZE), INTENT(IN) :: PT ! Temperature
REAL, DIMENSION(KSIZE), INTENT(IN) :: PTHT ! Theta at t
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRIT ! Cloud ice at t
REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRIMLTC_MR ! Mixing ratio change due to cloud ice melting
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_TH
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RC
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RI
!
!* 0.2 declaration of local variables
!
REAL, DIMENSION(KSIZE) :: ZMASK
INTEGER :: JL
!
!-------------------------------------------------------------------------------
!
!* 7.1 cloud ice melting
!
PRIMLTC_MR(:)=0.
IF(.NOT. LDSOFT) THEN
DO JL=1, KSIZE
ZMASK(JL)=MAX(0., -SIGN(1., -PRIT(JL))) * & ! PRIT(:)>0.
&MAX(0., -SIGN(1., XTT-PT(JL))) * & ! PT(:)>XTT
&PCOMPUTE(JL)
PRIMLTC_MR(JL)=PRIT(JL) * ZMASK(JL)
ENDDO
IF(LFEEDBACKT) THEN
!Limitation due to 0 crossing of temperature
DO JL=1, KSIZE
PRIMLTC_MR(JL)=MIN(PRIMLTC_MR(JL), MAX(0., (PTHT(JL)-XTT/PEXN(JL)) / (PLSFACT(JL)-PLVFACT(JL))))
ENDDO
ENDIF
ENDIF
DO JL=1, KSIZE
PB_RC(JL) = PB_RC(JL) + PRIMLTC_MR(JL)
PB_RI(JL) = PB_RI(JL) - PRIMLTC_MR(JL)
PB_TH(JL) = PB_TH(JL) - PRIMLTC_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
ENDDO
!
!
END SUBROUTINE ICE4_RIMLTC
!MNH_LIC Copyright 1994-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 MODI_ICE4_RRHONG
INTERFACE
SUBROUTINE ICE4_RRHONG(KSIZE, LDSOFT, PCOMPUTE, &
&PEXN, PLVFACT, PLSFACT, &
&PT, PRRT, &
&PTHT, &
&PRRHONG_MR, PB_TH, PB_RR, PB_RG)
IMPLICIT NONE
INTEGER, INTENT(IN) :: KSIZE
LOGICAL, INTENT(IN) :: LDSOFT
REAL, DIMENSION(KSIZE), INTENT(IN) :: PCOMPUTE
REAL, DIMENSION(KSIZE), INTENT(IN) :: PEXN ! Exner function
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLVFACT ! L_v/(Pi_ref*C_ph)
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLSFACT ! L_s/(Pi_ref*C_ph)
REAL, DIMENSION(KSIZE), INTENT(IN) :: PT ! Temperature
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRRT ! Rain water m.r. at t
REAL, DIMENSION(KSIZE), INTENT(IN) :: PTHT ! Theta at t
REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRRHONG_MR ! Mixing ratio change due to spontaneous freezing
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_TH
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RR
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RG
END SUBROUTINE ICE4_RRHONG
END INTERFACE
END MODULE MODI_ICE4_RRHONG
SUBROUTINE ICE4_RRHONG(KSIZE, LDSOFT, PCOMPUTE, &
&PEXN, PLVFACT, PLSFACT, &
&PT, PRRT, &
&PTHT, &
&PRRHONG_MR, PB_TH, PB_RR, PB_RG)
!!
!!** PURPOSE
!! -------
!! Computes the RRHONG process
!!
!! AUTHOR
!! ------
!! S. Riette from the splitting of rain_ice source code (nov. 2014)
!!
!! MODIFICATIONS
!! -------------
!!
!
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_CST, ONLY: XTT
USE MODD_RAIN_ICE_DESCR, ONLY: XRTMIN
USE MODD_PARAM_ICE, ONLY: LFEEDBACKT
!
IMPLICIT NONE
!
!* 0.1 Declarations of dummy arguments :
!
INTEGER, INTENT(IN) :: KSIZE
LOGICAL, INTENT(IN) :: LDSOFT
REAL, DIMENSION(KSIZE), INTENT(IN) :: PCOMPUTE
REAL, DIMENSION(KSIZE), INTENT(IN) :: PEXN ! Exner function
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLVFACT ! L_v/(Pi_ref*C_ph)
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLSFACT ! L_s/(Pi_ref*C_ph)
REAL, DIMENSION(KSIZE), INTENT(IN) :: PT ! Temperature
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRRT ! Rain water m.r. at t
REAL, DIMENSION(KSIZE), INTENT(IN) :: PTHT ! Theta at t
REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRRHONG_MR ! Mixing ratio change due to spontaneous freezing
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_TH
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RR
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RG
!
!* 0.2 declaration of local variables
!
REAL, DIMENSION(KSIZE) :: ZMASK
INTEGER :: JL
!
!-------------------------------------------------------------------------------
!
!* 3.3 compute the spontaneous freezing source: RRHONG
!
PRRHONG_MR(:) = 0.
IF(.NOT. LDSOFT) THEN
DO JL=1, KSIZE
ZMASK(JL)=MAX(0., -SIGN(1., PT(JL)-(XTT-35.0))) * & ! PT(:)<XTT-35.0
&MAX(0., -SIGN(1., XRTMIN(3)-PRRT(JL))) * & ! PRRT(:)>XRTMIN(3)
&PCOMPUTE(JL)
PRRHONG_MR(JL)=PRRT(JL) * ZMASK(JL)
ENDDO
IF(LFEEDBACKT) THEN
!Limitation due to -35 crossing of temperature
DO JL=1, KSIZE
PRRHONG_MR(JL)=MIN(PRRHONG_MR(JL), MAX(0., ((XTT-35.)/PEXN(JL)-PTHT(JL))/(PLSFACT(JL)-PLVFACT(JL))))
ENDDO
ENDIF
ENDIF
DO JL=1, KSIZE
PB_RG(JL) = PB_RG(JL) + PRRHONG_MR(JL)
PB_RR(JL) = PB_RR(JL) - PRRHONG_MR(JL)
PB_TH(JL) = PB_TH(JL) + PRRHONG_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
ENDDO
!
!
END SUBROUTINE ICE4_RRHONG
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment