MODULE physics !----------------------------------------------------------------------- ! NAME ! physics ! ! DESCRIPTION ! Fundamental constants read from file and used across PEM modules. ! ! AUTHORS & DATE ! JB Clement, 12/2025 ! ! NOTES ! !----------------------------------------------------------------------- ! DEPENDENCIES ! ------------ use numerics, only: dp ! DECLARATION ! ----------- implicit none ! PARAMETERS ! ---------- real(dp), parameter :: sigmaB = 5.678e-8_dp ! Stefan-Boltzmann constant [W/m^2/K^4] real(dp), parameter :: m_co2 = 44.01e-3_dp ! CO2 molecular mass [kg/mol], Franz et al. 2017 real(dp), parameter :: m_noco2 = 33.37e-3_dp ! Non-condensible molecular mass [kg/mol], Franz et al. 2017 real(dp), parameter :: m_h2o = 18.01528e-3_dp ! H2O molecular mass [kg/mol], Franz et al. 2017 real(dp), parameter :: A = 1._dp/m_co2 - 1._dp/m_noco2 ! MMR/VMR conversion factor real(dp), parameter :: B = 1._dp/m_noco2 ! MMR/VMR conversion factor ! H2O coefficients for Clausius-Clapeyron law for psat (psat = exp(beta/Th2o + alpha)), following Murphy and Koop 2005 real(dp), parameter :: alpha_clap_h2o = 28.9074_dp real(dp), parameter :: beta_clap_h2o = -6143.7_dp ! [K] ! CO2 coefficients for Clausius-Clapeyron law for CO2 condensation temperature (Tco2 = beta/(alpha-log(vmr)),following James et al. 1992 real(dp), parameter :: alpha_clap_co2 = 23.3494_dp real(dp), parameter :: beta_clap_co2 = 3182.48_dp ! [K] real(dp), parameter :: Lco2 = 5.71e5_dp ! CO2 latent heat [J/kg], Pilorget and Forget 2016 real(dp), protected :: g ! Gravity [m/s2] real(dp), protected :: r ! Reduced gas constant,r = 8.314511/[mugaz/1000.0] real(dp), protected :: mugaz ! Molar mass of the atmosphere [g/mol] real(dp), protected :: rad ! Radius of the planet [m] real(dp), protected :: cpp ! Cp of the atmosphere real(dp), protected :: rcp ! r/cpp (= kappa in the dynamics) contains !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !======================================================================= SUBROUTINE init_physics(rad_in,g_in,mugaz_in,rcp_in) !----------------------------------------------------------------------- ! NAME ! init_physics ! ! DESCRIPTION ! Initialize physical constants. ! ! AUTHORS & DATE ! JB Clement, 01/2026 ! ! NOTES ! !----------------------------------------------------------------------- ! DECLARATION ! ----------- implicit none ! ARGUMENTS ! --------- real(dp), intent(in) :: rad_in, g_in, mugaz_in, rcp_in ! CODE ! ---- rad = rad_in g = g_in mugaz = mugaz_in rcp = rcp_in r = 8.314511_dp*1000._dp/mugaz cpp = r/rcp END SUBROUTINE init_physics !======================================================================= END MODULE physics