diff --git a/src/arome/gmkpack_ignored_files b/src/arome/gmkpack_ignored_files index fbb525c785298542f41e8eefb7a8b68dfdb4cdb4..c6c3c26b934fded65e85ad7abe1450c3ce6f0839 100644 --- a/src/arome/gmkpack_ignored_files +++ b/src/arome/gmkpack_ignored_files @@ -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 diff --git a/src/arome/micro/ice4_tendencies.F90 b/src/arome/micro/ice4_tendencies.F90 index c3b5a5fbb02d56200eedd8ad99b6b9f275bdb49b..23d6bf57dfa01dc348f96f435fc8993ce74218b4 100644 --- a/src/arome/micro/ice4_tendencies.F90 +++ b/src/arome/micro/ice4_tendencies.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) diff --git a/src/arome/modset_Ryad/mpa/micro/internals/ice4_rimltc.F90 b/src/arome/modset_Ryad/mpa/micro/internals/ice4_rimltc.F90 deleted file mode 100644 index 4d9c39363da9d070bf37633317538b259cce8da9..0000000000000000000000000000000000000000 --- a/src/arome/modset_Ryad/mpa/micro/internals/ice4_rimltc.F90 +++ /dev/null @@ -1,4 +0,0 @@ -SUBROUTINE ICE4_RIMLTC -!! dead code - inlined in ice4_tendencies. -!! R. El Khatib 24-Aug-2021 -END SUBROUTINE ICE4_RIMLTC diff --git a/src/arome/modset_Ryad/mpa/micro/internals/ice4_rrhong.F90 b/src/arome/modset_Ryad/mpa/micro/internals/ice4_rrhong.F90 deleted file mode 100644 index 34778f274899ece0fcc41022e8568517b4e4cdfa..0000000000000000000000000000000000000000 --- a/src/arome/modset_Ryad/mpa/micro/internals/ice4_rrhong.F90 +++ /dev/null @@ -1,4 +0,0 @@ -SUBROUTINE ICE4_RRHONG -!! dead code - inlined in ice4_tendencies. -!! R. El Khatib 24-Aug-2021 -END SUBROUTINE ICE4_RRHONG diff --git a/src/arome/micro/ice4_rimltc.F90 b/src/common/micro/mode_ice4_rimltc.F90 similarity index 78% rename from src/arome/micro/ice4_rimltc.F90 rename to src/common/micro/mode_ice4_rimltc.F90 index 7ef2a89922ba345fd232807221a585bfdfe5da2d..9a6e7f0772642982a70c7b73a0fd0c0cbf75c5ac 100644 --- a/src/arome/micro/ice4_rimltc.F90 +++ b/src/common/micro/mode_ice4_rimltc.F90 @@ -1,8 +1,17 @@ +!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 diff --git a/src/arome/micro/ice4_rrhong.F90 b/src/common/micro/mode_ice4_rrhong.F90 similarity index 77% rename from src/arome/micro/ice4_rrhong.F90 rename to src/common/micro/mode_ice4_rrhong.F90 index 35364711de0385604bdeec904ac9c1a67bd410f9..942e4e3281d1f530286705266be4b18b36a3124b 100644 --- a/src/arome/micro/ice4_rrhong.F90 +++ b/src/common/micro/mode_ice4_rrhong.F90 @@ -1,8 +1,16 @@ +!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 diff --git a/src/mesonh/micro/ice4_rimltc.f90 b/src/mesonh/micro/ice4_rimltc.f90 deleted file mode 100644 index fc4e129862254befe7e652f40780aedbee481759..0000000000000000000000000000000000000000 --- a/src/mesonh/micro/ice4_rimltc.f90 +++ /dev/null @@ -1,105 +0,0 @@ -!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 diff --git a/src/mesonh/micro/ice4_rrhong.f90 b/src/mesonh/micro/ice4_rrhong.f90 deleted file mode 100644 index da26489475b841ca17b8fcd1d286bacc4aeafd38..0000000000000000000000000000000000000000 --- a/src/mesonh/micro/ice4_rrhong.f90 +++ /dev/null @@ -1,105 +0,0 @@ -!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