From 3d85ee47b0726b997c014582a2eda16ca93ae5da Mon Sep 17 00:00:00 2001 From: Julia Sloan Date: Tue, 2 Jan 2024 13:58:43 -0800 Subject: [PATCH] rm atm-ocn-lnd --- experiments/ClimaCore/Manifest.toml | 418 +++--------------- experiments/ClimaCore/Project.toml | 3 - experiments/ClimaCore/README.md | 15 +- .../ClimaCore/atm-ocn-lnd/README.tex.md | 3 - .../ClimaCore/atm-ocn-lnd/atmos_rhs.jl | 124 ------ .../ClimaCore/atm-ocn-lnd/atmos_simulation.jl | 133 ------ .../atm-ocn-lnd/dummy_surface_fluxes.jl | 28 -- .../ClimaCore/atm-ocn-lnd/land_simulation.jl | 186 -------- .../ClimaCore/atm-ocn-lnd/ocean_simulation.jl | 76 ---- .../atm-ocn-lnd/run_coupled_simulation.jl | 186 -------- 10 files changed, 71 insertions(+), 1101 deletions(-) delete mode 100644 experiments/ClimaCore/atm-ocn-lnd/README.tex.md delete mode 100644 experiments/ClimaCore/atm-ocn-lnd/atmos_rhs.jl delete mode 100644 experiments/ClimaCore/atm-ocn-lnd/atmos_simulation.jl delete mode 100644 experiments/ClimaCore/atm-ocn-lnd/dummy_surface_fluxes.jl delete mode 100644 experiments/ClimaCore/atm-ocn-lnd/land_simulation.jl delete mode 100644 experiments/ClimaCore/atm-ocn-lnd/ocean_simulation.jl delete mode 100644 experiments/ClimaCore/atm-ocn-lnd/run_coupled_simulation.jl diff --git a/experiments/ClimaCore/Manifest.toml b/experiments/ClimaCore/Manifest.toml index f6f0673181..f1a4be3b99 100644 --- a/experiments/ClimaCore/Manifest.toml +++ b/experiments/ClimaCore/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.10.0" manifest_format = "2.0" -project_hash = "5e0df4999ede0313dd9573cfd3f81b6175d3fdd5" +project_hash = "7453f2d69076b669252dbe4dc1f5fe3e732e1493" [[deps.ADTypes]] git-tree-sha1 = "41c37aa88889c171f1300ceac1313c06e891d245" @@ -51,12 +51,6 @@ weakdeps = ["StaticArrays"] [deps.Adapt.extensions] AdaptStaticArraysExt = "StaticArrays" -[[deps.ArgParse]] -deps = ["Logging", "TextWrap"] -git-tree-sha1 = "3102bce13da501c9104df33549f511cd25264d7d" -uuid = "c7e460c6-2fb9-53a9-8c5b-16f535851c63" -version = "1.1.4" - [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" version = "1.1.1" @@ -99,33 +93,15 @@ weakdeps = ["SparseArrays"] [deps.ArrayLayouts.extensions] ArrayLayoutsSparseArraysExt = "SparseArrays" -[[deps.ArtifactWrappers]] -deps = ["Downloads", "Pkg"] -git-tree-sha1 = "760f4c06375735829b8c1b67560b608b9dba4c6a" -uuid = "a14bc488-3040-4b00-9dc1-f6467924858a" -version = "0.2.0" - [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" -[[deps.AtmosphericProfilesLibrary]] -deps = ["Dierckx", "LinearAlgebra"] -git-tree-sha1 = "c6be1ce28b7870a60400c51c75dc1b08d6a8dd73" -uuid = "86bc3604-9858-485a-bdbe-831ec50de11d" -version = "0.1.4" - [[deps.Atomix]] deps = ["UnsafeAtomics"] git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" version = "0.1.0" -[[deps.AxisAlgorithms]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] -git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712" -uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" -version = "1.1.0" - [[deps.BFloat16s]] deps = ["LinearAlgebra", "Printf", "Random", "Test"] git-tree-sha1 = "dbf84058d0a8cbbadee18d25cf606934b22d7c66" @@ -183,21 +159,15 @@ uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" version = "1.0.8+1" [[deps.CEnum]] -git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" +git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.4.2" - -[[deps.CFTime]] -deps = ["Dates", "Printf"] -git-tree-sha1 = "ed2e76c1c3c43fd9d0cb9248674620b29d71f2d1" -uuid = "179af706-886a-5703-950a-314cd64e0468" -version = "0.1.2" +version = "0.5.0" [[deps.CLIMAParameters]] deps = ["DocStringExtensions", "TOML", "Test"] -git-tree-sha1 = "a085251dfe4b0f732fe2b65d5354e6af91a8e931" +git-tree-sha1 = "7c45e066cd04afc7e29e229045506f5a9afb8970" uuid = "6eacf6c3-8458-43b9-ae03-caf5306d3d53" -version = "0.7.26" +version = "0.8.1" [[deps.CPUSummary]] deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] @@ -206,16 +176,21 @@ uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" version = "0.2.4" [[deps.CUDA]] -deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "ExprTools", "GPUArrays", "GPUCompiler", "KernelAbstractions", "LLVM", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "Preferences", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "SpecialFunctions", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "968c1365e2992824c3e7a794e30907483f8469a9" +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", "Statistics", "UnsafeAtomicsLLVM"] +git-tree-sha1 = "95ac638373ac40e29c1b6d086a3698f5026ff6a6" uuid = "052768ef-5323-5732-b1bb-66c8b64840ba" -version = "4.4.1" +version = "5.1.2" +weakdeps = ["ChainRulesCore", "SpecialFunctions"] + + [deps.CUDA.extensions] + ChainRulesCoreExt = "ChainRulesCore" + SpecialFunctionsExt = "SpecialFunctions" [[deps.CUDA_Driver_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "498f45593f6ddc0adff64a9310bb6710e851781b" +git-tree-sha1 = "d01bfc999768f0a31ed36f5d22a76161fc63079c" uuid = "4ee394cb-3365-5eb0-8335-949819d2adfc" -version = "0.5.0+1" +version = "0.7.0+1" [[deps.CUDA_Runtime_Discovery]] deps = ["Libdl"] @@ -225,9 +200,9 @@ version = "0.2.2" [[deps.CUDA_Runtime_jll]] deps = ["Artifacts", "CUDA_Driver_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "5248d9c45712e51e27ba9b30eebec65658c6ce29" +git-tree-sha1 = "9704e50c9158cf8896c2776b8dbc5edd136caf80" uuid = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" -version = "0.6.0+0" +version = "0.10.1+0" [[deps.Cairo_jll]] deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] @@ -241,12 +216,6 @@ git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" version = "0.5.1" -[[deps.CatIndices]] -deps = ["CustomUnitRanges", "OffsetArrays"] -git-tree-sha1 = "a0f80a09780eed9b1d106a1bf62041c2efc995bc" -uuid = "aafaddc9-749c-510e-ac4f-586e18779b91" -version = "0.2.2" - [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra"] git-tree-sha1 = "c1deebd76f7a443d527fc0430d5758b8b2112ed8" @@ -257,12 +226,6 @@ weakdeps = ["SparseArrays"] [deps.ChainRulesCore.extensions] ChainRulesCoreSparseArraysExt = "SparseArrays" -[[deps.ClimaAtmos]] -deps = ["ArgParse", "ArtifactWrappers", "Artifacts", "AtmosphericProfilesLibrary", "CLIMAParameters", "ClimaComms", "ClimaCore", "ClimaTimeSteppers", "CloudMicrophysics", "Colors", "Dates", "Dierckx", "DiffEqBase", "DiffEqCallbacks", "DocStringExtensions", "FastGaussQuadrature", "ImageFiltering", "Insolation", "Interpolations", "IntervalSets", "Krylov", "LinearAlgebra", "Logging", "NCDatasets", "NVTX", "Pkg", "Printf", "RRTMGP", "Random", "RootSolvers", "SciMLBase", "StaticArrays", "Statistics", "StatsBase", "SurfaceFluxes", "Test", "Thermodynamics", "YAML"] -git-tree-sha1 = "c56a1c62b724a349cdbd75e27adfe6fe6f51063d" -uuid = "b2c96348-7fb7-4fe0-8da9-78d88439e717" -version = "0.18.0" - [[deps.ClimaComms]] deps = ["CUDA", "MPI"] git-tree-sha1 = "57c054ddd4280ca8e2b5915ef1cf1395c4edbc78" @@ -291,12 +254,6 @@ git-tree-sha1 = "70232f82ffaab9dc52585e0dd043b5e0c6b714f1" uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" version = "0.1.12" -[[deps.CloudMicrophysics]] -deps = ["CLIMAParameters", "DocStringExtensions", "ForwardDiff", "RootSolvers", "SpecialFunctions", "Thermodynamics"] -git-tree-sha1 = "a6993c57af74e2e0f2191b556178cc8d8c0df9d6" -uuid = "6a9e3e04-43cd-43ba-94b9-e8782df3c71b" -version = "0.15.1" - [[deps.CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" @@ -331,12 +288,6 @@ git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" version = "0.12.10" -[[deps.CommonDataModel]] -deps = ["CFTime", "DataStructures", "Dates", "Preferences", "Printf"] -git-tree-sha1 = "7f5717cbb2c1ce650cfd454451f282df33103596" -uuid = "1fbeeb36-5f17-413c-809b-666fb144f157" -version = "0.2.5" - [[deps.CommonSolve]] git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" @@ -372,11 +323,6 @@ weakdeps = ["InverseFunctions"] [deps.CompositionsBase.extensions] CompositionsBaseInverseFunctionsExt = "InverseFunctions" -[[deps.ComputationalResources]] -git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" -uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3" -version = "0.3.2" - [[deps.ConcreteStructs]] git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34" uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" @@ -421,16 +367,17 @@ git-tree-sha1 = "253193dfb0384646936c5ff3230b27a20d91261e" uuid = "7445602f-e544-4518-8976-18f8e8ae6cdb" version = "0.2.4" -[[deps.CustomUnitRanges]] -git-tree-sha1 = "1a3f97f907e6dd8983b744d2642651bb162a3f7a" -uuid = "dc8bdbbb-1ca9-579f-8c36-e416f6a65cce" -version = "1.0.2" - [[deps.DataAPI]] git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" version = "1.15.0" +[[deps.DataFrames]] +deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] +git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" +uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +version = "1.6.1" + [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] git-tree-sha1 = "ac67408d9ddf207de5cfa9a97e114352430f01ed" @@ -458,18 +405,6 @@ git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" version = "1.9.1" -[[deps.Dierckx]] -deps = ["Dierckx_jll"] -git-tree-sha1 = "d1ea9f433781bb6ff504f7d3cb70c4782c504a3a" -uuid = "39dd38d3-220a-591b-8e3c-4c3a8c710a94" -version = "0.5.3" - -[[deps.Dierckx_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6596b96fe1caff3db36415eeb6e9d3b50bfe40ee" -uuid = "cd4c43a9-7502-52ba-aa6d-59fb2a88580b" -version = "0.1.0+0" - [[deps.DiffEqBase]] deps = ["ArrayInterface", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Static", "StaticArraysCore", "Statistics", "Tricks", "TruncatedStacktraces"] git-tree-sha1 = "05b19d9101db42afeb02d1f402d5e9a7986c44f7" @@ -645,12 +580,6 @@ git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" version = "4.4.4+1" -[[deps.FFTViews]] -deps = ["CustomUnitRanges", "FFTW"] -git-tree-sha1 = "cbdf14d1e8c7c8aacbe8b19862e0179fd08321c2" -uuid = "4f61f5a4-77b1-5117-aa51-3ab5ef4ef0cd" -version = "0.3.2" - [[deps.FFTW]] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] git-tree-sha1 = "ec22cbbcd01cba8f41eecd7d44aac1f23ee985e3" @@ -680,12 +609,6 @@ git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef" uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a" version = "0.3.2" -[[deps.FastGaussQuadrature]] -deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"] -git-tree-sha1 = "fd923962364b645f3719855c88f7074413a6ad92" -uuid = "442a2c76-b920-505d-bb47-c5924d526838" -version = "1.0.2" - [[deps.FastLapackInterface]] deps = ["LinearAlgebra"] git-tree-sha1 = "b12f05108e405dadcc2aff0008db7f831374e051" @@ -798,9 +721,9 @@ version = "3.3.9+0" [[deps.GPUArrays]] deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "2e57b4a4f9cc15e85a24d603256fe08e527f48d1" +git-tree-sha1 = "85d7fb51afb3def5dcb85ad31c3707795c8bccc1" uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "8.8.1" +version = "9.1.0" [[deps.GPUArraysCore]] deps = ["Adapt"] @@ -810,9 +733,9 @@ version = "0.1.5" [[deps.GPUCompiler]] deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "Scratch", "TimerOutputs", "UUIDs"] -git-tree-sha1 = "72b2e3c2ba583d1a7aa35129e56cf92e07c083e3" +git-tree-sha1 = "a846f297ce9d09ccba02ead0cae70690e072a119" uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" -version = "0.21.4" +version = "0.25.0" [[deps.GR]] deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] @@ -855,11 +778,6 @@ git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" version = "2.76.5+0" -[[deps.Glob]] -git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" -uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" -version = "1.3.1" - [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" @@ -922,40 +840,16 @@ git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" version = "0.1.1" -[[deps.ImageBase]] -deps = ["ImageCore", "Reexport"] -git-tree-sha1 = "eb49b82c172811fd2c86759fa0553a2221feb909" -uuid = "c817782e-172a-44cc-b673-b171935fbb9e" -version = "0.1.7" - -[[deps.ImageCore]] -deps = ["AbstractFFTs", "ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] -git-tree-sha1 = "fc5d1d3443a124fde6e92d0260cd9e064eba69f8" -uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.10.1" - -[[deps.ImageFiltering]] -deps = ["CatIndices", "ComputationalResources", "DataStructures", "FFTViews", "FFTW", "ImageBase", "ImageCore", "LinearAlgebra", "OffsetArrays", "PrecompileTools", "Reexport", "SparseArrays", "StaticArrays", "Statistics", "TiledIteration"] -git-tree-sha1 = "432ae2b430a18c58eb7eca9ef8d0f2db90bc749c" -uuid = "6a3955dd-da59-5b1f-98d4-e7296123deb5" -version = "0.7.8" - -[[deps.IncompleteLU]] -deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "6c676e79f98abb6d33fa28122cad099f1e464afe" -uuid = "40713840-3770-5561-ab4c-a76e7d0d7895" -version = "0.2.1" - [[deps.Inflate]] git-tree-sha1 = "ea8031dea4aff6bd41f1df8f2fdfb25b33626381" uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" version = "0.1.4" -[[deps.Insolation]] -deps = ["Artifacts", "Dates", "DelimitedFiles", "Interpolations"] -git-tree-sha1 = "2679907708edd9bbe2bd98585e575b48f17902c8" -uuid = "e98cc03f-d57e-4e3c-b70c-8d51efe9e0d8" -version = "0.8.2" +[[deps.InlineStrings]] +deps = ["Parsers"] +git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" +uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" +version = "1.4.0" [[deps.IntegerMathUtils]] git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" @@ -972,16 +866,6 @@ version = "2024.0.2+0" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -[[deps.Interpolations]] -deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] -git-tree-sha1 = "88a101217d7cb38a7b481ccd50d21876e1d1b0e0" -uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" -version = "0.15.1" -weakdeps = ["Unitful"] - - [deps.Interpolations.extensions] - InterpolationsUnitfulExt = "Unitful" - [[deps.IntervalSets]] deps = ["Dates", "Statistics"] git-tree-sha1 = "ad841eddfb05f6d9be0bff1fa48dcae32f134a2d" @@ -994,17 +878,16 @@ git-tree-sha1 = "68772f49f54b479fa88ace904f6127f0a3bb2e46" uuid = "3587e190-3f89-42d0-90ee-14403ec27112" version = "0.1.12" +[[deps.InvertedIndices]] +git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" +uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" +version = "1.3.0" + [[deps.IrrationalConstants]] git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" version = "0.2.2" -[[deps.IterativeSolvers]] -deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"] -git-tree-sha1 = "b435d190ef8369cf4d79cc9dd5fba88ba0165307" -uuid = "42fd0dbc-a981-5370-80f2-aaf504508153" -version = "0.9.3" - [[deps.IteratorInterfaceExtensions]] git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" uuid = "82899510-4779-5014-852e-03e436cf321d" @@ -1034,18 +917,6 @@ git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" version = "0.21.4" -[[deps.JSON3]] -deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] -git-tree-sha1 = "eb3edce0ed4fa32f75a0a11217433c31d56bd48b" -uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" -version = "1.14.0" - - [deps.JSON3.extensions] - JSON3ArrowExt = ["ArrowTypes"] - - [deps.JSON3.weakdeps] - ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" - [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "60b1194df0a3298f460063de985eae7b01bc011a" @@ -1130,6 +1001,11 @@ git-tree-sha1 = "98eaee04d96d973e79c25d49167668c5c8fb50e2" uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" version = "0.0.27+1" +[[deps.LLVMLoopInfo]] +git-tree-sha1 = "2e5c102cfc41f48ae4740c7eca7743cc7e7b75ea" +uuid = "8b046642-f1f6-4319-8d3c-209ddc03c586" +version = "1.0.0" + [[deps.LLVMOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713" @@ -1301,16 +1177,16 @@ weakdeps = ["ChainRulesCore"] LinearOperatorsChainRulesCoreExt = "ChainRulesCore" [[deps.LinearSolve]] -deps = ["ArrayInterface", "ConcreteStructs", "DocStringExtensions", "EnumX", "EnzymeCore", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "Libdl", "LinearAlgebra", "MKL_jll", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "Requires", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "UnPack"] -git-tree-sha1 = "051943b8b8e81c548e9d099d6eb3d3ed23093c35" +deps = ["ArrayInterface", "ConcreteStructs", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "Libdl", "LinearAlgebra", "MKL_jll", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "StaticArraysCore", "UnPack"] +git-tree-sha1 = "6f8e084deabe3189416c4e505b1c53e1b590cae8" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "2.20.0" +version = "2.22.1" [deps.LinearSolve.extensions] LinearSolveBandedMatricesExt = "BandedMatrices" LinearSolveBlockDiagonalsExt = "BlockDiagonals" LinearSolveCUDAExt = "CUDA" - LinearSolveEnzymeExt = "Enzyme" + LinearSolveEnzymeExt = ["Enzyme", "EnzymeCore"] LinearSolveFastAlmostBandedMatricesExt = ["FastAlmostBandedMatrices"] LinearSolveHYPREExt = "HYPRE" LinearSolveIterativeSolversExt = "IterativeSolvers" @@ -1325,6 +1201,7 @@ version = "2.20.0" BlockDiagonals = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e" HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153" @@ -1419,11 +1296,6 @@ git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" version = "0.1.8" -[[deps.MappedArrays]] -git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" -uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" -version = "0.4.2" - [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" @@ -1465,12 +1337,6 @@ version = "1.1.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" -[[deps.MosaicViews]] -deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] -git-tree-sha1 = "7b86a5d4d70a9f5cdf2dacb3cbe6d251d1a61dbe" -uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389" -version = "0.3.4" - [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" version = "2023.1.10" @@ -1480,12 +1346,6 @@ git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" version = "0.2.4" -[[deps.NCDatasets]] -deps = ["CFTime", "CommonDataModel", "DataStructures", "Dates", "NetCDF_jll", "NetworkOptions", "Printf"] -git-tree-sha1 = "4263c4220f22e20729329838bf7e94a49d1ac32f" -uuid = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" -version = "0.12.17" - [[deps.NLSolversBase]] deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" @@ -1516,12 +1376,6 @@ git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" version = "1.0.2" -[[deps.NetCDF_jll]] -deps = ["Artifacts", "Bzip2_jll", "HDF5_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "XML2_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "10c612c81eaffdd6b7c28a45a554cdd9d2f40ff1" -uuid = "7243133f-43d8-5620-bbf4-c2c921802cf3" -version = "400.902.208+0" - [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" @@ -1542,12 +1396,6 @@ version = "2.8.2" FastLevenbergMarquardt = "7a0df574-e128-4d35-8cbd-3d84502bf7ce" LeastSquaresOptim = "0fc2ff8b-aaa3-5acd-a817-1944a5e08891" -[[deps.Oceananigans]] -deps = ["Adapt", "CUDA", "Crayons", "CubedSphere", "Dates", "Distances", "DocStringExtensions", "FFTW", "Glob", "IncompleteLU", "InteractiveUtils", "IterativeSolvers", "JLD2", "KernelAbstractions", "LinearAlgebra", "Logging", "MPI", "NCDatasets", "OffsetArrays", "OrderedCollections", "PencilArrays", "PencilFFTs", "Pkg", "Printf", "Random", "Rotations", "SeawaterPolynomials", "SparseArrays", "Statistics", "StructArrays"] -git-tree-sha1 = "1821dce5269caa6f9dc3df3e1b97928b39f233b5" -uuid = "9e8cae18-63c1-5223-a75c-80ca9d6e9a09" -version = "0.88.0" - [[deps.OffsetArrays]] git-tree-sha1 = "6a731f2b5c03157418a20c12195eb4b74c8f8621" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" @@ -1637,12 +1485,6 @@ uuid = "65ce6f38-6b18-4e1d-a461-8949797d7930" version = "1.0.2" weakdeps = ["Requires", "TOML"] -[[deps.PaddedViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "0fac6313486baae819364c52b4f483450a9d793f" -uuid = "5432bcbf-9aad-5242-b902-cca2824c8663" -version = "0.5.12" - [[deps.Parameters]] deps = ["OrderedCollections", "UnPack"] git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" @@ -1655,23 +1497,6 @@ git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" version = "2.8.1" -[[deps.PencilArrays]] -deps = ["Adapt", "JSON3", "LinearAlgebra", "MPI", "OffsetArrays", "Random", "Reexport", "StaticArrayInterface", "StaticArrays", "StaticPermutations", "Strided", "TimerOutputs", "VersionParsing"] -git-tree-sha1 = "6510e851700a851944f7ffa5cd990cced4802ad2" -uuid = "0e08944d-e94e-41b1-9406-dcf66b6a9d2e" -version = "0.19.3" -weakdeps = ["DiffEqBase", "HDF5"] - - [deps.PencilArrays.extensions] - PencilArraysDiffEqExt = ["DiffEqBase"] - PencilArraysHDF5Ext = ["HDF5"] - -[[deps.PencilFFTs]] -deps = ["AbstractFFTs", "FFTW", "LinearAlgebra", "MPI", "PencilArrays", "Reexport", "TimerOutputs"] -git-tree-sha1 = "bd69f3f0ee248cfb4241800aefb705b5ded592ff" -uuid = "4a48f351-57a6-4416-9ec4-c37015456aae" -version = "0.15.1" - [[deps.Pipe]] git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" @@ -1744,6 +1569,12 @@ git-tree-sha1 = "240d7170f5ffdb285f9427b92333c3463bf65bf6" uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" version = "0.2.1" +[[deps.PooledArrays]] +deps = ["DataAPI", "Future"] +git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" +uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" +version = "1.4.3" + [[deps.PositiveFactorizations]] deps = ["LinearAlgebra"] git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" @@ -1824,22 +1655,10 @@ weakdeps = ["Distributions"] [deps.QuasiMonteCarlo.extensions] QuasiMonteCarloDistributionsExt = "Distributions" -[[deps.Quaternions]] -deps = ["LinearAlgebra", "Random", "RealDot"] -git-tree-sha1 = "9a46862d248ea548e340e30e2894118749dc7f51" -uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" -version = "0.7.5" - [[deps.REPL]] deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" -[[deps.RRTMGP]] -deps = ["Adapt", "CUDA", "ClimaComms", "DocStringExtensions", "GaussQuadrature", "Random", "StaticArrays"] -git-tree-sha1 = "40ea97b2334725cef9b7f9e2fc2f76b35596807d" -uuid = "a01a1ee8-cea4-48fc-987c-fc7878d79da1" -version = "0.10.0" - [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" @@ -1856,22 +1675,6 @@ git-tree-sha1 = "043da614cc7e95c703498a491e2c21f58a2b8111" uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" version = "1.5.3" -[[deps.Ratios]] -deps = ["Requires"] -git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b" -uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" -version = "0.4.5" -weakdeps = ["FixedPointNumbers"] - - [deps.Ratios.extensions] - RatiosFixedPointNumbersExt = "FixedPointNumbers" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - [[deps.RecipesBase]] deps = ["PrecompileTools"] git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" @@ -1949,12 +1752,6 @@ git-tree-sha1 = "833d9914e748ca9329b762a82ec912897975f8d8" uuid = "7181ea78-2dcb-4de3-ab41-2b8ab5a31e74" version = "0.4.1" -[[deps.Rotations]] -deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays"] -git-tree-sha1 = "792d8fd4ad770b6d517a13ebb8dadfcac79405b8" -uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc" -version = "1.6.1" - [[deps.RuntimeGeneratedFunctions]] deps = ["ExprTools", "SHA", "Serialization"] git-tree-sha1 = "6aacc5eefe8415f47b3e34214c1d79d2674a0ba2" @@ -2017,10 +1814,11 @@ git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" uuid = "6c6a2e73-6563-6170-7368-637461726353" version = "1.2.1" -[[deps.SeawaterPolynomials]] -git-tree-sha1 = "cf8ab1e739ba240aefeaad1fe17014330ef65fd1" -uuid = "d496a93d-167e-4197-9f49-d3af4ff8fe40" -version = "0.3.3" +[[deps.SentinelArrays]] +deps = ["Dates", "Random"] +git-tree-sha1 = "0e7508ff27ba32f26cd459474ca2ede1bc10991f" +uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" +version = "1.4.1" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -2091,17 +1889,19 @@ version = "1.10.0" [[deps.SparseDiffTools]] deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Random", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Tricks", "UnPack", "VertexSafeGraphs"] -git-tree-sha1 = "c281e11db4eacb36a292a054bac83c5a0aca2a26" +git-tree-sha1 = "3b38ae7a1cbe9b8b1344359599753957644b03d4" uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "2.15.0" +version = "2.16.0" [deps.SparseDiffTools.extensions] SparseDiffToolsEnzymeExt = "Enzyme" + SparseDiffToolsPolyesterForwardDiffExt = "PolyesterForwardDiff" SparseDiffToolsSymbolicsExt = "Symbolics" SparseDiffToolsZygoteExt = "Zygote" [deps.SparseDiffTools.weakdeps] Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" @@ -2121,12 +1921,6 @@ weakdeps = ["ChainRulesCore"] [deps.SpecialFunctions.extensions] SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" -[[deps.StackViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "46e589465204cd0c08b4bd97385e4fa79a0c770c" -uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15" -version = "0.1.1" - [[deps.Static]] deps = ["IfElse"] git-tree-sha1 = "f295e0a1da4ca425659c57441bcb59abb035a4bc" @@ -2160,11 +1954,6 @@ git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" version = "1.4.2" -[[deps.StaticPermutations]] -git-tree-sha1 = "193c3daa18ff3e55c1dae66acb6a762c4a3bdb0b" -uuid = "15972242-4b8f-49a0-b8a1-9ac0e7a1a45d" -version = "0.3.0" - [[deps.Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" @@ -2211,46 +2000,12 @@ git-tree-sha1 = "d6415f66f3d89c615929af907fdc6a3e17af0d8c" uuid = "7792a7ef-975c-4747-a70f-980b88e8d1da" version = "0.5.2" -[[deps.Strided]] -deps = ["LinearAlgebra", "StridedViews", "TupleTools"] -git-tree-sha1 = "40c69be0e1b72ee2f42923b7d1ff13e0b04e675c" -uuid = "5e0ebb24-38b0-5f93-81fe-25c709ecae67" -version = "2.0.4" - -[[deps.StridedViews]] -deps = ["LinearAlgebra", "PackageExtensionCompat"] -git-tree-sha1 = "5b765c4e401693ab08981989f74a36a010aa1d8e" -uuid = "4db3bf67-4bd7-4b4e-b153-31dc3fb37143" -version = "0.2.2" -weakdeps = ["CUDA"] - - [deps.StridedViews.extensions] - StridedViewsCUDAExt = "CUDA" - -[[deps.StringEncodings]] -deps = ["Libiconv_jll"] -git-tree-sha1 = "b765e46ba27ecf6b44faf70df40c57aa3a547dcb" -uuid = "69024149-9ee7-55f6-a4c4-859efe599b68" -version = "0.3.7" - [[deps.StringManipulation]] deps = ["PrecompileTools"] git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" version = "0.3.4" -[[deps.StructArrays]] -deps = ["Adapt", "ConstructionBase", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] -git-tree-sha1 = "0a3db38e4cce3c54fe7a71f831cd7b6194a54213" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.16" - -[[deps.StructTypes]] -deps = ["Dates", "UUIDs"] -git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" -uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" -version = "1.10.0" - [[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" @@ -2262,9 +2017,9 @@ version = "7.2.1+1" [[deps.Sundials]] deps = ["CEnum", "DataStructures", "DiffEqBase", "Libdl", "LinearAlgebra", "Logging", "PrecompileTools", "Reexport", "SciMLBase", "SparseArrays", "Sundials_jll"] -git-tree-sha1 = "71dc65a2d7decdde5500299c9b04309e0138d1b4" +git-tree-sha1 = "ded52f017fe7faa3d004427f10ecce4c0491c16a" uuid = "c3572dad-4567-51f8-b174-8c6c989267f4" -version = "4.20.1" +version = "4.23.1" [[deps.Sundials_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "SuiteSparse_jll", "libblastrampoline_jll"] @@ -2272,12 +2027,6 @@ git-tree-sha1 = "ba4d38faeb62de7ef47155ed321dce40a549c305" uuid = "fb77eaff-e24c-56d4-86b1-d163f2edb164" version = "5.2.2+0" -[[deps.SurfaceFluxes]] -deps = ["CLIMAParameters", "DocStringExtensions", "RootSolvers", "Thermodynamics"] -git-tree-sha1 = "a167924897731ee57ef0197bb19357bfc2d007bc" -uuid = "49b00bb7-8bd4-4f2b-b78c-51cd0450215f" -version = "0.8.1" - [[deps.SymbolicIndexingInterface]] deps = ["DocStringExtensions"] git-tree-sha1 = "f8ab052bfcbdb9b48fad2c80c873aa0d0344dfe5" @@ -2334,29 +2083,12 @@ version = "0.1.7" deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" -[[deps.TextWrap]] -git-tree-sha1 = "9250ef9b01b66667380cf3275b3f7488d0e25faf" -uuid = "b718987f-49a8-5099-9789-dcd902bef87d" -version = "1.0.1" - -[[deps.Thermodynamics]] -deps = ["DocStringExtensions", "KernelAbstractions", "Random", "RootSolvers"] -git-tree-sha1 = "2de4b5ccc71baf3578959928c295a2fa13105db7" -uuid = "b60c26fb-14c3-4610-9d3e-2d17fe7ff00c" -version = "0.11.2" - [[deps.ThreadingUtilities]] deps = ["ManualMemory"] git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27" uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" version = "0.5.2" -[[deps.TiledIteration]] -deps = ["OffsetArrays", "StaticArrayInterface"] -git-tree-sha1 = "1176cc31e867217b06928e2f140c90bd1bc88283" -uuid = "06e1c1a7-607b-532d-9fad-de7d9aa2abac" -version = "0.5.0" - [[deps.TimerOutputs]] deps = ["ExprTools", "Printf"] git-tree-sha1 = "f548a9e9c490030e545f72074a41edfd0e5bcdd7" @@ -2389,11 +2121,6 @@ git-tree-sha1 = "ea3e54c2bdde39062abf5a9758a23735558705e1" uuid = "781d530d-4396-4725-bb49-402e4bee1e77" version = "1.4.0" -[[deps.TupleTools]] -git-tree-sha1 = "155515ed4c4236db30049ac1495e2969cc06be9d" -uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6" -version = "1.4.3" - [[deps.URIs]] git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" @@ -2462,11 +2189,6 @@ git-tree-sha1 = "7209df901e6ed7489fe9b7aa3e46fb788e15db85" uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" version = "0.21.65" -[[deps.VersionParsing]] -git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" -uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" -version = "1.3.0" - [[deps.VertexSafeGraphs]] deps = ["Graphs"] git-tree-sha1 = "8351f8d73d7e880bfc042a8b6922684ebeafb35c" @@ -2491,12 +2213,6 @@ git-tree-sha1 = "93f43ab61b16ddfb2fd3bb13b3ce241cafb0e6c9" uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" version = "1.31.0+0" -[[deps.WoodburyMatrices]] -deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "c1a7aa6219628fcd757dede0ca95e245c5cd9511" -uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" -version = "1.0.0" - [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] git-tree-sha1 = "801cbe47eae69adc50f36c3caec4758d2650741b" @@ -2659,12 +2375,6 @@ git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" version = "1.5.0+0" -[[deps.YAML]] -deps = ["Base64", "Dates", "Printf", "StringEncodings"] -git-tree-sha1 = "e6330e4b731a6af7959673621e91645eb1356884" -uuid = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6" -version = "0.4.9" - [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" diff --git a/experiments/ClimaCore/Project.toml b/experiments/ClimaCore/Project.toml index e985790e48..7dc954679c 100644 --- a/experiments/ClimaCore/Project.toml +++ b/experiments/ClimaCore/Project.toml @@ -1,6 +1,5 @@ [deps] CLIMAParameters = "6eacf6c3-8458-43b9-ae03-caf5306d3d53" -ClimaAtmos = "b2c96348-7fb7-4fe0-8da9-78d88439e717" ClimaCore = "d414da3d-4745-48bb-8d80-42e94e092884" ClimaTimeSteppers = "595c0a79-7f3d-439a-bc5a-b232dc3bde79" DifferentialEquations = "0c46a032-eb83-5123-abaf-570d42b7fbaa" @@ -9,7 +8,6 @@ IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Logging = "56ddb016-857b-54e1-b83d-db4d58db5568" -Oceananigans = "9e8cae18-63c1-5223-a75c-80ca9d6e9a09" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" PrettyTables = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd" @@ -24,7 +22,6 @@ DifferentialEquations = "7.10" FileIO = "1.16" IntervalSets = "0.6" LinearAlgebra = "1.0" -Oceananigans = "0.88" PrettyTables = "2.3" RecursiveArrayTools = "2.38" TerminalLoggers = "0.1" diff --git a/experiments/ClimaCore/README.md b/experiments/ClimaCore/README.md index 9ef9ba8931..7fe682f953 100644 --- a/experiments/ClimaCore/README.md +++ b/experiments/ClimaCore/README.md @@ -4,18 +4,17 @@ - these experiments represent the basic cases for testing physical soundness of coupling methods in [ClimaCore.jl](https://github.com/CliMA/ClimaCore.jl/) - 1D finite-difference column test cases - Integration tests for individual functionalities - - Dry heat diffusion + slab (`experiments/ClimaCore/heat-diffusion/`) + - Dry heat diffusive atmos + slab surface (`experiments/ClimaCore/heat-diffusion/`) - Purpose: - minimal example for prototype developments and integration tests - flux calculation / accumulation inside the atmos model `rhs!` - one-file tutorial - - - Interface tests - - Ekman column + Land (+ Oceananigans) (`experiments/ClimaCore/atm-ocn-lnd/`) + - 2D box test cases + - Integration test - seabreeze experiment + - Dry heat diffusive atmos + slab ocean + slab land (`experiments/ClimaCore/sea_breeze/`) - Purpose: - - combine all three interfaces - - showcase ClimaCoupler interface functions - - let flux calculation be done by coupler - - tested with SurfaceFluxes.jl + - demonstrate coupling of a simple atmosphere model with multiple surface models + - expand domain from 1D to 2D case + - flux calculations, exchange, and accumulation - documentation and test results can be found in our [Design Doc](https://www.overleaf.com/read/bgfmhgtncpws). diff --git a/experiments/ClimaCore/atm-ocn-lnd/README.tex.md b/experiments/ClimaCore/atm-ocn-lnd/README.tex.md deleted file mode 100644 index 557f0c114c..0000000000 --- a/experiments/ClimaCore/atm-ocn-lnd/README.tex.md +++ /dev/null @@ -1,3 +0,0 @@ -# Atmos-Ocean-Soil Columns - -This is a prototype for testing the three-way model coupling. Please Test Case 3 in the [Coupler Design Docs](https://www.overleaf.com/project/610c13492c7d0e8d459e72b8) for details. \ No newline at end of file diff --git a/experiments/ClimaCore/atm-ocn-lnd/atmos_rhs.jl b/experiments/ClimaCore/atm-ocn-lnd/atmos_rhs.jl deleted file mode 100644 index 52008ff279..0000000000 --- a/experiments/ClimaCore/atm-ocn-lnd/atmos_rhs.jl +++ /dev/null @@ -1,124 +0,0 @@ -# Atmos RHS - -#= -Ekman column: - ∂_t ρ = ∇ (μ ∇ ρ - w ρ) - ∂_t ρθ = ∇ (μ ∇ ρθ - w ρθ) - ∂_t u = ∇ (μ ∇ u - w u) + (v - v_g) - ∂_t v = ∇ (μ ∇ v - w v) - (u - u_g) - ∂_t w = ∇ (μ ∇ w - w w) - g - c_p θ ∂_z Π - -where - Π = (p/p_0)^{R/c_p} - -top BCs are insulating and impenetrable: - ∂_t T = 0 - u = u_g - v = v_g - w = 0.0 - ∂_t ρ = 0 - -and bottom BCs use bulk formulae for surface fluxes of heat and momentum: - ∂_t ρθ = F₃ = -Ch ρ ||u|| (T_sfc - ρθ / ρ) - ∂_t u = F₁ = -Cd u ||u|| - ∂_t v = F₂ = -Cd v ||u|| - w = 0.0 - ∂_t ρ = 0 - -We also use this model to accumulate fluxes it calculates - ∂_t F_accum = -(F₁, F₂, F₃) -=# - -function ∑tendencies_atm!(dY, Y, (parameters, T_sfc), t) - - (; Ch, Cd, f, ν, ug, vg, C_p, MSLP, R_d, R_m, C_v, grav) = parameters - - #@show(t, Y.x[3]) - (Yc, Yf, F_sfc) = Y.x - (dYc, dYf, dF_sfc) = dY.x - - (; ρ, u, v, ρθ) = Yc - (; w) = Yf - dρ = dYc.ρ - du = dYc.u - dv = dYc.v - dρθ = dYc.ρθ - dw = dYf.w - - # Auxiliary calculations - u_1 = parent(u)[1] - v_1 = parent(v)[1] - ρ_1 = parent(ρ)[1] - ρθ_1 = parent(ρθ)[1] - u_wind = sqrt(u_1^2 + v_1^2) - - # surface flux calculations - surface_flux_ρθ = - -calculate_sfc_fluxes_energy( - DryBulkFormulaWithRadiation(), - parameters, - T_sfc[1], - parent(ρθ)[1] / parent(ρ)[1], - u_1, - v_1, - ρ_1, - t, - ) ./ C_p - surface_flux_u = -Cd * u_1 * sqrt(u_1^2 + v_1^2) - surface_flux_v = -Cd * v_1 * sqrt(u_1^2 + v_1^2) - - # accumulate in the required right units - @inbounds begin - dY.x[3][1] = -ρ_1 * surface_flux_u # - dY.x[3][2] = -ρ_1 * surface_flux_v # - dY.x[3][3] = -C_p * surface_flux_ρθ # W / m^2 - end - - # @inbounds begin - # dY.x[3][1] = - 10.0 - # dY.x[3][2] = - 1.0 - # dY.x[3][3] = - 1.0 - # end - - # Density tendency (located at cell centers) - gradc2f = Operators.GradientC2F() - gradf2c = Operators.GradientF2C(bottom = Operators.SetValue(0.0), top = Operators.SetValue(0.0)) - - If = Operators.InterpolateC2F(bottom = Operators.Extrapolate(), top = Operators.Extrapolate()) - @. dρ = gradf2c(-w * If(ρ)) # Eq. 4.11 - - # Potential temperature tendency (located at cell centers) - gradc2f = Operators.GradientC2F() - gradf2c = Operators.GradientF2C(bottom = Operators.SetValue(surface_flux_ρθ), top = Operators.SetValue(0.0)) # Eq. 4.20, 4.21 - - @. dρθ = gradf2c(-w * If(ρθ) + ν * gradc2f(ρθ / ρ)) # Eq. 4.12 - - # u velocity tendency (located at cell centers) - gradc2f = Operators.GradientC2F(top = Operators.SetValue(ug)) # Eq. 4.18 - gradf2c = Operators.GradientF2C(bottom = Operators.SetValue(Cd * u_wind * u_1)) # Eq. 4.16 - - A = Operators.AdvectionC2C(bottom = Operators.SetValue(0.0), top = Operators.SetValue(0.0)) - @. du = gradf2c(ν * gradc2f(u)) + f * (v - vg) - A(w, u) # Eq. 4.8 - - # v velocity (centers) - gradc2f = Operators.GradientC2F(top = Operators.SetValue(vg)) # Eq. 4.18 - gradf2c = Operators.GradientF2C(bottom = Operators.SetValue(Cd * u_wind * v_1)) # Eq. 4.16 - - A = Operators.AdvectionC2C(bottom = Operators.SetValue(0.0), top = Operators.SetValue(0.0)) - @. dv = gradf2c(ν * gradc2f(v)) - f * (u - ug) - A(w, v) # Eq. 4.9 - - # w velocity (faces) - gradc2f = Operators.GradientC2F() - gradf2c = Operators.GradientF2C(bottom = Operators.SetValue(0.0), top = Operators.SetValue(0.0)) - - B = Operators.SetBoundaryOperator(bottom = Operators.SetValue(0.0), top = Operators.SetValue(0.0)) - If = Operators.InterpolateC2F(bottom = Operators.Extrapolate(), top = Operators.Extrapolate()) - println(R_d ./ C_p) - println(ρθ) - println(t) - Π(ρθ) = C_p .* (R_d .* ρθ ./ MSLP) .^ (R_m ./ C_v) - - @. dw = B(-(If(ρθ / ρ) * gradc2f(Π(ρθ))) - grav + gradc2f(ν * gradf2c(w)) - w * If(gradf2c(w))) # Eq. 4.10 # this makes everything unstable... use new ClimaAtmos rhs! - - return dY -end diff --git a/experiments/ClimaCore/atm-ocn-lnd/atmos_simulation.jl b/experiments/ClimaCore/atm-ocn-lnd/atmos_simulation.jl deleted file mode 100644 index eee794ab9f..0000000000 --- a/experiments/ClimaCore/atm-ocn-lnd/atmos_simulation.jl +++ /dev/null @@ -1,133 +0,0 @@ -using ClimaAtmos -using ClimaCore.Geometry - -using ClimaCore: DataLayouts, Operators, Geometry -using ClimaAtmos.Interface: TimeStepper, Simulation -using ClimaAtmos.Interface: PeriodicRectangle, BarotropicFluidModel -using ClimaCore: Fields, Domains, Topologies, Meshes, Spaces - -using IntervalSets -import SciMLBase: ODEProblem, solve, step!, init, reinit! -import ClimaTimeSteppers as CTS -using Logging: global_logger -using TerminalLoggers: TerminalLogger - -using RecursiveArrayTools -using LinearAlgebra -using Random - -global_logger(TerminalLogger()) - -const CI = !isnothing(get(ENV, "CI", nothing)) - -# general parameters -const FT = Float64 - -# define model equations: -include("atmos_rhs.jl") - -parameters = ( - # atmos physics (overwriting CliMAParameters defaults?) - MSLP = 1e5, # mean sea level pressure [Pa] - grav = 9.8, # gravitational acceleration [m /s^2] - R_d = 287.058, # R dry (gas constant / mol mass dry air) [J / K / kg] - C_p = 287.058 * 1.4 / (1.4 - 1), # heat capacity at constant pressure [J / K / kg] - C_v = 287.058 / (1.4 - 1), # heat capacity at constant volume [J / K / kg] - R_m = 87.058, # moist R, assumed to be dry [J / K / kg] - f = 7.29e-5, # Coriolis parameters [1/s] - ν = 0.1, #0.01 # viscosity, diffusivity - Ch = 0.0015, # bulk transfer coefficient for sensible heat - Cd = 0.01 / (2e2 / 30.0), #drag coeff - ug = 1.0, - vg = 0.0, - d = sqrt(2.0 * 0.01 / 5e-5), #? - - # radiation parameters for DryBulkFormulaWithRadiation() SurfaceFluxType - τ = 0.9, # atmospheric transmissivity - α = 0.5, # surface albedo - σ = 5.67e-8, # Steffan Boltzmann constant [kg / s^3 / K^4] - g_a = 0.06, # aerodynamic conductance for heat transfer [kg / m^2 / s] - ϵ = 0.98, # broadband emissivity / absorptivity of the surface - F_a = 0.0, # downward LW flux from the atmosphere [W / m^2] - F_sol = 1361, # incoming solar TOA radiation [W / m^2] - τ_d = 10, # idealized daily cycle period [s] - - # surface fluxes - λ = FT(0.01),#FT(1e-5) # coupling transfer coefficient for LinearRelaxation() SurfaceFluxType -) - -function atmos_simulation( - land_simulation; - Lz, - Nz, - minimum_reference_temperature = 230.0, # K - start_time = 0.0, - stop_time = 1.0, - Δt_min = 0.02, -) - - # Get surface temperature from the land simulation - land_surface_temperature = land_sim.p[5] - - ######## - # Set up atmos domain - ######## - - domain_atm = Domains.IntervalDomain(0, Lz, x3boundary = (:bottom, :top)) # struct - mesh_atm = Meshes.IntervalMesh(domain_atm, nelems = Nz) # struct, allocates face boundaries to 5,6 - center_space_atm = Spaces.CenterFiniteDifferenceSpace(mesh_atm) # collection of the above, discretises space into FD and provides coords - face_space_atm = Spaces.FaceFiniteDifferenceSpace(center_space_atm) - - """ Initialize fields located at cell centers in the vertical. """ - function init_centers(zc, parameters) - (; grav, C_p, MSLP, R_d) = parameters - - # temperature - Γ = grav / C_p - T = max(land_surface_temperature - Γ * zc, minimum_reference_temperature) - - # pressure - p = MSLP * (T / land_surface_temperature)^(grav / (R_d * Γ)) - - if T == minimum_reference_temperature - z_top = (land_surface_temperature - minimum_reference_temperature) / Γ - H_min = R_d * minimum_reference_temperature / grav - p *= exp(-(zc - z_top) / H_min) - end - - # potential temperature - θ = land_surface_temperature - - # density - ρ = p / (R_d * θ * (p / MSLP)^(R_d / C_p)) - - # velocties - u = 1.0 - v = 0.0 - - return (ρ = ρ, u = u, v = v, ρθ = ρ * θ) - end - - """ Initialize fields located at cell interfaces in the vertical. """ - function init_faces(zf, parameters) - return (; w = 0.0 .* zf) - end - - # Initialize the atmospheric states Yc and Yf - z_centers = Fields.coordinate_field(center_space_atm) - z_faces = Fields.coordinate_field(face_space_atm) - Yc = init_centers.(z_centers, Ref(parameters)) - Yf = init_faces.(z_faces, Ref(parameters)) - T_atm_0 = (Yc = Yc, Yf = Yf) - - # Put all prognostic variable arrays into a vector and ensure that solve can partition them - Y_atm = ArrayPartition((T_atm_0.Yc, T_atm_0.Yf, zeros(3))) - - ode_algo = CTS.ExplicitAlgorithm(CTS.RK4()) - ode_function = CTS.ClimaODEFunction(T_exp! = ∑tendencies_atm!) - - problem = ODEProblem(ode_function, Y_atm, (start_time, stop_time), (parameters, [land_surface_temperature])) - simulation = init(problem, ode_algo, dt = Δt_min, saveat = 1 * Δt_min, adaptive = false) - - return simulation -end diff --git a/experiments/ClimaCore/atm-ocn-lnd/dummy_surface_fluxes.jl b/experiments/ClimaCore/atm-ocn-lnd/dummy_surface_fluxes.jl deleted file mode 100644 index 700543fe7e..0000000000 --- a/experiments/ClimaCore/atm-ocn-lnd/dummy_surface_fluxes.jl +++ /dev/null @@ -1,28 +0,0 @@ -export calculate_sfc_fluxes_energy -export DryBulkFormulaWithRadiation, DryBulkFormula, LinearRelaxation - -""" -dummy for SurfaceFluxes.jl -""" -abstract type SurfaceFluxType end - -struct LinearRelaxation <: SurfaceFluxType end -struct DryBulkFormula <: SurfaceFluxType end -struct DryBulkFormulaWithRadiation <: SurfaceFluxType end - -calculate_sfc_fluxes_energy(forumation::LinearRelaxation, p, θ_sfc, θ1) = p.λ .* (θ_sfc .- θ1) - -calculate_sfc_fluxes_energy(forumation::DryBulkFormula, p, θ_sfc, θ1, u_1, v_1, ρ_1) = - p.Ch * p.C_p * ρ_1 * sqrt(u_1^2 + v_1^2) * (θ_sfc .- θ1) - -function calculate_sfc_fluxes_energy(forumation::DryBulkFormulaWithRadiation, parameters, θ_sfc, θ1, u_1, v_1, ρ_1, t) - - p = parameters - R_SW = (1 - p.α) * p.τ * p.F_sol * (1 .+ sin(t * 2π / p.τ_d)) - R_LW = p.ϵ * (p.σ * θ_sfc .^ 4 - p.σ * θ1 .^ 4) - SH = p.Ch * p.C_p * ρ_1 * sqrt(u_1^2 + v_1^2) * (θ_sfc - θ1) - #p_sfc = p.pₒ - #LH = p.lambda * p.g_w * (q_sat(θ_sfc, p_sfc) - q_a) - - F_tot = -(R_SW - R_LW - SH)#- LH -end diff --git a/experiments/ClimaCore/atm-ocn-lnd/land_simulation.jl b/experiments/ClimaCore/atm-ocn-lnd/land_simulation.jl deleted file mode 100644 index b8bb94bb13..0000000000 --- a/experiments/ClimaCore/atm-ocn-lnd/land_simulation.jl +++ /dev/null @@ -1,186 +0,0 @@ -import ClimaCore.Geometry, LinearAlgebra -import ClimaCore: Fields, Domains, Topologies, Meshes, DataLayouts, Operators, Geometry, Spaces - -using CLIMAParameters -using CLIMAParameters.Planet: ρ_cloud_liq, ρ_cloud_ice, cp_l, cp_i, T_0, LH_f0 -struct EarthParameterSet <: AbstractEarthParameterSet end -const param_set = EarthParameterSet() - -using RecursiveArrayTools -import SciMLBase: ODEProblem, solve, step!, init, reinit! -import ClimaTimeSteppers as CTS -using DifferentialEquations -using LandHydrology -using LandHydrology.SoilHeatParameterizations -using LandHydrology.SoilWaterParameterizations - -const FT = Float64 - -abstract type BC{FT <: AbstractFloat} end - -mutable struct FluxBC{FT} <: BC{FT} - top_heat_flux::FT - top_water_flux::FT - btm_heat_flux::FT - btm_water_flux::FT -end - -function compute_soil_rhs!(dY, Y, t, p) - - sp = p[1] - param_set = p[2] - zc = p[3] - (; top_heat_flux, btm_heat_flux, top_water_flux, btm_water_flux) = p[4] - (; ν, vgn, vgα, vgm, ksat, θr, ρc_ds, κ_sat_unfrozen, κ_sat_frozen) = sp - ϑ_l = Y.x[1] - θ_i = Y.x[2] - ρe_int = Y.x[3] - - dϑ_l = dY.x[1] - dθ_i = dY.x[2] - dρe_int = dY.x[3] - - # Compute center values of everything - θ_l = ϑ_l - ρc_s = volumetric_heat_capacity.(θ_l, θ_i, ρc_ds, Ref(param_set)) - T = temperature_from_ρe_int.(ρe_int, θ_i, ρc_s, Ref(param_set)) - T_sfc = parent(T)[end] - p[5] = T_sfc - κ_dry = k_dry(param_set, sp) - S_r = relative_saturation.(θ_l, θ_i, ν) - kersten = kersten_number.(θ_i, S_r, Ref(sp)) - κ_sat = saturated_thermal_conductivity.(θ_l, θ_i, κ_sat_unfrozen, κ_sat_frozen) - κ = thermal_conductivity.(κ_dry, kersten, κ_sat) - ρe_int_l = volumetric_internal_energy_liq.(T, Ref(param_set)) - - cs = axes(θ_i) - - - S = effective_saturation.(θ_l; ν = ν, θr = θr) - K = hydraulic_conductivity.(S; vgm = vgm, ksat = ksat) - ψ = matric_potential.(S; vgn = vgn, vgα = vgα, vgm = vgm) - h = ψ .+ zc - - interpc2f = Operators.InterpolateC2F() - gradc2f_heat = Operators.GradientC2F() - gradf2c_heat = - Operators.GradientF2C(top = Operators.SetValue(top_heat_flux), bottom = Operators.SetValue(btm_heat_flux)) - - gradc2f_water = Operators.GradientC2F() - gradf2c_water = - Operators.GradientF2C(top = Operators.SetValue(top_water_flux), bottom = Operators.SetValue(btm_water_flux)) - - @. dϑ_l = -gradf2c_water(-interpc2f(K) * gradc2f_water(h)) #Richards equation - @. dρe_int = -gradf2c_heat(-interpc2f(κ) * gradc2f_heat(T) - interpc2f(ρe_int_l * K) * gradc2f_water(h)) - dθ_i = Fields.zeros(eltype(θ_i), cs) - - return dY - -end - -# General composition -ν = FT(0.395); -ν_ss_quartz = FT(0.92) -ν_ss_minerals = FT(0.08) -ν_ss_om = FT(0.0) -ν_ss_gravel = FT(0.0); - -#Water specific -Ksat = FT(4.42 / 3600 / 100) # m/s -S_s = FT(1e-3) #inverse meters -vg_n = FT(1.89) -vg_α = FT(7.5); # inverse meters -vg_m = FT(1) - FT(1) / vg_n -θ_r = FT(0) - -# Heat specific -κ_quartz = FT(7.7) # W/m/K -κ_minerals = FT(2.5) # W/m/K -κ_om = FT(0.25) # W/m/K -κ_liq = FT(0.57) # W/m/K -κ_ice = FT(2.29); # W/m/K -ρp = FT(2700); # kg/m^3 -κ_solid = k_solid(ν_ss_om, ν_ss_quartz, κ_quartz, κ_minerals, κ_om) -κ_sat_frozen = ksat_frozen(κ_solid, ν, κ_ice) -κ_sat_unfrozen = ksat_unfrozen(κ_solid, ν, κ_liq); -ρc_ds = FT((1 - ν) * 1.926e06); # J/m^3/K -a = FT(0.24) -b = FT(18.1) -κ_dry_parameter = FT(0.053) - -#collect all params -msp = SoilParams{FT}( - ν, - vg_n, - vg_α, - vg_m, - Ksat, - θ_r, - S_s, - ν_ss_gravel, - ν_ss_om, - ν_ss_quartz, - ρc_ds, - κ_solid, - ρp, - κ_sat_unfrozen, - κ_sat_frozen, - a, - b, - κ_dry_parameter, -) - - -#Simulation and domain info -t0 = FT(0) -tf = FT(60 * 60 * 72) -dt = FT(0.02) - -n = 50 - -zmax = FT(0) -zmin = FT(-1) -domain = Domains.IntervalDomain(zmin, zmax, x3boundary = (:bottom, :top)) -mesh = Meshes.IntervalMesh(domain, nelems = n) - -cs = Spaces.CenterFiniteDifferenceSpace(mesh) -fs = Spaces.FaceFiniteDifferenceSpace(cs) -zc = Fields.coordinate_field(cs) - -# Boundary conditions -top_water_flux = FT(0) -top_heat_flux = FT(0) -bottom_water_flux = FT(0) -bottom_heat_flux = FT(0) -bc = FluxBC(top_heat_flux, top_water_flux, bottom_heat_flux, bottom_water_flux) - -# Parameter structure - -# initial conditions -T_max = FT(289.0) -T_min = FT(288.0) -c = FT(20.0) -T = @. T_min + (T_max - T_min) * exp(-(zc - zmax) / (zmin - zmax) * c) -Tsfc = parent(T)[end] -p = [msp, param_set, zc, bc, Tsfc] -θ_i = Fields.zeros(FT, cs) - -theta_max = FT(ν * 0.5) -theta_min = FT(ν * 0.4) -θ_l = @. theta_min + (theta_max - theta_min) * exp(-(zc - zmax) / (zmin - zmax) * c) - -ρc_s = volumetric_heat_capacity.(θ_l, θ_i, ρc_ds, Ref(param_set)) -ρe_int = volumetric_internal_energy.(θ_i, ρc_s, T, Ref(param_set)) - -Y = ArrayPartition(θ_l, θ_i, ρe_int) - -function ∑land_tendencies!(dY, Y, p, t) - # Intermediate step to be added if needed - compute_soil_rhs!(dY, Y, t, p) -end - -ode_algo = CTS.ExplicitAlgorithm(CTS.RK4()) -ode_function = CTS.ClimaODEFunction(T_exp! = ∑land_tendencies!) - -problem = ODEProblem(ode_function, Y, (t0, tf), p) -land_simulation() = init(problem, ode_algo, dt = dt, saveat = 1 * dt, adaptive = false) # dt is the land model step diff --git a/experiments/ClimaCore/atm-ocn-lnd/ocean_simulation.jl b/experiments/ClimaCore/atm-ocn-lnd/ocean_simulation.jl deleted file mode 100644 index 4a5425ec71..0000000000 --- a/experiments/ClimaCore/atm-ocn-lnd/ocean_simulation.jl +++ /dev/null @@ -1,76 +0,0 @@ -using Oceananigans -using Oceananigans.Units -using Oceananigans.TurbulenceClosures: TKEBasedVerticalDiffusivity - -##### -##### Parameters -##### - -""" - ocean_simulation(; kwargs...) - -Return an `Oceananigans.Simulation` of a column model initialized with -mutable array surface boundary conditions and a linear density stratification. - -Arguments -========= - - * Nz: Number of vertical grid points - * Lz: [m] Vertical extent of domain, - * f: [s-1] Coriolis parameter, - * g: [m s-2] Gravitational acceleration, - * T₀: [ᵒC], sea surface temperature, - * S₀: [psu], sea surface salinity, - * α: Thermal expansion coefficient - * β: Haline contraction coefficient -""" -function ocean_simulation(; - Nz = 64, # Number of vertical grid points - Lz = 512, # Vertical extent of domain - f = 1e-4, # Coriolis parameter - g = 9.81, # Gravitational acceleration - α = 2e-4, # Thermal expansion coefficient - β = 8e-5, # Haline contraction coefficient -) - - grid = RegularRectilinearGrid( - size = (1, 1, Nz), - x = (0, 1), - y = (0, 1), - z = (-Lz, 0), - topology = (Periodic, Periodic, Bounded), - ) - - u_bcs = FieldBoundaryConditions(top = FluxBoundaryCondition([0.0])) - v_bcs = FieldBoundaryConditions(top = FluxBoundaryCondition([0.0])) - T_bcs = FieldBoundaryConditions(top = FluxBoundaryCondition([0.0])) - S_bcs = FieldBoundaryConditions(top = FluxBoundaryCondition([0.0])) - - eos = LinearEquationOfState(α = α, β = β) - - model = HydrostaticFreeSurfaceModel( - grid = grid, - tracers = (:T, :S, :e), - free_surface = ImplicitFreeSurface(gravitational_acceleration = g), - buoyancy = SeawaterBuoyancy(gravitational_acceleration = g, equation_of_state = eos), - coriolis = FPlane(f = f), - boundary_conditions = (T = T_bcs, S = S_bcs, u = u_bcs, v = v_bcs), - closure = TKEBasedVerticalDiffusivity(), - ) - - simulation = Oceananigans.Simulation(model, Δt = 0.02, stop_iteration = 1) - - # Initialize the ocean state with a linear temperature and salinity stratification - α = simulation.model.buoyancy.model.equation_of_state.α - β = simulation.model.buoyancy.model.equation_of_state.β - Tᵢ(x, y, z) = 16 + α * g * 5e-5 * z - Sᵢ(x, y, z) = 35 - β * g * 5e-5 * z - set!(simulation.model, T = Tᵢ, S = Sᵢ) - - # collect data (needs optimising) - ocean_data = [] - data = (T = deepcopy(simulation.model.tracers.T), time = simulation.model.clock.time) - push!(ocean_data, data) - - return simulation, ocean_data -end diff --git a/experiments/ClimaCore/atm-ocn-lnd/run_coupled_simulation.jl b/experiments/ClimaCore/atm-ocn-lnd/run_coupled_simulation.jl deleted file mode 100644 index 3514a04a85..0000000000 --- a/experiments/ClimaCore/atm-ocn-lnd/run_coupled_simulation.jl +++ /dev/null @@ -1,186 +0,0 @@ -using Oceananigans.TimeSteppers: time_step!, Clock, tick! - -import SciMLBase: step! - -using Printf - -include("dummy_surface_fluxes.jl") # placeholder for SurfaceFluxes.jl - -include("land_simulation.jl") #refactoring of land interface to come -include("ocean_simulation.jl") -include("atmos_simulation.jl") - -struct CoupledSimulation{O, A, L, C} - ocean::O - atmos::A - land::L - clock::C -end - -function step!(coupled_sim::CoupledSimulation, coupling_Δt) - - atmos_sim = coupled_sim.atmos - ocean_sim = coupled_sim.ocean - land_sim = coupled_sim.land - - clock = coupled_sim.clock - next_time = clock.time + coupling_Δt - @info("Coupling cycle", time = clock.time) - - # Extract states and parameters at coupled boundaries for flux calculations - land_surface_T = land_sim.p[5] - - ocean_Nz = ocean_sim.model.grid.Nz - @inbounds begin - ocean_surface_T = ocean_sim.model.tracers.T[1, 1, ocean_Nz] # convert to K somewhere - end - - # Step forward atmosphere - atmos_sim.u.x[3] .= [0.0, 0.0, 0.0] # reset surface flux to be accumulated during each coupling_Δt - atmos_sim.p[2] .= land_surface_T # get land temperature and set on atmosphere (Tland is prognostic) - - step!(atmos_sim, next_time - atmos_sim.t, true) - - # Extract surface fluxes for ocean and land boundaries - ∫surface_x_momentum_flux = atmos_sim.u.x[3][1] # kg / m s^2 - ∫surface_y_momentum_flux = atmos_sim.u.x[3][2] # kg / m s^2 - ∫surface_heat_flux = atmos_sim.u.x[3][3] # W / m^2 - - surface_flux_u_ocean = ocean_sim.model.velocities.u.boundary_conditions.top.condition - surface_flux_v_ocean = ocean_sim.model.velocities.v.boundary_conditions.top.condition - surface_flux_T_ocean = ocean_sim.model.tracers.T.boundary_conditions.top.condition - - @. surface_flux_u_ocean = 1 / ocean_ρ * ∫surface_x_momentum_flux / coupling_Δt - @. surface_flux_v_ocean = 1 / ocean_ρ * ∫surface_y_momentum_flux / coupling_Δt - @. surface_flux_T_ocean = 1 / (ocean_ρ * ocean_Cᴾ) * ∫surface_heat_flux / coupling_Δt - - # We'll develop a new function step!(ocean_sim, coupling_Δt) :thumsup: - time_step!(ocean_sim.model, 0.02) - data = (T = deepcopy(ocean_sim.model.tracers.T), time = ocean_sim.model.clock.time) - push!(ocean_data, data) - - # Advance land - @show(∫surface_x_momentum_flux, ∫surface_y_momentum_flux, ∫surface_heat_flux) - land_sim.p[4].top_heat_flux = ∫surface_heat_flux / coupling_Δt # [W/m^2] same BC across land Δt - step!(land_sim, next_time - land_sim.t, true) - - tick!(clock, coupling_Δt) - - return nothing -end - -function solve!(coupled_sim::CoupledSimulation, coupling_Δt, stop_time) - @info("Coupler:", models = fieldnames(typeof(coupled_sim))[1:(end - 1)]) - while coupled_sim.clock.time < stop_time - step!(coupled_sim, coupling_Δt) - end -end - -f = 1e-4 # Coriolis parameter -g = 9.81 # Gravitational acceleration -ocean_Nz = 64 # Number of vertical grid points -ocean_Lz = 512 # Vertical extent of domain -ocean_T₀ = 20 # ᵒC, sea surface temperature -ocean_S₀ = 35 # psu, sea surface salinity -# These parameters will live in the ocean simulation someday -# For ocean_Cᴾ see 3.32 in http://www.teos-10.org/pubs/TEOS-10_Manual.pdf -ocean_ρ = 1024.0 # [kg / m^3] average density at the ocean surface -ocean_Cᴾ = 3991.9 # [J / kg K] reference heat capacity for conservative temperature - -atmos_Nz = 30 # Number of vertical grid points -atmos_Lz = 200 # Vertical extent of domain - -# land domain params (need to abstract) -n = 50 -zmax = FT(0) -zmin = FT(-1) -land_Nz = n -land_Lz = zmax - zmin # this needs abstraction - -start_time = 0.0 -stop_time = 1#coupling_Δt*100#60*60 - -# Build the respective models -land_sim = land_simulation() -atmos_sim = atmos_simulation(land_sim, Nz = atmos_Nz, Lz = atmos_Lz, start_time = start_time, stop_time = stop_time) -ocean_sim, ocean_data = ocean_simulation(Nz = ocean_Nz, Lz = ocean_Lz, f = f, g = g) - -# Build a coupled simulation -clock = Clock(time = 0.0) -coupled_sim = CoupledSimulation(ocean_sim, atmos_sim, land_sim, clock) - -# Run it! -coupling_Δt = 0.02 -solve!(coupled_sim, coupling_Δt, stop_time) - -# Visualize -using Plots -Plots.GRBackend() - -dirname = "heat" -path = joinpath(@__DIR__, "output", dirname) -mkpath(path) - -# Atmos plots -sol_atm = coupled_sim.atmos.sol -t0_ρθ = parent(sol_atm.u[1].x[1])[:, 4] -tend_ρθ = parent(sol_atm.u[end].x[1])[:, 4] -t0_u = parent(sol_atm.u[1].x[1])[:, 2] -tend_u = parent(sol_atm.u[end].x[1])[:, 2] -t0_v = parent(sol_atm.u[1].x[1])[:, 3] -tend_v = parent(sol_atm.u[end].x[1])[:, 3] -z_centers = collect(1:1:length(tend_u))#parent(Fields.coordinate_field(center_space_atm))[:,1] -Plots.png(Plots.plot([t0_ρθ tend_ρθ], z_centers, labels = ["t=0" "t=end"]), joinpath(path, "T_atm_height.png")) -Plots.png(Plots.plot([t0_u tend_u], z_centers, labels = ["t=0" "t=end"]), joinpath(path, "u_atm_height.png")) -Plots.png(Plots.plot([t0_v tend_v], z_centers, labels = ["t=0" "t=end"]), joinpath(path, "v_atm_height.png")) - -# Land plots -sol_lnd = coupled_sim.land.sol -t0_θ_l = parent(sol_lnd.u[1].x[1]) -tend_θ_l = parent(sol_lnd.u[end].x[1]) -t0_ρe = parent(sol_lnd.u[1].x[3]) -tend_ρe = parent(sol_lnd.u[end].x[3]) -t0_ρc_s = volumetric_heat_capacity.(t0_θ_l, parent(θ_i), Ref(msp.ρc_ds), Ref(param_set)) #convert energy to temp -t0_T = temperature_from_ρe_int.(t0_ρe, parent(θ_i), t0_ρc_s, Ref(param_set)) #convert energy to temp -tend_ρc_s = volumetric_heat_capacity.(tend_θ_l, parent(θ_i), Ref(msp.ρc_ds), Ref(param_set)) #convert energy to temp -tend_T = temperature_from_ρe_int.(tend_ρe, parent(θ_i), tend_ρc_s, Ref(param_set)) #convert energy to temp -z_centers = collect(1:1:length(tend_ρe))#parent(Fields.coordinate_field(center_space_atm))[:,1] -Plots.png(Plots.plot([t0_θ_l tend_θ_l], parent(zc), labels = ["t=0" "t=end"]), joinpath(path, "Th_l_lnd_height.png")) -Plots.png(Plots.plot([t0_T tend_T], parent(zc), labels = ["t=0" "t=end"]), joinpath(path, "T(K)_lnd_height.png")) - -# Ocean plots -sol_ocn = coupled_sim.ocean.model -t0_T = ocean_data[1].T.data[1, 1, :] -tend_T = ocean_data[end].T.data[1, 1, :] # = sol_ocn.tracers.T.data[1,1,:] -z_centers = collect(1:1:length(tend_T)) -Plots.png( - Plots.plot([t0_T tend_T], z_centers, labels = ["t=0" "t=end"], ylims = (0, 100)), - joinpath(path, "T_ocn_height.png"), -) - -# Time evolution of all enthalpies (do for total enery = p / (γ - 1) + dot(ρu, ρu) / 2ρ + ρ * Φ, which is actually conserved) -atm_sum_u_t = [sum(parent(u.x[1])[:, 4]) for u in sol_atm.u] ./ atmos_Nz .* atmos_Lz * parameters.C_p # J / m2 -lnd_sfc_u_t = [sum(parent(u.x[3])[:]) for u in sol_lnd.u] ./ land_Nz .* land_Lz # J / m2 -ocn_sum_u_t = ([sum(interior(u.T)[1, 1, :] .+ 273.15) for u in ocean_data]) ./ ocean_Nz .* ocean_Lz * ocean_ρ * ocean_Cᴾ # J / m2 - -v1 = lnd_sfc_u_t .- lnd_sfc_u_t[1] -v2 = atm_sum_u_t .- atm_sum_u_t[1] -v3 = ocn_sum_u_t .- ocn_sum_u_t[1] -Plots.png( - Plots.plot(sol_lnd.t, [v1 v2 v1 + v2], labels = ["lnd" "atm" "tot"]), - joinpath(path, "enthalpy_both_surface_time_atm_lnd.png"), -) -Plots.png( - Plots.plot(sol_lnd.t, [v3 v2 v3 + v2], labels = ["ocn" "atm" "tot"]), - joinpath(path, "enthalpy_both_surface_time_atm_ocn.png"), -) -Plots.png( - Plots.plot(sol_lnd.t, [v1 v3 v1 - v3], labels = ["lnd" "ocn" "diff"]), - joinpath(path, "enthalpy_both_surface_time_ocn_lnd.png"), -) - -# relative error of enthapy -using Statistics -total = atm_sum_u_t + lnd_sfc_u_t -rel_error = (total .- total[1]) / mean(total) -Plots.png(Plots.plot(sol_lnd.t, rel_error, labels = ["tot"]), joinpath(path, "rel_error_surface_time.png"))