diff --git a/.github/workflows/JuliaFormatter.yml b/.github/workflows/JuliaFormatter.yml index a2eb5eb9..f38a9fe3 100644 --- a/.github/workflows/JuliaFormatter.yml +++ b/.github/workflows/JuliaFormatter.yml @@ -31,7 +31,7 @@ jobs: - uses: julia-actions/setup-julia@latest if: steps.filter.outputs.julia_file_change == 'true' with: - version: 1.8.1 + version: '1.10' - name: Apply JuliaFormatter if: steps.filter.outputs.julia_file_change == 'true' diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 90ff5c25..e09d5507 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/checkout@v2 - uses: julia-actions/setup-julia@latest with: - version: 1.8.1 + version: '1.10' - name: Install dependencies run: julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()' - name: Build and deploy diff --git a/Project.toml b/Project.toml index 9db920e8..524d3c91 100644 --- a/Project.toml +++ b/Project.toml @@ -1,14 +1,16 @@ name = "Kinematic1D" uuid = "a8a3bb05-6cc5-4342-abf6-5cc636bd2b35" authors = ["Climate Modeling Alliance"] -version = "0.6.1" +version = "0.7.0" [deps] ClimaCore = "d414da3d-4745-48bb-8d80-42e94e092884" ClimaCorePlots = "cf7c7e5a-b407-4c48-9047-11a94a308626" +ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c" CloudMicrophysics = "6a9e3e04-43cd-43ba-94b9-e8782df3c71b" DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" +DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" EnsembleKalmanProcesses = "aa8a2aa5-91d8-4396-bcef-d4f2ec43552d" Interpolations = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" @@ -26,9 +28,10 @@ Thermodynamics = "b60c26fb-14c3-4610-9d3e-2d17fe7ff00c" UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" [compat] -ClimaCore = "0.11" +ClimaCore = "0.13" ClimaCorePlots = "0.2" -CloudMicrophysics = "0.15" +ClimaParams = "0.10.5" +CloudMicrophysics = "0.18.0" DiffEqBase = "6.75" Distributions = "0.25" EnsembleKalmanProcesses = "1.1" @@ -36,7 +39,7 @@ Interpolations = "0.15" JLD2 = "0.4" LinearAlgebra = "1" Logging = "1" -NCDatasets = "0.12" +NCDatasets = "0.14" Optim = "1.7" OrdinaryDiffEq = "6.29" Plots = "1.29" @@ -44,7 +47,7 @@ ProgressLogging = "0.1" Random = "1" SpecialFunctions = "2.3" TerminalLoggers = "0.1" -Thermodynamics = "0.11" +Thermodynamics = "0.12.6" UnPack = "1.0" julia = "1.8" diff --git a/docs/Project.toml b/docs/Project.toml index 7d22a43f..dcc05b96 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -1,7 +1,6 @@ [deps] Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" DocumenterCitations = "daee34ce-89f3-4625-b898-19384cb65244" -Kinematic1D = "a8a3bb05-6cc5-4342-abf6-5cc636bd2b35" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" [compat] diff --git a/src/CalibrateCMP/DistributionUtils.jl b/src/CalibrateCMP/DistributionUtils.jl index e5405eeb..c35a5614 100644 --- a/src/CalibrateCMP/DistributionUtils.jl +++ b/src/CalibrateCMP/DistributionUtils.jl @@ -4,15 +4,18 @@ function initial_parameter_ensemble(priors, N_ensemble; rng_seed = 10) return initial_ensemble end -function construct_priors(params::Dict) +function construct_priors( + params::Dict{String, @NamedTuple{mean::FT, var::FT, lbound::FT, ubound::FT}}, +) where {FT <: Real} u_names = collect(keys(params)) u_values = collect(values(params)) - u_means = collect([v.mean for v in u_values]) - u_vars = collect([v.var for v in u_values]) - u_lbounds = collect([v.lbound for v in u_values]) - u_ubounds = collect([v.ubound for v in u_values]) + n_params = length(u_names) # All vars are approximated as Gaussian in unconstrained space - marginal_priors = constrained_gaussian.(u_names, u_means, u_vars, u_lbounds, u_ubounds) + marginal_priors = Vector{ParameterDistribution}(undef, n_params) + for i in 1:n_params + marginal_priors[i] = + constrained_gaussian(u_names[i], u_values[i].mean, u_values[i].var, u_values[i].lbound, u_values[i].ubound) + end return combine_distributions(marginal_priors) end diff --git a/src/CalibrateCMP/IOUtils.jl b/src/CalibrateCMP/IOUtils.jl index 577d3683..17f2edb5 100644 --- a/src/CalibrateCMP/IOUtils.jl +++ b/src/CalibrateCMP/IOUtils.jl @@ -160,7 +160,7 @@ function read_pysdm_data(file) # iterate over all variables vars = Dict() for (varname, var) in ds - vars[varname] = var[:] + vars[varname] = reshape(var[:], size(var)) end close(ds) diff --git a/src/CalibrateCMP/KiDUtils.jl b/src/CalibrateCMP/KiDUtils.jl index 06a9cb9c..1c51c00e 100644 --- a/src/CalibrateCMP/KiDUtils.jl +++ b/src/CalibrateCMP/KiDUtils.jl @@ -72,9 +72,8 @@ function run_KiD(u::Array{FT, 1}, u_names::Array{String, 1}, model_settings::Dic κ = model_settings["κ"], ) - moisture = CO.get_moisture_type(FT, model_settings["moisture_choice"], model_settings["toml_dict"]) + moisture = CO.get_moisture_type(model_settings["moisture_choice"], model_settings["toml_dict"]) precip = CO.get_precipitation_type( - FT, model_settings["precipitation_choice"], model_settings["toml_dict"]; rain_formation_choice = model_settings["rain_formation_choice"], @@ -152,18 +151,16 @@ function run_KiD_col_sed(u::Array{FT, 1}, u_names::Array{String, 1}, model_setti update_parameters!(model_settings, u, u_names) apply_param_dependency!(model_settings) - model_settings["toml_dict"]["νc_SB2006"]["value"] = model_settings["k"] + model_settings["toml_dict"]["SB2006_cloud_gamma_distribution_parameter"]["value"] = model_settings["k"] common_params = create_common_parameters( - FT, precip_sources = model_settings["precip_sources"], precip_sinks = model_settings["precip_sinks"], Nd = model_settings["Nd"], ) kid_params = create_kid_parameters(FT) - moisture = CO.get_moisture_type(FT, "NonEquilibriumMoisture", model_settings["toml_dict"]) + moisture = CO.get_moisture_type("NonEquilibriumMoisture", model_settings["toml_dict"]) precip = CO.get_precipitation_type( - FT, model_settings["precipitation_choice"], model_settings["toml_dict"]; rain_formation_choice = model_settings["rain_formation_choice"], diff --git a/src/Common/helper_functions.jl b/src/Common/helper_functions.jl index 4e1237ae..a0d94e44 100644 --- a/src/Common/helper_functions.jl +++ b/src/Common/helper_functions.jl @@ -1,11 +1,11 @@ """ Returns moisture type """ -function get_moisture_type(FT, moisture_choice::String, toml_dict) +function get_moisture_type(moisture_choice::String, toml_dict) if moisture_choice == "EquilibriumMoisture" moisture = EquilibriumMoisture_ρdTq() elseif moisture_choice == "NonEquilibriumMoisture" - moisture = NonEquilibriumMoisture_ρdTq(CMP.CloudLiquid(FT, toml_dict), CMP.CloudIce(FT, toml_dict)) + moisture = NonEquilibriumMoisture_ρdTq(CMP.CloudLiquid(toml_dict), CMP.CloudIce(toml_dict)) else error("Invalid moisture choice: $moisture_choice") end @@ -16,7 +16,6 @@ end Returns precipitation type """ function get_precipitation_type( - FT, precipitation_choice::String, toml_dict; rain_formation_choice::Union{Nothing, String} = nothing, @@ -25,50 +24,50 @@ function get_precipitation_type( if precipitation_choice == "NoPrecipitation" precip = NoPrecipitation() elseif precipitation_choice == "Precipitation0M" - precip = Precipitation0M(CMP.Parameters0M(FT, toml_dict)) + precip = Precipitation0M(CMP.Parameters0M(toml_dict)) elseif precipitation_choice == "Precipitation1M" if sedimentation_choice == "CliMA_1M" || sedimentation_choice === nothing - st = CMP.Blk1MVelType(FT, toml_dict) + st = CMP.Blk1MVelType(toml_dict) elseif sedimentation_choice == "Chen2022" - st = CMP.Chen2022VelType(FT, toml_dict) + st = CMP.Chen2022VelType(toml_dict) else error("Invalid sedimentation choice: $sedimentation_choice") end if rain_formation_choice == "CliMA_1M" || rain_formation_choice === nothing - rain_params = CMP.Rain(FT, toml_dict) + rain_params = CMP.Rain(toml_dict) rf = rain_params.acnv1M elseif rain_formation_choice == "KK2000" - rf = CMP.KK2000(FT, toml_dict) + rf = CMP.KK2000(toml_dict) elseif rain_formation_choice == "B1994" - rf = CMP.B1994(FT, toml_dict) + rf = CMP.B1994(toml_dict) elseif rain_formation_choice == "TC1980" - rf = CMP.TC1980(FT, toml_dict) + rf = CMP.TC1980(toml_dict) elseif rain_formation_choice == "LD2004" - rf = CMP.LD2004(FT, toml_dict) + rf = CMP.LD2004(toml_dict) elseif rain_formation_choice == "VarTimeScaleAcnv" - rf = CMP.VarTimescaleAcnv(FT, toml_dict) + rf = CMP.VarTimescaleAcnv(toml_dict) else error("Invalid rain formation choice: $rain_formation_choice") end precip = Precipitation1M( - CMP.CloudLiquid(FT, toml_dict), - CMP.CloudIce(FT, toml_dict), - CMP.Rain(FT, toml_dict), - CMP.Snow(FT, toml_dict), - CMP.CollisionEff(FT, toml_dict), + CMP.CloudLiquid(toml_dict), + CMP.CloudIce(toml_dict), + CMP.Rain(toml_dict), + CMP.Snow(toml_dict), + CMP.CollisionEff(toml_dict), rf, st, ) elseif precipitation_choice == "Precipitation2M" if sedimentation_choice == "SB2006" || sedimentation_choice === nothing - st = CMP.SB2006VelType(FT, toml_dict) + st = CMP.SB2006VelType(toml_dict) elseif sedimentation_choice == "Chen2022" - st = CMP.Chen2022VelTypeRain(FT, toml_dict) + st = CMP.Chen2022VelTypeRain(toml_dict) else error("Invalid sedimentation choice: $sedimentation_choice") end if rain_formation_choice == "SB2006" || rain_formation_choice === nothing - precip = Precipitation2M(CMP.SB2006(FT, toml_dict), st) + precip = Precipitation2M(CMP.SB2006(toml_dict), st) else error("Invalid rain formation choice: $rain_formation_choice") end diff --git a/src/Common/parameters.jl b/src/Common/parameters.jl index 9b18f328..d629b4d2 100644 --- a/src/Common/parameters.jl +++ b/src/Common/parameters.jl @@ -1,21 +1,39 @@ -""" - Create common model parameters. - - (Overwriting the default values happens in the driver file. - Here we are just creating the CommonParameters struct) -""" module Parameters +using DocStringExtensions +import ClimaParams as CP + abstract type AbstractCommonParameters end const ACP = AbstractCommonParameters -# Define KiD parameters +""" + CommonParameters{FT} + + Common parameters for the kinematic driver simulations + + #Fields + $(DocStringExtensions.FIELDS) +""" Base.@kwdef struct CommonParameters{FT} <: ACP - precip_sources::Int - precip_sinks::Int + "Switch to include precipitation formation terms" + precip_sources::Bool + "Switch to include precipitation sink terms" + precip_sinks::Bool + "Prescribed number concentration of cloud droplets (needed for some schemes) [1/m3]" prescribed_Nd::FT end +function CommonParameters(td::CP.AbstractTOMLDict) + name_map = (; + :precipitation_sources_flag => :precip_sources, + :precipitation_sinks_flag => :precip_sinks, + :prescribed_Nd => :prescribed_Nd, + ) + parameters = CP.get_parameter_values(td, name_map, "Common") + FT = CP.float_type(td) + return CommonParameters{FT}(; parameters...) +end + precip_sources(ps::ACP) = ps.precip_sources precip_sinks(ps::ACP) = ps.precip_sinks prescribed_Nd(ps::ACP) = ps.prescribed_Nd diff --git a/src/Common/tendency.jl b/src/Common/tendency.jl index 7a879072..9016012c 100644 --- a/src/Common/tendency.jl +++ b/src/Common/tendency.jl @@ -181,11 +181,11 @@ end # autoconversion liquid to rain and ice to snow # TODO - can we do it in a more elegant way? if rf isa CMP.Acnv1M{FT} - tmp = CM1.conv_q_liq_to_q_rai(rf, q.liq, smooth_transition = true) + tmp = CM1.conv_q_liq_to_q_rai(rf, q.liq, true) elseif typeof(rf) in [CMP.LD2004{FT}, CMP.VarTimescaleAcnv{FT}] - tmp = CM2.conv_q_liq_to_q_rai(rf, q.liq, ρ; N_d = common_params.prescribed_Nd) + tmp = CM2.conv_q_liq_to_q_rai(rf, q.liq, ρ, common_params.prescribed_Nd) elseif typeof(rf.acnv) in [CMP.AcnvKK2000{FT}, CMP.AcnvB1994{FT}, CMP.AcnvTC1980{FT}] - tmp = CM2.conv_q_liq_to_q_rai(rf, q.liq, ρ; N_d = common_params.prescribed_Nd) + tmp = CM2.conv_q_liq_to_q_rai(rf, q.liq, ρ, common_params.prescribed_Nd) else error("Unrecognized rain formation scheme") end diff --git a/src/K1DModel/ode_utils.jl b/src/K1DModel/ode_utils.jl index daa5a1c5..91d7c598 100644 --- a/src/K1DModel/ode_utils.jl +++ b/src/K1DModel/ode_utils.jl @@ -10,7 +10,7 @@ function make_function_space(FT, z_min, z_max, n_elem) domain = CC.Domains.IntervalDomain( CC.Geometry.ZPoint{FT}(z_min), CC.Geometry.ZPoint{FT}(z_max), - boundary_tags = (:bottom, :top), + boundary_names = (:bottom, :top), ) mesh = CC.Meshes.IntervalMesh(domain, nelems = n_elem) @@ -22,8 +22,8 @@ end """ Interface to ODE solver. Returns the function needed to compute the - right hand side of the solved ODE for advection, condensation, - collision, sedimentation and evaporation processes. The rhs is + right hand side of the solved ODE for advection, condensation, + collision, sedimentation and evaporation processes. The rhs is assembled via dispatch based on the moisture and precipitation types. """ function make_rhs_function(ms::CO.AbstractMoistureStyle, ps::CO.AbstractPrecipitationStyle) @@ -50,7 +50,7 @@ end """ Interface to ODE solver. Returns the function needed to compute the - right hand side of the solved ODE for collision and sedimentation + right hand side of the solved ODE for collision and sedimentation processes. The rhs is assembled via dispatch based on precipitation type. """ function make_rhs_function_col_sed(ms::CO.AbstractMoistureStyle, ps::CO.AbstractPrecipitationStyle) diff --git a/src/K1DModel/parameters.jl b/src/K1DModel/parameters.jl index c84b5dd5..d2a3b914 100644 --- a/src/K1DModel/parameters.jl +++ b/src/K1DModel/parameters.jl @@ -1,25 +1,51 @@ -""" - Create Kinematic1D model parameters. - - (Overwriting the default values happens in the driver file. - Here we are just creating the Kinematic1DParameters struct) -""" module Parameters +using DocStringExtensions +import ClimaParams as CP + abstract type AbstractKinematicParameters end const AKP = AbstractKinematicParameters -# Define KiD parameters +""" + Kinematic1DParameters{FT} + + Free parameters for the kinematic 1-dimensional simulation + + #Fields + $(DocStringExtensions.FIELDS) +""" Base.@kwdef struct Kinematic1DParameters{FT} <: AKP + "Maximum updraft momentum flux m/s kg/m3" w1::FT + "Time when the updraft is switched off [s]" t1::FT + "Surface pressure [Pa]" p0::FT + "Switch to include flux correction for moisture transport" qtot_flux_correction::Int + "Assumed aerosol dry radius [m]" r_dry::FT + "Assumed aerosol standard deviation [-]" std_dry::FT + "Assumed aerosol hygroscopicity" κ::FT end +function Kinematic1DParameters(td::CP.AbstractTOMLDict) + name_map = (; + :prescribed_flow_w1 => :w1, + :prescribed_flow_t1 => :t1, + :surface_pressure => :p0, + :qtot_flux_correction_flag => :qtot_flux_correction, + :r_dry => :r_dry, + :std_dry => :std_dry, + :kappa => :κ, + ) + parameters = CP.get_parameter_values(td, name_map, "Kinematic1D") + FT = CP.float_type(td) + return Kinematic1DParameters{FT}(; parameters...) +end + w1(ps::AKP) = ps.w1 t1(ps::AKP) = ps.t1 p0(ps::AKP) = ps.p0 diff --git a/test/Project.toml b/test/Project.toml index 0738addc..95d98e04 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,15 +1,15 @@ [deps] ArgParse = "c7e460c6-2fb9-53a9-8c5b-16f535851c63" -CLIMAParameters = "6eacf6c3-8458-43b9-ae03-caf5306d3d53" ClimaCore = "d414da3d-4745-48bb-8d80-42e94e092884" ClimaCorePlots = "cf7c7e5a-b407-4c48-9047-11a94a308626" +ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c" CloudMicrophysics = "6a9e3e04-43cd-43ba-94b9-e8782df3c71b" Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" +DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" EnsembleKalmanProcesses = "aa8a2aa5-91d8-4396-bcef-d4f2ec43552d" FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" Interpolations = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" -Kinematic1D = "a8a3bb05-6cc5-4342-abf6-5cc636bd2b35" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Logging = "56ddb016-857b-54e1-b83d-db4d58db5568" NCDatasets = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" @@ -25,14 +25,14 @@ Thermodynamics = "b60c26fb-14c3-4610-9d3e-2d17fe7ff00c" UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" [compat] -CLIMAParameters = "0.7" -ClimaCore = "0.11" +ClimaCore = "0.13" ClimaCorePlots = "0.2" -CloudMicrophysics = "0.15" +ClimaParams = "0.10.5" +CloudMicrophysics = "0.18.0" DiffEqBase = "6.75" -NCDatasets = "0.12" +NCDatasets = "0.14" Plots = "1.29" ProgressLogging = "0.1" TerminalLoggers = "0.1" -Thermodynamics = "0.11" +Thermodynamics = "0.12.6" UnPack = "1.0" diff --git a/test/create_parameters.jl b/test/create_parameters.jl index efac1c57..9f549572 100644 --- a/test/create_parameters.jl +++ b/test/create_parameters.jl @@ -1,6 +1,6 @@ import Kinematic1D.Common as CO import Kinematic1D.K1DModel as KID -import CLIMAParameters as CP +import ClimaParams as CP import CloudMicrophysics as CM import Thermodynamics as TD @@ -23,96 +23,71 @@ function override_toml_dict( override_file = joinpath(out_dir, "override_dict.toml") open(override_file, "w") do io println(io, "[mean_sea_level_pressure]") - println(io, "alias = \"MSLP\"") println(io, "value = 100000.0") println(io, "type = \"float\"") println(io, "[gravitational_acceleration]") - println(io, "alias = \"grav\"") println(io, "value = 9.80665") println(io, "type = \"float\"") println(io, "[gas_constant]") - println(io, "alias = \"gas_constant\"") println(io, "value = 8.314462618") println(io, "type = \"float\"") println(io, "[adiabatic_exponent_dry_air]") - println(io, "alias = \"kappa_d\"") println(io, "value = 0.2855747338575384") println(io, "type = \"float\"") println(io, "[isobaric_specific_heat_vapor]") - println(io, "alias = \"cp_v\"") println(io, "value = 1850.0") println(io, "type = \"float\"") println(io, "[molar_mass_dry_air]") - println(io, "alias = \"molmass_dryair\"") println(io, "value = 0.02896998") println(io, "type = \"float\"") println(io, "[molar_mass_water]") - println(io, "alias = \"molmass_water\"") println(io, "value = 0.018015") println(io, "type = \"float\"") println(io, "[cloud_liquid_water_specific_humidity_autoconversion_threshold]") - println(io, "alias = \"q_liq_threshold\"") println(io, "value = 0.0001") println(io, "type = \"float\"") println(io, "[prescribed_flow_w1]") - println(io, "alias = \"w1\"") println(io, "value = " * string(w1)) println(io, "type = \"float\"") println(io, "[prescribed_flow_t1]") - println(io, "alias = \"t1\"") println(io, "value = " * string(t1)) println(io, "type = \"float\"") println(io, "[surface_pressure]") - println(io, "alias = \"p0\"") println(io, "value = " * string(p0)) println(io, "type = \"float\"") println(io, "[precipitation_sources_flag]") - println(io, "alias = \"precip_sources\"") println(io, "value = " * string(precip_sources)) - println(io, "type = \"integer\"") + println(io, "type = \"bool\"") println(io, "[precipitation_sinks_flag]") - println(io, "alias = \"precip_sinks\"") println(io, "value = " * string(precip_sinks)) - println(io, "type = \"integer\"") + println(io, "type = \"bool\"") println(io, "[qtot_flux_correction_flag]") - println(io, "alias = \"qtot_flux_correction\"") println(io, "value = " * string(qtot_flux_correction)) - println(io, "type = \"integer\"") + println(io, "type = \"bool\"") println(io, "[prescribed_Nd]") - println(io, "alias = \"prescribed_Nd\"") println(io, "value = " * string(prescribed_Nd)) println(io, "type = \"float\"") println(io, "[r_dry]") - println(io, "alias = \"r_dry\"") println(io, "value = " * string(r_dry)) println(io, "type = \"float\"") println(io, "[std_dry]") - println(io, "alias = \"std_dry\"") println(io, "value = " * string(std_dry)) println(io, "type = \"float\"") println(io, "[kappa]") - println(io, "alias = \"κ\"") println(io, "value = " * string(κ)) println(io, "type = \"float\"") end - toml_dict = CP.create_toml_dict(FT; override_file, dict_type="alias") + toml_dict = CP.create_toml_dict(FT; override_file) isfile(override_file) && rm(override_file; force=true) return toml_dict end function create_thermodynamics_parameters(toml_dict) - FTD = CP.float_type(toml_dict) - aliases = string.(fieldnames(TD.Parameters.ThermodynamicsParameters)) - param_pairs = CP.get_parameter_values!(toml_dict, aliases, "Thermodynamics") - thermo_params = TD.Parameters.ThermodynamicsParameters{FTD}(; param_pairs...) - return thermo_params + return TD.Parameters.ThermodynamicsParameters(toml_dict) end function create_common_parameters(toml_dict) - FTD = CP.float_type(toml_dict) - aliases = ["precip_sources", "precip_sinks", "prescribed_Nd"] - pairs = CP.get_parameter_values!(toml_dict, aliases, "Common") - common_params = CO.Parameters.CommonParameters{FTD}(; pairs...) + common_params = CO.Parameters.CommonParameters(toml_dict) if !isbits(common_params) print(common_params) @warn "The parameter set SHOULD be isbits in order to be stack-allocated." @@ -122,10 +97,7 @@ end Base.broadcastable(x::CO.Parameters.CommonParameters) = Ref(x) function create_kid_parameters(toml_dict) - FTD = CP.float_type(toml_dict) - aliases = ["w1", "t1", "p0", "qtot_flux_correction", "r_dry", "std_dry", "κ"] - pairs = CP.get_parameter_values!(toml_dict, aliases, "Kinematic1D") - kid_params = KID.Parameters.Kinematic1DParameters{FTD}(; pairs...) + kid_params = KID.Parameters.Kinematic1DParameters(toml_dict) if !isbits(kid_params) print(kid_params) @warn "The parameter set SHOULD be isbits in order to be stack-allocated." diff --git a/test/experiments/Ki2D_driver/run_kinematic2d_simulations.jl b/test/experiments/Ki2D_driver/run_kinematic2d_simulations.jl index df480af1..7e2b9e19 100644 --- a/test/experiments/Ki2D_driver/run_kinematic2d_simulations.jl +++ b/test/experiments/Ki2D_driver/run_kinematic2d_simulations.jl @@ -1,6 +1,6 @@ import OrdinaryDiffEq as ODE import ClimaCore as CC -import CLIMAParameters as CP +import ClimaParams as CP import CloudMicrophysics.Parameters as CMP import Kinematic1D import Kinematic1D.K1DModel as K1D @@ -33,7 +33,7 @@ function run_K2D_simulation(::Type{FT}, opts) where {FT} mkpath(path) # Overwrite the defaults parameters based on options - default_toml_dict = CP.create_toml_dict(FT, dict_type = "alias") + default_toml_dict = CP.create_toml_dict(FT) toml_dict = override_toml_dict( path, default_toml_dict, @@ -53,12 +53,11 @@ function run_K2D_simulation(::Type{FT}, opts) where {FT} thermo_params = create_thermodynamics_parameters(toml_dict) common_params = create_common_parameters(toml_dict) kid_params = create_kid_parameters(toml_dict) - air_params = CMP.AirProperties(FT, toml_dict) - activation_params = CMP.AerosolActivationParameters(FT, toml_dict) + air_params = CMP.AirProperties(toml_dict) + activation_params = CMP.AerosolActivationParameters(toml_dict) - moisture = CO.get_moisture_type(FT, moisture_choice, toml_dict) + moisture = CO.get_moisture_type(moisture_choice, toml_dict) precip = CO.get_precipitation_type( - FT, precipitation_choice, toml_dict, rain_formation_choice = rain_formation_choice, diff --git a/test/experiments/KiD_col_sed_driver/run_KiD_col_sed_simulation.jl b/test/experiments/KiD_col_sed_driver/run_KiD_col_sed_simulation.jl index 8deb6145..fc6eacc1 100644 --- a/test/experiments/KiD_col_sed_driver/run_KiD_col_sed_simulation.jl +++ b/test/experiments/KiD_col_sed_driver/run_KiD_col_sed_simulation.jl @@ -1,6 +1,6 @@ import OrdinaryDiffEq as ODE import ClimaCore as CC -import CLIMAParameters as CP +import ClimaParams as CP import CloudMicrophysics.Parameters as CMP import Kinematic1D import Kinematic1D.Common as CO @@ -28,7 +28,7 @@ function run_KiD_col_sed_simulation(::Type{FT}, opts) where {FT} mkpath(path) # Overwrite the defaults parameters based on options - default_toml_dict = CP.create_toml_dict(FT, dict_type = "alias") + default_toml_dict = CP.create_toml_dict(FT) toml_dict = override_toml_dict( path, default_toml_dict, @@ -36,18 +36,17 @@ function run_KiD_col_sed_simulation(::Type{FT}, opts) where {FT} precip_sinks = 0, prescribed_Nd = FT(opts["prescribed_Nd"]), ) - toml_dict["νc_SB2006"]["value"] = opts["k"] + toml_dict["SB2006_cloud_gamma_distribution_parameter"]["value"] = opts["k"] # Create Thermodynamics.jl and Kinematic1D model parameters # (some of the CloudMicrophysics.jl parameters structs are created later based on model choices) common_params = create_common_parameters(toml_dict) kid_params = create_kid_parameters(toml_dict) thermo_params = create_thermodynamics_parameters(toml_dict) - air_params = CMP.AirProperties(FT, toml_dict) - activation_params = CMP.AerosolActivationParameters(FT, toml_dict) + air_params = CMP.AirProperties(toml_dict) + activation_params = CMP.AerosolActivationParameters(toml_dict) - moisture = CO.get_moisture_type(FT, "NonEquilibriumMoisture", toml_dict) + moisture = CO.get_moisture_type("NonEquilibriumMoisture", toml_dict) precip = CO.get_precipitation_type( - FT, precipitation_choice, toml_dict, rain_formation_choice = rain_formation_choice, diff --git a/test/experiments/KiD_driver/run_KiD_simulation.jl b/test/experiments/KiD_driver/run_KiD_simulation.jl index 656d937a..9dd77bff 100644 --- a/test/experiments/KiD_driver/run_KiD_simulation.jl +++ b/test/experiments/KiD_driver/run_KiD_simulation.jl @@ -1,6 +1,6 @@ import OrdinaryDiffEq as ODE import ClimaCore as CC -import CLIMAParameters as CP +import ClimaParams as CP import CloudMicrophysics.Parameters as CMP import Kinematic1D import Kinematic1D.Common as CO @@ -33,7 +33,7 @@ function run_KiD_simulation(::Type{FT}, opts) where {FT} mkpath(path) # Overwrite the defaults parameters based on options - default_toml_dict = CP.create_toml_dict(FT, dict_type = "alias") + default_toml_dict = CP.create_toml_dict(FT) toml_dict = override_toml_dict( path, default_toml_dict, @@ -53,12 +53,11 @@ function run_KiD_simulation(::Type{FT}, opts) where {FT} common_params = create_common_parameters(toml_dict) kid_params = create_kid_parameters(toml_dict) thermo_params = create_thermodynamics_parameters(toml_dict) - air_params = CMP.AirProperties(FT, toml_dict) - activation_params = CMP.AerosolActivationParameters(FT, toml_dict) + air_params = CMP.AirProperties(toml_dict) + activation_params = CMP.AerosolActivationParameters(toml_dict) - moisture = CO.get_moisture_type(FT, moisture_choice, toml_dict) + moisture = CO.get_moisture_type(moisture_choice, toml_dict) precip = CO.get_precipitation_type( - FT, precipitation_choice, toml_dict; rain_formation_choice = rain_formation_choice, diff --git a/test/experiments/box_driver/run_box_simulation.jl b/test/experiments/box_driver/run_box_simulation.jl index c1dd6351..285fda5e 100644 --- a/test/experiments/box_driver/run_box_simulation.jl +++ b/test/experiments/box_driver/run_box_simulation.jl @@ -2,7 +2,7 @@ import OrdinaryDiffEq as ODE using Plots import ClimaCore as CC -import CLIMAParameters as CP +import ClimaParams as CP import CloudMicrophysics.Parameters as CMP import Kinematic1D import Kinematic1D.BoxModel as BX @@ -24,7 +24,7 @@ function run_box_simulation(::Type{FT}, opts) where {FT} mkpath(path) # Overwrite the defaults parameters based on options - default_toml_dict = CP.create_toml_dict(FT, dict_type = "alias") + default_toml_dict = CP.create_toml_dict(FT) toml_dict = override_toml_dict( path, default_toml_dict, @@ -37,19 +37,21 @@ function run_box_simulation(::Type{FT}, opts) where {FT} end common_params = create_common_parameters(toml_dict) thermo_params = create_thermodynamics_parameters(toml_dict) - air_params = CMP.AirProperties(FT, toml_dict) - activation_params = CMP.AerosolActivationParameters(FT, toml_dict) + air_params = CMP.AirProperties(toml_dict) + activation_params = CMP.AerosolActivationParameters(toml_dict) - moisture = CO.get_moisture_type(FT, "NonEquilibriumMoisture", toml_dict) - precip = - CO.get_precipitation_type(FT, precipitation_choice, toml_dict; rain_formation_choice = rain_formation_choice) + moisture = CO.get_moisture_type("NonEquilibriumMoisture", toml_dict) + precip = CO.get_precipitation_type(precipitation_choice, toml_dict; rain_formation_choice = rain_formation_choice) # Initialize the timestepping struct TS = CO.TimeStepping(FT(opts["dt"]), FT(opts["dt_output"]), FT(opts["t_end"])) # Create the 0D box domain (one z point) - domain = - CC.Domains.IntervalDomain(CC.Geometry.ZPoint{FT}(0), CC.Geometry.ZPoint{FT}(1), boundary_tags = (:bottom, :top)) + domain = CC.Domains.IntervalDomain( + CC.Geometry.ZPoint{FT}(0), + CC.Geometry.ZPoint{FT}(1), + boundary_names = (:bottom, :top), + ) mesh = CC.Meshes.IntervalMesh(domain, nelems = 1) space = CC.Spaces.CenterFiniteDifferenceSpace(mesh) coord = CC.Fields.coordinate_field(space) diff --git a/test/experiments/calibrations/K1D_col_sed/config.jl b/test/experiments/calibrations/K1D_col_sed/config.jl index cb5aaf02..a135f3c9 100644 --- a/test/experiments/calibrations/K1D_col_sed/config.jl +++ b/test/experiments/calibrations/K1D_col_sed/config.jl @@ -1,4 +1,4 @@ -import CLIMAParameters as CP +import ClimaParams as CP import CloudMicrophysics as CM import Thermodynamics as TD import Kinematic1D.CalibrateCMP as KCP @@ -127,7 +127,7 @@ function get_model_config() ) # Define default parameters FT = Float64 - config["toml_dict"] = CP.create_toml_dict(FT, dict_type = "alias") + config["toml_dict"] = CP.create_toml_dict(FT) config["param_dependencies"] = [(base = "aR_tv_SB2006", dependant = "bR_tv_SB2006", ratio = 10.3 / 9.65)] return config diff --git a/test/experiments/calibrations/config.jl b/test/experiments/calibrations/config.jl index 1aec36ee..0fcd2e7c 100644 --- a/test/experiments/calibrations/config.jl +++ b/test/experiments/calibrations/config.jl @@ -1,4 +1,4 @@ -import CLIMAParameters as CP +import ClimaParams as CP import CloudMicrophysics as CM import Thermodynamics as TD import Kinematic1D.CalibrateCMP as KCP @@ -22,8 +22,9 @@ function get_prior_config() config = Dict() # Define prior mean and bounds on the parameters. config["parameters"] = Dict( - "χv_rai" => (mean = 0.1, var = 0.03, lbound = 0.0, ubound = 1.0), - "χa_rai" => (mean = 4.0, var = 1.0, lbound = 0.0, ubound = 10.0), + "rain_terminal_velocity_size_relation_coefficient_chiv" => + (mean = 0.1, var = 0.03, lbound = 0.0, ubound = 1.0), + "rain_cross_section_size_relation_coefficient_chia" => (mean = 4.0, var = 1.0, lbound = 0.0, ubound = 10.0), ) return config end @@ -170,16 +171,12 @@ function create_parameter_set() println(io, "value = 0.018015") println(io, "type = \"float\"") end - toml_dict = CP.create_toml_dict(FT; override_file, dict_type = "alias") + toml_dict = CP.create_toml_dict(FT; override_file) isfile(override_file) && rm(override_file; force = true) - FTD = CP.float_type(toml_dict) - aliases = string.(fieldnames(TD.Parameters.ThermodynamicsParameters)) - param_pairs = CP.get_parameter_values!(toml_dict, aliases, "Thermodynamics") - thermo_params = TD.Parameters.ThermodynamicsParameters{FTD}(; param_pairs...) - - air_params = CM.Parameters.AirProperties(FT, toml_dict) - activation_params = CM.Parameters.AerosolActivationParameters(FT, toml_dict) + thermo_params = TD.Parameters.ThermodynamicsParameters(toml_dict) + air_params = CM.Parameters.AirProperties(toml_dict) + activation_params = CM.Parameters.AerosolActivationParameters(toml_dict) return (; toml_dict, thermo_params, air_params, activation_params) end diff --git a/test/experiments/calibrations/run_calibration.jl b/test/experiments/calibrations/run_calibration.jl index e8e01628..49b01f7b 100644 --- a/test/experiments/calibrations/run_calibration.jl +++ b/test/experiments/calibrations/run_calibration.jl @@ -2,7 +2,7 @@ import Kinematic1D.CalibrateCMP as KCP include("./config.jl") -data_save_directory = KCP.make_output_directories(dir = "/calibration_output/") +data_save_directory = KCP.make_output_directories(dir = joinpath(@__DIR__, "/run_calibration_output/")) config = get_config() diff --git a/test/experiments/calibrations/run_model.jl b/test/experiments/calibrations/run_model.jl index 2ee5b587..5eec921a 100644 --- a/test/experiments/calibrations/run_model.jl +++ b/test/experiments/calibrations/run_model.jl @@ -4,7 +4,7 @@ import Kinematic1D.CalibrateCMP as KCP include("./config.jl") -data_save_directory = KCP.make_output_directories(dir = "/run_model_output/") +data_save_directory = KCP.make_output_directories(dir = joinpath(@__DIR__, "/run_model_output/")) output_file_name_base = "model_vs_obs_contours" config = get_config() diff --git a/test/initial_condition_tests/initial_profile_test.jl b/test/initial_condition_tests/initial_profile_test.jl index bdcbe96c..52671b1e 100644 --- a/test/initial_condition_tests/initial_profile_test.jl +++ b/test/initial_condition_tests/initial_profile_test.jl @@ -7,7 +7,7 @@ using Test import Interpolations as IP import LinearAlgebra -import CLIMAParameters +import ClimaParams import ClimaCore as CC import Thermodynamics import CloudMicrophysics.Parameters as CMP @@ -22,13 +22,13 @@ include(joinpath(kid_dir, "test", "create_parameters.jl")) const FT = Float64 # Create parameters overwrite the defaults to match PySDM -default_toml_dict = CP.create_toml_dict(FT, dict_type = "alias") +default_toml_dict = CP.create_toml_dict(FT) toml_dict = override_toml_dict(@__DIR__, default_toml_dict) thermo_params = create_thermodynamics_parameters(toml_dict) common_params = create_common_parameters(toml_dict) kid_params = create_kid_parameters(toml_dict) -air_params = CMP.AirProperties(FT, toml_dict) -activation_params = CMP.AerosolActivationParameters(FT, toml_dict) +air_params = CMP.AirProperties(toml_dict) +activation_params = CMP.AerosolActivationParameters(toml_dict) params = (common_params, kid_params, thermo_params, air_params, activation_params) function compare_profiles(; is_dry_flag::Bool) diff --git a/test/unit_tests/calibration_pipeline/config.jl b/test/unit_tests/calibration_pipeline/config.jl index b32ea376..2a8afa53 100644 --- a/test/unit_tests/calibration_pipeline/config.jl +++ b/test/unit_tests/calibration_pipeline/config.jl @@ -1,4 +1,4 @@ -import CLIMAParameters as CP +import ClimaParams as CP import CloudMicrophysics as CM import Thermodynamics as TD import Kinematic1D.CalibrateCMP as KCP @@ -16,8 +16,9 @@ end function get_prior_config() config = Dict() config["parameters"] = Dict( - "χv_rai" => (mean = 1.0, var = 0.25, lbound = 0.0, ubound = 2.0), - "χa_rai" => (mean = 1.0, var = 0.25, lbound = 0.0, ubound = Inf), + "rain_terminal_velocity_size_relation_coefficient_chiv" => + (mean = 1.0, var = 0.25, lbound = 0.0, ubound = 2.0), + "rain_cross_section_size_relation_coefficient_chia" => (mean = 1.0, var = 0.25, lbound = 0.0, ubound = Inf), ) return config end @@ -100,11 +101,9 @@ end function create_parameter_set() FT = Float64 - toml_dict = CP.create_toml_dict(FT; dict_type = "alias") - aliases = string.(fieldnames(TD.Parameters.ThermodynamicsParameters)) - pairs = CP.get_parameter_values!(toml_dict, aliases, "Thermodynamics") - thermo_params = TD.Parameters.ThermodynamicsParameters{FT}(; pairs...) - air_params = CM.Parameters.AirProperties(FT, toml_dict) - activation_params = CM.Parameters.AerosolActivationParameters(FT, toml_dict) + toml_dict = CP.create_toml_dict(FT) + thermo_params = TD.Parameters.ThermodynamicsParameters(toml_dict) + air_params = CM.Parameters.AirProperties(toml_dict) + activation_params = CM.Parameters.AerosolActivationParameters(toml_dict) return (; toml_dict, thermo_params, air_params, activation_params) end diff --git a/test/unit_tests/calibration_pipeline/test_KiD_utils.jl b/test/unit_tests/calibration_pipeline/test_KiD_utils.jl index 842867b1..f8797d8e 100644 --- a/test/unit_tests/calibration_pipeline/test_KiD_utils.jl +++ b/test/unit_tests/calibration_pipeline/test_KiD_utils.jl @@ -1,13 +1,13 @@ @testset "creating parameters object" begin #setup u = [1e-4, 12345.0] - u_names = ["q_liq_threshold", "τ_acnv_rai"] + u_names = ["cloud_liquid_water_specific_humidity_autoconversion_threshold", "rain_autoconversion_timescale"] model_settings = get_model_config() #action KCP.update_parameters!(model_settings, u, u_names) #test - @test model_settings["toml_dict"]["q_liq_threshold"]["value"] == 1e-4 - @test model_settings["toml_dict"]["τ_acnv_rai"]["value"] == 12345.0 + @test model_settings["toml_dict"]["cloud_liquid_water_specific_humidity_autoconversion_threshold"]["value"] == 1e-4 + @test model_settings["toml_dict"]["rain_autoconversion_timescale"]["value"] == 12345.0 #setup model_settings["w1"] = 2.25 @@ -38,7 +38,7 @@ end @testset "Run KiD" begin #setup u = [1e-4] - u_names = ["q_liq_threshold"] + u_names = ["cloud_liquid_water_specific_humidity_autoconversion_threshold"] model_settings = get_model_config() n_heights = model_settings["n_elem"] n_times = length(model_settings["t_calib"]) @@ -78,7 +78,7 @@ end @testset "Run KiD (multiple cases) and run dynamical model" begin #setup u = [1e-4] - u_names = ["q_liq_threshold"] + u_names = ["cloud_liquid_water_specific_humidity_autoconversion_threshold"] config = Dict("model" => get_model_config(), "observations" => get_observations_config()) n_heights = config["model"]["n_elem"] n_times = length(config["model"]["t_calib"]) diff --git a/test/unit_tests/common_unit_test.jl b/test/unit_tests/common_unit_test.jl index 22d522f4..f8f8ce4b 100644 --- a/test/unit_tests/common_unit_test.jl +++ b/test/unit_tests/common_unit_test.jl @@ -3,7 +3,7 @@ params = (common_params, thermo_params, air_params, activation_params) @testset "Precipitation types" begin #setup - toml_dict = CP.create_toml_dict(FT; dict_type = "alias") + toml_dict = CP.create_toml_dict(FT) pn = "NoPrecipitation" p0m = "Precipitation0M" p1m = "Precipitation1M" @@ -19,23 +19,21 @@ params = (common_params, thermo_params, air_params, activation_params) st_2 = "Chen2022" #action - precip_pn = CO.get_precipitation_type(FT, pn, toml_dict) - precip_0m = CO.get_precipitation_type(FT, p0m, toml_dict) - precip_1m_1 = CO.get_precipitation_type(FT, p1m, toml_dict, rain_formation_choice = rf_1) - precip_1m_2 = CO.get_precipitation_type(FT, p1m, toml_dict, rain_formation_choice = rf_2) - precip_1m_3 = CO.get_precipitation_type(FT, p1m, toml_dict, rain_formation_choice = rf_3) - precip_1m_4 = CO.get_precipitation_type(FT, p1m, toml_dict, rain_formation_choice = rf_4) - precip_1m_5 = CO.get_precipitation_type(FT, p1m, toml_dict, rain_formation_choice = rf_5) - precip_1m_6 = - CO.get_precipitation_type(FT, p1m, toml_dict, rain_formation_choice = rf_6, sedimentation_choice = st_1) - precip_1m_7 = - CO.get_precipitation_type(FT, p1m, toml_dict, rain_formation_choice = rf_6, sedimentation_choice = st_2) - precip_2m = CO.get_precipitation_type(FT, p2m, toml_dict, rain_formation_choice = rf_7) + precip_pn = CO.get_precipitation_type(pn, toml_dict) + precip_0m = CO.get_precipitation_type(p0m, toml_dict) + precip_1m_1 = CO.get_precipitation_type(p1m, toml_dict, rain_formation_choice = rf_1) + precip_1m_2 = CO.get_precipitation_type(p1m, toml_dict, rain_formation_choice = rf_2) + precip_1m_3 = CO.get_precipitation_type(p1m, toml_dict, rain_formation_choice = rf_3) + precip_1m_4 = CO.get_precipitation_type(p1m, toml_dict, rain_formation_choice = rf_4) + precip_1m_5 = CO.get_precipitation_type(p1m, toml_dict, rain_formation_choice = rf_5) + precip_1m_6 = CO.get_precipitation_type(p1m, toml_dict, rain_formation_choice = rf_6, sedimentation_choice = st_1) + precip_1m_7 = CO.get_precipitation_type(p1m, toml_dict, rain_formation_choice = rf_6, sedimentation_choice = st_2) + precip_2m = CO.get_precipitation_type(p2m, toml_dict, rain_formation_choice = rf_7) #test - @test_throws Exception CO.get_precipitation_type(FT, "_", toml_dict, rain_formation_choice = rf_1) - @test_throws Exception CO.get_precipitation_type(FT, p1m, toml_dict, rain_formation_choice = "_") - @test_throws Exception CO.get_precipitation_type(FT, p2m, toml_dict, rain_formation_choice = rf_1) + @test_throws Exception CO.get_precipitation_type("_", toml_dict, rain_formation_choice = rf_1) + @test_throws Exception CO.get_precipitation_type(p1m, toml_dict, rain_formation_choice = "_") + @test_throws Exception CO.get_precipitation_type(p2m, toml_dict, rain_formation_choice = rf_1) @test precip_pn isa CO.NoPrecipitation @test precip_0m isa CO.Precipitation0M @test precip_1m_1 isa CO.Precipitation1M @@ -52,13 +50,13 @@ end @testset "Moisture type" begin #setup - toml_dict = CP.create_toml_dict(FT; dict_type = "alias") + toml_dict = CP.create_toml_dict(FT) eqm = "EquilibriumMoisture" neqm = "NonEquilibriumMoisture" #action - moisture_eq = CO.get_moisture_type(FT, eqm, toml_dict) - moisture_neq = CO.get_moisture_type(FT, neqm, toml_dict) + moisture_eq = CO.get_moisture_type(eqm, toml_dict) + moisture_neq = CO.get_moisture_type(neqm, toml_dict) #test @test CO.EquilibriumMoisture <: CO.AbstractMoistureStyle @@ -68,7 +66,7 @@ end @test CO.NonEquilibriumMoisture_ρθq <: CO.NonEquilibriumMoisture @test CO.NonEquilibriumMoisture_ρdTq <: CO.NonEquilibriumMoisture - @test_throws Exception CO.get_moisture_type(FT, "_", toml_dict) + @test_throws Exception CO.get_moisture_type("_", toml_dict) @test moisture_eq isa CO.EquilibriumMoisture_ρdTq @test moisture_neq isa CO.NonEquilibriumMoisture_ρdTq @@ -510,8 +508,11 @@ end term_vel_sno = 0.0, term_vel_N_rai = 0.0, ) - domain = - CC.Domains.IntervalDomain(CC.Geometry.ZPoint{FT}(0), CC.Geometry.ZPoint{FT}(1), boundary_tags = (:bottom, :top)) + domain = CC.Domains.IntervalDomain( + CC.Geometry.ZPoint{FT}(0), + CC.Geometry.ZPoint{FT}(1), + boundary_names = (:bottom, :top), + ) mesh = CC.Meshes.IntervalMesh(domain, nelems = 1) space = CC.Spaces.CenterFiniteDifferenceSpace(mesh) coord = CC.Fields.coordinate_field(space) diff --git a/test/unit_tests/unit_test.jl b/test/unit_tests/unit_test.jl index e23ff68e..5ee31fc2 100644 --- a/test/unit_tests/unit_test.jl +++ b/test/unit_tests/unit_test.jl @@ -5,7 +5,7 @@ using Test import LinearAlgebra as LA -import CLIMAParameters as CP +import ClimaParams as CP import ClimaCore as CC import Thermodynamics as TD import Kinematic1D @@ -21,33 +21,33 @@ const kid_dir = pkgdir(Kinematic1D) include(joinpath(kid_dir, "test", "create_parameters.jl")) # override the defaults -default_toml_dict = CP.create_toml_dict(FT, dict_type = "alias") +default_toml_dict = CP.create_toml_dict(FT) toml_dict = override_toml_dict(@__DIR__, default_toml_dict) # create all the parameters structs ... common_params = create_common_parameters(toml_dict) thermo_params = create_thermodynamics_parameters(toml_dict) kid_params = create_kid_parameters(toml_dict) -air_params = CMP.AirProperties(FT, toml_dict) -activation_params = CMP.AerosolActivationParameters(FT, toml_dict) +air_params = CMP.AirProperties(toml_dict) +activation_params = CMP.AerosolActivationParameters(toml_dict) # ... for cloud condensate options ... equil_moist_ρθq = CO.EquilibriumMoisture_ρθq() equil_moist_ρdTq = CO.EquilibriumMoisture_ρdTq() -nequil_moist_ρθq = CO.NonEquilibriumMoisture_ρθq(CMP.CloudLiquid(FT, toml_dict), CMP.CloudIce(FT, toml_dict)) -nequil_moist_ρdTq = CO.NonEquilibriumMoisture_ρdTq(CMP.CloudLiquid(FT, toml_dict), CMP.CloudIce(FT, toml_dict)) +nequil_moist_ρθq = CO.NonEquilibriumMoisture_ρθq(CMP.CloudLiquid(toml_dict), CMP.CloudIce(toml_dict)) +nequil_moist_ρdTq = CO.NonEquilibriumMoisture_ρdTq(CMP.CloudLiquid(toml_dict), CMP.CloudIce(toml_dict)) # ... and precipitation options no_precip = CO.NoPrecipitation() -precip_0m = CO.Precipitation0M(CMP.Parameters0M(FT, toml_dict)) +precip_0m = CO.Precipitation0M(CMP.Parameters0M(toml_dict)) precip_1m = CO.Precipitation1M( - CMP.CloudLiquid(FT, toml_dict), - CMP.CloudIce(FT, toml_dict), - CMP.Rain(FT, toml_dict), - CMP.Snow(FT, toml_dict), - CMP.CollisionEff(FT, toml_dict), - CMP.KK2000(FT, toml_dict), - CMP.Blk1MVelType(FT, toml_dict), + CMP.CloudLiquid(toml_dict), + CMP.CloudIce(toml_dict), + CMP.Rain(toml_dict), + CMP.Snow(toml_dict), + CMP.CollisionEff(toml_dict), + CMP.KK2000(toml_dict), + CMP.Blk1MVelType(toml_dict), ) -precip_2m = CO.Precipitation2M(CMP.SB2006(FT, toml_dict), CMP.SB2006VelType(FT, toml_dict)) +precip_2m = CO.Precipitation2M(CMP.SB2006(toml_dict), CMP.SB2006VelType(toml_dict)) # common unit tests include("./common_unit_test.jl")