From d2ccbe8aac29486bd6b295fd6ec354f2085b2363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Riette?= <sebastien.riette@meteo.fr> Date: Mon, 24 Jan 2022 11:48:11 +0100 Subject: [PATCH] =?UTF-8?q?S=C3=A9bastien=20Riette=2024/01/2022=20ini=5Fcs?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/arome/aux/modd_precision.F90 | 1 + src/arome/gmkpack_ignored_files | 3 + src/arome/micro/ini_cst.F90 | 158 ------------------ .../ini_cst.f90 => common/aux/ini_cst.F90} | 61 ++++--- src/{arome/micro => common/aux}/modd_cst.F90 | 22 ++- .../micro => common/aux}/modi_ini_cst.F90 | 0 src/mesonh/micro/modd_cst.f90 | 116 ------------- 7 files changed, 54 insertions(+), 307 deletions(-) delete mode 100644 src/arome/micro/ini_cst.F90 rename src/{mesonh/micro/ini_cst.f90 => common/aux/ini_cst.F90} (78%) rename src/{arome/micro => common/aux}/modd_cst.F90 (77%) rename src/{arome/micro => common/aux}/modi_ini_cst.F90 (100%) delete mode 100644 src/mesonh/micro/modd_cst.f90 diff --git a/src/arome/aux/modd_precision.F90 b/src/arome/aux/modd_precision.F90 index 09509322d..a78762b53 100644 --- a/src/arome/aux/modd_precision.F90 +++ b/src/arome/aux/modd_precision.F90 @@ -5,4 +5,5 @@ SAVE INTEGER, PARAMETER :: MNHREAL = JPRB INTEGER, PARAMETER :: MNHREAL64 = JPRD +INTEGER, PARAMETER :: MNHREAL32 = JPRM ENDMODULE MODD_PRECISION diff --git a/src/arome/gmkpack_ignored_files b/src/arome/gmkpack_ignored_files index f4e9b065d..71db2b81c 100644 --- a/src/arome/gmkpack_ignored_files +++ b/src/arome/gmkpack_ignored_files @@ -101,3 +101,6 @@ phyex/micro/modi_icecloud.F90 phyex/micro/tiwmx_tab.F90 phyex/micro/modi_tiwmx.F90 phyex/micro/modd_spp_type.F90 +phyex/micro/modd_cst.F90 +phyex/micro/modi_ini_cst.F90 +phyex/micro/ini_cst.F90 diff --git a/src/arome/micro/ini_cst.F90 b/src/arome/micro/ini_cst.F90 deleted file mode 100644 index f0f6b1187..000000000 --- a/src/arome/micro/ini_cst.F90 +++ /dev/null @@ -1,158 +0,0 @@ -! ######spl - SUBROUTINE INI_CST - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK -! ################## -! -!!**** *INI_CST * - routine to initialize the module MODD_CST -!! -!! PURPOSE -!! ------- -! The purpose of this routine is to initialize the physical constants -! stored in module MODD_CST. -! -! -!!** METHOD -!! ------ -!! The physical constants are set to their numerical values -!! -!! -!! EXTERNAL -!! -------- -!! FMLOOK : to retrieve logical unit number associated to a file -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! Module MODD_CST : contains physical constants -!! -!! REFERENCE -!! --------- -!! Book2 of the documentation (module MODD_CST, routine INI_CST) -!! -!! -!! AUTHOR -!! ------ -!! V. Ducrocq * Meteo France * -!! -!! MODIFICATIONS -!! ------------- -!! Original 18/05/94 -!! J. Stein 02/01/95 add the volumic mass of liquid water -!! J.-P. Pinty 13/12/95 add the water vapor pressure over solid ice -!! J. Stein 29/06/97 add XTH00 -!! V. Masson 05/10/98 add XRHOLI -!! C. Mari 31/10/00 add NDAYSEC -!! V. Masson 01/03/03 add XCONDI -!! R. El Khatib 04/08/14 add pre-computed quantities -!! P. Marguinaud 04/10/16 Port to single precision -!! -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_CST -! -IMPLICIT NONE -! -!------------------------------------------------------------------------------- -! -!* 1. FUNDAMENTAL CONSTANTS -! --------------------- -! -REAL(KIND=JPRB) :: ZHOOK_HANDLE -IF (LHOOK) CALL DR_HOOK('INI_CST',0,ZHOOK_HANDLE) -XPI = 2.*ASIN(1.) -XKARMAN = 0.4 -XLIGHTSPEED = 299792458. -XPLANCK = 6.6260755E-34 -XBOLTZ = 1.380658E-23 -XAVOGADRO = 6.0221367E+23 -! -!------------------------------------------------------------------------------- -! -!* 2. ASTRONOMICAL CONSTANTS -! ---------------------- -! -XDAY = 86400. -XSIYEA = 365.25*XDAY*2.*XPI/ 6.283076 -XSIDAY = XDAY/(1.+XDAY/XSIYEA) -XOMEGA = 2.*XPI/XSIDAY -NDAYSEC = 24*3600 ! Number of seconds in a day -! -!-------------------------------------------------------------------------------! -! -! -!* 3. TERRESTRIAL GEOIDE CONSTANTS -! ---------------------------- -! -XRADIUS = 6371229. -XG = 9.80665 -! -!------------------------------------------------------------------------------- -! -!* 4. REFERENCE PRESSURE -! ------------------- -! -! Ocean model cst same as in 1D/CMO SURFEX -! values used in ini_cst to overwrite XP00 and XTH00 -XRH00OCEAN =1024. -XTH00OCEAN = 286.65 -XSA00OCEAN= 32.6 -XP00OCEAN = 201.E5 -!Atmospheric model -XP00 = 1.E5 -XTH00 = 300. -!------------------------------------------------------------------------------- -! -!* 5. RADIATION CONSTANTS -! ------------------- -! -XSTEFAN = REAL (2._8* REAL (XPI, 8)**5 * REAL (XBOLTZ, 8)**4 / & - & (15._8* REAL (XLIGHTSPEED, 8)**2 * REAL (XPLANCK, 8)**3)) -XI0 = 1370. -! -!------------------------------------------------------------------------------- -! -!* 6. THERMODYNAMIC CONSTANTS -! ----------------------- -! -XMD = 28.9644E-3 -XMV = 18.0153E-3 -XRD = XAVOGADRO * XBOLTZ / XMD -XRV = XAVOGADRO * XBOLTZ / XMV -XEPSILO= XMV/XMD -XCPD = 7.* XRD /2. -XCPV = 4.* XRV -XRHOLW = 1000. -XRHOLI = 900. -XCONDI = 2.22 -XCL = 4.218E+3 -XCI = 2.106E+3 -XTT = 273.16 -XLVTT = 2.5008E+6 -XLSTT = 2.8345E+6 -XLMTT = XLSTT - XLVTT -XESTT = 611.14 -XGAMW = (XCL - XCPV) / XRV -XBETAW = (XLVTT/XRV) + (XGAMW * XTT) -XALPW = LOG(XESTT) + (XBETAW /XTT) + (XGAMW *LOG(XTT)) -XGAMI = (XCI - XCPV) / XRV -XBETAI = (XLSTT/XRV) + (XGAMI * XTT) -XALPI = LOG(XESTT) + (XBETAI /XTT) + (XGAMI *LOG(XTT)) -! Values identical to ones used in CMO1D in SURFEX /could be modified -! Coefficient of thermal expansion of water (K-1) -XALPHAOC = 1.9E-4 -! Coeff of Haline contraction coeff (S-1) -XBETAOC= 7.7475E-4 -! -!* 7. PRECOMPUTED CONSTANTS -! --------------------- -! -RDSRV = XRD/XRV -RDSCPD = XRD/XCPD -RINVXP00 = 1./XP00 -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('INI_CST',1,ZHOOK_HANDLE) -END SUBROUTINE INI_CST diff --git a/src/mesonh/micro/ini_cst.f90 b/src/common/aux/ini_cst.F90 similarity index 78% rename from src/mesonh/micro/ini_cst.f90 rename to src/common/aux/ini_cst.F90 index 7c3170c4c..69b4c998b 100644 --- a/src/mesonh/micro/ini_cst.f90 +++ b/src/common/aux/ini_cst.F90 @@ -2,22 +2,6 @@ !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_INI_CST -! ################### -! -INTERFACE -! -SUBROUTINE INI_CST -END SUBROUTINE INI_CST -! -END INTERFACE -! -END MODULE MODI_INI_CST -! -! -! ! ################## SUBROUTINE INI_CST ! ################## @@ -60,7 +44,9 @@ END MODULE MODI_INI_CST !! V. Masson 05/10/98 add XRHOLI !! C. Mari 31/10/00 add NDAYSEC !! V. Masson 01/03/03 add XCONDI -!! J. Escobar 28/03/2014 for pb with emissivity/aerosol reset XMNH_TINY=1.0e-80 in real8 case +!! J. Escobar 28/03/2014 for pb with emissivity/aerosol reset XMNH_TINY=1.0e-80 in real8 case +!! R. El Khatib 04/08/14 add pre-computed quantities +!! P. Marguinaud 04/10/16 Port to single precision !! J.Escobar : 10/2017 : for real*4 , add XMNH_HUGE_12_LOG !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! J.Escobar : 5/10/2018 : for real*4 ,higher value for XEPS_DT = 1.5e-4 @@ -71,7 +57,10 @@ END MODULE MODI_INI_CST ! ------------ ! USE MODD_CST -use modd_precision, only: MNHREAL +USE MODD_PRECISION, ONLY: MNHREAL, MNHREAL32, MNHREAL64 +USE MODE_MSG, ONLY: PRINT_MSG, NVERB_FATAL +USE PARKIND1, ONLY : JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! IMPLICIT NONE ! @@ -80,6 +69,8 @@ IMPLICIT NONE !* 1. FUNDAMENTAL CONSTANTS ! --------------------- ! +REAL(KIND=JPRB) :: ZHOOK_HANDLE +IF (LHOOK) CALL DR_HOOK('INI_CST',0,ZHOOK_HANDLE) XPI = 2.*ASIN(1.) XKARMAN = 0.4 XLIGHTSPEED = 299792458. @@ -114,7 +105,7 @@ XG = 9.80665 ! ! Ocean model cst same as in 1D/CMO SURFEX ! values used in ini_cst to overwrite XP00 and XTH00 -XRH00OCEAN =1024. +XRH00OCEAN =1024. XTH00OCEAN = 286.65 XSA00OCEAN= 32.6 XP00OCEAN = 201.E5 @@ -126,8 +117,11 @@ XTH00 = 300. !* 5. RADIATION CONSTANTS ! ------------------- ! -!JUAN OVERFLOW XSTEFAN = 2.* XPI**5 * XBOLTZ**4 / (15.* XLIGHTSPEED**2 * XPLANCK**3) -XSTEFAN = ( 2.* XPI**5 / 15. ) * ( (XBOLTZ / XPLANCK) * XBOLTZ ) * (XBOLTZ/(XLIGHTSPEED*XPLANCK))**2 +! Original: XSTEFAN = 2.* XPI**5 * XBOLTZ**4 / (15.* XLIGHTSPEED**2 * XPLANCK**3) +! Juan: XSTEFAN = ( 2.* XPI**5 / 15. ) * ( (XBOLTZ / XPLANCK) * XBOLTZ ) * (XBOLTZ/(XLIGHTSPEED*XPLANCK))**2 +! Philippe Marguinaud: XSTEFAN = REAL (2._8* REAL (XPI, 8)**5 * REAL (XBOLTZ, 8)**4 / (15._8* REAL (XLIGHTSPEED, 8)**2 * REAL (XPLANCK, 8)**3)) +XSTEFAN = REAL (2._MNHREAL64* REAL (XPI, MNHREAL64)**5 * REAL (XBOLTZ, MNHREAL64)**4 / & + & (15._MNHREAL64* REAL (XLIGHTSPEED, MNHREAL64)**2 * REAL (XPLANCK, MNHREAL64)**3)) XI0 = 1370. ! !------------------------------------------------------------------------------- @@ -161,37 +155,40 @@ XALPI = LOG(XESTT) + (XBETAI /XTT) + (XGAMI *LOG(XTT)) ! Values identical to ones used in CMO1D in SURFEX /could be modified ! Coefficient of thermal expansion of water (K-1) XALPHAOC = 1.9E-4 -! Coeff of Haline contraction coeff (S-1) +! Coeff of Haline contraction coeff (S-1) XBETAOC= 7.7475E-4 ! +!* 7. PRECOMPUTED CONSTANTS +! --------------------- +! +RDSRV = XRD/XRV +RDSCPD = XRD/XCPD +RINVXP00 = 1./XP00 +! ! Some machine precision value depending of real4/8 use ! - - XMNH_EPSILON = EPSILON (XMNH_EPSILON ) XMNH_HUGE = HUGE (XMNH_HUGE ) XMNH_HUGE_12_LOG = LOG ( SQRT(XMNH_HUGE) ) -#if (MNH_REAL == 8) +IF (MNHREAL == MNHREAL64) THEN XMNH_TINY = 1.0e-80_MNHREAL XEPS_DT = 1.0e-5_MNHREAL XRES_FLAT_CART = 1.0e-12_MNHREAL XRES_OTHER = 1.0e-9_MNHREAL XRES_PREP = 1.0e-8_MNHREAL -#elif (MNH_REAL == 4) +ELSEIF (MNHREAL == MNHREAL32) THEN XMNH_TINY = TINY (XMNH_TINY ) XEPS_DT = 1.5e-4_MNHREAL XRES_FLAT_CART = 1.0e-12_MNHREAL XRES_OTHER = 1.0e-7_MNHREAL XRES_PREP = 1.0e-4_MNHREAL -#else -#error "Invalid MNH_REAL" -#endif +ELSE +CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'INI_CST', 'Invalid MNH_REAL') +ENDIF XMNH_TINY_12 = SQRT (XMNH_TINY ) - - - ! !------------------------------------------------------------------------------- ! +IF (LHOOK) CALL DR_HOOK('INI_CST',1,ZHOOK_HANDLE) END SUBROUTINE INI_CST diff --git a/src/arome/micro/modd_cst.F90 b/src/common/aux/modd_cst.F90 similarity index 77% rename from src/arome/micro/modd_cst.F90 rename to src/common/aux/modd_cst.F90 index 1f5d39b52..02140f8c4 100644 --- a/src/arome/micro/modd_cst.F90 +++ b/src/common/aux/modd_cst.F90 @@ -1,4 +1,9 @@ -! ######spl +!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 MODD_CST ! ############### ! @@ -32,6 +37,7 @@ !! C. Mari 31/10/00 add NDAYSEC !! V. Masson 01/03/03 add conductivity of ice !! R. El Khatib 04/08/14 add pre-computed quantities +!! J.Escobar : 10/2017 : for real*4 , add XMNH_HUGE_12_LOG !! J.L. Redelsperger 03/2021 add constants for ocean penetrating solar !------------------------------------------------------------------------------- ! @@ -96,5 +102,19 @@ INTEGER, SAVE :: NDAYSEC ! Number of seconds in a day REAL,SAVE :: RDSRV ! XRD/XRV REAL,SAVE :: RDSCPD ! XRD/XCPD REAL,SAVE :: RINVXP00 ! 1./XP00 +! +! Some machine precision value depending of real4/8 use +! +REAL,SAVE :: XMNH_TINY ! minimum real on this machine +REAL,SAVE :: XMNH_TINY_12 ! sqrt(minimum real on this machine) +REAL,SAVE :: XMNH_EPSILON ! minimum space with 1.0 +REAL,SAVE :: XMNH_HUGE ! maximum real on this machine +REAL,SAVE :: XMNH_HUGE_12_LOG ! maximum log(sqrt(real)) on this machine +REAL,SAVE :: XEPS_DT ! default value for DT test +REAL,SAVE :: XRES_FLAT_CART ! default flat&cart residual tolerance +REAL,SAVE :: XRES_OTHER ! default not flat&cart residual tolerance +REAL,SAVE :: XRES_PREP ! default prep residual tolerance + +! END MODULE MODD_CST diff --git a/src/arome/micro/modi_ini_cst.F90 b/src/common/aux/modi_ini_cst.F90 similarity index 100% rename from src/arome/micro/modi_ini_cst.F90 rename to src/common/aux/modi_ini_cst.F90 diff --git a/src/mesonh/micro/modd_cst.f90 b/src/mesonh/micro/modd_cst.f90 deleted file mode 100644 index 73607888c..000000000 --- a/src/mesonh/micro/modd_cst.f90 +++ /dev/null @@ -1,116 +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 MODD_CST -! ############### -! -!!**** *MODD_CST* - declaration of Physic constants -!! -!! PURPOSE -!! ------- -! The purpose of this declarative module is to declare the -! Physics constants. -! -!! -!!** IMPLICIT ARGUMENTS -!! ------------------ -!! None -!! -!! REFERENCE -!! --------- -!! Book2 of documentation of Meso-NH (MODD_CST) -!! -!! AUTHOR -!! ------ -!! V. Ducrocq *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 16/05/94 -!! J. Stein 02/01/95 add xrholw -!! J.-P. Pinty 13/12/95 add XALPI,XBETAI,XGAMI -!! J. Stein 25/07/97 add XTH00 -!! V. Masson 05/10/98 add XRHOLI -!! C. Mari 31/10/00 add NDAYSEC -!! V. Masson 01/03/03 add conductivity of ice -!! J.Escobar : 10/2017 : for real*4 , add XMNH_HUGE_12_LOG -!! J.L. Redelsperger 03/2021 add constants for ocean penetrating solar -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -IMPLICIT NONE -REAL,SAVE :: XPI ! Pi -! -REAL,SAVE :: XDAY,XSIYEA,XSIDAY ! day duration, sideral year duration, - ! sideral day duration -! -REAL,SAVE :: XKARMAN ! von karman constant -REAL,SAVE :: XLIGHTSPEED ! light speed -REAL,SAVE :: XPLANCK ! Planck constant -REAL,SAVE :: XBOLTZ ! Boltzman constant -REAL,SAVE :: XAVOGADRO ! Avogadro number -! -REAL,SAVE :: XRADIUS,XOMEGA ! Earth radius, earth rotation -REAL,SAVE :: XG ! Gravity constant -! -REAL,SAVE :: XP00 ! Reference pressure -REAL,SAVE :: XP00OCEAN ! Reference pressure for ocean model -REAL,SAVE :: XRH00OCEAN ! Reference density for ocean model -! -REAL,SAVE :: XSTEFAN,XI0 ! Stefan-Boltzman constant, solar constant -! -REAL,SAVE :: XMD,XMV ! Molar mass of dry air and molar mass of vapor -REAL,SAVE :: XRD,XRV ! Gaz constant for dry air, gaz constant for vapor -REAL,SAVE :: XEPSILO ! XMV/XMD -REAL,SAVE :: XCPD,XCPV ! Cpd (dry air), Cpv (vapor) -REAL,SAVE :: XRHOLW ! Volumic mass of liquid water -REAL,SAVE :: XCL,XCI ! Cl (liquid), Ci (ice) -REAL,SAVE :: XTT ! Triple point temperature -REAL,SAVE :: XLVTT ! Vaporization heat constant -REAL,SAVE :: XLSTT ! Sublimation heat constant -REAL,SAVE :: XLMTT ! Melting heat constant -REAL,SAVE :: XESTT ! Saturation vapor pressure at triple point - ! temperature -REAL,SAVE :: XALPW,XBETAW,XGAMW ! Constants for saturation vapor - ! pressure function -REAL,SAVE :: XALPI,XBETAI,XGAMI ! Constants for saturation vapor - ! pressure function over solid ice -REAL,SAVE :: XCONDI ! thermal conductivity of ice (W m-1 K-1) -REAL,SAVE :: XALPHAOC ! thermal expansion coefficient for ocean (K-1) -REAL,SAVE :: XBETAOC ! Haline contraction coeff for ocean (S-1) -REAL,SAVE :: XTH00 ! reference value for the potential temperature -REAL,SAVE :: XTH00OCEAN ! Ref value for pot temp in ocean model -REAL,SAVE :: XSA00OCEAN ! Ref value for SAlinity in ocean model -REAL,SAVE :: XROC=0.69! 3 coeffs for SW penetration in Ocean (Hoecker et al) -REAL,SAVE :: XD1=1.1 -REAL,SAVE :: XD2=23. -! Values used in SURFEX CMO -!REAL,SAVE :: XROC=0.58 -!REAL,SAVE :: XD1=0.35 -!REAL,SAVE :: XD2=23. - -REAL,SAVE :: XRHOLI ! Volumic mass of liquid water -! -INTEGER, SAVE :: NDAYSEC ! Number of seconds in a day -! -! -! Some machine precision value depending of real4/8 use -! -REAL,SAVE :: XMNH_TINY ! minimum real on this machine -REAL,SAVE :: XMNH_TINY_12 ! sqrt(minimum real on this machine) -REAL,SAVE :: XMNH_EPSILON ! minimum space with 1.0 -REAL,SAVE :: XMNH_HUGE ! maximum real on this machine -REAL,SAVE :: XMNH_HUGE_12_LOG ! maximum log(sqrt(real)) on this machine - -REAL,SAVE :: XEPS_DT ! default value for DT test -REAL,SAVE :: XRES_FLAT_CART ! default flat&cart residual tolerance -REAL,SAVE :: XRES_OTHER ! default not flat&cart residual tolerance -REAL,SAVE :: XRES_PREP ! default prep residual tolerance - -! -END MODULE MODD_CST -- GitLab