diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 38d28577..6df042ac 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -11,7 +11,6 @@ jobs: matrix: version: - '1.10' - - 'nightly' os: - ubuntu-latest arch: diff --git a/Manifest.toml b/Manifest.toml deleted file mode 100644 index fff652fb..00000000 --- a/Manifest.toml +++ /dev/null @@ -1,1053 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.2" -manifest_format = "2.0" -project_hash = "7a008ed79c52a95c32c9410d219c93d0f9b54c18" - -[[deps.AMD]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] -git-tree-sha1 = "45a1272e3f809d36431e57ab22703c6896b8908f" -uuid = "14f7f29c-3bd6-536c-9a0b-7339e30b5a3e" -version = "0.5.3" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "76289dc51920fdc6e0013c872ba9551d54961c24" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.6.2" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "f83ec24f76d4c8f525099b2ac475fc098138ec31" -uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.4.11" - - [deps.ArrayInterface.extensions] - ArrayInterfaceBandedMatricesExt = "BandedMatrices" - ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" - ArrayInterfaceCUDAExt = "CUDA" - ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" - ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" - ArrayInterfaceTrackerExt = "Tracker" - - [deps.ArrayInterface.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.AxisAlgorithms]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] -git-tree-sha1 = "66771c8d21c8ff5e3a93379480a2307ac36863f7" -uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" -version = "1.0.1" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.BenchmarkTools]] -deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] -git-tree-sha1 = "f1f03a9fa24271160ed7e73051fba3c1a759b53f" -uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" -version = "1.4.0" - -[[deps.BitFlags]] -git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.7" - -[[deps.BufferedStreams]] -git-tree-sha1 = "5bcb75a2979e40b29eb250cb26daab67aa8f97f5" -uuid = "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d" -version = "1.2.0" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+0" - -[[deps.CFTime]] -deps = ["Dates", "Printf"] -git-tree-sha1 = "ed2e76c1c3c43fd9d0cb9248674620b29d71f2d1" -uuid = "179af706-886a-5703-950a-314cd64e0468" -version = "0.1.2" - -[[deps.COSMO]] -deps = ["AMD", "COSMOAccelerators", "DataStructures", "IterTools", "LinearAlgebra", "MathOptInterface", "Pkg", "Printf", "QDLDL", "Random", "Reexport", "Requires", "SparseArrays", "Statistics", "SuiteSparse", "Test", "UnsafeArrays"] -git-tree-sha1 = "a0531f33abb67c7bddcf0a50cfe88cbf15155d75" -uuid = "1e616198-aa4e-51ec-90a2-23f7fbd31d8d" -version = "0.8.8" - -[[deps.COSMOAccelerators]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "Test"] -git-tree-sha1 = "b1153b40dd95f856e379f25ae335755ecc24298e" -uuid = "bbd8fffe-5ad0-4d78-a55e-85575421b4ac" -version = "0.1.0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "44dbf560808d49041989b8a96cae4cffbeb7966a" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.11" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "e30f2f4e20f7f186dc36529910beaedc60cfa644" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.16.0" - -[[deps.CodecBzip2]] -deps = ["Bzip2_jll", "Libdl", "TranscodingStreams"] -git-tree-sha1 = "9b1ca1aa6ce3f71b3d1840c538a8210a043625eb" -uuid = "523fee87-0ab8-5b00-afb7-3ecf72e48cfd" -version = "0.8.2" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "9c209fb7536406834aa938fb149964b985de6c83" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.1" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "be6ab11021cd29f0344d5c4357b163af05a48cba" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.21.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.4" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] -git-tree-sha1 = "600cc5508d66b78aae350f7accdb58763ac18589" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.9.10" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -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 = "2678b3fc170d582655a14d22867b031b6e43c2d4" -uuid = "1fbeeb36-5f17-413c-809b-666fb144f157" -version = "0.2.4" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] -git-tree-sha1 = "6c0100a8cf4ed66f66e2039af7cde3357814bad2" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "3.46.2" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.0+0" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.3.0" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "738fec4d684a9a6ee9598a8bfee305b26831f28c" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.2" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.Contour]] -git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.2" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.15.0" - -[[deps.DataDeps]] -deps = ["HTTP", "Libdl", "Reexport", "SHA", "p7zip_jll"] -git-tree-sha1 = "6e8d74545d34528c30ccd3fa0f3c00f8ed49584c" -uuid = "124859b0-ceae-595e-8997-d05f6a7a8dfe" -version = "0.7.11" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "cf25ccb972fec4e4817764d01c82386ae94f77b4" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.14" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.DiskArrays]] -deps = ["OffsetArrays"] -git-tree-sha1 = "cef3f9fdce9026de917240a7669e92b35fd07e7d" -uuid = "3c3547ce-8d99-4f5e-a174-61eb10b00ae3" -version = "0.3.13" - -[[deps.Distances]] -deps = ["LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "49eba9ad9f7ead780bfb7ee319f962c811c6d3b2" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.8" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns", "Test"] -git-tree-sha1 = "e76a3281de2719d7c81ed62c6ea7057380c87b1d" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.98" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.9" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "e27c4ebe80e8699540f2d6c805cc12203b614f12" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.20" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "Statistics"] -git-tree-sha1 = "2250347838b28a108d1967663cba57bfb3c02a58" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.3.0" - -[[deps.FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] -git-tree-sha1 = "c6e4a1fbe73b31a3dea94b1da449503b8830c306" -uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.21.1" - - [deps.FiniteDiff.extensions] - FiniteDiffBandedMatricesExt = "BandedMatrices" - FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" - FiniteDiffStaticArraysExt = "StaticArrays" - - [deps.FiniteDiff.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.4" - -[[deps.Formatting]] -deps = ["Printf"] -git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" -uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" -version = "0.4.2" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "00e252f4d706b3d55a8863432e742bf5717b498d" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.35" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GibbsSeaWater]] -deps = ["Compat", "GibbsSeaWater_jll", "Libdl", "Test"] -git-tree-sha1 = "dcf55fa4b842678216481d00ba5ecb6fe37d1099" -uuid = "9a22fb26-0b63-4589-b28e-8f9d0b5c3d05" -version = "0.1.2" - -[[deps.GibbsSeaWater_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c91ca76546871efaa1aefdd2b19cc41c3ead2160" -uuid = "6727f6b2-98ea-5d0a-8239-2f72283ddb11" -version = "3.5.2+0" - -[[deps.GoogleDrive]] -deps = ["DataDeps", "Dates", "Downloads", "HTTP", "Random"] -git-tree-sha1 = "f916ded6fdb10109f9cdb7a4b2c77feafc8e24e5" -uuid = "91feb7a0-3508-11ea-1e8e-afea2c1c9a19" -version = "0.1.3" - -[[deps.HDF5]] -deps = ["Compat", "HDF5_jll", "Libdl", "Mmap", "Random", "Requires", "UUIDs"] -git-tree-sha1 = "c73fdc3d9da7700691848b78c61841274076932a" -uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" -version = "0.16.15" - -[[deps.HDF5_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "OpenSSL_jll", "TOML", "Zlib_jll", "libaec_jll"] -git-tree-sha1 = "3b20c3ce9c14aedd0adca2bc8c882927844bd53d" -uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" -version = "1.14.0+0" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.0" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "0ec02c648befc2f94156eaef13b0f38106212f3f" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.17" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.InteractiveUtils]] -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 = "721ec2cf720536ad005cb38f50dbba7b02419a15" -uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" -version = "0.14.7" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterTools]] -git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.10.0" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLLWrappers]] -deps = ["Preferences"] -git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.4.1" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JuMP]] -deps = ["LinearAlgebra", "MacroTools", "MathOptInterface", "MutableArithmetics", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays"] -git-tree-sha1 = "5036b4cf6d85b08d80de09ef65b4d951f6e68659" -uuid = "4076af6c-e467-56ae-b986-b466b2749572" -version = "1.19.0" - - [deps.JuMP.extensions] - JuMPDimensionalDataExt = "DimensionalData" - - [deps.JuMP.weakdeps] - DimensionalData = "0703355e-b756-11e9-17c0-8b28908087d0" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.4+0" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+2" - -[[deps.LineSearches]] -deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] -git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d" -uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.2.0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "c3ce8e7420b3a6e071e0fe4745f5d4300e37b13f" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.24" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" - -[[deps.MAT]] -deps = ["BufferedStreams", "CodecZlib", "HDF5", "SparseArrays"] -git-tree-sha1 = "79fd0b5ee384caf8ebba6c8fb3f365ca3e2c5493" -uuid = "23992714-dd62-5051-b70f-ba57cb901cac" -version = "0.10.5" - -[[deps.MPICH_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "8a5b4d2220377d1ece13f49438d71ad20cf1ba83" -uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.1.2+0" - -[[deps.MPIPreferences]] -deps = ["Libdl", "Preferences"] -git-tree-sha1 = "d86a788b336e8ae96429c0c42740ccd60ac0dfcc" -uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" -version = "0.1.8" - -[[deps.MPItrampoline_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "6979eccb6a9edbbb62681e158443e79ecc0d056a" -uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.3.1+0" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "42324d08725e200c23d4dfb549e0d5d89dede2d2" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.10" - -[[deps.MarchingCubes]] -deps = ["PrecompileTools", "StaticArrays"] -git-tree-sha1 = "c8e29e2bacb98c9b6f10445227a8b0402f2f173a" -uuid = "299715c1-40a9-479a-aaf9-4a633d36f717" -version = "0.1.8" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MathOptInterface]] -deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] -git-tree-sha1 = "8b40681684df46785a0012d352982e22ac3be59e" -uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" -version = "1.25.2" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] -git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.7" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.MicrosoftMPI_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "a8027af3d1743b3bfae34e54872359fdebb31422" -uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" -version = "10.1.3+4" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.1.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.MutableArithmetics]] -deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "806eea990fb41f9b36f1253e5697aa645bf6a9f8" -uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "1.4.0" - -[[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" -uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.8.3" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NetCDF]] -deps = ["DiskArrays", "Formatting", "NetCDF_jll"] -git-tree-sha1 = "328178762645783b20495d408ab317b4c2d25b1a" -uuid = "30363a11-5582-574a-97bb-aa9a979735b9" -version = "0.11.7" - -[[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" - -[[deps.OffsetArrays]] -deps = ["Adapt"] -git-tree-sha1 = "2ac17d29c523ce1cd38e27785a7d23024853a4bb" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.12.10" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" - -[[deps.OpenMPI_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "f3080f4212a8ba2ceb10a34b938601b862094314" -uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" -version = "4.1.5+0" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.1" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "cae3153c7f6cf3f069a853883fd1919a6e5bab5b" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.9+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optim]] -deps = ["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] -git-tree-sha1 = "e3a6546c1577bfd701771b477b794a52949e7594" -uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.7.6" - -[[deps.OrderedCollections]] -git-tree-sha1 = "d321bf2de576bf25ec4d3e4360faca399afca282" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.0" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "67eae2738d63117a196f497d7db789821bce61d1" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.17" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "4b2e829ee66d4218e0cef22c0a64ee37cf258c29" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.7.1" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "a6062fe4063cdafe78f4a0a81cfffb89721b30e7" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.2" - -[[deps.PositiveFactorizations]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" -uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" -version = "0.2.4" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "9673d39decc5feece56ef3940e5dafba15ba0f81" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.1.2" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.0" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.Profile]] -deps = ["Printf"] -uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" - -[[deps.QDLDL]] -deps = ["AMD", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "5a3c14e534faf5b66c4633b5770a665ec1a87503" -uuid = "bfc457fd-c171-5ab7-bd9e-d5dbfc242d63" -version = "0.4.1" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "6ec7ac8412e83d57e313393220879ede1740f9ee" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.8.2" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[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.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.0+0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "04bdff0b09c65ff3e06a05e3eb7b120223da3d39" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.0" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.SharedArrays]] -deps = ["Distributed", "Mmap", "Random", "Serialization"] -uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "c60ec5c62180f27efea3ba2908480f8055e17cee" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "7beb031cf8145577fbccacd94b8a8f4ce78428d3" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.3.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "Random", "StaticArraysCore"] -git-tree-sha1 = "0da7e6b70d1bb40b1ace3b576da9ea2992f76318" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.6.0" -weakdeps = ["Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "6b7ba252635a5eff6a0b0664a41ee140a1c9e72a" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "45a7769a04a3cf80da1c1c7c60caf932e6f4c9f7" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.6.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.33.21" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.0" - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - - [deps.StatsFuns.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] -git-tree-sha1 = "1544b926975372da01227b382066ab70e574a3ec" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.10.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnicodePlots]] -deps = ["ColorSchemes", "ColorTypes", "Contour", "Crayons", "Dates", "LinearAlgebra", "MarchingCubes", "NaNMath", "PrecompileTools", "Printf", "Requires", "SparseArrays", "StaticArrays", "StatsBase"] -git-tree-sha1 = "b96de03092fe4b18ac7e4786bee55578d4b75ae8" -uuid = "b8865327-cd53-5732-bb35-84acbb429228" -version = "3.6.0" - - [deps.UnicodePlots.extensions] - FreeTypeExt = ["FileIO", "FreeType"] - ImageInTerminalExt = "ImageInTerminal" - IntervalSetsExt = "IntervalSets" - TermExt = "Term" - UnitfulExt = "Unitful" - - [deps.UnicodePlots.weakdeps] - FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" - FreeType = "b38be410-82b0-50bf-ab77-7b57e271db43" - ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - Term = "22787eb5-b846-44ae-b979-8e399b8463ab" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.UnsafeArrays]] -git-tree-sha1 = "e7f1c67ba99ac6df440de191fa4d5cbfcbdddcd1" -uuid = "c4a57d5a-5b31-53a6-b365-19f8c011fbd6" -version = "1.0.5" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WoodburyMatrices]] -deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "de67fa59e33ad156a590055375a30b23c40299d3" -uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" -version = "0.5.5" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "93c41695bc1c08c46c5899f4fe06d6ead504bb73" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.10.3+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.5+0" - -[[deps.libaec_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "eddd19a8dea6b139ea97bdc8a0e2667d4b661720" -uuid = "477f73a3-ac25-53e9-8cc3-50b2fa2566f0" -version = "1.0.6+1" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" diff --git a/Project.toml b/Project.toml index 83df3b6a..d967b33e 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "TMI" uuid = "582500f6-28c8-4d8f-aabe-b197735ec1d4" authors = ["G Jake Gebbie "] -version = "0.2.9" +version = "0.2.11" [deps] COSMO = "1e616198-aa4e-51ec-90a2-23f7fbd31d8d" @@ -36,6 +36,7 @@ CSV = "0.9, 0.10" Distances = "0.10" Distributions = "0.25" GibbsSeaWater = "0.1" +GoogleDrive = "0.1.3" Interpolations = "0.14" LineSearches = "7" MAT = "0.10" diff --git a/src/TMI.jl b/src/TMI.jl index 4189d492..41ba7fd7 100644 --- a/src/TMI.jl +++ b/src/TMI.jl @@ -59,7 +59,7 @@ export config, config_from_mat, config_from_nc, wetlocation, iswet, control2state, control2state!, surfacecontrol2field, surfacecontrol2field!, - sparsedatamap, config2nc, gridprops, + sparsedatamap, config2nc, axislabels, matrix_zyx2xyz, surface_oxygensaturation, oxygen, location_obs, zerosurfaceboundary, @@ -322,7 +322,7 @@ function volumefilled(TMIversion,Alu,γ)::BoundaryCondition end volume = log10.(volume) - ∂V∂b = BoundaryCondition(volume,γ.lon,γ.lat,γ.depth[1],3,1,γ.wet[:,:,1],:V,"volume filled by surface gridcell","log₁₀(m³/m²)") + ∂V∂b = BoundaryCondition(volume,(γ.lon,γ.lat),γ.depth[1],3,1,γ.wet[:,:,1],:V,"volume filled by surface gridcell","log₁₀(m³/m²)") return ∂V∂b end @@ -357,7 +357,7 @@ function surfaceorigin(loc,Alu,γ::Grid)::BoundaryCondition dvlocdd = log10.(dvlocdd[:,:,1]) small_cutoff = -10 # 1e-10 replace!(x -> x < small_cutoff ? small_cutoff : x,dvlocdd) - origin = BoundaryCondition(dvlocdd,γ.lon,γ.lat,γ.depth[1],3,1,γ.wet[:,:,1],:origin,"surface origin","log₁₀(m³)") + origin = BoundaryCondition(dvlocdd,(γ.lon,γ.lat),γ.depth[1],3,1,γ.wet[:,:,1],:origin,"surface origin","log₁₀(m³)") return origin end @@ -624,7 +624,7 @@ function cellarea(γ) dimval = 1 # surface # is it really a Boundary Condition? (sorta, but more of a 2D Field) - return BoundaryCondition(area,γ.lon,γ.lat,γ.depth[dimval],dim,dimval,γ.wet[:,:,dimval], + return BoundaryCondition(area,(γ.lon,γ.lat),γ.depth[dimval],dim,dimval,γ.wet[:,:,dimval], :area,"cell area","m²") #return area end diff --git a/src/boundary_condition.jl b/src/boundary_condition.jl index 04646b05..cdaa8907 100644 --- a/src/boundary_condition.jl +++ b/src/boundary_condition.jl @@ -12,24 +12,51 @@ `dimval::Int64`: plane defined at dim = dimval where dimval is a 1-based index number `wet::BitArray{2}`: ocean mask for boundary condition """ -struct BoundaryCondition{T <: Real,R <: Real, N <: Integer, B <: AbstractMatrix{T}} +struct BoundaryCondition{T <: Real, + R <: Real, + N, + G <: Integer, + B <: AbstractArray{T,N}} tracer::B - i::Vector{R} - j::Vector{R} + axes::NTuple{N,Vector{R}} + #i::Vector{R} + #j::Vector{R} k::R - dim::N - dimval::N - wet::BitMatrix + dim::G + dimval::G + wet::BitArray{N} name::Symbol longname::String units::String end -function Base.show(io::IO, mime::MIME{Symbol("text/plain")}, x::BoundaryCondition) +Base.propertynames(b::BoundaryCondition) = (:i,:j,:k,fieldnames(typeof(γ))...) + +# function Base.getproperty(b::BoundaryCondition, +# d::Symbol) +# if d === :i +# return b.axes[1] +# elseif d === :j +# return b.axes[2] +# elseif d === :k +# return b.axes[3] +# else +# return getfield(b, d) +# end +# end + +# special show function if N = 2 +function Base.show(io::IO, + mime::MIME{Symbol("text/plain")}, + x::BoundaryCondition{T,R,2}) where {T,R} summary(io, x); println(io) print(io, "Field size ") println(io, size(x.tracer)) - show(io,mime,heatmap(transpose(x.tracer),zlabel=x.units,title=x.longname)) + show(io,mime, + heatmap(transpose(x.tracer), + zlabel=x.units, + title=x.longname) + ) end """ @@ -49,9 +76,17 @@ function BoundaryCondition(tracer::AbstractMatrix{T},i::Vector{R},j::Vector{R},k - `b::BoundaryCondition` """ # an outer constructor that ignores units -function BoundaryCondition(tracer::AbstractMatrix{T},i::Vector{R},j::Vector{R},k::R,dim::N,dimval::N,wet::BitMatrix) where T <: Real where R <: Real where N <: Integer +function BoundaryCondition(tracer::B, + axes::NTuple{N,Vector{R}}, + k::R, + dim::G, + dimval::G, + wet::BitArray{N}) where {T <: Real, R <: Real, N, G <: Integer, B <: AbstractArray{T,N}} + + #function BoundaryCondition(tracer::AbstractMatrix{T},i::Vector{R},j::Vector{R},k::R,dim::N,dimval::N,wet::BitMatrix) where T <: Real where R <: Real where N <: Integer - return BoundaryCondition(tracer,i,j,k,dim,dimval,wet,:bc,"boundary condition","unknown") + return BoundaryCondition(tracer,axes,k,dim,dimval,wet,:bc,"boundary condition","unknown") +# return BoundaryCondition(tracer,i,j,k,dim,dimval,wet,:bc,"boundary condition","unknown") end """ @@ -148,30 +183,18 @@ end Help initialize boundary condition by getting some attributes """ -function boundaryconditionatts(dim::Integer,dimval::Integer,γ::Grid) - - dimsize = size(γ.wet) - # dumb way to do it - if dim == 1 - wet2d = γ.wet[dimval,:,:] - i = γ.lat - j = γ.depth - k = γ.lon[dimval] - elseif dim == 2 - wet2d = γ.wet[:,dimval,:] - i = γ.lon - j = γ.depth - k = γ.lat[dimval] - elseif dim == 3 - wet2d = γ.wet[:,:,dimval] - i = γ.lon - j = γ.lat - k = γ.depth[dimval] - else - error("boundary condition not implemented in 4+ dimensions") +function boundaryconditionatts(dim::Integer,dimval::Integer,γ::Grid{R,N}) where {R,N} + + for n in 1:N + if n == dim + k = γ.axes[n][dimval] + ind = deleteat!(collect(1:N),n) + # boundary axes + baxes = γ.axes[ind] + wet2d = copy(selectdim(γ.wet,dim,dimval)) + return baxes,k,wet2d + end end - return i,j,k,wet2d - end """ @@ -191,12 +214,12 @@ end """ function zeros(dim::I,dimval::I,γ::Grid,name::Symbol,longname::String,units::String)::BoundaryCondition where I <: Integer - i,j,k,wet = boundaryconditionatts(dim,dimval,γ) + baxes,k,wet = boundaryconditionatts(dim,dimval,γ) tracer = Array{Float64}(undef,size(wet)) tracer[wet] .= zero(Float64) tracer[.!wet] .= zero(Float64)/zero(Float64) - b = BoundaryCondition(tracer,i,j,k,dim,dimval,wet,name,longname,units) + b = BoundaryCondition(tracer,baxes,k,dim,dimval,wet,name,longname,units) end @@ -207,49 +230,41 @@ end """ function ones(dim::I,dimval::I,γ::Grid,name::Symbol,longname::String,units::String)::BoundaryCondition where I <: Integer - i,j,k,wet = boundaryconditionatts(dim,dimval,γ) + baxes,k,wet = boundaryconditionatts(dim,dimval,γ) tracer = Array{Float64}(undef,size(wet)) tracer[wet] .= ones(Float64) tracer[.!wet] .= zero(Float64)/zero(Float64) - b = BoundaryCondition(tracer,i,j,k,dim,dimval,wet) + b = BoundaryCondition(tracer,baxes,k,dim,dimval,wet) end """ Get boundary condition by extracting from 3D tracer """ -function getboundarycondition(tracer3d::Field,dim::Integer,dimval::Integer,γ::Grid)::BoundaryCondition - - dimsize = size(γ.wet) - # dumb way to do it - if dim == 1 - wet2d = γ.wet[dimval,:,:] - tracer2d = tracer3d[dimval,:,:] - i = γ.lat - j = γ.depth - k = γ.lon[dimval] - elseif dim == 2 - wet2d = γ.wet[:,dimval,:] - tracer2d = tracer3d[:,dimval,:] - i = γ.lon - j = γ.depth - k = γ.lat[dimval] - elseif dim == 3 - wet2d = γ.wet[:,:,dimval] - tracer2d = tracer3d[:,:,dimval] - i = γ.lon - j = γ.lat - k = γ.depth[dimval] - else - error("boundary condition not implemented in 4+ dimensions") +function getboundarycondition(field::Field{T,R,N},dim::Integer,dimval::Integer,γ::Grid)::BoundaryCondition where {T<:Real,R<:Real,N} + + for n in 1:N + if n == dim + k = γ.axes[n][dimval] + ind = deleteat!(collect(1:N),n) + # boundary axes + baxes = γ.axes[ind] + wet2d = copy(selectdim(γ.wet,dim,dimval)) + tracer2d = copy(selectdim(field.tracer, + dim, + dimval)) + + return BoundaryCondition(tracer2d, + baxes, + k, + dim, + dimval, + wet2d) + end end - - b = BoundaryCondition(tracer2d,i,j,k,dim,dimval,wet2d) - end - """ function getboundarycondition(field::Field,dim,dimval)::BoundaryCondition Get boundary condition by extracting from Field (i.e., 3D tracer) @@ -260,36 +275,37 @@ end # Output - `b::BoundaryCondition`: boundary condition on a plane with metadata and grid """ -function getboundarycondition(field::Field,dim,dimval)::BoundaryCondition - - dimsize = size(field.γ.wet) - # dumb way to do it - if dim == 1 - wet2d = field.γ.wet[dimval,:,:] - tracer2d = field.tracer[dimval,:,:] - i = field.γ.lat - j = field.γ.depth - k = field.γ.lon[dimval] - elseif dim == 2 - wet2d = field.γ.wet[:,dimval,:] - tracer2d = field.tracer[:,dimval,:] - i = field.γ.lon - j = field.γ.depth - k = field.γ.lat[dimval] - elseif dim == 3 - wet2d = field.γ.wet[:,:,dimval] - tracer2d = field.tracer[:,:,dimval] - i = field.γ.lon - j = field.γ.lat - k = field.γ.depth[dimval] - else - error("boundary condition not implemented in 4+ dimensions") - end +getboundarycondition(field::Field,dim::Integer,dimval::Integer) = + getboundarycondition(field,dim,dimval,field.γ) + +# dimsize = size(field.γ.wet) +# # dumb way to do it +# if dim == 1 +# wet2d = field.γ.wet[dimval,:,:] +# tracer2d = field.tracer[dimval,:,:] +# i = field.γ.lat +# j = field.γ.depth +# k = field.γ.lon[dimval] +# elseif dim == 2 +# wet2d = field.γ.wet[:,dimval,:] +# tracer2d = field.tracer[:,dimval,:] +# i = field.γ.lon +# j = field.γ.depth +# k = field.γ.lat[dimval] +# elseif dim == 3 +# wet2d = field.γ.wet[:,:,dimval] +# tracer2d = field.tracer[:,:,dimval] +# i = field.γ.lon +# j = field.γ.lat +# k = field.γ.depth[dimval] +# else +# error("boundary condition not implemented in 4+ dimensions") +# end - b = BoundaryCondition(tracer2d,i,j,k,dim,dimval,wet2d, - field.name,field.longname,field.units) +# b = BoundaryCondition(tracer2d,i,j,k,dim,dimval,wet2d, +# field.name,field.longname,field.units) -end +# end vec(u::BoundaryCondition) = u.tracer[u.wet] @@ -317,7 +333,7 @@ function surfacepatch(lonbox,latbox,γ::Grid)::BoundaryCondition [patch[i,j] += latbox[1] ≤ γ.lat[j] ≤ latbox[2] && lonbox[1] ≤ γ.lon[i] ≤ lonbox[2] for i in eachindex(γ.lon) for j in eachindex(γ.lat)] # 3,1 to identify surface - b = BoundaryCondition(patch,γ.lon,γ.lat,γ.depth[1],3,1,γ.wet[:,:,1],:patch,"rectangular patch","none") + b = BoundaryCondition(patch,(γ.lon,γ.lat),γ.depth[1],3,1,γ.wet[:,:,1],:patch,"rectangular patch","none") return b end @@ -383,13 +399,13 @@ function gsetboundarycondition(gd::Field{T},b::BoundaryCondition{T}) where T<: R #gb = 0.0 * b # initialize to zero if b.dim == 1 #gb.tracer = gd.tracer[b.dimval,:,:] - gb = BoundaryCondition(gd.tracer[b.dimval,:,:],b.i,b.j,b.k,b.dim,b.dimval,b.wet) + gb = BoundaryCondition(gd.tracer[b.dimval,:,:],b.axes,b.k,b.dim,b.dimval,b.wet) elseif b.dim == 2 #gb.tracer = gd.tracer[:,b.dimval,:] - gb = BoundaryCondition(gd.tracer[:,b.dimval,:],b.i,b.j,b.k,b.dim,b.dimval,b.wet) + gb = BoundaryCondition(gd.tracer[:,b.dimval,:],b.axes,b.k,b.dim,b.dimval,b.wet) elseif b.dim == 3 #gb.tracer .+= gd.tracer[:,:,b.dimval] - gb = BoundaryCondition(gd.tracer[:,:,b.dimval],b.i,b.j,b.k,b.dim,b.dimval,b.wet) + gb = BoundaryCondition(gd.tracer[:,:,b.dimval],b.axes,b.k,b.dim,b.dimval,b.wet) else error("controls not implemented for 4+ dimensions") end diff --git a/src/config.jl b/src/config.jl index 15db67a8..d1132897 100644 --- a/src/config.jl +++ b/src/config.jl @@ -211,14 +211,14 @@ function cartesianindex(file::String) end """ - function gridprops(file) + function axislabels(file) Read and assemble the grid properties. # Arguments - `file`: TMI NetCDF file name # Output - `grid`: TMI grid coordinates """ -function gridprops(file) +function axislabels(file) if file[end-1:end] == "nc" lon = convert(Vector{Float64},ncread(file,"lon")) diff --git a/src/field.jl b/src/field.jl index 6ba41a01..df3c7282 100644 --- a/src/field.jl +++ b/src/field.jl @@ -8,35 +8,20 @@ This structure assumes the Tracer type to be three-dimensional. - tracer::Array{T,3} - γ::Grid + tracer::AbstractArray{T,N} + γ::Grid{A,N} name::Symbol longname::String units::String """ -struct Field{T} - tracer::Array{T,3} - γ::Grid +struct Field{T <: Real,R <: Real,N,F <: AbstractArray{T,N}} + tracer::F + γ::Grid{R,N} name::Symbol longname::String units::String end -# """ -# function Field(tracer::Array{T,3},γ::Grid) where T <: Real - -# Outer constructor for Field if there's no worry about -# tracer type, long name, or units. -# # Arguments -# - `tracer::Array{T,3}` -# - `γ::Grid` -# # Output -# - `field::Field` -# """ -#function Field(tracer::Array{T,3},γ::Grid) where T <: Real -# return Field(tracer,γ,:none,"unknown","unknown") -#end - function Base.show(io::IO, mime::MIME{Symbol("text/plain")}, x::Field) summary(io, x); println(io) print(io, "Field size ") @@ -121,12 +106,12 @@ end read MATLAB field and transfer zyx format to xyz """ -function readfield(file,tracername,γ::Grid) +function readfield(file,tracername,γ::Grid{A,N}) where {A,N} # The mode "r" stands for read-only. The mode "r" is the default mode and the parameter can be omitted. tracer, units, longname = _read3d(file,tracername) + T = eltype(tracer) checkgrid!(tracer,γ.wet) - c = Field(tracer,γ,tracerdict()[tracername],longname,units) return c end diff --git a/src/grid.jl b/src/grid.jl index dbd9b858..6a8ee1a8 100644 --- a/src/grid.jl +++ b/src/grid.jl @@ -1,14 +1,17 @@ +using Base: index_ndims, methods_including_ambiguous """ struct Grid - TMI grid with accounting for wet/dry points +TMI grid with accounting for wet/dry points +# Fields +- `axes::NTuple{N,Vector{A}}`: labels for axis such as lon, lat, depth with element type `A` +- `wet::BitArray{N}`: mask for ocean points +- `interior::BitArray{N}`: mask for interior ocean points """ -struct Grid{T <: Real} - lon::Vector{T} - lat::Vector{T} - depth::Vector{T} - wet::BitArray{3} - interior::BitArray{3} +struct Grid{R,N} + axes::NTuple{N,Vector{R}} + wet::BitArray{N} + interior::BitArray{N} end """ @@ -23,16 +26,20 @@ function Grid(TMIfile) - `γ::Grid`: TMI grid struct """ function Grid(TMIfile::String; A = watermassmatrix(TMIfile)) + # get properties of grid - lon,lat,depth = gridprops(TMIfile) + labels = axislabels(TMIfile) + + ndims = length(labels) + ngrid = + Tuple([length(labels[d]) for d in 1:ndims]) # make ocean mask - wet = wetmask(TMIfile,length(lon),length(lat),length(depth)) + wet = wetmask(TMIfile,ngrid) # make interior mask - interior = interiormask(A,wet,length(lon),length(lat),length(depth)) - - return Grid(lon,lat,depth,wet,interior) + interior = interiormask(A,wet,ngrid) + return Grid(labels,wet,interior) end """ @@ -70,7 +77,7 @@ function Grid(foreign_file::S, maskname::S, lonname::S, latname::S, depthname::S interior = deepcopy(wet) interior[:,:,1] .= false - return Grid(lon,lat,depth,wet,interior) + return Grid((lon,lat,depth),wet,interior) end """ @@ -79,12 +86,18 @@ end Do not store Cartesian and linear indices. Compute them on demand. """ -Base.propertynames(γ::Grid) = (:I,:R,fieldnames(typeof(γ))...) +Base.propertynames(γ::Grid) = (:I,:R,:lon,:lat,:depth,fieldnames(typeof(γ))...) function Base.getproperty(γ::Grid, d::Symbol) if d === :I return cartesianindex(γ.wet) elseif d === :R return linearindex(γ.wet) + elseif d === :lon + return γ.axes[1] + elseif d === :lat + return γ.axes[2] + elseif d === :depth + return γ.axes[3] else return getfield(γ, d) end @@ -137,12 +150,17 @@ function checkgrid!(tracer,wet) end end +function wetmask(TMIfile::String,dimsize::NTuple) + # read Cartesian Index from file. + I = cartesianindex(TMIfile) + wet = falses(dimsize) + wet[I] .= 1 + return wet +end function wetmask(TMIfile::String,nx,ny,nz) + # older version that assumes N = 3 # read Cartesian Index from file. I = cartesianindex(TMIfile) - # make a mask - # first choice: smaller but inconsistent with input grid - #wet = falses(maximum(I)[1],maximum(I)[2],maximum(I)[3]) wet = falses(nx,ny,nz) wet[I] .= 1 return wet @@ -158,3 +176,10 @@ function interiormask(A,wet,nx,ny,nz) interior[I[list]] .= true return interior end +function interiormask(A,wet,dimsize::NTuple) + interior = falses(dimsize) + I = cartesianindex(wet) + list = findall(.!(isone.(sum(abs.(A),dims=2)))) + interior[I[list]] .= true + return interior +end diff --git a/src/mass_fractions.jl b/src/mass_fractions.jl index 37e9f6c3..41a9d13c 100644 --- a/src/mass_fractions.jl +++ b/src/mass_fractions.jl @@ -27,7 +27,13 @@ function MassFraction(A, longname = "mass fraction from neighbor") # allocate masks - ngrid = (length(γ.lon), length(γ.lat), length(γ.depth)) + #ngrid = (length(γ.lon), length(γ.lat), length(γ.depth)) + + axislabels = γ.axes + ndims = length(axislabels) + ngrid = + Tuple([length(axislabels[d]) for d in 1:ndims]) + wet = falses(ngrid) m = NaN*ones(ngrid) R = copy(γ.R) @@ -46,10 +52,11 @@ function MassFraction(A, # make a field return MassFraction(m, - Grid(γ.lon,γ.lat,γ.depth, + #Grid(γ.lon,γ.lat,γ.depth, + Grid(γ.axes, wet, γ.interior), - :m_north, + :massfractions_north, longname, "unitless", Δ) diff --git a/src/regions.jl b/src/regions.jl index d70cc4b3..ef6a0ac9 100644 --- a/src/regions.jl +++ b/src/regions.jl @@ -30,7 +30,7 @@ function surfaceregion(TMIversion::String,region::Union{String,Symbol})::Boundar close(ds) #b = BoundaryCondition(mask,lon,lat,depth,3,1,trues(parse(Int64,Nx),parse(Int64,Ny)),Symbol(region),longname,units) - b = BoundaryCondition(mask,lon,lat,depth,3,1,wet,Symbol(region),longname,units) + b = BoundaryCondition(mask,(lon,lat),depth,3,1,wet,Symbol(region),longname,units) return b end diff --git a/src/source.jl b/src/source.jl index 1cdeba52..931aae3e 100644 --- a/src/source.jl +++ b/src/source.jl @@ -6,9 +6,9 @@ 1) non-negative 2) have only interior mask """ -struct Source{T} - tracer::Array{T,3} - γ::Grid +struct Source{T <: Real, A <: Real, N, F<:AbstractArray{T,N}} + tracer::F + γ::Grid{A,N} name::Symbol longname::String units::String diff --git a/test/runtests.jl b/test/runtests.jl index 8ebe1711..6ad26256 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,6 +1,6 @@ using Test using TMI - +using LinearAlgebra: lu function compare_controls(ubc,ubc2,testval) irand = rand(1:sum(ubc.wet)) iloc = findall(ubc.wet)[irand]