Skip to content

Commit c360b64

Browse files
authored
Merge pull request #2866 from CliMA/gb/use_climadiagnostics
Use ClimaDiagnostics
2 parents 719ee49 + d3be8a3 commit c360b64

25 files changed

+349
-2293
lines changed

.buildkite/pipeline.yml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -820,14 +820,6 @@ steps:
820820
slurm_mem: 24GB
821821
slurm_cpus_per_task: 8
822822

823-
# Flame graphs
824-
- label: ":fire: Flame graph: perf target (IO)"
825-
command: >
826-
julia --color=yes --project=perf perf/benchmark_netcdf_io.jl
827-
artifact_paths: "flame_perf_io/*.html"
828-
agents:
829-
slurm_gpus: 1
830-
831823
- label: ":fire: Flame graph: perf target (default)"
832824
command: >
833825
julia --color=yes --project=perf perf/flame.jl

Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Artifacts = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
1111
AtmosphericProfilesLibrary = "86bc3604-9858-485a-bdbe-831ec50de11d"
1212
ClimaComms = "3a4d1b5c-c61d-41fd-a00a-5873ba7a1b0d"
1313
ClimaCore = "d414da3d-4745-48bb-8d80-42e94e092884"
14+
ClimaDiagnostics = "1ecacbb8-0713-4841-9a07-eb5aa8a2d53f"
1415
ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c"
1516
ClimaTimeSteppers = "595c0a79-7f3d-439a-bc5a-b232dc3bde79"
1617
ClimaUtilities = "b3f4f4ca-9299-4f7f-bd9b-81e1242a7513"
@@ -53,6 +54,7 @@ AtmosphericProfilesLibrary = "0.1"
5354
CPUSummary = "0.2"
5455
ClimaComms = "0.5"
5556
ClimaCore = "0.13"
57+
ClimaDiagnostics = "0.1"
5658
ClimaParams = "0.10.4"
5759
ClimaTimeSteppers = "0.7.18"
5860
ClimaUtilities = "0.1.3"

docs/Manifest.toml

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
julia_version = "1.10.2"
44
manifest_format = "2.0"
5-
project_hash = "de545a9981288a0945908b937b51bff80bfd4b8f"
5+
project_hash = "64afcb8dacf7a673d0068ba1a72602801e8d529a"
66

77
[[deps.ADTypes]]
88
git-tree-sha1 = "016833eb52ba2d6bea9fcb50ca295980e728ee24"
@@ -90,14 +90,15 @@ version = "1.1.1"
9090

9191
[[deps.ArrayInterface]]
9292
deps = ["Adapt", "LinearAlgebra", "SparseArrays", "SuiteSparse"]
93-
git-tree-sha1 = "44691067188f6bd1b2289552a23e4b7572f4528d"
93+
git-tree-sha1 = "133a240faec6e074e07c31ee75619c90544179cf"
9494
uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
95-
version = "7.9.0"
95+
version = "7.10.0"
9696

9797
[deps.ArrayInterface.extensions]
9898
ArrayInterfaceBandedMatricesExt = "BandedMatrices"
9999
ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices"
100100
ArrayInterfaceCUDAExt = "CUDA"
101+
ArrayInterfaceCUDSSExt = "CUDSS"
101102
ArrayInterfaceChainRulesExt = "ChainRules"
102103
ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore"
103104
ArrayInterfaceReverseDiffExt = "ReverseDiff"
@@ -108,6 +109,7 @@ version = "7.9.0"
108109
BandedMatrices = "aae01518-5342-5314-be14-df237901396f"
109110
BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0"
110111
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
112+
CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e"
111113
ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2"
112114
GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527"
113115
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
@@ -257,9 +259,9 @@ version = "1.0.1+0"
257259

258260
[[deps.CUDA]]
259261
deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "Crayons", "DataFrames", "ExprTools", "GPUArrays", "GPUCompiler", "KernelAbstractions", "LLVM", "LLVMLoopInfo", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "NVTX", "Preferences", "PrettyTables", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "StaticArrays", "Statistics"]
260-
git-tree-sha1 = "3dcab8a2c18ca319ea15a41d90e9528b8e93894a"
262+
git-tree-sha1 = "dd1c682b372b6791b69f6823afe364fc92a0146c"
261263
uuid = "052768ef-5323-5732-b1bb-66c8b64840ba"
262-
version = "5.3.0"
264+
version = "5.3.1"
263265
weakdeps = ["ChainRulesCore", "SpecialFunctions"]
264266

265267
[deps.CUDA.extensions]
@@ -319,7 +321,7 @@ weakdeps = ["SparseArrays"]
319321
ChainRulesCoreSparseArraysExt = "SparseArrays"
320322

321323
[[deps.ClimaAtmos]]
322-
deps = ["Adapt", "ArgParse", "ArtifactWrappers", "Artifacts", "AtmosphericProfilesLibrary", "ClimaComms", "ClimaCore", "ClimaParams", "ClimaTimeSteppers", "ClimaUtilities", "CloudMicrophysics", "Colors", "Dates", "Dierckx", "DiffEqBase", "DiffEqCallbacks", "Distributions", "DocStringExtensions", "FastGaussQuadrature", "Insolation", "Interpolations", "IntervalSets", "Krylov", "LinearAlgebra", "Logging", "NCDatasets", "NVTX", "Pkg", "Printf", "RRTMGP", "Random", "RootSolvers", "SciMLBase", "StaticArrays", "Statistics", "StatsBase", "SurfaceFluxes", "Thermodynamics", "YAML"]
324+
deps = ["Adapt", "ArgParse", "ArtifactWrappers", "Artifacts", "AtmosphericProfilesLibrary", "ClimaComms", "ClimaCore", "ClimaDiagnostics", "ClimaParams", "ClimaTimeSteppers", "ClimaUtilities", "CloudMicrophysics", "Colors", "Dates", "Dierckx", "DiffEqBase", "DiffEqCallbacks", "Distributions", "DocStringExtensions", "FastGaussQuadrature", "Insolation", "Interpolations", "IntervalSets", "Krylov", "LinearAlgebra", "Logging", "NCDatasets", "NVTX", "Pkg", "Printf", "RRTMGP", "Random", "RootSolvers", "SciMLBase", "StaticArrays", "Statistics", "StatsBase", "SurfaceFluxes", "Thermodynamics", "YAML"]
323325
path = ".."
324326
uuid = "b2c96348-7fb7-4fe0-8da9-78d88439e717"
325327
version = "0.23.0"
@@ -340,6 +342,12 @@ weakdeps = ["Krylov"]
340342
[deps.ClimaCore.extensions]
341343
KrylovExt = "Krylov"
342344

345+
[[deps.ClimaDiagnostics]]
346+
deps = ["Accessors", "ClimaComms", "ClimaCore", "Dates", "NCDatasets", "SciMLBase"]
347+
git-tree-sha1 = "fee70c0ba0e056565e8dd71cc4ac55f25e606a74"
348+
uuid = "1ecacbb8-0713-4841-9a07-eb5aa8a2d53f"
349+
version = "0.1.1"
350+
343351
[[deps.ClimaParams]]
344352
deps = ["DocStringExtensions", "TOML", "Test"]
345353
git-tree-sha1 = "528aadfaae6f447df3879eab224625ecceec5982"
@@ -353,10 +361,10 @@ uuid = "595c0a79-7f3d-439a-bc5a-b232dc3bde79"
353361
version = "0.7.19"
354362

355363
[[deps.ClimaUtilities]]
356-
deps = ["Artifacts", "CFTime", "Dates"]
357-
git-tree-sha1 = "d1b30a07829248b325ffffbb739d0f6fe79dfe7c"
364+
deps = ["Artifacts", "Dates"]
365+
git-tree-sha1 = "66b13d461cabc5e9265c9715dba512aea0e1e67f"
358366
uuid = "b3f4f4ca-9299-4f7f-bd9b-81e1242a7513"
359-
version = "0.1.3"
367+
version = "0.1.4"
360368

361369
[deps.ClimaUtilities.extensions]
362370
DataHandlingExt = ["ClimaCore", "NCDatasets"]
@@ -1765,9 +1773,9 @@ version = "0.5.12"
17651773

17661774
[[deps.Pango_jll]]
17671775
deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"]
1768-
git-tree-sha1 = "526f5a03792669e4187e584e8ec9d534248ca765"
1776+
git-tree-sha1 = "cb5a2ab6763464ae0f19c86c56c63d4a2b0f5bda"
17691777
uuid = "36c8627f-9965-5494-a995-c6b170f724f3"
1770-
version = "1.52.1+0"
1778+
version = "1.52.2+0"
17711779

17721780
[[deps.Parameters]]
17731781
deps = ["OrderedCollections", "UnPack"]

docs/Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ ArgParse = "c7e460c6-2fb9-53a9-8c5b-16f535851c63"
33
CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
44
ClimaAtmos = "b2c96348-7fb7-4fe0-8da9-78d88439e717"
55
ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c"
6+
ClimaDiagnostics = "1ecacbb8-0713-4841-9a07-eb5aa8a2d53f"
67
DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e"
78
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
89
DocumenterCitations = "daee34ce-89f3-4625-b898-19384cb65244"

docs/src/diagnostics.md

Lines changed: 2 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -84,105 +84,8 @@ writers.
8484

8585
### The low-level interface
8686

87-
Diagnostics are computed and output through callbacks to the main integrator.
88-
`ClimaAtmos` produces the list of callbacks from a ordered list of
89-
`ScheduledDiagnostic`s. These callbacks are orchestrated by a callback
90-
`orchestrate_diagnostics` that runs at the end of every step and calls all the
91-
diagnostic callbacks that are scheduled to be run at that step.
92-
93-
A `ScheduledDiagnostic` is an instruction on how to compute and output a given
94-
`DiagnosticVariable` (see below), along with specific choices regarding
95-
reductions, compute/output frequencies, and so on. It can be point-wise in space
96-
and time, or can be the result of a reduction in a period that is defined by
97-
`output_every` (e.g., the daily average temperature).
98-
99-
More specifically, a `ScheduledDiagnostic` contains the following pieces of data
100-
101-
- `variable`: The diagnostic variable that has to be computed and output.
102-
- `output_every`: Frequency of how often to save the results to disk. If
103-
`output_every` is non-positive, only output at the first time step.
104-
- `output_writer`: Function that controls out to save the computed diagnostic
105-
variable to disk.
106-
- `reduction_time_func`: If not `nothing`, the `ScheduledDiagnostic` receives an
107-
area of scratch space `acc` where to accumulate partial results. Then, at
108-
every `compute_every`, `reduction_time_func` is computed between the
109-
previously stored value in `acc` and the new value. This implements a running
110-
reduction. For example, if `reduction_time_func = max`, the space `acc` will
111-
hold the running maxima of the diagnostic. `acc` is reset after output.
112-
- `reduction_space_func`: NOT IMPLEMENTED YET
113-
- `compute_every`: Run the computations every `compute_every`. This is not
114-
particularly useful for point-wise diagnostics, where we enforce that
115-
`compute_every` = `output_every`. `compute_every` has to evenly divide
116-
`output_every`.
117-
- `pre_output_hook!`: Function that has to be run before saving to disk for
118-
reductions (mostly used to implement averages). The function
119-
`pre_output_hook!` is called with two arguments: the value accumulated during
120-
the reduction, and the number of times the diagnostic was computed from the
121-
last time it was output.
122-
- `output_short_name`: A descriptive name that can be used by the
123-
`output_writer`. If not provided, a default one is generated. It has to be
124-
unique.
125-
- `output_long_name`: A descriptive name that can be used by the `output_writer`
126-
as attribute. If not provided, a default one is generated.
127-
128-
To implement operations like the arithmetic average, the `reduction_time_func`
129-
has to be chosen as `+`, and a `pre_output_hook!` that renormalize `acc` by the
130-
number of samples has to be provided. `pre_output_hook!` should mutate the
131-
accumulator in place. The return value of `pre_output_hook!` is discarded. An
132-
example of `pre_output_hook!` to compute the arithmetic average is
133-
`pre_output_hook!(acc, N) = @. acc = acc / N`. `ClimaAtmos` provides an alias to
134-
the function needed to compute averages `ClimaAtmos.average_pre_output_hook!`.
135-
136-
For custom reductions, it is necessary to also specify the identity of operation
137-
by defining a new method to `identity_of_reduction`. `identity_of_reduction` is
138-
a function that takes a `op` argument, where `op` is the operation for which we
139-
want to define the identity. For instance, for the `max`,
140-
`identity_of_reduction` would be `identity_of_reduction(::typeof{max}) = -Inf`.
141-
The identities known to `ClimaAtmos` are defined in the
142-
`diagnostics/reduction_identities.jl` file. The identity is needed to ensure
143-
that we have a neutral state for the accumulators that are used in the
144-
reductions.
145-
146-
A key entry in a `ScheduledDiagnostic` is the `output_writer`, the function
147-
responsible for saving the output to disk. `output_writer` is called with three
148-
arguments: the value that has to be output, the `ScheduledDiagnostic`, and the
149-
integrator. Internally, the integrator contains extra information (such as the
150-
current timestep), so the `output_writer` can implement arbitrarily complex
151-
behaviors. It is responsibility of the `output_writer` to properly use the
152-
provided information for meaningful output. `ClimaAtmos` provides functions that
153-
return `output_writer`s for standard operations. The main one is currently
154-
`HDF5Writer`, which should be enough for most use cases. To use it, just
155-
initialize a `ClimaAtmos.HDF5Writer` object with your choice of configuration
156-
and pass it as a `output_writer` argument to the `ScheduledDiagnostic`. More
157-
information about the options supported by `ClimaAtmos.HDF5Writer` is available
158-
in its constructor.
159-
160-
There are two flavors of `ScheduledDiagnostic`s:
161-
`ScheduledDiagnosticIterations`, and `ScheduledDiagnosticTime`. The main
162-
difference between the two is the domain of definition of their frequencies,
163-
which is measured in timesteps for the first one, and in seconds for the other
164-
one. `ScheduledDiagnosticTime`s offer a more natural way to set up physically
165-
meaningful reductions (e.g., we want a daily average). However, it is not clear
166-
what to do when the period does not line up with the timestep. What is the
167-
expected behavior when we want a daily average but our timestep is of 10 hours?
168-
There are multiple possible answer to this question. In `ClimaAtmos`, we enforce
169-
that all the periods are multiples of the timestep. With this restriction, a
170-
`ScheduledDiagnosticTime` can be translated to a
171-
`ScheduledDiagnosticIterations`, where the problem is perfectly represented (in
172-
this sense, one can think of `ScheduledDiagnosticIterations` as being as
173-
internal representation and as `ScheduledDiagnosticTime` being the user-facing
174-
one).
175-
176-
`ScheduledDiagnosticTime` behave like as `ScheduledDiagnosticIterations`, with
177-
the exception that they can take a special value for `compute_every`, which can
178-
be set to `:timestep` (the symbol) to ensure that the diagnostic is computed at
179-
the end of every integration step. This is particularly convenient when defining
180-
default diagnostics, as they should be largely independent on the choice of the
181-
specific simulation being run (and its timestep).
182-
183-
Given a timestep `dt`, a `ScheduledDiagnosticIterations` can be obtained from a
184-
`ScheduledDiagnosticTime` `sd` simply by calling
185-
``ScheduledDiagnosticIterations(sd, dt)`.
87+
Check out the documentation for the `ClimaDiagnostics` to find more information
88+
about the low level interface.
18689

18790
## The NetCDF output
18891

examples/Manifest.toml

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
julia_version = "1.10.2"
44
manifest_format = "2.0"
5-
project_hash = "60f53d07d79df5008ec331956e3787f67e499da0"
5+
project_hash = "6787473a7399a92137a6bc5c4e0ab1f75dd24605"
66

77
[[deps.ADTypes]]
88
git-tree-sha1 = "016833eb52ba2d6bea9fcb50ca295980e728ee24"
@@ -85,14 +85,15 @@ version = "1.1.1"
8585

8686
[[deps.ArrayInterface]]
8787
deps = ["Adapt", "LinearAlgebra", "SparseArrays", "SuiteSparse"]
88-
git-tree-sha1 = "44691067188f6bd1b2289552a23e4b7572f4528d"
88+
git-tree-sha1 = "133a240faec6e074e07c31ee75619c90544179cf"
8989
uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
90-
version = "7.9.0"
90+
version = "7.10.0"
9191

9292
[deps.ArrayInterface.extensions]
9393
ArrayInterfaceBandedMatricesExt = "BandedMatrices"
9494
ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices"
9595
ArrayInterfaceCUDAExt = "CUDA"
96+
ArrayInterfaceCUDSSExt = "CUDSS"
9697
ArrayInterfaceChainRulesExt = "ChainRules"
9798
ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore"
9899
ArrayInterfaceReverseDiffExt = "ReverseDiff"
@@ -103,6 +104,7 @@ version = "7.9.0"
103104
BandedMatrices = "aae01518-5342-5314-be14-df237901396f"
104105
BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0"
105106
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
107+
CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e"
106108
ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2"
107109
GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527"
108110
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
@@ -235,9 +237,9 @@ version = "1.0.1+0"
235237

236238
[[deps.CUDA]]
237239
deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "Crayons", "DataFrames", "ExprTools", "GPUArrays", "GPUCompiler", "KernelAbstractions", "LLVM", "LLVMLoopInfo", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "NVTX", "Preferences", "PrettyTables", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "StaticArrays", "Statistics"]
238-
git-tree-sha1 = "3dcab8a2c18ca319ea15a41d90e9528b8e93894a"
240+
git-tree-sha1 = "dd1c682b372b6791b69f6823afe364fc92a0146c"
239241
uuid = "052768ef-5323-5732-b1bb-66c8b64840ba"
240-
version = "5.3.0"
242+
version = "5.3.1"
241243
weakdeps = ["ChainRulesCore", "SpecialFunctions"]
242244

243245
[deps.CUDA.extensions]
@@ -298,16 +300,20 @@ weakdeps = ["SparseArrays"]
298300

299301
[[deps.ClimaAnalysis]]
300302
deps = ["NCDatasets", "OrderedCollections", "Statistics"]
301-
git-tree-sha1 = "13af105a344bb87c6747e57ce0abc55294906fbd"
303+
git-tree-sha1 = "1cc42fc6f284dd721051aca33efdba8676ab2617"
302304
uuid = "29b5916a-a76c-4e73-9657-3c8fd22e65e6"
303-
version = "0.4.1"
304-
weakdeps = ["CairoMakie"]
305+
version = "0.5.1"
305306

306307
[deps.ClimaAnalysis.extensions]
307308
CairoMakieExt = "CairoMakie"
309+
GeoMakieExt = "GeoMakie"
310+
311+
[deps.ClimaAnalysis.weakdeps]
312+
CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
313+
GeoMakie = "db073c08-6b98-4ee5-b6a4-5efafb3259c6"
308314

309315
[[deps.ClimaAtmos]]
310-
deps = ["Adapt", "ArgParse", "ArtifactWrappers", "Artifacts", "AtmosphericProfilesLibrary", "ClimaComms", "ClimaCore", "ClimaParams", "ClimaTimeSteppers", "ClimaUtilities", "CloudMicrophysics", "Colors", "Dates", "Dierckx", "DiffEqBase", "DiffEqCallbacks", "Distributions", "DocStringExtensions", "FastGaussQuadrature", "Insolation", "Interpolations", "IntervalSets", "Krylov", "LinearAlgebra", "Logging", "NCDatasets", "NVTX", "Pkg", "Printf", "RRTMGP", "Random", "RootSolvers", "SciMLBase", "StaticArrays", "Statistics", "StatsBase", "SurfaceFluxes", "Thermodynamics", "YAML"]
316+
deps = ["Adapt", "ArgParse", "ArtifactWrappers", "Artifacts", "AtmosphericProfilesLibrary", "ClimaComms", "ClimaCore", "ClimaDiagnostics", "ClimaParams", "ClimaTimeSteppers", "ClimaUtilities", "CloudMicrophysics", "Colors", "Dates", "Dierckx", "DiffEqBase", "DiffEqCallbacks", "Distributions", "DocStringExtensions", "FastGaussQuadrature", "Insolation", "Interpolations", "IntervalSets", "Krylov", "LinearAlgebra", "Logging", "NCDatasets", "NVTX", "Pkg", "Printf", "RRTMGP", "Random", "RootSolvers", "SciMLBase", "StaticArrays", "Statistics", "StatsBase", "SurfaceFluxes", "Thermodynamics", "YAML"]
311317
path = ".."
312318
uuid = "b2c96348-7fb7-4fe0-8da9-78d88439e717"
313319
version = "0.23.0"
@@ -358,6 +364,12 @@ git-tree-sha1 = "76e6513438a5a888cf548f78b6e71311e370d626"
358364
uuid = "c8b6d40d-e815-466f-95ae-c48aefa668fa"
359365
version = "0.7.5"
360366

367+
[[deps.ClimaDiagnostics]]
368+
deps = ["Accessors", "ClimaComms", "ClimaCore", "Dates", "NCDatasets", "SciMLBase"]
369+
git-tree-sha1 = "fee70c0ba0e056565e8dd71cc4ac55f25e606a74"
370+
uuid = "1ecacbb8-0713-4841-9a07-eb5aa8a2d53f"
371+
version = "0.1.1"
372+
361373
[[deps.ClimaParams]]
362374
deps = ["DocStringExtensions", "TOML", "Test"]
363375
git-tree-sha1 = "528aadfaae6f447df3879eab224625ecceec5982"
@@ -371,10 +383,10 @@ uuid = "595c0a79-7f3d-439a-bc5a-b232dc3bde79"
371383
version = "0.7.19"
372384

373385
[[deps.ClimaUtilities]]
374-
deps = ["Artifacts", "CFTime", "Dates"]
375-
git-tree-sha1 = "d1b30a07829248b325ffffbb739d0f6fe79dfe7c"
386+
deps = ["Artifacts", "Dates"]
387+
git-tree-sha1 = "66b13d461cabc5e9265c9715dba512aea0e1e67f"
376388
uuid = "b3f4f4ca-9299-4f7f-bd9b-81e1242a7513"
377-
version = "0.1.3"
389+
version = "0.1.4"
378390
weakdeps = ["Adapt", "ClimaComms", "ClimaCore", "ClimaCoreTempestRemap", "Interpolations", "NCDatasets"]
379391

380392
[deps.ClimaUtilities.extensions]
@@ -1788,9 +1800,9 @@ version = "0.5.12"
17881800

17891801
[[deps.Pango_jll]]
17901802
deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"]
1791-
git-tree-sha1 = "526f5a03792669e4187e584e8ec9d534248ca765"
1803+
git-tree-sha1 = "cb5a2ab6763464ae0f19c86c56c63d4a2b0f5bda"
17921804
uuid = "36c8627f-9965-5494-a995-c6b170f724f3"
1793-
version = "1.52.1+0"
1805+
version = "1.52.2+0"
17941806

17951807
[[deps.Parameters]]
17961808
deps = ["OrderedCollections", "UnPack"]

examples/Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ ClimaCorePlots = "cf7c7e5a-b407-4c48-9047-11a94a308626"
1515
ClimaCoreSpectra = "c2caaa1d-32ae-4754-ba0d-80e7561362e9"
1616
ClimaCoreTempestRemap = "d934ef94-cdd4-4710-83d6-720549644b70"
1717
ClimaCoreVTK = "c8b6d40d-e815-466f-95ae-c48aefa668fa"
18+
ClimaDiagnostics = "1ecacbb8-0713-4841-9a07-eb5aa8a2d53f"
1819
ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c"
1920
ClimaTimeSteppers = "595c0a79-7f3d-439a-bc5a-b232dc3bde79"
2021
ClimaUtilities = "b3f4f4ca-9299-4f7f-bd9b-81e1242a7513"
@@ -67,7 +68,7 @@ YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6"
6768
[compat]
6869
BlockArrays = "0.16"
6970
CairoMakie = "0.10, 0.11"
70-
ClimaAnalysis = "0.4"
71+
ClimaAnalysis = "0.5.1"
7172
ClimaCoreMakie = "0.3, 0.4"
7273
ClimaCorePlots = "0.2"
7374
ClimaCoreSpectra = "0.1"

0 commit comments

Comments
 (0)