diff --git a/docs/TODO b/docs/TODO index 55b6e2dc32a870dd8ba41867cf2fdb75e4831483..2c8de10ce044f960bf982f7a41b9d9f489c62328 100644 --- a/docs/TODO +++ b/docs/TODO @@ -54,5 +54,3 @@ SPP Gradients/shuman: - essayer de mettre des abort dans les routines arome (shuman doit suffire) - -compute_frac_ice: prendre la solution retenue à la fin de la discussion entre LAERO et GMAP diff --git a/src/arome/turb/shallow_mf.F90 b/src/arome/turb/shallow_mf.F90 index d73839a6b6f077934c42780c6542bd5bb1d0d196..da72c1ceb966a7923a83eea8d89d87b79792f180 100644 --- a/src/arome/turb/shallow_mf.F90 +++ b/src/arome/turb/shallow_mf.F90 @@ -70,7 +70,6 @@ USE MODI_COMPUTE_UPDRAFT_RAHA USE MODI_MF_TURB USE MODI_MF_TURB_EXPL USE MODI_COMPUTE_MF_CLOUD -USE MODE_COMPUTE_FRAC_ICE, ONLY : COMPUTE_FRAC_ICE ! IMPLICIT NONE @@ -295,4 +294,8 @@ IF( HMF_UPDRAFT == 'DUAL') THEN ENDIF ! IF (LHOOK) CALL DR_HOOK('SHALLOW_MF',1,ZHOOK_HANDLE) +! +CONTAINS +INCLUDE "compute_frac_ice.func.h" +! END SUBROUTINE SHALLOW_MF diff --git a/src/arome/turb/th_r_from_thl_rt_1d.F90 b/src/arome/turb/th_r_from_thl_rt_1d.F90 index f553f45851e617143f842eca05a70f4eb9817456..15a6e449e009168cc9f7d596e5215faf3361547c 100644 --- a/src/arome/turb/th_r_from_thl_rt_1d.F90 +++ b/src/arome/turb/th_r_from_thl_rt_1d.F90 @@ -43,7 +43,6 @@ ! USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK -USE MODE_COMPUTE_FRAC_ICE, ONLY : COMPUTE_FRAC_ICE USE MODD_CST!, ONLY: XP00, XRD, XCPD, XCPV, XCL, XCI, XLVTT, XTT, XLSTT USE MODE_THERMO ! @@ -191,4 +190,8 @@ ENDDO IF (LHOOK) CALL DR_HOOK('TH_R_FROM_THL_RT_1D',1,ZHOOK_HANDLE) +! +CONTAINS +INCLUDE "compute_frac_ice.func.h" +! END SUBROUTINE TH_R_FROM_THL_RT_1D diff --git a/src/common/micro/mode_compute_frac_ice.F90 b/src/common/micro/compute_frac_ice.func.h similarity index 52% rename from src/common/micro/mode_compute_frac_ice.F90 rename to src/common/micro/compute_frac_ice.func.h index ba2dffd7f4d00f2d141934eddc384cf10ee55f17..1943d7c2f0f1f4de3ccb3948e383fc19ba9d4708 100644 --- a/src/common/micro/mode_compute_frac_ice.F90 +++ b/src/common/micro/compute_frac_ice.func.h @@ -2,29 +2,13 @@ !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. -! ######spl - MODULE MODE_COMPUTE_FRAC_ICE -! ############################ + ELEMENTAL SUBROUTINE COMPUTE_FRAC_ICE(HFRAC_ICE,PFRAC_ICE,PT,KERR) + +! ******* TO BE INCLUDED IN THE *CONTAINS* OF A SUBROUTINE, IN ORDER TO EASE AUTOMATIC INLINING ****** +! => Don't use drHook !!! ! !!**** *COMPUTE_FRAC_ICE* - computes ice fraction -!! -!! PURPOSE -!! ------- -!! -!!** METHOD -!! ------ -!! -!! -!! EXTERNAL -!! -------- -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! -!! REFERENCE -!! --------- -!! +! !! AUTHOR !! ------ !! Julien PERGAUD * Meteo-France * @@ -34,43 +18,21 @@ !! Original 13/03/06 !! S. Riette April 2011 optimisation !! S. Riette 08/2016 add option O -!! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg -!! R. El Khatib 24-Aug-2021 Optimization by cache re-use + assume data is contiguous -!! S. Riette Jan-2022 Merge the 3 procedures in one module + array shape declaration -! R. El Khatib / S. Riette Jan-2022 written as an elemental subroutine +!! R. El Khatib 12-Aug-2021 written as a include file ! -! -! - - -!****************** Don't use drHook !!! - - - -IMPLICIT NONE -CONTAINS - -ELEMENTAL SUBROUTINE COMPUTE_FRAC_ICE(HFRAC_ICE, PFRAC_ICE, PT, KERR) !! -------------------------------------------------------------------------- -! 0. DECLARATIONS -! ------------ -! USE MODD_NEB, ONLY : XTMINMIX, XTMAXMIX USE MODD_CST, ONLY : XTT ! IMPLICIT NONE ! +CHARACTER(LEN=1), INTENT(IN) :: HFRAC_ICE ! scheme to use +REAL, INTENT(IN) :: PT ! temperature +REAL, INTENT(INOUT) :: PFRAC_ICE ! Ice fraction (1 for ice only, 0 for liquid only) +INTEGER, INTENT(OUT) :: KERR ! Error code in return ! -!* 0.1 declarations of arguments -! -CHARACTER(LEN=1), INTENT(IN) :: HFRAC_ICE ! scheme to use -REAL, INTENT(IN) :: PT ! Temperature -REAL, INTENT(INOUT) :: PFRAC_ICE ! Ice fraction (1 for ice only, 0 for liquid only) -INTEGER, INTENT(OUT) :: KERR ! Error code in return -! -! 0.2 declaration of local variables -! !------------------------------------------------------------------------ + ! 1. Compute FRAC_ICE ! KERR=0 @@ -87,7 +49,5 @@ SELECT CASE(HFRAC_ICE) CASE DEFAULT KERR=1 END SELECT -! + END SUBROUTINE COMPUTE_FRAC_ICE -! -END MODULE MODE_COMPUTE_FRAC_ICE diff --git a/src/common/micro/condensation.F90 b/src/common/micro/condensation.F90 index 2e8112fc2fa0a54d8fbca37bc3fca5b4a82eab8c..9becdd2b4d315a3762ed2884595c2c48c8060c84 100644 --- a/src/common/micro/condensation.F90 +++ b/src/common/micro/condensation.F90 @@ -87,7 +87,6 @@ USE YOMHOOK , ONLY : LHOOK, DR_HOOK USE MODD_CST USE MODD_PARAMETERS USE MODD_RAIN_ICE_PARAM, ONLY : XCRIAUTC, XCRIAUTI, XACRIAUTI, XBCRIAUTI -USE MODE_COMPUTE_FRAC_ICE, ONLY : COMPUTE_FRAC_ICE USE MODE_TIWMX, ONLY : ESATW, ESATI USE MODE_ICECLOUD, ONLY : ICECLOUD ! @@ -546,4 +545,8 @@ DO JK=IKTB,IKTE END DO ! IF (LHOOK) CALL DR_HOOK('CONDENSATION',1,ZHOOK_HANDLE) +! +CONTAINS +INCLUDE "compute_frac_ice.func.h" +! END SUBROUTINE CONDENSATION diff --git a/src/mesonh/turb/shallow_mf.f90 b/src/mesonh/turb/shallow_mf.f90 index 23dbbec3918c88e25337a3eeb8af0b55a919089d..5e6713851534228a4f6413aec2bb5b3912ede4b8 100644 --- a/src/mesonh/turb/shallow_mf.f90 +++ b/src/mesonh/turb/shallow_mf.f90 @@ -188,7 +188,6 @@ USE MODI_MF_TURB USE MODI_MF_TURB_EXPL USE MODI_MF_TURB_GREYZONE USE MODI_COMPUTE_MF_CLOUD -USE MODE_COMPUTE_FRAC_ICE, ONLY : COMPUTE_FRAC_ICE USE MODI_SHUMAN_MF ! USE MODI_COMPUTE_BL89_ML @@ -435,4 +434,7 @@ IF( HMF_UPDRAFT == 'DUAL') THEN ! PDVDT_MF=0. ENDIF ! +CONTAINS +INCLUDE "compute_frac_ice.func.h" +! END SUBROUTINE SHALLOW_MF