diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py index bdc48cd8c..e712131e3 100755 --- a/ccpp/config/ccpp_prebuild_config.py +++ b/ccpp/config/ccpp_prebuild_config.py @@ -25,10 +25,10 @@ 'ccpp/physics/physics/SFC_Models/Land/Noahmp/lnd_iau_mod.F90', 'ccpp/physics/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.F90', 'scm/src/CCPP_typedefs.F90', + 'scm/src/scm_physical_constants.F90', 'scm/src/GFS_typedefs.F90', 'scm/src/scm_kinds.F90', 'scm/src/scm_type_defs.F90', - 'scm/src/scm_physical_constants.F90', 'scm/src/scm_utils.F90', #no definitions, but scm_type_defs.F90 uses a module from this file ] diff --git a/ccpp/physics b/ccpp/physics index 35e9980d8..0568313f7 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 35e9980d8a6a6d8fe970cb286c4174b2b9bc4b6f +Subproject commit 0568313f7e67e6f7185b26b60b781085cdee2c9e diff --git a/scm/src/GFS_typedefs.F90 b/scm/src/GFS_typedefs.F90 index 5f8af233d..a29fefa9b 100644 --- a/scm/src/GFS_typedefs.F90 +++ b/scm/src/GFS_typedefs.F90 @@ -3411,7 +3411,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, & cny, gnx, gny, ak, bk, hydrostatic) !--- modules - use physcons, only: con_rerth, con_pi, con_p0, rhowater + use scm_physical_constants, only: con_rerth, con_pi, con_p0, rhowater use mersenne_twister, only: random_setseed, random_number use GFS_ccpp_suite_sim_pre, only: load_ccpp_suite_sim ! diff --git a/scm/src/GFS_typedefs.meta b/scm/src/GFS_typedefs.meta index a451fafc2..b91a0b0ea 100644 --- a/scm/src/GFS_typedefs.meta +++ b/scm/src/GFS_typedefs.meta @@ -10619,7 +10619,7 @@ name = GFS_typedefs type = module dependencies_path = ../../ccpp/physics/physics - dependencies = hooks/machine.F,hooks/physcons.F90 + dependencies = hooks/machine.F dependencies = Radiation/RRTMG/radlw_param.f,Radiation/RRTMG/radsw_param.f dependencies = MP/TEMPO/TEMPO/module_mp_tempo_params.F90 dependencies = photochem/module_ozphys.F90,photochem/module_h2ophys.F90 diff --git a/scm/src/scm_physical_constants.F90 b/scm/src/scm_physical_constants.F90 index 099836c3f..77bb3670c 100644 --- a/scm/src/scm_physical_constants.F90 +++ b/scm/src/scm_physical_constants.F90 @@ -11,7 +11,7 @@ module scm_physical_constants !! integer ,parameter:: con_zero =0 real(kind=dp),parameter:: con_pi =3.1415926535897931 - + real(kind=dp),parameter:: con_rerth =6.3712e+6 real(kind=dp),parameter:: con_g =9.80665e+0 real(kind=dp),parameter:: con_omega =7.2921e-5 @@ -42,8 +42,9 @@ module scm_physical_constants real(kind=dp),parameter:: con_avgd =6.0221415e23_dp real(kind=dp),parameter:: con_amd =28.9644_dp !< molecular wght of dry air (\f$g/mol\f$) real(kind=dp),parameter:: con_amw =18.0154_dp + real(kind=dp),parameter:: con_amo3 =47.9982_dp real(kind=dp),parameter:: karman =0.4_dp - + real(kind=dp),parameter:: cimin =0.15 !> minimum rain amount real(kind=dp),parameter:: rainmin =1.e-13_dp @@ -52,7 +53,7 @@ module scm_physical_constants real(kind=dp),parameter:: con_rhw0 =1022.0 real(kind=dp),parameter:: con_sbc =5.670400e-8 real(kind=dp),parameter:: con_tice =2.7120e+2 - + real(kind=dp),parameter:: rhowater =1000._dp real(kind=dp),parameter:: rholakeice = 0.917e3_dp !< density of ice on lake (kg/m^3) @@ -63,10 +64,28 @@ module scm_physical_constants real(kind=dp),parameter:: con_solr_2002 = 1.3660e+3_dp !< solar constant (\f$W/m^{2}\f$)-Liu(2002) real(kind=dp),parameter:: con_solr_2008 = 1.3608e+3_dp !< solar constant (\f$W/m^{2}\f$)-nasa-sorce Tim(2008) real(kind=dp),parameter:: con_thgni = -38.15_dp !< temperature the H.G.Nuc. ice starts - + ! for gfdlmp v3 + real(kind=dp), parameter:: con_rhoair_IFS = 1.0 ! reference air density (kg/m^3), ref: IFS + real(kind=dp), parameter:: con_rhosnow = 100.0 ! density of snow (kg/m^3) + real(kind=dp), parameter :: con_visd = 1.717e-5 ! dynamics viscosity of air at 0 deg C and 1000 hPa (Mason, 1971) (kg/m/s) + real(kind=dp), parameter :: con_visk = 1.35e-5 ! kinematic viscosity of air at 0 deg C and 1000 hPa (Mason, 1971) (m^2/s) + real(kind=dp), parameter :: con_vdifu = 2.25e-5 ! diffusivity of water vapor in air at 0 deg C and 1000 hPa (Mason, 1971) (m^2/s) + real(kind=dp), parameter :: con_tcond = 2.40e-2 ! thermal conductivity of air at 0 deg C and 1000 hPa (Mason, 1971) (J/m/s/K) + real(kind=dp), parameter :: con_cdg = 3.15121 ! drag coefficient of graupel (Locatelli and Hobbs, 1974) + real(kind=dp), parameter :: con_cdh = 0.5 ! drag coefficient of hail (Heymsfield and Wright, 2014) + real(kind=dp), parameter :: con_rhocw = 1.0e3 ! density of cloud water (kg/m^3) + real(kind=dp), parameter :: con_rhoci = 9.17e2 ! density of cloud ice (kg/m^3) + real(kind=dp), parameter :: con_rhocr = 1.0e3 ! density of rain (Lin et al. 1983) (kg/m^3) + real(kind=dp), parameter :: con_rhocg = 4.0e2 ! density of graupel (Rutledge and Hobbs 1984) (kg/m^3) + real(kind=dp), parameter :: con_rhoch = 9.17e2 ! density of hail (Lin et al. 1983) (kg/m^3) + real(kind=dp), parameter :: con_qcmin = 1.0e-15 ! min value for cloud condensates (kg/kg) + real(kind=dp), parameter :: con_qfmin = 1.0e-8 ! min value for sedimentation (kg/kg) real(kind=dp), parameter :: con_one = 1_dp real(kind=dp), parameter :: con_p001 = 0.001_dp real(kind=dp), parameter :: con_secinday = 86400._dp + ! --- constants from physcons.F90 --- + real(kind=dp),parameter:: decorr_con = 2.50_dp !< Decorrelation length constant (km) for iovr = 4 or 5 and idcor = 0 + real(kind=dp),parameter:: qamin = 1.e-16_dp !< Minimum aerosol concentration end module scm_physical_constants diff --git a/scm/src/scm_physical_constants.meta b/scm/src/scm_physical_constants.meta index 94c61becf..57827b831 100644 --- a/scm/src/scm_physical_constants.meta +++ b/scm/src/scm_physical_constants.meta @@ -53,7 +53,7 @@ units = kg kg-1 dimensions = () type = real - kind = kind_phys + kind = kind_phys [con_epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -340,4 +340,145 @@ units = s dimensions = () type = real - kind = kind_phys \ No newline at end of file + kind = kind_phys +[con_amo3] + standard_name = molecular_weight_of_ozone + long_name = molecular weight of ozone + units = g mol-1 + dimensions = () + type = real + kind = kind_phys +[decorr_con] + standard_name = decorrelation_length_constant + long_name = Decorrelation length constant (km) for iovr = 4 or 5 and idcor = 0 + units = km + dimensions = () + type = real + kind = kind_phys +[qamin] + standard_name = minimum_aerosol_concentration + long_name = Minimum aerosol mass mixing ratio + units = kg kg-1 + dimensions = () + type = real + kind = kind_phys +[con_rhoair_IFS] + standard_name = density_of_air_IFS + long_name = density of air IFS + units = kg m-3 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_rhosnow] + standard_name = density_of_snow + long_name = density of snow + units = kg m-3 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_visd] + standard_name = dynamic_viscosity_of_air + long_name = dynamic viscosity of air at 0 deg C and 1000 hPa (Mason, 1971) + units = kg m-1 s-1 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_visk] + standard_name = kinematic_viscosity_of_air + long_name = kinematic viscosity of air at 0 deg C and 1000 hPa (Mason, 1971) + units = m2 s-1 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_vdifu] + standard_name = diffusivity_of_water_vapor_in_air + long_name = diffusivity of water vapor in air at 0 deg C and 1000 hPa (Mason, 1971) + units = m2 s-1 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_tcond] + standard_name = thermal_conductivity_of_air + long_name = thermal conductivity of air at 0 deg C and 1000 hPa (Mason, 1971) + units = W m-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_cdg] + standard_name = drag_coefficient_of_graupel + long_name = drag coefficient of graupel (Locatelli and Hobbs, 1974) + units = 1 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_cdh] + standard_name = drag_coefficient_of_hail + long_name = drag coefficient of hail (Heymsfield and Wright, 2014) + units = 1 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_rhocw] + standard_name = density_of_cloud_water + long_name = density of cloud water + units = kg m-3 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_rhoci] + standard_name = density_of_cloud_ice + long_name = density of cloud ice + units = kg m-3 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_rhocr] + standard_name = density_of_rain + long_name = density of rain (Lin et al., 1983) + units = kg m-3 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_rhocg] + standard_name = density_of_graupel + long_name = density of graupel (Rutledge and Hobbs, 1984) + units = kg m-3 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_rhoch] + standard_name = density_of_hail + long_name = density of hail (Lin et al., 1983) + units = kg m-3 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_qcmin] + standard_name = minimum_mass_mixing_ratio_of_cloud_condensate + long_name = minimum value for cloud condensates + units = kg kg-1 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_qfmin] + standard_name = minimum_mass_mixing_ratio_for_sedimentation + long_name = minimum value for sedimentation + units = kg kg-1 + dimensions = () + type = real + kind = kind_phys + intent = in diff --git a/scm/src/scm_setup.F90 b/scm/src/scm_setup.F90 index 5d3a228b9..abb9fc80c 100644 --- a/scm/src/scm_setup.F90 +++ b/scm/src/scm_setup.F90 @@ -294,7 +294,7 @@ subroutine GFS_suite_setup (Model, Statein, Stateout, Sfcprop, GFS_control_type, GFS_grid_type, & GFS_tbd_type, GFS_cldprop_type, & GFS_radtend_type, GFS_diag_type - use physcons, only: pi => con_pi + use scm_physical_constants, only: pi => con_pi !use cldwat2m_micro, only: ini_micro @@ -406,7 +406,7 @@ end subroutine GFS_suite_setup !------------------ subroutine GFS_grid_populate (Grid, xlon, xlat, area) use machine, only: kind_phys - use physcons, only: pi => con_pi + use scm_physical_constants, only: pi => con_pi use GFS_typedefs, only: GFS_grid_type implicit none