! This file is considered to be the source of the contained module for the
! assimilation code.  It can be noted, however, that it was produced with the aid
! of the script, thermoconsts_to_MathPhysConstants.py.  That script is simply a
! convenient tool that may or may not be used to update this file.   This is the
! command that produces this file:
!          ./thermoconsts_to_MathPhysConstants.py


MODULE MathPhysConstants_mod 82
  ! Mathematical and Physical Constants
  implicit none
  public
  !-----------------------------------------------------------------------------
  ! MODULE MathPhysConstants_mod (prefix='mpc')  
  !
  ! Purpose: To supply mathematical and physical constants in a universal,
  !          reliable fashion.
  !-----------------------------------------------------------------------------
  ! Feb  9, 2012 Jeff Blezius

! <<<<<< F U N D A M E N T A L   C O N S T A N T S >>>>>>
   real(8), parameter ::MPC_PI_R8                         =  3.141592653589793D+00 ! (unitless)
   real(8), parameter ::MPC_SPEED_OF_LIGHT_R8             =  2.997924580000000D+08 ! m/s - speed of light
   real(8), parameter ::MPC_PLANCK_R8                     =  6.626075500000000D-34 ! J/s - Planck's constant
   real(8), parameter ::MPC_BOLTZMANN_R8                  =  1.380658000000000D-23 ! J/K - Boltzmann constant
   real(8), parameter ::MPC_AVOGADRO_R8                   =  6.022136700000000D+23 ! mol-1 - Avogadro's number
!
! *** UNIT-CONVERSION RATIOS ***
   real(8), parameter ::MPC_KNOTS_PER_M_PER_S_R8          =  1.942535902919826D+00 ! knots/(m/s) - conversion: m/s to knots
! N.B.:  The correct value for MPC_M_PER_S_PER_KNOT is 0.5144444....
!        because 1 knot == 1.852 km/hr; 1 m/s = 3.6 km/hr
! However, this value must match that used by others
   real(8), parameter ::MPC_M_PER_S_PER_KNOT_R8           =  5.147910000000000D-01 ! (m/s)/knot - conversion: knots to m/s
   real(8), parameter ::MPC_PA_PER_MBAR_R8                =  1.000000000000000D+02 ! Pa/mbar - conversion: mbars to Pascals
   real(8), parameter ::MPC_MBAR_PER_PA_R8                =  1.000000000000000D-02 ! mbar/Pa - conversion: Pascals to mbars
   real(8), parameter ::MPC_RADIANS_PER_DEGREE_R8         =  1.745329251994330D-02 ! rad/deg - conversion: degrees to radians
   real(8), parameter ::MPC_DEGREES_PER_RADIAN_R8         =  5.729577951308232D+01 ! deg/rad - conversion: radians to degrees
   real(8), parameter ::MPC_K_C_DEGREE_OFFSET_R8          =  2.731500000000000D+02 ! K - offset between degrees K and C
!
! <<<<<< 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 >>>>>>
!
! *** ASTRONOMICAL CONSTANTS ***
   real(8)            ::MPC_ASTRONOMICAL_UNIT_R8          =  1.495978700000000D+11 ! m - half g. axis
   real(8)            ::MPC_MEAN_ANOMALY_R8               =  4.090930000000000D-01 ! (unitless) - mean anomaly
   real(8)            ::MPC_SIDEREAL_YEAR_R8              =  3.155815000000000D+07 ! s - sidereal year
!
! *** EARTH, THE HEAVENLY BODY ***
!     These are best obtained directly from:
!          module modgps02wgs84const (constants), or
!          module modgps06gravity (functions)
!
! *** RADIATION CONSTANTS ***
   real(8)            ::MPC_STEFAN_BOLTZMANN_R8           =  5.669800000000000D-08 ! W m-2 K-4 - Stefan-Boltzmann constant
   real(8)            ::MPC_SOLAR_CONSTANT_R8             =  1.367000000000000D+03 ! W/m2 - solar constant
!
! *** THERMODYNAMIC CONSTANTS (GAS PHASE) ***
   real(8)            ::MPC_RGAS_IDEAL_R8                 =  8.314511211948600D+00 ! J mol-1 K-1 - ideal-gas constant
   real(8)            ::MPC_RGAS_DRY_AIR_R8               =  2.870500000000000D+02 ! J kg-1 K-1 - gas constant, dry air
   real(8)            ::MPC_RGAS_VAPOUR_R8                =  4.615100000000000D+02 ! J kg-1 K-1 - gas constant, water vapour
   real(8)            ::MPC_EPS1_R8                       =  6.219800221014000D-01 ! (unitless) - R(air) / R(vapour)
   real(8)            ::MPC_EPS2_R8                       =  3.780199778986000D-01 ! (unitless) - 1 - eps1
   real(8)            ::MPC_DELTA_R8                      =  6.077686814144000D-01 ! (unitless) - 1/eps1 - 1 (unitless) \u2013 [R(vapour) / R(air)] - 1
!
! *** THERMODYNAMIC CONSTANTS (MOLAR MASSES) ***
   real(8)            ::MPC_MOLAR_MASS_DRY_AIR_R8         =  2.896440000000000D+01 ! g/mol - dry-air molar mass
   real(8)            ::MPC_MOLAR_MASS_VAPOUR_R8          =  1.801530000000000D+01 ! g/mol - water-vapour molar mass
!
! *** THERMODYNAMIC CONSTANTS (SPECIFIC HEATS) ***
   real(8)            ::MPC_CV_DRY_AIR_R8                 =  7.184100000000001D+02 ! J kg-1 K-1 - sp. heat(V) of dry air
   real(8)            ::MPC_CV_VAPOUR_R8                  =  1.407950000000000D+03 ! J kg-1 K-1 - sp. heat(V) of water vapour
   real(8)            ::MPC_CP_DRY_AIR_R8                 =  1.005460000000000D+03 ! J kg-1 K-1 - sp. heat(P) of dry air
   real(8)            ::MPC_CP_VAPOUR_R8                  =  1.869460000000000D+03 ! J kg-1 K-1 - sp. heat(P) of water vapour
   real(8)            ::MPC_CP_ICE_R8                     =  2.115300000000000D+03 ! J kg-1 K-1 - sp. heat(P?) of ice
   real(8)            ::MPC_KAPPA_R8                      =  2.854912179500000D-01 ! (unitless) - for dry air: Rgas / Cp
!
! *** THERMODYNAMIC CONSTANTS (ENTHALPIES) ***
   real(8)            ::MPC_HEAT_CONDENS_WATER_R8         =  2.501000000000000D+06 ! J/kg - heat of condensation at 0C (water)
   real(8)            ::MPC_HEAT_FUSION_WATER_R8          =  3.340000000000000D+05 ! J/kg - heat of fusion (water)
   real(8)            ::MPC_HEAT_SUBL_WATER_R8            =  2.834000000000000D+06 ! J/kg - heat of sublimation (water)
!
! *** THERMODYNAMIC CONSTANTS (FLUID DYNAMICS) ***
   real(8)            ::MPC_KARMAN_R8                     =  4.000000000000000D-01 ! (unitless) - von Karman constant
   real(8)            ::MPC_CRITICAL_RICHARDSON_R8        =  2.000000000000000D-01 ! (unitless) -critical Richardson number
   real(8)            ::MPC_DENSITY_WATER_R8              =  1.000000000000000D+03 ! kg m-3 - density of (liquid) water
   real(8)            ::MPC_SCHUMANN_NEWELL_LAPSE_RATE_R8 =  6.628486583943000D-04 ! K s2 m-2 - Schuman-Newell lapse rate
!
! *** THERMODYNAMIC CONSTANTS (OTHER CHARACTERISTICS OF WATER) ***
   real(8)            ::MPC_T_ICE_R8                      =  2.731600000000000D+02 ! K - ice temperature in the atmosphere
   real(8)            ::MPC_TRIPLE_POINT_R8               =  2.731600000000000D+02 ! K - triple point of water
!
! *** USED TO CALCULATE L/CP IN FUNC HTVOCP ***
! Consider removing these 7 variables that are 'USED TO CALCULATE L/CP IN FUNC HTVOCP'
   real(8)            ::MPC_AI_R8                         =  2.864887713087000D+03 !  
   real(8)            ::MPC_AW_R8                         =  3.135012829948000D+03 !  
   real(8)            ::MPC_BI_R8                         =  1.660931315020000D-01 !  
   real(8)            ::MPC_BW_R8                         =  2.367075766316000D+00 !  
   real(8)            ::MPC_SLP_R8                        =  6.666666666667000D-02 !  
   real(8)            ::MPC_T1S_R8                        =  2.731600000000000D+02 ! K
   real(8)            ::MPC_T2S_R8                        =  2.581600000000000D+02 ! K
!
! <<<<<< 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 >>>>>>
   real(8)            ::MPC_MINIMUM_HU_R8                 =  2.500000000000000D-06 !  
   real(8)            ::MPC_MAXIMUM_ES_R8                 =  3.000000000000000D+01 !  

! <<<<<< F U N D A M E N T A L   C O N S T A N T S >>>>>>
   real(4), parameter ::MPC_PI_R4                         =  3.141592653589793D+00 ! (unitless)
   real(4), parameter ::MPC_SPEED_OF_LIGHT_R4             =  2.997924580000000D+08 ! m/s - speed of light
   real(4), parameter ::MPC_PLANCK_R4                     =  6.626075500000000D-34 ! J/s - Planck's constant
   real(4), parameter ::MPC_BOLTZMANN_R4                  =  1.380658000000000D-23 ! J/K - Boltzmann constant
   real(4), parameter ::MPC_AVOGADRO_R4                   =  6.022136700000000D+23 ! mol-1 - Avogadro's number
!
! *** UNIT-CONVERSION RATIOS ***
   real(4), parameter ::MPC_KNOTS_PER_M_PER_S_R4          =  1.942535902919826D+00 ! knots/(m/s) - conversion: m/s to knots
! N.B.:  The correct value for MPC_M_PER_S_PER_KNOT is 0.5144444....
!        because 1 knot == 1.852 km/hr; 1 m/s = 3.6 km/hr
! However, this value must match that used by others
   real(4), parameter ::MPC_M_PER_S_PER_KNOT_R4           =  5.147910000000000D-01 ! (m/s)/knot - conversion: knots to m/s
   real(4), parameter ::MPC_PA_PER_MBAR_R4                =  1.000000000000000D+02 ! Pa/mbar - conversion: mbars to Pascals
   real(4), parameter ::MPC_MBAR_PER_PA_R4                =  1.000000000000000D-02 ! mbar/Pa - conversion: Pascals to mbars
   real(4), parameter ::MPC_RADIANS_PER_DEGREE_R4         =  1.745329251994330D-02 ! rad/deg - conversion: degrees to radians
   real(4), parameter ::MPC_DEGREES_PER_RADIAN_R4         =  5.729577951308232D+01 ! deg/rad - conversion: radians to degrees
   real(4), parameter ::MPC_K_C_DEGREE_OFFSET_R4          =  2.731500000000000D+02 ! K - offset between degrees K and C
!
! <<<<<< 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 >>>>>>
!
! *** ASTRONOMICAL CONSTANTS ***
   real(4)            ::MPC_ASTRONOMICAL_UNIT_R4          =  1.495978700000000D+11 ! m - half g. axis
   real(4)            ::MPC_MEAN_ANOMALY_R4               =  4.090930000000000D-01 ! (unitless) - mean anomaly
   real(4)            ::MPC_SIDEREAL_YEAR_R4              =  3.155815000000000D+07 ! s - sidereal year
!
! *** EARTH, THE HEAVENLY BODY ***
!     These are best obtained directly from:
!          module modgps02wgs84const (constants), or
!          module modgps06gravity (functions)
!
! *** RADIATION CONSTANTS ***
   real(4)            ::MPC_STEFAN_BOLTZMANN_R4           =  5.669800000000000D-08 ! W m-2 K-4 - Stefan-Boltzmann constant
   real(4)            ::MPC_SOLAR_CONSTANT_R4             =  1.367000000000000D+03 ! W/m2 - solar constant
!
! *** THERMODYNAMIC CONSTANTS (GAS PHASE) ***
   real(4)            ::MPC_RGAS_IDEAL_R4                 =  8.314511211948600D+00 ! J mol-1 K-1 - ideal-gas constant
   real(4)            ::MPC_RGAS_DRY_AIR_R4               =  2.870500000000000D+02 ! J kg-1 K-1 - gas constant, dry air
   real(4)            ::MPC_RGAS_VAPOUR_R4                =  4.615100000000000D+02 ! J kg-1 K-1 - gas constant, water vapour
   real(4)            ::MPC_EPS1_R4                       =  6.219800221014000D-01 ! (unitless) - R(air) / R(vapour)
   real(4)            ::MPC_EPS2_R4                       =  3.780199778986000D-01 ! (unitless) - 1 - eps1
   real(4)            ::MPC_DELTA_R4                      =  6.077686814144000D-01 ! (unitless) - 1/eps1 - 1 (unitless) \u2013 [R(vapour) / R(air)] - 1
!
! *** THERMODYNAMIC CONSTANTS (MOLAR MASSES) ***
   real(4)            ::MPC_MOLAR_MASS_DRY_AIR_R4         =  2.896440000000000D+01 ! g/mol - dry-air molar mass
   real(4)            ::MPC_MOLAR_MASS_VAPOUR_R4          =  1.801530000000000D+01 ! g/mol - water-vapour molar mass
!
! *** THERMODYNAMIC CONSTANTS (SPECIFIC HEATS) ***
   real(4)            ::MPC_CV_DRY_AIR_R4                 =  7.184100000000001D+02 ! J kg-1 K-1 - sp. heat(V) of dry air
   real(4)            ::MPC_CV_VAPOUR_R4                  =  1.407950000000000D+03 ! J kg-1 K-1 - sp. heat(V) of water vapour
   real(4)            ::MPC_CP_DRY_AIR_R4                 =  1.005460000000000D+03 ! J kg-1 K-1 - sp. heat(P) of dry air
   real(4)            ::MPC_CP_VAPOUR_R4                  =  1.869460000000000D+03 ! J kg-1 K-1 - sp. heat(P) of water vapour
   real(4)            ::MPC_CP_ICE_R4                     =  2.115300000000000D+03 ! J kg-1 K-1 - sp. heat(P?) of ice
   real(4)            ::MPC_KAPPA_R4                      =  2.854912179500000D-01 ! (unitless) - for dry air: Rgas / Cp
!
! *** THERMODYNAMIC CONSTANTS (ENTHALPIES) ***
   real(4)            ::MPC_HEAT_CONDENS_WATER_R4         =  2.501000000000000D+06 ! J/kg - heat of condensation at 0C (water)
   real(4)            ::MPC_HEAT_FUSION_WATER_R4          =  3.340000000000000D+05 ! J/kg - heat of fusion (water)
   real(4)            ::MPC_HEAT_SUBL_WATER_R4            =  2.834000000000000D+06 ! J/kg - heat of sublimation (water)
!
! *** THERMODYNAMIC CONSTANTS (FLUID DYNAMICS) ***
   real(4)            ::MPC_KARMAN_R4                     =  4.000000000000000D-01 ! (unitless) - von Karman constant
   real(4)            ::MPC_CRITICAL_RICHARDSON_R4        =  2.000000000000000D-01 ! (unitless) -critical Richardson number
   real(4)            ::MPC_DENSITY_WATER_R4              =  1.000000000000000D+03 ! kg m-3 - density of (liquid) water
   real(4)            ::MPC_SCHUMANN_NEWELL_LAPSE_RATE_R4 =  6.628486583943000D-04 ! K s2 m-2 - Schuman-Newell lapse rate
!
! *** THERMODYNAMIC CONSTANTS (OTHER CHARACTERISTICS OF WATER) ***
   real(4)            ::MPC_T_ICE_R4                      =  2.731600000000000D+02 ! K - ice temperature in the atmosphere
   real(4)            ::MPC_TRIPLE_POINT_R4               =  2.731600000000000D+02 ! K - triple point of water
!
! *** USED TO CALCULATE L/CP IN FUNC HTVOCP ***
! Consider removing these 7 variables that are 'USED TO CALCULATE L/CP IN FUNC HTVOCP'
   real(4)            ::MPC_AI_R4                         =  2.864887713087000D+03 !  
   real(4)            ::MPC_AW_R4                         =  3.135012829948000D+03 !  
   real(4)            ::MPC_BI_R4                         =  1.660931315020000D-01 !  
   real(4)            ::MPC_BW_R4                         =  2.367075766316000D+00 !  
   real(4)            ::MPC_SLP_R4                        =  6.666666666667000D-02 !  
   real(4)            ::MPC_T1S_R4                        =  2.731600000000000D+02 ! K
   real(4)            ::MPC_T2S_R4                        =  2.581600000000000D+02 ! K
!
! <<<<<< 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 >>>>>>
   real(4)            ::MPC_MINIMUM_HU_R4                 =  2.500000000000000D-06 !  
   real(4)            ::MPC_MAXIMUM_ES_R4                 =  3.000000000000000D+01 !  

contains


  subroutine mpc_setValue(name, var_r4, var_r8, value)
     ! A means to change a (non-parameter) value
     character(len=*) :: name
     real(4) :: var_r4
     real(8) :: var_r8, value

     var_r4 = value
     var_r8 = value

     write(6,*)'****************************************************'
     write(6,*)'*'
     write(6,*)'*    THE VALUE OF THE CONSTANT ', name
     write(6,*)'*'
     write(6,'(A25, D22.15)')' *    HAS BEEN CHANGED TO ', var_r8
     write(6,*)'*'
     write(6,*)'****************************************************'
  end subroutine mpc_setValue


  subroutine mpc_printConstants(kulout) 2
     integer, intent(in) :: kulout     ! unit number for printing

     write(kulout,FMT='(//,4x ,"*** mpc_printConstants: definition of Mathematical and Physical constants  ***",/)')
     write(kulout,*) " <<<<<< F U N D A M E N T A L   C O N S T A N T S >>>>>>"
     write(kulout,"(A36, D22.15, A)") "                         MPC_PI_R8= ", MPC_PI_R8   , " (unitless)"
     write(kulout,"(A36, D22.15, A)") "             MPC_SPEED_OF_LIGHT_R8= ", MPC_SPEED_OF_LIGHT_R8   , " m/s - speed of light"
     write(kulout,"(A36, D22.15, A)") "                     MPC_PLANCK_R8= ", MPC_PLANCK_R8   , " J/s - Planck's constant"
     write(kulout,"(A36, D22.15, A)") "                  MPC_BOLTZMANN_R8= ", MPC_BOLTZMANN_R8   , " J/K - Boltzmann constant"
     write(kulout,"(A36, D22.15, A)") "                   MPC_AVOGADRO_R8= ", MPC_AVOGADRO_R8   , " mol-1 - Avogadro's number"
     write(kulout,*) ""
     write(kulout,*) " *** UNIT-CONVERSION RATIOS ***"
     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"
     write(kulout,*) " N.B.:  The correct value for MPC_M_PER_S_PER_KNOT is 0.5144444...."
     write(kulout,*) "        because 1 knot == 1.852 km/hr; 1 m/s = 3.6 km/hr"
     write(kulout,*) " However, this value must match that used by others"
     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"
     write(kulout,"(A36, D22.15, A)") "                MPC_PA_PER_MBAR_R8= ", MPC_PA_PER_MBAR_R8   , " Pa/mbar - conversion: mbars to Pascals"
     write(kulout,"(A36, D22.15, A)") "                MPC_MBAR_PER_PA_R8= ", MPC_MBAR_PER_PA_R8   , " mbar/Pa - conversion: Pascals to mbars"
     write(kulout,"(A36, D22.15, A)") "         MPC_RADIANS_PER_DEGREE_R8= ", MPC_RADIANS_PER_DEGREE_R8   , " rad/deg - conversion: degrees to radians"
     write(kulout,"(A36, D22.15, A)") "         MPC_DEGREES_PER_RADIAN_R8= ", MPC_DEGREES_PER_RADIAN_R8   , " deg/rad - conversion: radians to degrees"
     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"
     write(kulout,*) ""
     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 >>>>>>"
     write(kulout,*) ""
     write(kulout,*) " *** ASTRONOMICAL CONSTANTS ***"
     write(kulout,"(A36, D22.15, A)") "          MPC_ASTRONOMICAL_UNIT_R8= ", MPC_ASTRONOMICAL_UNIT_R8   , " m - half g. axis"
     write(kulout,"(A36, D22.15, A)") "               MPC_MEAN_ANOMALY_R8= ", MPC_MEAN_ANOMALY_R8   , " (unitless) - mean anomaly"
     write(kulout,"(A36, D22.15, A)") "              MPC_SIDEREAL_YEAR_R8= ", MPC_SIDEREAL_YEAR_R8   , " s - sidereal year"
     write(kulout,*) ""
     write(kulout,*) " *** EARTH, THE HEAVENLY BODY ***"
     write(kulout,*) "     These are best obtained directly from:"
     write(kulout,*) "          module modgps02wgs84const (constants), or"
     write(kulout,*) "          module modgps06gravity (functions)"
     write(kulout,*) ""
     write(kulout,*) " *** RADIATION CONSTANTS ***"
     write(kulout,"(A36, D22.15, A)") "           MPC_STEFAN_BOLTZMANN_R8= ", MPC_STEFAN_BOLTZMANN_R8   , " W m-2 K-4 - Stefan-Boltzmann constant"
     write(kulout,"(A36, D22.15, A)") "             MPC_SOLAR_CONSTANT_R8= ", MPC_SOLAR_CONSTANT_R8   , " W/m2 - solar constant"
     write(kulout,*) ""
     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (GAS PHASE) ***"
     write(kulout,"(A36, D22.15, A)") "                 MPC_RGAS_IDEAL_R8= ", MPC_RGAS_IDEAL_R8   , " J mol-1 K-1 - ideal-gas constant"
     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"
     write(kulout,"(A36, D22.15, A)") "                MPC_RGAS_VAPOUR_R8= ", MPC_RGAS_VAPOUR_R8   , " J kg-1 K-1 - gas constant, water vapour"
     write(kulout,"(A36, D22.15, A)") "                       MPC_EPS1_R8= ", MPC_EPS1_R8   , " (unitless) - R(air) / R(vapour)"
     write(kulout,"(A36, D22.15, A)") "                       MPC_EPS2_R8= ", MPC_EPS2_R8   , " (unitless) - 1 - eps1"
     write(kulout,"(A36, D22.15, A)") "                      MPC_DELTA_R8= ", MPC_DELTA_R8   , " (unitless) - 1/eps1 - 1 (unitless) \u2013 [R(vapour) / R(air)] - 1"
     write(kulout,*) ""
     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (MOLAR MASSES) ***"
     write(kulout,"(A36, D22.15, A)") "         MPC_MOLAR_MASS_DRY_AIR_R8= ", MPC_MOLAR_MASS_DRY_AIR_R8   , " g/mol - dry-air molar mass"
     write(kulout,"(A36, D22.15, A)") "          MPC_MOLAR_MASS_VAPOUR_R8= ", MPC_MOLAR_MASS_VAPOUR_R8   , " g/mol - water-vapour molar mass"
     write(kulout,*) ""
     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (SPECIFIC HEATS) ***"
     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"
     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"
     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"
     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"
     write(kulout,"(A36, D22.15, A)") "                     MPC_CP_ICE_R8= ", MPC_CP_ICE_R8   , " J kg-1 K-1 - sp. heat(P?) of ice"
     write(kulout,"(A36, D22.15, A)") "                      MPC_KAPPA_R8= ", MPC_KAPPA_R8   , " (unitless) - for dry air: Rgas / Cp"
     write(kulout,*) ""
     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (ENTHALPIES) ***"
     write(kulout,"(A36, D22.15, A)") "         MPC_HEAT_CONDENS_WATER_R8= ", MPC_HEAT_CONDENS_WATER_R8   , " J/kg - heat of condensation at 0C (water)"
     write(kulout,"(A36, D22.15, A)") "          MPC_HEAT_FUSION_WATER_R8= ", MPC_HEAT_FUSION_WATER_R8   , " J/kg - heat of fusion (water)"
     write(kulout,"(A36, D22.15, A)") "            MPC_HEAT_SUBL_WATER_R8= ", MPC_HEAT_SUBL_WATER_R8   , " J/kg - heat of sublimation (water)"
     write(kulout,*) ""
     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (FLUID DYNAMICS) ***"
     write(kulout,"(A36, D22.15, A)") "                     MPC_KARMAN_R8= ", MPC_KARMAN_R8   , " (unitless) - von Karman constant"
     write(kulout,"(A36, D22.15, A)") "        MPC_CRITICAL_RICHARDSON_R8= ", MPC_CRITICAL_RICHARDSON_R8   , " (unitless) -critical Richardson number"
     write(kulout,"(A36, D22.15, A)") "              MPC_DENSITY_WATER_R8= ", MPC_DENSITY_WATER_R8   , " kg m-3 - density of (liquid) water"
     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"
     write(kulout,*) ""
     write(kulout,*) " *** THERMODYNAMIC CONSTANTS (OTHER CHARACTERISTICS OF WATER) ***"
     write(kulout,"(A36, D22.15, A)") "                      MPC_T_ICE_R8= ", MPC_T_ICE_R8   , " K - ice temperature in the atmosphere"
     write(kulout,"(A36, D22.15, A)") "               MPC_TRIPLE_POINT_R8= ", MPC_TRIPLE_POINT_R8   , " K - triple point of water"
     write(kulout,*) ""
     write(kulout,*) " *** USED TO CALCULATE L/CP IN FUNC HTVOCP ***"
     write(kulout,*) " Consider removing these 7 variables that are 'USED TO CALCULATE L/CP IN FUNC HTVOCP'"
     write(kulout,"(A36, D22.15, A)") "                         MPC_AI_R8= ", MPC_AI_R8   , "  "
     write(kulout,"(A36, D22.15, A)") "                         MPC_AW_R8= ", MPC_AW_R8   , "  "
     write(kulout,"(A36, D22.15, A)") "                         MPC_BI_R8= ", MPC_BI_R8   , "  "
     write(kulout,"(A36, D22.15, A)") "                         MPC_BW_R8= ", MPC_BW_R8   , "  "
     write(kulout,"(A36, D22.15, A)") "                        MPC_SLP_R8= ", MPC_SLP_R8   , "  "
     write(kulout,"(A36, D22.15, A)") "                        MPC_T1S_R8= ", MPC_T1S_R8   , " K"
     write(kulout,"(A36, D22.15, A)") "                        MPC_T2S_R8= ", MPC_T2S_R8   , " K"
     write(kulout,*) ""
     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 >>>>>>"
     write(kulout,"(A36, D22.15, A)") "                 MPC_MINIMUM_HU_R8= ", MPC_MINIMUM_HU_R8   , "  "
     write(kulout,"(A36, D22.15, A)") "                 MPC_MAXIMUM_ES_R8= ", MPC_MAXIMUM_ES_R8   , "  "
     write(kulout,*) "\n\n"
  end subroutine mpc_printConstants
end MODULE MathPhysConstants_mod