!WRF:MODEL_LAYER:CONSTANTS ! MODULE module_model_constants ! 2. Following are constants for use in defining real number bounds. ! A really small number. REAL , PARAMETER :: epsilon = 1.E-15 ! 4. Following is information related to the physical constants. ! These are the physical constants used within the model. ! JM NOTE -- can we name this grav instead? #ifdef WRF_PLANET ! References for constants used in the model: ! [1] Lodders, K., and B. Fegley, Jr. (Eds.) (1998), "The Planetary ! Scientist's Companion," Oxford University Press, New York ! [2] Cox, A. (Ed.) (2000), "Allen's Astrophysical Quantities," 4th ed., ! Springer-Verlag, New York ! [3] Allison, M. (1997), Accurate analytic representations of solar time ! and season on Mars with applications to the Pathfinder/Surveyor ! missions, Geophys. Res. Lett., 24, 1967-1970. ! [4] Hourdin et al. (1995) via Allison (personal communication). ! Perihelion is given as Ls=278 ! [5] Tokano (1999), for porous icy regolith ! Cf. Tokano (1999)'s 1.5e3 value for rock-ice mixture, which matches ! Earth values ! [6] Surkov et al. (1976), Density of surface rock on Venus from data ! obtained by the Venera 10 automatic interplanetary station, ! Russian: Kosmicheskie Issledovaniia, 14, Sept.-Oct. 1976, 697-703. ! Translated: Cosmic Research, 14 (5), Mar. 1977, 612-618 ! [7] http://solarsystem.nasa.gov/planets/profile.cfm?Object=Sat_Titan ! and ! http://solarsystem.nasa.gov/planets/profile.cfm?Object=Sat_Titan&Display=Facts&System=Metric #if defined WRF_MARS ! Mars ! Ref. [1], Sec. 2.3 REAL , PARAMETER :: g = 3.727 ! acceleration due to gravity (m {s}^-2) #elif defined WRF_TITAN ! Titan ! Ref. [1], Sec. 2.3 REAL , PARAMETER :: g = 1.354 ! acceleration due to gravity (m {s}^-2) #elif defined WRF_VENUS ! Venus ! Ref. [1], Sec. 2.3 REAL , PARAMETER :: g = 8.870 ! acceleration due to gravity (m {s}^-2) #elif defined WRF_EARTH ! Earth REAL , PARAMETER :: g = 9.81 ! acceleration due to gravity (m {s}^-2) #endif #else REAL , PARAMETER :: g = 9.81 ! acceleration due to gravity (m {s}^-2) #endif #if ( NMM_CORE == 1 ) REAL , PARAMETER :: r_d = 287.04 REAL , PARAMETER :: cp = 1004.6 #else #ifdef WRF_PLANET #if defined WRF_MARS ! Mars ! Molecular weight of atmosphere = 43.34; Ref. [1], Sec. 2.3 REAL , PARAMETER :: r_d = 8.3142e3/43.34 ! J/K/kg REAL , PARAMETER :: cp = 4.*r_d ! 8/2, linear triatomic #elif defined WRF_TITAN ! Titan ! FROM http://pds-atmospheres.nmsu.edu/education_and_outreach/encyclopedia/gas_constant.htm: REAL , PARAMETER :: r_d = 290. REAL , PARAMETER :: cp = 1044.0 #elif defined WRF_VENUS ! Venus ! Molecular weight of atmosphere = 43.45; Ref. [1], Sec. 2.3 REAL , PARAMETER :: r_d = 8.3142e3/43.45 ! J/K/kg REAL , PARAMETER :: cp = 1116.8 #elif defined WRF_EARTH ! Earth REAL , PARAMETER :: r_d = 287. REAL , PARAMETER :: cp = 7.*r_d/2. #endif #else REAL , PARAMETER :: r_d = 287. REAL , PARAMETER :: cp = 7.*r_d/2. #endif #endif REAL , PARAMETER :: r_v = 461.6 ! J/K/kg, water REAL , PARAMETER :: cv = cp-r_d REAL , PARAMETER :: cpv = 4.*r_v REAL , PARAMETER :: cvv = cpv-r_v REAL , PARAMETER :: cvpm = -cv/cp REAL , PARAMETER :: cliq = 4190. REAL , PARAMETER :: cice = 2106. REAL , PARAMETER :: psat = 610.78 REAL , PARAMETER :: rcv = r_d/cv REAL , PARAMETER :: rcp = r_d/cp REAL , PARAMETER :: rovg = r_d/g REAL , PARAMETER :: c2 = cp * rcv real , parameter :: mwdry = 28.966 ! molecular weight of dry air (g/mole) #ifdef WRF_PLANET #if defined WRF_MARS ! Mars REAL , PARAMETER :: p1000mb = 610. ! Pa REAL , PARAMETER :: t0 = 300. ! K #elif defined WRF_TITAN ! Titan REAL , PARAMETER :: p1000mb = 144000. REAL , PARAMETER :: t0 = 120. #elif defined WRF_VENUS ! Venus REAL , PARAMETER :: p1000mb = 9.56e6 REAL , PARAMETER :: t0 = 800. #elif defined WRF_EARTH ! Earth REAL , PARAMETER :: p1000mb = 100000. REAL , PARAMETER :: t0 = 300. #endif #else REAL , PARAMETER :: p1000mb = 100000. REAL , PARAMETER :: t0 = 300. #endif REAL , PARAMETER :: p0 = p1000mb REAL , PARAMETER :: cpovcv = cp/(cp-r_d) REAL , PARAMETER :: cvovcp = 1./cpovcv REAL , PARAMETER :: rvovrd = r_v/r_d #ifdef WRF_PLANET ! All planetary radii from Ref. [1], Sec. 2.3 #if defined WRF_MARS ! Mars REAL , PARAMETER :: reradius = 1./3389.92e03 ! 1/m #elif defined WRF_TITAN ! Titan REAL , PARAMETER :: reradius = 1./2575.0e03 #elif defined WRF_VENUS ! Venus REAL , PARAMETER :: reradius = 1./6051.84e03 #elif defined WRF_EARTH ! Earth REAL , PARAMETER :: reradius = 1./6370.0e03 #endif #else REAL , PARAMETER :: reradius = 1./6370.0e03 #endif REAL , PARAMETER :: asselin = .025 ! REAL , PARAMETER :: asselin = .0 REAL , PARAMETER :: cb = 25. REAL , PARAMETER :: XLV0 = 3.15E6 REAL , PARAMETER :: XLV1 = 2370. REAL , PARAMETER :: XLS0 = 2.905E6 REAL , PARAMETER :: XLS1 = 259.532 REAL , PARAMETER :: XLS = 2.85E6 REAL , PARAMETER :: XLV = 2.5E6 REAL , PARAMETER :: XLF = 3.50E5 REAL , PARAMETER :: rhowater = 1000. REAL , PARAMETER :: rhosnow = 100. #ifdef WRF_PLANET #if defined WRF_MARS ! Mars REAL , PARAMETER :: rhoair0 = 0.0117 ! kg/m^3, P0/(R*273 K) #elif defined WRF_TITAN ! Titan REAL , PARAMETER :: rhoair0 = 1.89 #elif defined WRF_VENUS ! Venus REAL , PARAMETER :: rhoair0 = 49960.55 #elif defined WRF_EARTH ! Earth REAL , PARAMETER :: rhoair0 = 1.28 #endif #else REAL , PARAMETER :: rhoair0 = 1.28 #endif REAL , PARAMETER :: DEGRAD = 3.1415926/180. #ifdef WRF_PLANET #if defined WRF_MARS ! Mars ! PLANET_YEAR will have 669 sols (real value is 669.60) ! See below for reference for 669 sols REAL , PARAMETER :: DPD = 360./669. #elif defined WRF_TITAN ! Titan ! PLANET_YEAR will have 673 sols (real value is 672.52) ! See below for reference for 673 sols REAL , PARAMETER :: DPD = 360./673. #elif defined WRF_VENUS ! Venus ! PLANET_YEAR will have 2 sols ! See below for reference for 2 sols REAL , PARAMETER :: DPD = 360./2. #elif defined WRF_EARTH ! Earth REAL , PARAMETER :: DPD = 360./365. #endif #else REAL , PARAMETER :: DPD = 360./365. #endif REAL , PARAMETER :: SVP1=0.6112 REAL , PARAMETER :: SVP2=17.67 REAL , PARAMETER :: SVP3=29.65 REAL , PARAMETER :: SVPT0=273.15 REAL , PARAMETER :: EP_1=R_v/R_d-1. REAL , PARAMETER :: EP_2=R_d/R_v REAL , PARAMETER :: KARMAN=0.4 #ifdef WRF_PLANET ! EOMEG uses the length of the sidereal (not solar) day ! EOMEG = 2*{pi}/sidereal day #if defined WRF_MARS ! Mars ! Sidereal day is 88642.6632 s; Ref [2], Sec. 12.2 REAL , PARAMETER :: EOMEG=7.08822E-5 ! radians/s #elif defined WRF_TITAN ! Titan ! Sidereal day is 1377684.346752 s; Ref [2], Sec. 12.2 REAL , PARAMETER :: EOMEG=4.5606857E-6 #elif defined WRF_VENUS ! Venus ! Sidereal day is 20996927.136 s; Ref [2], Sec. 12.2 REAL , PARAMETER :: EOMEG=2.992430876e-7 #elif defined WRF_EARTH ! Earth REAL , PARAMETER :: EOMEG=7.2921E-5 #endif #else REAL , PARAMETER :: EOMEG=7.2921E-5 #endif REAL , PARAMETER :: STBOLT=5.67051E-8 REAL , PARAMETER :: prandtl = 1./3.0 ! constants for w-damping option REAL , PARAMETER :: w_alpha = 0.3 ! strength m/s/s REAL , PARAMETER :: w_beta = 1.0 ! activation cfl number REAL , PARAMETER :: pq0=379.90516 REAL , PARAMETER :: epsq2=0.2 ! REAL , PARAMETER :: epsq2=0.02 REAL , PARAMETER :: a2=17.2693882 REAL , PARAMETER :: a3=273.16 REAL , PARAMETER :: a4=35.86 REAL , PARAMETER :: epsq=1.e-12 REAL , PARAMETER :: p608=rvovrd-1. !#if ( NMM_CORE == 1 ) REAL , PARAMETER :: climit=1.e-20 REAL , PARAMETER :: cm1=2937.4 REAL , PARAMETER :: cm2=4.9283 REAL , PARAMETER :: cm3=23.5518 ! REAL , PARAMETER :: defc=8.0 ! REAL , PARAMETER :: defm=32.0 REAL , PARAMETER :: defc=0.0 REAL , PARAMETER :: defm=99999.0 REAL , PARAMETER :: epsfc=1./1.05 REAL , PARAMETER :: epswet=0.0 REAL , PARAMETER :: fcdif=1./3. REAL , PARAMETER :: fcm=0.00003 REAL , PARAMETER :: gma=-r_d*(1.-rcp)*0.5 REAL , PARAMETER :: p400=40000.0 REAL , PARAMETER :: phitp=15000.0 REAL , PARAMETER :: pi2=2.*3.1415926 REAL , PARAMETER :: plbtm=105000.0 REAL , PARAMETER :: plomd=64200.0 REAL , PARAMETER :: pmdhi=35000.0 REAL , PARAMETER :: q2ini=0.50 REAL , PARAMETER :: rfcp=0.25/cp REAL , PARAMETER :: rhcrit_land=0.75 REAL , PARAMETER :: rhcrit_sea=0.80 REAL , PARAMETER :: rlag=14.8125 REAL , PARAMETER :: rlx=0.90 REAL , PARAMETER :: scq2=50.0 REAL , PARAMETER :: slopht=0.001 REAL , PARAMETER :: tlc=2.*0.703972477 REAL , PARAMETER :: wa=0.15 REAL , PARAMETER :: wght=0.35 REAL , PARAMETER :: wpc=0.075 REAL , PARAMETER :: z0land=0.10 REAL , PARAMETER :: z0max=0.008 REAL , PARAMETER :: z0sea=0.001 !#endif #ifdef WRF_PLANET ! Additional constants necessary for planetWRF ! ! 1. Universal constants ! (May only be needed for one planet though) ! Latent heat of sublimation, CO2 ! Ref: REAL , PARAMETER :: co2_lheat = 5.713e5 ! J/kg ! 2. Planet-specific constants ! A. Clocks ! P2SI: Ratio of the number of seconds in a planetary sol ! (solar day) divided by the number of seconds in a ! terrestrial solar day ! A useful defining equation is: ! 1/solar day = 1/sidereal day - 1/sidereal year ! where negative values are used for retrograde ! motion ! PLANET_YEAR: Number of sols (solar days) in one sidereal ! revolution ! Must be an integer, so "planetary leap days" must ! be handled specially (right now they are ignored) ! B: Orbital parameters ! SEMIMAJORAXIS: Length of semi-major axis of elliptical planetary ! orbit, in AU ! ECCENTRICITY: Eccentricity of the elliptical planetary orbit, ! unitless ! ZERO_DATE: Time of perihelion passage, in number of sols ! past occurence of instant of solar longitude 0. ! (Typically, we will assume solar longitude 0 ! occurs at the instant of northern vernal ! equinox.) ! EQUINOX_FRACTION: Fraction into the year (from perihelion) of the ! occurence of northern spring equinox. This number ! is not unique if the refernce point of solar ! longitude 0 is taken to be northern spring ! equinox. If that is true, this value is ! derivative of ZERO_DATE (or vice versa) and can ! be defined by: ! = (PLANET_YEAR - ZERO_DATE)/PLANET_YEAR ! OBLIQUITY: Tilt of planetary rotation axis relative to ! plane of planetary orbit, in degrees ! C: Surface parameters ! Generally, these are only needed for a more developed surface ! and subsurface physical parameterization. At present, this is ! primarily Mars. However, if defined for one planet, all planets ! need to have a value defined, even if it's not used, for successful ! compilation ! RHO_GROUND: Density of soil, kg m^-3 ! Mars specific: ! CO2ICE_THRESHOLD: The amount of CO2 ice above which the albedo of ! the surface should be set to the albedo of CO2 ! ice. Empirically determined from test runs and ! matches to observed quantities. Units: kg m^-2 ! H2OICE_THRESHOLD: The amount of H2O ice above which the albedo of ! the surface should be set to the albedo of H2O ! ice. Empirically determined from test runs and ! matches to observed quantities. Units: kg m^-2 #if defined WRF_MARS ! Mars ! One Martian solar day = 24 h 39 min 35.244 s = 88775.244 s; Ref. [3] REAL , PARAMETER :: P2SI = 1.0274912 ! One Martian sidereal year = 686.929711 d = 668.550424 sols; Ref. [2] INTEGER , PARAMETER :: PLANET_YEAR = 669 REAL , PARAMETER :: SEMIMAJORAXIS = 1.52366231 ! Ref. [2] REAL , PARAMETER :: ECCENTRICITY = 0.09341233 ! Ref. [2] REAL , PARAMETER :: ZERO_DATE = 488.7045 ! derived REAL , PARAMETER :: EQUINOX_FRACTION = 0.2695 ! Ref. [?] REAL , PARAMETER :: OBLIQUITY = 25.19 ! Ref. [2] REAL , PARAMETER :: RHO_GROUND = 1500. ! Ref. [?] REAL , PARAMETER :: CO2ICE_THRESHOLD = 100. REAL , PARAMETER :: H2OICE_THRESHOLD = 10. #elif defined WRF_TITAN ! Titan ! One Titan solar day = 15.969131 d; Ref. [2], Sec. 12.2 ! = 1./((1./15.94542068 d)-(1./10739.585 d)) REAL , PARAMETER :: P2SI = 15.969131 ! One Titan sidereal year = 672.52 sols ; Ref. [7] INTEGER , PARAMETER :: PLANET_YEAR = 673 REAL , PARAMETER :: SEMIMAJORAXIS = 9.5719 ! Ref. [1] (Saturn) REAL , PARAMETER :: ZERO_DATE = 531.2 ! Calculated using ref. [4] REAL , PARAMETER :: EQUINOX_FRACTION=((PLANET_YEAR)-ZERO_DATE)/PLANET_YEAR REAL , PARAMETER :: OBLIQUITY = 26.7 ! Ref. [1?] REAL , PARAMETER :: ECCENTRICITY = 0.05415060 ! Ref. [2] (Saturn) REAL , PARAMETER :: RHO_GROUND = 800.0 ! Ref. [5] REAL , PARAMETER :: CO2ICE_THRESHOLD = 1.e30 ! Dummy, unused REAL , PARAMETER :: H2OICE_THRESHOLD = 1.e30 ! Dummy, unused #elif defined WRF_VENUS ! Venus ! One Venus solar day = 116.70784 d = 10083557.36655 s; Ref. [2], Sec. 12.2 ! = 1./((1./224.54163805 d) - (1./-243.01999 d)) REAL , PARAMETER :: P2SI = 116.70784 ! One Venus sidereal year = 224.69543 d = 1.9252814 sols; Ref. [2] INTEGER , PARAMETER :: PLANET_YEAR = 2 REAL , PARAMETER :: SEMIMAJORAXIS = 0.72333199 ! Ref. [2] ! Date of Venus Vernal equinox = Feb 24 2000 19:30 UT ! ! Date of Venus Perihelion = Jul 13 2000 ! ! Assuming Ls=0 at Vernal equinox, then: ! ZERO_DATE = (Jul 13, 2000 - Feb 24, 2000)/116.70784 d REAL , PARAMETER :: ZERO_DATE = 1.1969 REAL , PARAMETER :: EQUINOX_FRACTION=((PLANET_YEAR)-ZERO_DATE)/PLANET_YEAR REAL , PARAMETER :: OBLIQUITY = 177.4 ! Ref. [1] REAL , PARAMETER :: ECCENTRICITY = 0.00677323 ! Ref. [2] REAL , PARAMETER :: RHO_GROUND = 2700. ! Ref. [6] REAL , PARAMETER :: CO2ICE_THRESHOLD = 1.e30 ! Dummy, unused REAL , PARAMETER :: H2OICE_THRESHOLD = 1.e30 ! Dummy, unused #else ! Earth REAL , PARAMETER :: P2SI = 1.0 ! by definition INTEGER , PARAMETER :: PLANET_YEAR = 365 REAL , PARAMETER :: OBLIQUITY = 23.45 ! Ref [2] REAL , PARAMETER :: ECCENTRICITY = 0.01671022 ! Ref [2] REAL , PARAMETER :: SEMIMAJORAXIS = 1.0 ! by definition ! According to the US Naval Observatory, ! ! from 2000 to 2020, the average date of perihelion is Jan 3, 18:00, and ! the average data of the northern spring equinox is Mar 20, 14:13. ! This gives a equinox fraction of (Mar 20 14:13 - Jan 3 18:00)/365.2425 ! Also, the zero date is (Jan 3 18:00 - Jan 1, 00:00) ! These values are only necessary when using Earth as a generalized planet ! and the assumption is that solar longitude of 0 starts on Jan 1 at midnight ! (and not at the instant of northern vernal equinox) REAL , PARAMETER :: ZERO_DATE = 2.75 REAL , PARAMETER :: EQUINOX_FRACTION = 0.21038724 REAL , PARAMETER :: RHO_GROUND = 2.e3 ! Dummy, unused REAL , PARAMETER :: CO2ICE_THRESHOLD = 1.e30 ! Dummy, unused REAL , PARAMETER :: H2OICE_THRESHOLD = 1.e30 ! Dummy, unused #endif #else ! Earth ! The value for P2SI *must* be set to 1.0 for Earth ! Although, now we may not need this declaration here (see above) !REAL , PARAMETER :: P2SI = 1.0 ! Orbital constants: INTEGER , PARAMETER :: PLANET_YEAR = 365 REAL , PARAMETER :: OBLIQUITY = 23.5 REAL , PARAMETER :: ECCENTRICITY = 0.014 REAL , PARAMETER :: SEMIMAJORAXIS = 1.0 ! In AU ! Don't know the following values, so we'll fake them for now REAL , PARAMETER :: zero_date = 0.0 ! Time of perihelion passage ! Fraction into the year (from perhelion) of the ! occurrence of the Northern Spring Equinox REAL , PARAMETER :: EQUINOX_FRACTION= 0.0 #endif CONTAINS SUBROUTINE init_module_model_constants END SUBROUTINE init_module_model_constants END MODULE module_model_constants