From bf0ddfe16ac9e2ef69b0e885ecef2d75358c7b98 Mon Sep 17 00:00:00 2001 From: Julia Sloan Date: Mon, 30 Sep 2024 16:19:30 -0700 Subject: [PATCH] include bucket diagnostics --- experiments/ClimaEarth/Manifest.toml | 8 +++---- experiments/ClimaEarth/Project.toml | 2 ++ .../components/land/climaland_bucket.jl | 23 +++++++++++++++++-- experiments/ClimaEarth/run_amip.jl | 6 ++--- .../ClimaEarth/run_cloudy_slabplanet.jl | 2 +- perf/Manifest.toml | 6 ++--- perf/Project.toml | 2 ++ 7 files changed, 36 insertions(+), 13 deletions(-) diff --git a/experiments/ClimaEarth/Manifest.toml b/experiments/ClimaEarth/Manifest.toml index 750c0737df..924953c8ed 100644 --- a/experiments/ClimaEarth/Manifest.toml +++ b/experiments/ClimaEarth/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.10.5" manifest_format = "2.0" -project_hash = "3f041ae318abcda7361d1017b4769284277fd054" +project_hash = "068d169322176676d4a2ff1e87cafb47cc58b76b" [[deps.ADTypes]] git-tree-sha1 = "5a5eafb8344b81b8c2237f8a6f6b3602b3f6180e" @@ -334,16 +334,16 @@ uuid = "d934ef94-cdd4-4710-83d6-720549644b70" version = "0.3.17" [[deps.ClimaCoupler]] -deps = ["ClimaComms", "ClimaCore", "ClimaCoreTempestRemap", "Dates", "JLD2", "NCDatasets", "SciMLBase", "StaticArrays", "SurfaceFluxes", "Thermodynamics"] +deps = ["Artifacts", "ClimaComms", "ClimaCore", "ClimaCoreTempestRemap", "Dates", "JLD2", "Logging", "NCDatasets", "SciMLBase", "StaticArrays", "SurfaceFluxes", "Thermodynamics"] path = "../.." uuid = "4ade58fe-a8da-486c-bd89-46df092ec0c7" version = "0.1.1" [[deps.ClimaDiagnostics]] deps = ["Accessors", "ClimaComms", "ClimaCore", "Dates", "NCDatasets", "SciMLBase"] -git-tree-sha1 = "9526b91533254b043e860e17568555d21d1d041e" +git-tree-sha1 = "ae8854e55028856675294f744ca7a6a3a3bd75bc" uuid = "1ecacbb8-0713-4841-9a07-eb5aa8a2d53f" -version = "0.2.6" +version = "0.2.7" [[deps.ClimaLand]] deps = ["ArtifactWrappers", "ClimaComms", "ClimaCore", "ClimaDiagnostics", "ClimaUtilities", "Dates", "DocStringExtensions", "Insolation", "Interpolations", "LazyArtifacts", "LinearAlgebra", "NCDatasets", "SciMLBase", "StaticArrays", "SurfaceFluxes", "Thermodynamics"] diff --git a/experiments/ClimaEarth/Project.toml b/experiments/ClimaEarth/Project.toml index 6bf7bcdaf7..0d57a91d15 100644 --- a/experiments/ClimaEarth/Project.toml +++ b/experiments/ClimaEarth/Project.toml @@ -9,6 +9,7 @@ ClimaComms = "3a4d1b5c-c61d-41fd-a00a-5873ba7a1b0d" ClimaCore = "d414da3d-4745-48bb-8d80-42e94e092884" ClimaCorePlots = "cf7c7e5a-b407-4c48-9047-11a94a308626" ClimaCoupler = "4ade58fe-a8da-486c-bd89-46df092ec0c7" +ClimaDiagnostics = "1ecacbb8-0713-4841-9a07-eb5aa8a2d53f" ClimaLand = "08f4d4ce-cf43-44bb-ad95-9d2d5f413532" ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c" ClimaTimeSteppers = "595c0a79-7f3d-439a-bc5a-b232dc3bde79" @@ -36,6 +37,7 @@ ArtifactWrappers = "0.2" ClimaAnalysis = "0.5.4" ClimaAtmos = "0.27" ClimaCorePlots = "0.2" +ClimaDiagnostics = "0.2" ClimaLand = "0.14, 0.15" ClimaParams = "0.10" ClimaTimeSteppers = "0.7" diff --git a/experiments/ClimaEarth/components/land/climaland_bucket.jl b/experiments/ClimaEarth/components/land/climaland_bucket.jl index 28a19da06c..5cddcdb024 100644 --- a/experiments/ClimaEarth/components/land/climaland_bucket.jl +++ b/experiments/ClimaEarth/components/land/climaland_bucket.jl @@ -7,6 +7,7 @@ import ClimaParams import Thermodynamics as TD import ClimaLand as CL import ClimaLand.Parameters as LP +import ClimaDiagnostics as CD import ClimaCoupler: Checkpointer, FluxCalculator, Interfacer ### @@ -52,7 +53,7 @@ function bucket_init( config::String, albedo_type::String, land_temperature_anomaly::String, - regrid_dirpath::String; + dir_paths::NamedTuple; space, dt::Float64, saveat::Float64, @@ -70,6 +71,9 @@ function bucket_init( @assert config == "sphere" end + regrid_dirpath = dir_paths.regrid + artifacts_dir = dir_paths.artifacts + α_snow = FT(0.8) # snow albedo if albedo_type == "map_static" # Read in albedo from static data file (default type) # By default, this uses a file containing bareground albedo without a time component. Snow albedo is specified separately. @@ -144,7 +148,22 @@ function bucket_init( ode_algo = CTS.ExplicitAlgorithm(stepper) bucket_ode_function = CTS.ClimaODEFunction(T_exp! = exp_tendency!, dss! = CL.dss!) prob = SciMLBase.ODEProblem(bucket_ode_function, Y, tspan, p) - integrator = SciMLBase.init(prob, ode_algo; dt = dt, saveat = saveat, adaptive = false) + + # Add diagnostics + netcdf_writer = CD.Writers.NetCDFWriter(domain.space.subsurface, artifacts_dir) + scheduled_diagnostics = CL.default_diagnostics(model, date_ref, output_writer = netcdf_writer) + + diagnostic_handler = CD.DiagnosticsHandler(scheduled_diagnostics, Y, p, t_start; dt = dt) + diag_cb = CD.DiagnosticsCallback(diagnostic_handler) + + integrator = SciMLBase.init( + prob, + ode_algo; + dt = dt, + saveat = saveat, + adaptive = false, + callback = SciMLBase.CallbackSet(diag_cb), + ) sim = BucketSimulation(model, Y, (; domain = domain, soil_depth = d_soil), integrator, area_fraction) diff --git a/experiments/ClimaEarth/run_amip.jl b/experiments/ClimaEarth/run_amip.jl index 1920d51f73..3841e6869e 100644 --- a/experiments/ClimaEarth/run_amip.jl +++ b/experiments/ClimaEarth/run_amip.jl @@ -277,7 +277,7 @@ if mode_name == "amip" config_dict["land_domain_type"], config_dict["land_albedo_type"], config_dict["land_temperature_anomaly"], - dir_paths.regrid; + dir_paths; dt = Δt_cpl, space = boundary_space, saveat = saveat, @@ -364,7 +364,7 @@ elseif mode_name in ("slabplanet", "slabplanet_aqua", "slabplanet_terra") config_dict["land_domain_type"], config_dict["land_albedo_type"], config_dict["land_temperature_anomaly"], - dir_paths.regrid; + dir_paths; dt = Δt_cpl, space = boundary_space, saveat = saveat, @@ -413,7 +413,7 @@ elseif mode_name == "slabplanet_eisenman" config_dict["land_domain_type"], config_dict["land_albedo_type"], config_dict["land_temperature_anomaly"], - dir_paths.regrid; + dir_paths; dt = Δt_cpl, space = boundary_space, saveat = saveat, diff --git a/experiments/ClimaEarth/run_cloudy_slabplanet.jl b/experiments/ClimaEarth/run_cloudy_slabplanet.jl index 3b55f84234..bb0ddd583f 100644 --- a/experiments/ClimaEarth/run_cloudy_slabplanet.jl +++ b/experiments/ClimaEarth/run_cloudy_slabplanet.jl @@ -226,7 +226,7 @@ land_sim = bucket_init( "sphere", "map_static", "aquaplanet", - dir_paths.regrid; + dir_paths; dt = Δt_cpl, space = boundary_space, saveat = saveat, diff --git a/perf/Manifest.toml b/perf/Manifest.toml index 9795ea9772..7cd5a6768f 100644 --- a/perf/Manifest.toml +++ b/perf/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.10.5" manifest_format = "2.0" -project_hash = "2d4125716dea3150eddd43267d6e205b8d4cd41f" +project_hash = "c46d21317c946ec9f0ded6af1ab8d6a481f84053" [[deps.ADTypes]] git-tree-sha1 = "5a5eafb8344b81b8c2237f8a6f6b3602b3f6180e" @@ -374,9 +374,9 @@ version = "0.1.1" [[deps.ClimaDiagnostics]] deps = ["Accessors", "ClimaComms", "ClimaCore", "Dates", "NCDatasets", "SciMLBase"] -git-tree-sha1 = "9526b91533254b043e860e17568555d21d1d041e" +git-tree-sha1 = "205961865d827825c2f5da0a18a605245cfec95e" uuid = "1ecacbb8-0713-4841-9a07-eb5aa8a2d53f" -version = "0.2.6" +version = "0.2.8" [[deps.ClimaLand]] deps = ["ArtifactWrappers", "ClimaComms", "ClimaCore", "ClimaDiagnostics", "ClimaUtilities", "Dates", "DocStringExtensions", "Insolation", "Interpolations", "LazyArtifacts", "LinearAlgebra", "NCDatasets", "SciMLBase", "StaticArrays", "SurfaceFluxes", "Thermodynamics"] diff --git a/perf/Project.toml b/perf/Project.toml index b52a0742ad..176566ad17 100644 --- a/perf/Project.toml +++ b/perf/Project.toml @@ -9,6 +9,7 @@ ClimaComms = "3a4d1b5c-c61d-41fd-a00a-5873ba7a1b0d" ClimaCore = "d414da3d-4745-48bb-8d80-42e94e092884" ClimaCorePlots = "cf7c7e5a-b407-4c48-9047-11a94a308626" ClimaCoupler = "4ade58fe-a8da-486c-bd89-46df092ec0c7" +ClimaDiagnostics = "1ecacbb8-0713-4841-9a07-eb5aa8a2d53f" ClimaLand = "08f4d4ce-cf43-44bb-ad95-9d2d5f413532" ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c" ClimaTimeSteppers = "595c0a79-7f3d-439a-bc5a-b232dc3bde79" @@ -39,6 +40,7 @@ ArtifactWrappers = "0.2" ClimaAnalysis = "0.5.4" ClimaAtmos = "0.27" ClimaCorePlots = "0.2" +ClimaDiagnostics = "0.2" ClimaLand = "0.14, 0.15" ClimaParams = "0.10" ClimaTimeSteppers = "0.7"