Skip to content

Commit 9cb1667

Browse files
committed
Use all observations
1 parent b6760cb commit 9cb1667

File tree

5 files changed

+24
-22
lines changed

5 files changed

+24
-22
lines changed

experiments/calibration/Project.toml

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ ClimaCoreMakie = "908f55d8-4145-4867-9c14-5dad1a479e4d"
1111
ClimaCoupler = "4ade58fe-a8da-486c-bd89-46df092ec0c7"
1212
ClimaDiagnostics = "1ecacbb8-0713-4841-9a07-eb5aa8a2d53f"
1313
ClimaLand = "08f4d4ce-cf43-44bb-ad95-9d2d5f413532"
14+
ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c"
1415
ClimaTimeSteppers = "595c0a79-7f3d-439a-bc5a-b232dc3bde79"
1516
ClimaUtilities = "b3f4f4ca-9299-4f7f-bd9b-81e1242a7513"
1617
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
@@ -31,7 +32,7 @@ YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6"
3132

3233
[compat]
3334
ClimaCalibrate = "0.0.11"
34-
ClimaLand = "=0.15.9"
35-
ClimaTimeSteppers = "0.8.2"
3635
ClimaCore = "0.14.26"
36+
ClimaLand = "0.15.11"
37+
ClimaTimeSteppers = "0.8.2"
3738
EnsembleKalmanProcesses = "2.1.2"

experiments/calibration/coarse_amip/model_config.yml

+2
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,7 @@ extra_atmos_diagnostics:
4646
- clw
4747
- cli
4848
- pfull
49+
- clw
50+
- cli
4951
period: 1months
5052
writer: nc

experiments/calibration/coarse_amip/model_interface.jl

+8-9
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,14 @@ function ClimaCalibrate.forward_model(iter, member)
2929
# Set member output directory
3030
member_output_dir = ClimaCalibrate.path_to_ensemble_member(output_dir_root, iter, member)
3131
config_dict["coupler_output_dir"] = member_output_dir
32-
sim = try
33-
setup_and_run(config_dict)
34-
catch e
35-
@error "Forward model error" exception = e
36-
bt = catch_backtrace()
37-
println("Stacktrace:")
38-
display(stacktrace(bt))
39-
nothing
40-
end
32+
sim = setup_and_run(config_dict)
33+
# catch e
34+
# @error "Forward model error" exception = e
35+
# bt = catch_backtrace()
36+
# println("Stacktrace:")
37+
# display(stacktrace(bt))
38+
# nothing
39+
# end
4140
@info "Completed member $member"
4241
return sim
4342
end

experiments/calibration/coarse_amip/observation_map.jl

+10-11
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,7 @@ function ClimaCalibrate.observation_map(iteration)
1717
G_ensemble[:, m] .= process_member_data(SimDir(simdir_path))
1818

1919
catch e
20-
@error "Error processing member $m, filling observation map entry with NaNs" exception = e
21-
bt = catch_backtrace()
22-
println("Stacktrace:")
23-
display(stacktrace(bt))
20+
@error "Error processing member $m, filling observation map entry with NaNs" exception = e
2421
G_ensemble[:, m] .= NaN
2522
end
2623
end
@@ -46,8 +43,8 @@ function process_member_data(simdir::SimDir)
4643
hur = process_outputvar(simdir, "hur")
4744
hus = process_outputvar(simdir, "hus")
4845

49-
ql = process_outputvar(simdir, "ql")
50-
qi = process_outputvar(simdir, "qi")
46+
clw = process_outputvar(simdir, "clw")
47+
cli = process_outputvar(simdir, "cli")
5148

5249
# Map over each year
5350
year_observations = map(1:4:length(rsut)) do year_start
@@ -66,10 +63,10 @@ function process_member_data(simdir::SimDir)
6663
ta_yr = downsample_and_vectorize(ta[yr_ind])
6764
hur_yr = downsample_and_vectorize(hur[yr_ind])
6865
hus_yr = downsample_and_vectorize(hus[yr_ind])
69-
ql_yr = downsample_and_vectorize(ql[yr_ind])
70-
qi_yr = downsample_and_vectorize(qi[yr_ind])
66+
clw_yr = downsample_and_vectorize(clw[yr_ind])
67+
cli_yr = downsample_and_vectorize(cli[yr_ind])
7168

72-
vcat(net_rad_yr, rsut_yr, rlut_yr, cre_yr, pr_yr, shf_yr, ts_yr, ta_yr, hur_yr, hus_yr, ql_yr, qi_yr)
69+
vcat(net_rad_yr, rsut_yr, rlut_yr, cre_yr, pr_yr, shf_yr, ts_yr, ta_yr, hur_yr, hus_yr, clw_yr, cli_yr)
7370
end
7471
return vcat(year_observations...)
7572
end
@@ -93,18 +90,20 @@ end
9390
function preprocess_monthly_averages(simdir, name)
9491
monthly_avgs = get_monthly_averages(simdir, name)
9592
# Interpolate to pressure coordinates to match observations
93+
pressure = get_monthly_averages(simdir, "pfull")
9694
if has_altitude(monthly_avgs)
97-
pressure = get_monthly_averages(simdir, "pfull")
9895
monthly_avgs = ClimaAnalysis.Atmos.to_pressure_coordinates(monthly_avgs, pressure)
9996
monthly_avgs = limit_pressure_dim_to_era5_range(monthly_avgs)
10097
end
98+
monthly_avgs.attributes["start_date"] = pressure.attributes["start_date"]
10199
# Line up dates for monthly averages
102100
monthly_avgs = ClimaAnalysis.shift_to_start_of_previous_month(monthly_avgs)
103101
# Remove spinup time
104102
monthly_avgs = window(monthly_avgs, "time"; left = spinup_time)
105103
global_mean = monthly_avgs |> average_lat |> average_lon |> average_time
104+
FT = monthly_avgs.data |> eltype
106105
# Replace NaNs with global mean
107-
monthly_avgs = ClimaAnalysis.replace(monthly_avgs, NaN => global_mean)
106+
monthly_avgs = ClimaAnalysis.replace(monthly_avgs, NaN => FT(mean(global_mean.data)))
108107
return monthly_avgs
109108
end
110109

experiments/calibration/coarse_amip/run_calibration.jl

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import EnsembleKalmanProcesses as EKP
1010

1111
include(joinpath(pkgdir(ClimaCoupler), "experiments/calibration/coarse_amip/observation_map.jl"))
1212

13+
# addprocs(CAL.SlurmManager(30); partition = "a3", gpus_per_task = 1, cpus_per_task = 4, time = "08:00:00")
1314
addprocs(CAL.SlurmManager())
1415

1516
# Make variables and the forward model available on the worker sessions

0 commit comments

Comments
 (0)