diff --git a/src/arome/aux/modd_precision.F90 b/src/arome/aux/modd_precision.F90 index 09509322d90cfeb2ace272ac779a2a7fdc582c09..a78762b537ce65ec230667cbcc2fc601e1976cc8 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 312b6fcac7f312ea9a24b80f4b2d1eabe04b08d3..15ac6ff30f894976dc788f28a865bae2d5a95395 100644 --- a/src/arome/gmkpack_ignored_files +++ b/src/arome/gmkpack_ignored_files @@ -129,3 +129,6 @@ phyex/turb/bl_depth_diag_3d.F90 phyex/turb/bl_depth_diag_1d.F90 phyex/turb/modi_compute_function_thermo_mf.F90 phyex/turb/compute_function_thermo_mf.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 f0f6b11870c2ddd81f19531c01ee76719870a13f..0000000000000000000000000000000000000000 --- 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 7c3170c4cb7e9e48a0fb645cc70efa30d6a6cae8..69b4c998b2605848b8f631a3209fe07b321fdb9c 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/mesonh/micro/modd_cst.f90 b/src/common/aux/modd_cst.F90 similarity index 96% rename from src/mesonh/micro/modd_cst.f90 rename to src/common/aux/modd_cst.F90 index 73607888ccbf0791641a83952225dd0a2a76e9ce..02140f8c43fe74bf656798f9a5a943253ae48a59 100644 --- a/src/mesonh/micro/modd_cst.f90 +++ b/src/common/aux/modd_cst.F90 @@ -36,6 +36,7 @@ !! V. Masson 05/10/98 add XRHOLI !! 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 !------------------------------------------------------------------------------- @@ -85,7 +86,7 @@ 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 :: 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. @@ -98,6 +99,9 @@ REAL,SAVE :: XRHOLI ! Volumic mass of liquid water ! 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 ! 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