mathPhysConstants_mod sourceΒΆ

  1  
  2! This file is considered to be the source of the contained module for the
  3! assimilation code.  It can be noted, however, that it was produced with the aid
  4! of the script, thermoconsts_to_MathPhysConstants.py.  That script is simply a
  5! convenient tool that may or may not be used to update this file. This is the
  6! command that produces this file:
  7!          ./thermoconsts_to_MathPhysConstants.py
  8
  9MODULE mathPhysConstants_mod
 10  ! MODULE mathPhysConstants_mod (prefix='mpc' category='8. Low-level utilities and constants')
 11  !
 12  !:Purpose:  To supply mathematical and physical constants in a universal,
 13  !           reliable fashion.
 14  !
 15  implicit none
 16  public
 17
 18! <<<<<< F U N D A M E N T A L   C O N S T A N T S >>>>>>
 19   real(8), parameter ::MPC_PI_R8                         =  3.141592653589793D+00 ! (unitless)
 20   real(8), parameter ::MPC_SPEED_OF_LIGHT_R8             =  2.997924580000000D+08 ! m/s - speed of light
 21   real(8), parameter ::MPC_PLANCK_R8                     =  6.626075500000000D-34 ! J/s - Planck's constant
 22   real(8), parameter ::MPC_BOLTZMANN_R8                  =  1.380658000000000D-23 ! J/K - Boltzmann constant
 23   real(8), parameter ::MPC_AVOGADRO_R8                   =  6.022136700000000D+23 ! mol-1 - Avogadro's number
 24!
 25! *** UNIT-CONVERSION RATIOS ***
 26   real(8), parameter ::MPC_KNOTS_PER_M_PER_S_R8          =  1.942535902919826D+00 ! knots/(m/s) - conversion: m/s to knots
 27! N.B.:  The correct value for MPC_M_PER_S_PER_KNOT is 0.5144444....
 28!        because 1 knot == 1.852 km/hr; 1 m/s = 3.6 km/hr
 29! However, this value must match that used by others
 30   real(8), parameter ::MPC_M_PER_S_PER_KNOT_R8           =  5.147910000000000D-01 ! (m/s)/knot - conversion: knots to m/s
 31   real(8), parameter ::MPC_PA_PER_MBAR_R8                =  1.000000000000000D+02 ! Pa/mbar - conversion: mbars to Pascals
 32   real(8), parameter ::MPC_MBAR_PER_PA_R8                =  1.000000000000000D-02 ! mbar/Pa - conversion: Pascals to mbars
 33   real(8), parameter ::MPC_RADIANS_PER_DEGREE_R8         =  1.745329251994330D-02 ! rad/deg - conversion: degrees to radians
 34   real(8), parameter ::MPC_DEGREES_PER_RADIAN_R8         =  5.729577951308232D+01 ! deg/rad - conversion: radians to degrees
 35   real(8), parameter ::MPC_K_C_DEGREE_OFFSET_R8          =  2.731500000000000D+02 ! K - offset between degrees K and C
 36!
 37! <<<<<< V A L U E S   T H A T   A R E   C O N S T A N T  ...  F O R   N O W >>>>>>
 38!
 39! *** ASTRONOMICAL CONSTANTS ***
 40   real(8)            ::MPC_ASTRONOMICAL_UNIT_R8          =  1.495978700000000D+11 ! m - half g. axis
 41   real(8)            ::MPC_MEAN_ANOMALY_R8               =  4.090930000000000D-01 ! (unitless) - mean anomaly
 42   real(8)            ::MPC_SIDEREAL_YEAR_R8              =  3.155815000000000D+07 ! s - sidereal year
 43!
 44! *** EARTH, THE HEAVENLY BODY ***
 45!     These are best obtained directly from:
 46!          module modgps02wgs84const (constants), or
 47!          module modgps06gravity (functions)
 48!
 49! *** RADIATION CONSTANTS ***
 50   real(8)            ::MPC_STEFAN_BOLTZMANN_R8           =  5.669800000000000D-08 ! W m-2 K-4 - Stefan-Boltzmann constant
 51   real(8)            ::MPC_SOLAR_CONSTANT_R8             =  1.367000000000000D+03 ! W/m2 - solar constant
 52!
 53! *** THERMODYNAMIC CONSTANTS (GAS PHASE) ***
 54   real(8)            ::MPC_RGAS_IDEAL_R8                 =  8.314511211948600D+00 ! J mol-1 K-1 - ideal-gas constant
 55   real(8)            ::MPC_RGAS_DRY_AIR_R8               =  2.870500000000000D+02 ! J kg-1 K-1 - gas constant, dry air
 56   real(8)            ::MPC_RGAS_VAPOUR_R8                =  4.615100000000000D+02 ! J kg-1 K-1 - gas constant, water vapour
 57   real(8)            ::MPC_EPS1_R8                       =  6.219800221014000D-01 ! (unitless) - R(air) / R(vapour)
 58   real(8)            ::MPC_EPS2_R8                       =  3.780199778986000D-01 ! (unitless) - 1 - eps1
 59   real(8)            ::MPC_DELTA_R8                      =  6.077686814144000D-01 ! (unitless) - 1/eps1 - 1 (unitless) \u2013 [R(vapour) / R(air)] - 1
 60!
 61! *** THERMODYNAMIC CONSTANTS (MOLAR MASSES) ***
 62   real(8)            ::MPC_MOLAR_MASS_DRY_AIR_R8         =  2.896440000000000D+01 ! g/mol - dry-air molar mass
 63   real(8)            ::MPC_MOLAR_MASS_VAPOUR_R8          =  1.801530000000000D+01 ! g/mol - water-vapour molar mass
 64   real(8)            ::MPC_MOLAR_MASS_O3_R8              =  4.799820000000000D+01 ! g/mol - ozone molar mass
 65   real(8)            ::MPC_MOLAR_MASS_CH4_R8             =  1.604246000000000D+01 ! g/mol - methane molar mass
 66   real(8)            ::MPC_MOLAR_MASS_CO2_R8             =  4.400950000000000D+01 ! g/mol - CO2 molar mass
 67   real(8)            ::MPC_MOLAR_MASS_CO_R8              =  2.801010000000000D+01 ! g/mol - CO molar mass
 68   real(8)            ::MPC_MOLAR_MASS_NO2_R8             =  4.600550000000000D+01 ! g/mol - NO2 molar mass
 69   real(8)            ::MPC_MOLAR_MASS_NO_R8              =  3.000610000000000D+01 ! g/mol - NO molar mass
 70   real(8)            ::MPC_MOLAR_MASS_N2O_R8             =  4.401280000000000D+01 ! g/mol - N2O molar mass
 71   real(8)            ::MPC_MOLAR_MASS_HCHO_R8            =  3.002598000000000D+01 ! g/mol - Formaldehyde molar mass
 72   real(8)            ::MPC_MOLAR_MASS_SO2_R8             =  6.406380000000000D+01 ! g/mol - SO2 molar mass
 73   real(8)            ::MPC_MOLAR_MASS_NH3_R8             =  1.703052000000000D+01 ! g/mol - NH3 molar mass
 74!
 75! *** THERMODYNAMIC CONSTANTS (SPECIFIC HEATS) ***
 76   real(8)            ::MPC_CV_DRY_AIR_R8                 =  7.184100000000001D+02 ! J kg-1 K-1 - sp. heat(V) of dry air
 77   real(8)            ::MPC_CV_VAPOUR_R8                  =  1.407950000000000D+03 ! J kg-1 K-1 - sp. heat(V) of water vapour
 78   real(8)            ::MPC_CP_DRY_AIR_R8                 =  1.005460000000000D+03 ! J kg-1 K-1 - sp. heat(P) of dry air
 79   real(8)            ::MPC_CP_VAPOUR_R8                  =  1.869460000000000D+03 ! J kg-1 K-1 - sp. heat(P) of water vapour
 80   real(8)            ::MPC_CP_ICE_R8                     =  2.115300000000000D+03 ! J kg-1 K-1 - sp. heat(P?) of ice
 81   real(8)            ::MPC_KAPPA_R8                      =  2.854912179500000D-01 ! (unitless) - for dry air: Rgas / Cp
 82!
 83! *** THERMODYNAMIC CONSTANTS (ENTHALPIES) ***
 84   real(8)            ::MPC_HEAT_CONDENS_WATER_R8         =  2.501000000000000D+06 ! J/kg - heat of condensation at 0C (water)
 85   real(8)            ::MPC_HEAT_FUSION_WATER_R8          =  3.340000000000000D+05 ! J/kg - heat of fusion (water)
 86   real(8)            ::MPC_HEAT_SUBL_WATER_R8            =  2.834000000000000D+06 ! J/kg - heat of sublimation (water)
 87!
 88! *** THERMODYNAMIC CONSTANTS (FLUID DYNAMICS) ***
 89   real(8)            ::MPC_KARMAN_R8                     =  4.000000000000000D-01 ! (unitless) - von Karman constant
 90   real(8)            ::MPC_CRITICAL_RICHARDSON_R8        =  2.000000000000000D-01 ! (unitless) -critical Richardson number
 91   real(8)            ::MPC_DENSITY_WATER_R8              =  1.000000000000000D+03 ! kg m-3 - density of (liquid) water
 92   real(8)            ::MPC_SCHUMANN_NEWELL_LAPSE_RATE_R8 =  6.628486583943000D-04 ! K s2 m-2 - Schuman-Newell lapse rate
 93!
 94! *** THERMODYNAMIC CONSTANTS (OTHER CHARACTERISTICS OF WATER) ***
 95   real(8)            ::MPC_T_ICE_R8                      =  2.731600000000000D+02 ! K - ice temperature in the atmosphere
 96   real(8)            ::MPC_TRIPLE_POINT_R8               =  2.731600000000000D+02 ! K - triple point of water
 97!
 98! *** USED TO CALCULATE L/CP IN FUNC HTVOCP ***
 99! Consider removing these 7 variables that are 'USED TO CALCULATE L/CP IN FUNC HTVOCP'
100   real(8)            ::MPC_AI_R8                         =  2.864887713087000D+03 !  
101   real(8)            ::MPC_AW_R8                         =  3.135012829948000D+03 !  
102   real(8)            ::MPC_BI_R8                         =  1.660931315020000D-01 !  
103   real(8)            ::MPC_BW_R8                         =  2.367075766316000D+00 !  
104   real(8)            ::MPC_SLP_R8                        =  6.666666666667000D-02 !  
105   real(8)            ::MPC_T1S_R8                        =  2.731600000000000D+02 ! K
106   real(8)            ::MPC_T2S_R8                        =  2.581600000000000D+02 ! K
107!
108! <<<<<< C O N S T A N T S   C O N C E R N I N G   T H E   L I M I T A T I O N S   O F   D I G I T A L   C A L C U L A T I O N >>>>>>
109   real(8)            ::MPC_MINIMUM_HU_R8                 =  2.500000000000000D-06 !  
110   real(8)            ::MPC_MAXIMUM_ES_R8                 =  3.000000000000000D+01 !  
111   real(8)            ::MPC_MINIMUM_VIS_R8                =  1.000000000000000D+00 !
112   real(8)            ::MPC_MAXIMUM_VIS_R8                =  1.500000000000000D+04 ! 15km
113   real(8)            ::MPC_MINIMUM_PR_R8                 =  1.000000000000000D-04 ! 0.1 mm/h = 0.0001 m/h
114   real(8)            ::MPC_MINIMUM_CH_R8                 =  1.000000000000000D-01 ! 0.1 micrograms/kg (for constituents)
115   real(8)            ::MPC_MINIMUM_PM_R8                 =  0.000000000000000D+00 ! 0 micrograms/m^3 (for particulate matter)
116
117! <<<<<< F U N D A M E N T A L   C O N S T A N T S >>>>>>
118   real(4), parameter ::MPC_PI_R4                         =  3.141592653589793D+00 ! (unitless)
119   real(4), parameter ::MPC_SPEED_OF_LIGHT_R4             =  2.997924580000000D+08 ! m/s - speed of light
120   real(4), parameter ::MPC_PLANCK_R4                     =  6.626075500000000D-34 ! J/s - Planck's constant
121   real(4), parameter ::MPC_BOLTZMANN_R4                  =  1.380658000000000D-23 ! J/K - Boltzmann constant
122   real(4), parameter ::MPC_AVOGADRO_R4                   =  6.022136700000000D+23 ! mol-1 - Avogadro's number
123!
124! *** UNIT-CONVERSION RATIOS ***
125   real(4), parameter ::MPC_KNOTS_PER_M_PER_S_R4          =  1.942535902919826D+00 ! knots/(m/s) - conversion: m/s to knots
126! N.B.:  The correct value for MPC_M_PER_S_PER_KNOT is 0.5144444....
127!        because 1 knot == 1.852 km/hr; 1 m/s = 3.6 km/hr
128! However, this value must match that used by others
129   real(4), parameter ::MPC_M_PER_S_PER_KNOT_R4           =  5.147910000000000D-01 ! (m/s)/knot - conversion: knots to m/s
130   real(4), parameter ::MPC_PA_PER_MBAR_R4                =  1.000000000000000D+02 ! Pa/mbar - conversion: mbars to Pascals
131   real(4), parameter ::MPC_MBAR_PER_PA_R4                =  1.000000000000000D-02 ! mbar/Pa - conversion: Pascals to mbars
132   real(4), parameter ::MPC_RADIANS_PER_DEGREE_R4         =  1.745329251994330D-02 ! rad/deg - conversion: degrees to radians
133   real(4), parameter ::MPC_DEGREES_PER_RADIAN_R4         =  5.729577951308232D+01 ! deg/rad - conversion: radians to degrees
134   real(4), parameter ::MPC_K_C_DEGREE_OFFSET_R4          =  2.731500000000000D+02 ! K - offset between degrees K and C
135!
136! <<<<<< V A L U E S   T H A T   A R E   C O N S T A N T  ...  F O R   N O W >>>>>>
137!
138! *** ASTRONOMICAL CONSTANTS ***
139   real(4)            ::MPC_ASTRONOMICAL_UNIT_R4          =  1.495978700000000D+11 ! m - half g. axis
140   real(4)            ::MPC_MEAN_ANOMALY_R4               =  4.090930000000000D-01 ! (unitless) - mean anomaly
141   real(4)            ::MPC_SIDEREAL_YEAR_R4              =  3.155815000000000D+07 ! s - sidereal year
142!
143! *** EARTH, THE HEAVENLY BODY ***
144!     These are best obtained directly from:
145!          module modgps02wgs84const (constants), or
146!          module modgps06gravity (functions)
147!
148! *** RADIATION CONSTANTS ***
149   real(4)            ::MPC_STEFAN_BOLTZMANN_R4           =  5.669800000000000D-08 ! W m-2 K-4 - Stefan-Boltzmann constant
150   real(4)            ::MPC_SOLAR_CONSTANT_R4             =  1.367000000000000D+03 ! W/m2 - solar constant
151!
152! *** THERMODYNAMIC CONSTANTS (GAS PHASE) ***
153   real(4)            ::MPC_RGAS_IDEAL_R4                 =  8.314511211948600D+00 ! J mol-1 K-1 - ideal-gas constant
154   real(4)            ::MPC_RGAS_DRY_AIR_R4               =  2.870500000000000D+02 ! J kg-1 K-1 - gas constant, dry air
155   real(4)            ::MPC_RGAS_VAPOUR_R4                =  4.615100000000000D+02 ! J kg-1 K-1 - gas constant, water vapour
156   real(4)            ::MPC_EPS1_R4                       =  6.219800221014000D-01 ! (unitless) - R(air) / R(vapour)
157   real(4)            ::MPC_EPS2_R4                       =  3.780199778986000D-01 ! (unitless) - 1 - eps1
158   real(4)            ::MPC_DELTA_R4                      =  6.077686814144000D-01 ! (unitless) - 1/eps1 - 1 (unitless) \u2013 [R(vapour) / R(air)] - 1
159!
160! *** THERMODYNAMIC CONSTANTS (MOLAR MASSES) ***
161   real(4)            ::MPC_MOLAR_MASS_DRY_AIR_R4         =  2.896440000000000D+01 ! g/mol - dry-air molar mass
162   real(4)            ::MPC_MOLAR_MASS_VAPOUR_R4          =  1.801530000000000D+01 ! g/mol - water-vapour molar mass
163   real(4)            ::MPC_MOLAR_MASS_O3_R4              =  4.799820000000000D+01 ! g/mol - ozone molar mass
164   real(4)            ::MPC_MOLAR_MASS_CH4_R4             =  1.604246000000000D+01 ! g/mol - methane molar mass
165   real(4)            ::MPC_MOLAR_MASS_CO2_R4             =  4.400950000000000D+01 ! g/mol - CO2 molar mass
166   real(4)            ::MPC_MOLAR_MASS_CO_R4              =  2.801010000000000D+01 ! g/mol - CO molar mass
167   real(4)            ::MPC_MOLAR_MASS_NO2_R4             =  4.600550000000000D+01 ! g/mol - NO2 molar mass
168   real(4)            ::MPC_MOLAR_MASS_NO_R4              =  3.000610000000000D+01 ! g/mol - NO molar mass
169   real(4)            ::MPC_MOLAR_MASS_N2O_R4             =  4.401280000000000D+01 ! g/mol - N2O molar mass
170   real(4)            ::MPC_MOLAR_MASS_HCHO_R4            =  3.002598000000000D+01 ! g/mol - Formaldehyde molar mass
171   real(4)            ::MPC_MOLAR_MASS_SO2_R4             =  6.406380000000000D+01 ! g/mol - SO2 molar mass
172   real(4)            ::MPC_MOLAR_MASS_NH3_R4             =  1.703052000000000D+01 ! g/mol - NH3 molar mass
173!
174! *** THERMODYNAMIC CONSTANTS (SPECIFIC HEATS) ***
175   real(4)            ::MPC_CV_DRY_AIR_R4                 =  7.184100000000001D+02 ! J kg-1 K-1 - sp. heat(V) of dry air
176   real(4)            ::MPC_CV_VAPOUR_R4                  =  1.407950000000000D+03 ! J kg-1 K-1 - sp. heat(V) of water vapour
177   real(4)            ::MPC_CP_DRY_AIR_R4                 =  1.005460000000000D+03 ! J kg-1 K-1 - sp. heat(P) of dry air
178   real(4)            ::MPC_CP_VAPOUR_R4                  =  1.869460000000000D+03 ! J kg-1 K-1 - sp. heat(P) of water vapour
179   real(4)            ::MPC_CP_ICE_R4                     =  2.115300000000000D+03 ! J kg-1 K-1 - sp. heat(P?) of ice
180   real(4)            ::MPC_KAPPA_R4                      =  2.854912179500000D-01 ! (unitless) - for dry air: Rgas / Cp
181!
182! *** THERMODYNAMIC CONSTANTS (ENTHALPIES) ***
183   real(4)            ::MPC_HEAT_CONDENS_WATER_R4         =  2.501000000000000D+06 ! J/kg - heat of condensation at 0C (water)
184   real(4)            ::MPC_HEAT_FUSION_WATER_R4          =  3.340000000000000D+05 ! J/kg - heat of fusion (water)
185   real(4)            ::MPC_HEAT_SUBL_WATER_R4            =  2.834000000000000D+06 ! J/kg - heat of sublimation (water)
186!
187! *** THERMODYNAMIC CONSTANTS (FLUID DYNAMICS) ***
188   real(4)            ::MPC_KARMAN_R4                     =  4.000000000000000D-01 ! (unitless) - von Karman constant
189   real(4)            ::MPC_CRITICAL_RICHARDSON_R4        =  2.000000000000000D-01 ! (unitless) -critical Richardson number
190   real(4)            ::MPC_DENSITY_WATER_R4              =  1.000000000000000D+03 ! kg m-3 - density of (liquid) water
191   real(4)            ::MPC_SCHUMANN_NEWELL_LAPSE_RATE_R4 =  6.628486583943000D-04 ! K s2 m-2 - Schuman-Newell lapse rate
192!
193! *** THERMODYNAMIC CONSTANTS (OTHER CHARACTERISTICS OF WATER) ***
194   real(4)            ::MPC_T_ICE_R4                      =  2.731600000000000D+02 ! K - ice temperature in the atmosphere
195   real(4)            ::MPC_TRIPLE_POINT_R4               =  2.731600000000000D+02 ! K - triple point of water
196!
197! *** USED TO CALCULATE L/CP IN FUNC HTVOCP ***
198! Consider removing these 7 variables that are 'USED TO CALCULATE L/CP IN FUNC HTVOCP'
199   real(4)            ::MPC_AI_R4                         =  2.864887713087000D+03 !  
200   real(4)            ::MPC_AW_R4                         =  3.135012829948000D+03 !  
201   real(4)            ::MPC_BI_R4                         =  1.660931315020000D-01 !  
202   real(4)            ::MPC_BW_R4                         =  2.367075766316000D+00 !  
203   real(4)            ::MPC_SLP_R4                        =  6.666666666667000D-02 !  
204   real(4)            ::MPC_T1S_R4                        =  2.731600000000000D+02 ! K
205   real(4)            ::MPC_T2S_R4                        =  2.581600000000000D+02 ! K
206!
207! <<<<<< C O N S T A N T S   C O N C E R N I N G   T H E   L I M I T A T I O N S   O F   D I G I T A L   C A L C U L A T I O N >>>>>>
208   real(4)            ::MPC_MINIMUM_HU_R4                 =  2.500000000000000D-06 !  
209   real(4)            ::MPC_MAXIMUM_ES_R4                 =  3.000000000000000D+01 !  
210   real(4)            ::MPC_MINIMUM_VIS_R4                =  1.000000000000000D+00 !
211   real(4)            ::MPC_MAXIMUM_VIS_R4                =  1.500000000000000D+04 ! 15km
212   real(4)            ::MPC_MINIMUM_PR_R4                 =  1.000000000000000D-04 ! 0.1 mm/h = 0.0001 m/h
213   real(4)            ::MPC_MINIMUM_CH_R4                 =  1.000000000000000D-01 ! 0.1 micrograms/kg (for constituents)
214   real(4)            ::MPC_MINIMUM_PM_R4                 =  0.000000000000000D+00 ! 0 micrograms/m^3 (for particulate matter)
215
216! <<<<<< OBS FILE CONSTANTS
217   real(4), parameter :: MPC_missingValue_R4 = -999.
218   real(8), parameter :: MPC_missingValue_R8 = -999.D0
219   integer, parameter :: MPC_missingValue_INT = -999
220
221contains
222
223  subroutine mpc_setValue(name, var_r4, var_r8, value)
224     !
225     !:Purpose: To provide a means to change a (non-parameter) value
226     implicit none
227
228     ! Arguments:
229     character(len=*), intent(in)    :: name
230     real(4),          intent(inout) :: var_r4
231     real(8),          intent(inout) :: var_r8
232     real(8),          intent(in)    :: value
233
234     var_r4 = value
235     var_r8 = value
236
237     write(6,*)'****************************************************'
238     write(6,*)'*'
239     write(6,*)'*    THE VALUE OF THE CONSTANT ', name
240     write(6,*)'*'
241     write(6,'(A25, D22.15)')' *    HAS BEEN CHANGED TO ', var_r8
242     write(6,*)'*'
243     write(6,*)'****************************************************'
244  end subroutine mpc_setValue
245
246  subroutine mpc_printConstants(kulout)
247     !
248     !:Purpose: To print all of the constants that are provided by this module.
249     !          The intent is to make it clear in a program listing which values
250     !          were used.
251     implicit none
252
253     ! Arguments:
254     integer, intent(in) :: kulout     ! unit number for printing
255
256     write(kulout,FMT='(//,4x ,"*** mpc_printConstants: definition of Mathematical and Physical constants  ***",/)')
257     write(kulout,*) " <<<<<< F U N D A M E N T A L   C O N S T A N T S >>>>>>"
258     write(kulout,"(A36, D22.15, A)") "                         MPC_PI_R8= ", MPC_PI_R8   , " (unitless)"
259     write(kulout,"(A36, D22.15, A)") "             MPC_SPEED_OF_LIGHT_R8= ", MPC_SPEED_OF_LIGHT_R8   , " m/s - speed of light"
260     write(kulout,"(A36, D22.15, A)") "                     MPC_PLANCK_R8= ", MPC_PLANCK_R8   , " J/s - Planck's constant"
261     write(kulout,"(A36, D22.15, A)") "                  MPC_BOLTZMANN_R8= ", MPC_BOLTZMANN_R8   , " J/K - Boltzmann constant"
262     write(kulout,"(A36, D22.15, A)") "                   MPC_AVOGADRO_R8= ", MPC_AVOGADRO_R8   , " mol-1 - Avogadro's number"
263     write(kulout,*) ""
264     write(kulout,*) " *** UNIT-CONVERSION RATIOS ***"
265     write(kulout,"(A36, D22.15, A)") "          MPC_KNOTS_PER_M_PER_S_R8= ", MPC_KNOTS_PER_M_PER_S_R8   , " knots/(m/s) - conversion: m/s to knots"
266     write(kulout,*) " N.B.:  The correct value for MPC_M_PER_S_PER_KNOT is 0.5144444...."
267     write(kulout,*) "        because 1 knot == 1.852 km/hr; 1 m/s = 3.6 km/hr"
268     write(kulout,*) " However, this value must match that used by others"
269     write(kulout,"(A36, D22.15, A)") "           MPC_M_PER_S_PER_KNOT_R8= ", MPC_M_PER_S_PER_KNOT_R8   , " (m/s)/knot - conversion: knots to m/s"
270     write(kulout,"(A36, D22.15, A)") "                MPC_PA_PER_MBAR_R8= ", MPC_PA_PER_MBAR_R8   , " Pa/mbar - conversion: mbars to Pascals"
271     write(kulout,"(A36, D22.15, A)") "                MPC_MBAR_PER_PA_R8= ", MPC_MBAR_PER_PA_R8   , " mbar/Pa - conversion: Pascals to mbars"
272     write(kulout,"(A36, D22.15, A)") "         MPC_RADIANS_PER_DEGREE_R8= ", MPC_RADIANS_PER_DEGREE_R8   , " rad/deg - conversion: degrees to radians"
273     write(kulout,"(A36, D22.15, A)") "         MPC_DEGREES_PER_RADIAN_R8= ", MPC_DEGREES_PER_RADIAN_R8   , " deg/rad - conversion: radians to degrees"
274     write(kulout,"(A36, D22.15, A)") "          MPC_K_C_DEGREE_OFFSET_R8= ", MPC_K_C_DEGREE_OFFSET_R8   , " K - offset between degrees K and C"
275     write(kulout,*) ""
276     write(kulout,*) " <<<<<< V A L U E S   T H A T   A R E   C O N S T A N T  ...  F O R   N O W >>>>>>"
277     write(kulout,*) ""
278     write(kulout,*) " *** ASTRONOMICAL CONSTANTS ***"
279     write(kulout,"(A36, D22.15, A)") "          MPC_ASTRONOMICAL_UNIT_R8= ", MPC_ASTRONOMICAL_UNIT_R8   , " m - half g. axis"
280     write(kulout,"(A36, D22.15, A)") "               MPC_MEAN_ANOMALY_R8= ", MPC_MEAN_ANOMALY_R8   , " (unitless) - mean anomaly"
281     write(kulout,"(A36, D22.15, A)") "              MPC_SIDEREAL_YEAR_R8= ", MPC_SIDEREAL_YEAR_R8   , " s - sidereal year"
282     write(kulout,*) ""
283     write(kulout,*) " *** EARTH, THE HEAVENLY BODY ***"
284     write(kulout,*) "     These are best obtained directly from:"
285     write(kulout,*) "          module modgps02wgs84const (constants), or"
286     write(kulout,*) "          module modgps06gravity (functions)"
287     write(kulout,*) ""
288     write(kulout,*) " *** RADIATION CONSTANTS ***"
289     write(kulout,"(A36, D22.15, A)") "           MPC_STEFAN_BOLTZMANN_R8= ", MPC_STEFAN_BOLTZMANN_R8   , " W m-2 K-4 - Stefan-Boltzmann constant"
290     write(kulout,"(A36, D22.15, A)") "             MPC_SOLAR_CONSTANT_R8= ", MPC_SOLAR_CONSTANT_R8   , " W/m2 - solar constant"
291     write(kulout,*) ""
292     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (GAS PHASE) ***"
293     write(kulout,"(A36, D22.15, A)") "                 MPC_RGAS_IDEAL_R8= ", MPC_RGAS_IDEAL_R8   , " J mol-1 K-1 - ideal-gas constant"
294     write(kulout,"(A36, D22.15, A)") "               MPC_RGAS_DRY_AIR_R8= ", MPC_RGAS_DRY_AIR_R8   , " J kg-1 K-1 - gas constant, dry air"
295     write(kulout,"(A36, D22.15, A)") "                MPC_RGAS_VAPOUR_R8= ", MPC_RGAS_VAPOUR_R8   , " J kg-1 K-1 - gas constant, water vapour"
296     write(kulout,"(A36, D22.15, A)") "                       MPC_EPS1_R8= ", MPC_EPS1_R8   , " (unitless) - R(air) / R(vapour)"
297     write(kulout,"(A36, D22.15, A)") "                       MPC_EPS2_R8= ", MPC_EPS2_R8   , " (unitless) - 1 - eps1"
298     write(kulout,"(A36, D22.15, A)") "                      MPC_DELTA_R8= ", MPC_DELTA_R8   , " (unitless) - 1/eps1 - 1 (unitless) \u2013 [R(vapour) / R(air)] - 1"
299     write(kulout,*) ""
300     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (MOLAR MASSES) ***"
301     write(kulout,"(A36, D22.15, A)") "         MPC_MOLAR_MASS_DRY_AIR_R8= ", MPC_MOLAR_MASS_DRY_AIR_R8   , " g/mol - dry-air molar mass"
302     write(kulout,"(A36, D22.15, A)") "          MPC_MOLAR_MASS_VAPOUR_R8= ", MPC_MOLAR_MASS_VAPOUR_R8   , " g/mol - water-vapour molar mass"
303     write(kulout,"(A36, D22.15, A)") "              MPC_MOLAR_MASS_O3_R8= ", MPC_MOLAR_MASS_O3_R8   , " g/mol - ozone molar mass"
304     write(kulout,"(A36, D22.15, A)") "             MPC_MOLAR_MASS_CH4_R8= ", MPC_MOLAR_MASS_CH4_R8   , " g/mol - methane molar mass"
305     write(kulout,"(A36, D22.15, A)") "             MPC_MOLAR_MASS_CO2_R8= ", MPC_MOLAR_MASS_CO2_R8   , " g/mol - CO2 molar mass"
306     write(kulout,"(A36, D22.15, A)") "              MPC_MOLAR_MASS_CO_R8= ", MPC_MOLAR_MASS_CO_R8   , " g/mol - CO molar mass"
307     write(kulout,"(A36, D22.15, A)") "             MPC_MOLAR_MASS_NO2_R8= ", MPC_MOLAR_MASS_NO2_R8   , " g/mol - NO2 molar mass"
308     write(kulout,"(A36, D22.15, A)") "              MPC_MOLAR_MASS_NO_R8= ", MPC_MOLAR_MASS_NO_R8   , " g/mol - NO molar mass"
309     write(kulout,"(A36, D22.15, A)") "             MPC_MOLAR_MASS_N2O_R8= ", MPC_MOLAR_MASS_N2O_R8   , " g/mol - N2O molar mass"
310     write(kulout,"(A36, D22.15, A)") "            MPC_MOLAR_MASS_HCHO_R8= ", MPC_MOLAR_MASS_HCHO_R8   , " g/mol - Formaldehyde molar mass"
311     write(kulout,"(A36, D22.15, A)") "             MPC_MOLAR_MASS_SO2_R8= ", MPC_MOLAR_MASS_SO2_R8   , " g/mol - SO2 molar mass"
312     write(kulout,"(A36, D22.15, A)") "             MPC_MOLAR_MASS_NH3_R8= ", MPC_MOLAR_MASS_NH3_R8   , " g/mol - NH3 molar mass"
313     write(kulout,*) ""
314     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (SPECIFIC HEATS) ***"
315     write(kulout,"(A36, D22.15, A)") "                 MPC_CV_DRY_AIR_R8= ", MPC_CV_DRY_AIR_R8   , " J kg-1 K-1 - sp. heat(V) of dry air"
316     write(kulout,"(A36, D22.15, A)") "                  MPC_CV_VAPOUR_R8= ", MPC_CV_VAPOUR_R8   , " J kg-1 K-1 - sp. heat(V) of water vapour"
317     write(kulout,"(A36, D22.15, A)") "                 MPC_CP_DRY_AIR_R8= ", MPC_CP_DRY_AIR_R8   , " J kg-1 K-1 - sp. heat(P) of dry air"
318     write(kulout,"(A36, D22.15, A)") "                  MPC_CP_VAPOUR_R8= ", MPC_CP_VAPOUR_R8   , " J kg-1 K-1 - sp. heat(P) of water vapour"
319     write(kulout,"(A36, D22.15, A)") "                     MPC_CP_ICE_R8= ", MPC_CP_ICE_R8   , " J kg-1 K-1 - sp. heat(P?) of ice"
320     write(kulout,"(A36, D22.15, A)") "                      MPC_KAPPA_R8= ", MPC_KAPPA_R8   , " (unitless) - for dry air: Rgas / Cp"
321     write(kulout,*) ""
322     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (ENTHALPIES) ***"
323     write(kulout,"(A36, D22.15, A)") "         MPC_HEAT_CONDENS_WATER_R8= ", MPC_HEAT_CONDENS_WATER_R8   , " J/kg - heat of condensation at 0C (water)"
324     write(kulout,"(A36, D22.15, A)") "          MPC_HEAT_FUSION_WATER_R8= ", MPC_HEAT_FUSION_WATER_R8   , " J/kg - heat of fusion (water)"
325     write(kulout,"(A36, D22.15, A)") "            MPC_HEAT_SUBL_WATER_R8= ", MPC_HEAT_SUBL_WATER_R8   , " J/kg - heat of sublimation (water)"
326     write(kulout,*) ""
327     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (FLUID DYNAMICS) ***"
328     write(kulout,"(A36, D22.15, A)") "                     MPC_KARMAN_R8= ", MPC_KARMAN_R8   , " (unitless) - von Karman constant"
329     write(kulout,"(A36, D22.15, A)") "        MPC_CRITICAL_RICHARDSON_R8= ", MPC_CRITICAL_RICHARDSON_R8   , " (unitless) -critical Richardson number"
330     write(kulout,"(A36, D22.15, A)") "              MPC_DENSITY_WATER_R8= ", MPC_DENSITY_WATER_R8   , " kg m-3 - density of (liquid) water"
331     write(kulout,"(A36, D22.15, A)") " MPC_SCHUMANN_NEWELL_LAPSE_RATE_R8= ", MPC_SCHUMANN_NEWELL_LAPSE_RATE_R8   , " K s2 m-2 - Schuman-Newell lapse rate"
332     write(kulout,*) ""
333     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (OTHER CHARACTERISTICS OF WATER) ***"
334     write(kulout,"(A36, D22.15, A)") "                      MPC_T_ICE_R8= ", MPC_T_ICE_R8   , " K - ice temperature in the atmosphere"
335     write(kulout,"(A36, D22.15, A)") "               MPC_TRIPLE_POINT_R8= ", MPC_TRIPLE_POINT_R8   , " K - triple point of water"
336     write(kulout,*) ""
337     write(kulout,*) " *** USED TO CALCULATE L/CP IN FUNC HTVOCP ***"
338     write(kulout,*) " Consider removing these 7 variables that are 'USED TO CALCULATE L/CP IN FUNC HTVOCP'"
339     write(kulout,"(A36, D22.15, A)") "                         MPC_AI_R8= ", MPC_AI_R8   , "  "
340     write(kulout,"(A36, D22.15, A)") "                         MPC_AW_R8= ", MPC_AW_R8   , "  "
341     write(kulout,"(A36, D22.15, A)") "                         MPC_BI_R8= ", MPC_BI_R8   , "  "
342     write(kulout,"(A36, D22.15, A)") "                         MPC_BW_R8= ", MPC_BW_R8   , "  "
343     write(kulout,"(A36, D22.15, A)") "                        MPC_SLP_R8= ", MPC_SLP_R8   , "  "
344     write(kulout,"(A36, D22.15, A)") "                        MPC_T1S_R8= ", MPC_T1S_R8   , " K"
345     write(kulout,"(A36, D22.15, A)") "                        MPC_T2S_R8= ", MPC_T2S_R8   , " K"
346     write(kulout,*) ""
347     write(kulout,*) " <<<<<< C O N S T A N T S   C O N C E R N I N G   T H E   L I M I T A T I O N S   O F   D I G I T A L   C A L C U L A T I O N >>>>>>"
348     write(kulout,"(A36, D22.15, A)") "                 MPC_MINIMUM_HU_R8= ", MPC_MINIMUM_HU_R8   , "  "
349     write(kulout,"(A36, D22.15, A)") "                 MPC_MAXIMUM_ES_R8= ", MPC_MAXIMUM_ES_R8   , "  "
350     write(kulout,"(A36, D22.15, A)") "                 MPC_MINIMUM_CH_R8= ", MPC_MINIMUM_CH_R8   , "  "
351     write(kulout,"(A36, D22.15, A)") "                 MPC_MINIMUM_PM_R8= ", MPC_MINIMUM_PM_R8   , "  "
352     write(kulout,*) "\n\n"
353  end subroutine mpc_printConstants
354end MODULE mathPhysConstants_mod