Skip to content

Commit

Permalink
use atmos config in coupler
Browse files Browse the repository at this point in the history
  • Loading branch information
juliasloan25 committed Apr 25, 2024
1 parent 691d4df commit 58e514c
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 9 deletions.
3 changes: 2 additions & 1 deletion config/benchmark_configs/amip_diagedmf.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
anim: false
atmos_config_file: "config/gpu_configs/gpu_aquaplanet_diagedmf.yml"
atmos_config_file: "config/benchmark_configs/climaatmos_diagedmf.yml"
atmos_config_repo: "ClimaCoupler"
dt_cpl: 100
dt_save_state_to_disk: "Inf"
dt_save_to_sol: "Inf"
Expand Down
3 changes: 2 additions & 1 deletion config/benchmark_configs/gpu_amip_diagedmf.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
anim: false
atmos_config_file: "config/gpu_configs/gpu_aquaplanet_diagedmf.yml"
atmos_config_file: "config/benchmark_configs/gpu_climaatmos_diagedmf.yml"
atmos_config_repo: "ClimaCoupler"
dt_cpl: 100
dt_save_state_to_disk: "Inf"
dt_save_to_sol: "Inf"
Expand Down
4 changes: 4 additions & 0 deletions experiments/AMIP/cli_options.jl
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@ function argparse_settings()
default = "PrescribedSurface"
"--atmos_config_file"
help = "A yaml file used to set the atmospheric model configuration. If nothing is specified, the default configuration is used."
"--atmos_config_repo"
help = "The repository containing the ClimaAtmos configuration file to use [`ClimaAtmos` (default), `ClimaCoupler`]"
arg_type = String
default = "ClimaAtmos"
# ClimaLand specific
"--land_albedo_type"
help = "Access land surface albedo information from data file. [`function`, `map_static`, `map_temporal`]"
Expand Down
29 changes: 22 additions & 7 deletions experiments/AMIP/components/atmosphere/climaatmos.jl
Original file line number Diff line number Diff line change
Expand Up @@ -238,21 +238,36 @@ FluxCalculator.get_surface_params(sim::ClimaAtmosSimulation) = CAP.surface_fluxe
get_atmos_config(coupler_dict::Dict)
Returns the specified atmospheric configuration (`atmos_config_dict`) overwitten by arguments
in the coupler dictionary (`config_dict`).
in the coupler dictionary (`config_dict`). The `atmos_config_repo` flag allows us to
use a configuration specified within the ClimaCoupler repo, which is useful for direct
coupled/atmos-only comparisons.
"""
function get_atmos_config(coupler_dict)
atmos_config_file = coupler_dict["atmos_config_file"]
atmos_config_repo = coupler_dict["atmos_config_repo"]
# override default or specified configs with coupler arguments, and set the correct atmos config_file
if isnothing(atmos_config_file)
@info "Using Atmos default configuration"
atmos_config = merge(CA.default_config_dict(), coupler_dict, Dict("config_file" => atmos_config_file))
else
@info "Using Atmos configuration from $atmos_config_file"
if atmos_config_repo == "ClimaCoupler"
@assert !isnothing(atmos_config_file) "Must specify `atmos_config_file` within ClimaCoupler."
@info "Using Atmos configuration from ClimaCoupler in $atmos_config_file"
atmos_config = merge(
CA.override_default_config(joinpath(pkgdir(CA), atmos_config_file)),
CA.override_default_config(joinpath(pkgdir(ClimaCoupler), atmos_config_file)),
coupler_dict,
Dict("config_file" => atmos_config_file),
)
elseif atmos_config_repo == "ClimaAtmos"
if isnothing(atmos_config_file)
@info "Using Atmos default configuration"
atmos_config = merge(CA.default_config_dict(), coupler_dict, Dict("config_file" => atmos_config_file))
else
@info "Using Atmos configuration from $atmos_config_file"
atmos_config = merge(
CA.override_default_config(joinpath(pkgdir(CA), atmos_config_file)),
coupler_dict,
Dict("config_file" => atmos_config_file),
)
end
else
error("Invalid `atmos_config_repo`; please use \"ClimaCoupler\" or \"ClimaAtmos\"")
end

# use coupler toml if atmos is not defined
Expand Down

0 comments on commit 58e514c

Please sign in to comment.