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

Sébastien Riette 24/01/2022 ini_cst

parent c8b54912
No related branches found
No related tags found
No related merge requests found
......@@ -5,4 +5,5 @@ SAVE
INTEGER, PARAMETER :: MNHREAL = JPRB
INTEGER, PARAMETER :: MNHREAL64 = JPRD
INTEGER, PARAMETER :: MNHREAL32 = JPRM
ENDMODULE MODD_PRECISION
......@@ -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
! ######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.
! ##################
SUBROUTINE INI_CST
USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
! ##################
!
!!**** *INI_CST * - routine to initialize the module MODD_CST
......@@ -19,7 +21,6 @@
!!
!! EXTERNAL
!! --------
!! FMLOOK : to retrieve logical unit number associated to a file
!!
!! IMPLICIT ARGUMENTS
!! ------------------
......@@ -43,8 +44,12 @@
!! 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
!! 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
!!
!-------------------------------------------------------------------------------
!
......@@ -52,6 +57,10 @@
! ------------
!
USE MODD_CST
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
!
......@@ -108,8 +117,11 @@ 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))
! 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.
!
!-------------------------------------------------------------------------------
......@@ -152,6 +164,30 @@ XBETAOC= 7.7475E-4
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 (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
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
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)
......
! ######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
File moved
!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_INI_CST
! ###################
!
INTERFACE
!
SUBROUTINE INI_CST
END SUBROUTINE INI_CST
!
END INTERFACE
!
END MODULE MODI_INI_CST
!
!
!
! ##################
SUBROUTINE INI_CST
! ##################
!
!!**** *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
!! --------
!!
!! 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
!! J. Escobar 28/03/2014 for pb with emissivity/aerosol reset XMNH_TINY=1.0e-80 in real8 case
!! 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
!!
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_CST
use modd_precision, only: MNHREAL
!
IMPLICIT NONE
!
!-------------------------------------------------------------------------------
!
!* 1. FUNDAMENTAL CONSTANTS
! ---------------------
!
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
! -------------------
!
!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
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
!
! 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)
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)
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
XMNH_TINY_12 = SQRT (XMNH_TINY )
!
!-------------------------------------------------------------------------------
!
END SUBROUTINE INI_CST
!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
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