From 17ab1458794b3d4873b2ab9550074b1d2a06dea9 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Tue, 27 Feb 2024 21:55:36 +0200 Subject: [PATCH] Use Julia v1.10 for CI (#3403) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * use julia v1.9.4 * use julia v1.10 for CI * use julia v1.10 * use julia v1.9.4 for distributed ci * update manifest * use julia v1.10.0 * remove various unroll for test * fix doctests with updated namedtuple show method * fix docstring rendering * remove stray spaces * use CairoMakie v0.11 + latest syntax: Figure(size=(..)) * fix typo * Revert "remove various unroll for test" This reverts commit 36e43e584939824e630771d74e29026e392814fa. * use Val to unroll loops in kernels for periodic bcs * remove unrolls * add inbounds * add inbounds * add inbounds * bit of cleanup * drop another @unroll * resolve deps * resolve conflicts * minor rephrae * add compat for Adapt 4 * update deps * try fixing distributed pipeline * add compat NCDataset v0.14 * add debug show statements * another attempt to debug * another attempt to debug * better debuging * add atol=eps in tests * add compat NCDatasets v0.14 * up deps * better phrasing * better ref to wagner et al 2021 * debug why w ≠ ws * fix debugging w * fix debugging w * add both atol and rtol * remove empty lines * Update test_distributed_hydrostatic_model.jl * remove debug statements * code alignment * use julia v1.10.1 * update deps * use julia v1.10.1 * revert to julia v1.10.0 * update deps * KernelAbstractions 0.9.17 * fix doctest --- .buildkite/distributed/JuliaProject.toml | 16 +- .buildkite/distributed/pipeline.yml | 6 +- .buildkite/pipeline.yml | 4 +- Dockerfile | 2 +- Manifest.toml | 430 +++++++++++------- Project.toml | 4 +- docs/Manifest.toml | 366 +++++++++------ docs/Project.toml | 2 +- docs/src/model_setup/background_fields.md | 2 +- docs/src/model_setup/forcing_functions.md | 2 +- examples/langmuir_turbulence.jl | 19 +- examples/tilted_bottom_boundary_layer.jl | 2 +- .../conditional_operations.jl | 2 +- src/Advection/Advection.jl | 1 - ...y_preserving_tracer_advection_operators.jl | 12 +- src/Advection/reconstruction_coefficients.jl | 24 +- src/Advection/stretched_weno_smoothness.jl | 39 +- src/BoundaryConditions/fill_halo_regions.jl | 1 - .../fill_halo_regions_flux.jl | 2 - .../fill_halo_regions_periodic.jl | 18 +- src/Fields/field_boundary_buffers.jl | 1 - src/Fields/regridding_fields.jl | 14 +- src/Forcings/forcing.jl | 9 +- .../compute_w_from_continuity.jl | 4 +- .../split_explicit_free_surface_kernels.jl | 21 +- .../update_hydrostatic_pressure.jl | 11 +- .../ShallowWaterModels/ShallowWaterModels.jl | 1 - .../store_shallow_water_tendencies.jl | 2 + src/Solvers/Solvers.jl | 1 - src/Solvers/batched_tridiagonal_solver.jl | 12 +- .../fourier_tridiagonal_poisson_solver.jl | 6 +- .../scalar_diffusivity.jl | 43 +- test/test_distributed_hydrostatic_model.jl | 13 +- test/test_distributed_models.jl | 5 +- test/test_distributed_poisson_solvers.jl | 5 +- test/test_poisson_solvers.jl | 1 - test/test_regrid.jl | 10 +- test/utils_for_runtests.jl | 20 +- .../visualize_barotropic_gyre.jl | 2 +- validation/bickley_jet/bickley_jet.jl | 2 +- .../biogeochemistry/sediment_entrainment.jl | 4 +- ...lankton_continuous_form_biogeochemistry.jl | 2 +- .../longitudinal_tracer_diffusion.jl | 2 +- .../meridional_diffusion.jl | 2 +- .../spot_tracer_diffusion.jl | 2 +- .../distributed_shallow_water_turbulence.jl | 2 +- .../seasonal_baroclinic_channel.jl | 2 +- .../bumpy_baroclinic_adjustment.jl | 2 +- .../immersed_boundaries/flow_over_hills.jl | 2 +- .../resting_stratified_bumpy_ocean.jl | 2 +- .../geostrophic_adjustment_test.jl | 2 +- .../baroclinic_adjustment.jl | 2 +- .../coarse_baroclinic_adjustment.jl | 2 +- .../coarse_lat_lon_baroclinic_adjustment.jl | 2 +- .../mesoscale_turbulence/eddying_channel.jl | 2 +- .../modified_baroclinic_adjustment.jl | 2 +- .../zonally_averaged_baroclinic_adjustment.jl | 2 +- .../cubed_sphere_tracer_advection.jl | 2 +- .../multi_region/multi_region_cubed_sphere.jl | 6 +- .../orthogonal_spherical_shell_grid/splash.jl | 2 +- .../shallow_water_model/make_animation.jl | 2 +- .../shallow_water_model/vortex_merger.jl | 2 +- .../solid_body_rotation.jl | 2 +- .../solid_body_tracer_advection.jl | 2 +- .../solid_body_rotation/visualization.jl | 6 +- .../Langmuir_with_Stokes_x_jet.jl | 8 +- .../Langmuir_with_Stokes_y_jet.jl | 8 +- .../column_windy_convection.jl | 2 +- .../heterogeneous_windy_convection.jl | 2 +- 69 files changed, 704 insertions(+), 513 deletions(-) diff --git a/.buildkite/distributed/JuliaProject.toml b/.buildkite/distributed/JuliaProject.toml index 6eca5f806d..fff554e83a 100644 --- a/.buildkite/distributed/JuliaProject.toml +++ b/.buildkite/distributed/JuliaProject.toml @@ -1,17 +1,15 @@ [extras] CUDA_Runtime_jll = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" +CUDA_Driver_jll = "4ee394cb-3365-5eb0-8335-949819d2adfc" MPIPreferences = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" -OpenMPI_jll = "fe0851c0-eecd-5654-98d4-656369965a5c" + +[preferences.CUDA_Driver_jll] +compat = false [preferences.CUDA_Runtime_jll] -version = "local" +version = "12.2" +local = "true" [preferences.MPIPreferences] _format = "1.0" -abi = "OpenMPI" -binary = "system" -libmpi = "libmpi" -mpiexec = "mpiexec" - -[preferences.OpenMPI_jll] -libmpi_path = "libmpi" \ No newline at end of file +binary = "MPItrampoline_jll" diff --git a/.buildkite/distributed/pipeline.yml b/.buildkite/distributed/pipeline.yml index 34b923f18b..27325c245a 100644 --- a/.buildkite/distributed/pipeline.yml +++ b/.buildkite/distributed/pipeline.yml @@ -1,7 +1,7 @@ agents: queue: central slurm_mem: 8G - modules: julia/1.9.4 cuda/12.2 ucx/1.14.1_cuda-12.2 openmpi/4.1.5_cuda-12.2 hdf5/1.12.2-ompi415 nsight-systems/2023.2.1 + modules: julia/1.10.0 cuda/12.2 ucx/1.14.1_cuda-12.2 openmpi/4.1.5_cuda-12.2 nsight-systems/2023.2.1 env: JULIA_LOAD_PATH: "${JULIA_LOAD_PATH}:${BUILDKITE_BUILD_CHECKOUT_PATH}/.buildkite/distributed" @@ -10,6 +10,8 @@ env: OMPI_MCA_opal_warn_on_missing_libcuda: 0 JULIA_CPU_TARGET: 'broadwell;skylake' JULIA_CUDA_MEMORY_POOL: none + MPITRAMPOLINE_LIB: /groups/esm/software/MPIwrapper/ompi4.1.5_cuda-12.2/lib64/libmpiwrapper.so + MPITRAMPOLINE_MPIEXEC: /groups/esm/software/MPIwrapper/ompi4.1.5_cuda-12.2/bin/mpiwrapperexec steps: - label: "initialize" @@ -94,4 +96,4 @@ steps: command: - "build_history staging" artifact_paths: - - "build_history.html" \ No newline at end of file + - "build_history.html" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 873e4edb17..e486963d65 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,6 +1,6 @@ env: - JULIA_VERSION: "1.9.4" - JULIA_MINOR_VERSION: "1.9" + JULIA_VERSION: "1.10.1" + JULIA_MINOR_VERSION: "1.10" SVERDRUP_HOME: "/data5/glwagner" TARTARUS_HOME: "/storage5/buildkite-agent" GKSwstype: "100" # See: https://github.com/jheinen/GR.jl/issues/278 diff --git a/Dockerfile b/Dockerfile index 599f5821a5..8c9f1bd805 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM julia:1.9.4 +FROM julia:1.10.1 LABEL maintainer="Ali Ramadhan " RUN apt-get update && apt-get install -y hdf5-tools diff --git a/Manifest.toml b/Manifest.toml index bf09b5977a..6d88d843c4 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.4" +julia_version = "1.10.1" manifest_format = "2.0" -project_hash = "39afa30206a17bb59b9e4ecef8c35f280cf4701c" +project_hash = "04d395caf937b0921325a77873167e8baa293a99" [[deps.AbstractFFTs]] deps = ["LinearAlgebra"] @@ -20,9 +20,9 @@ version = "1.5.0" [[deps.Adapt]] deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "76289dc51920fdc6e0013c872ba9551d54961c24" +git-tree-sha1 = "0fb305e0253fd4e833d486914367a2ee2c2e78d0" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.6.2" +version = "4.0.1" weakdeps = ["StaticArrays"] [deps.Adapt.extensions] @@ -34,9 +34,9 @@ version = "1.1.1" [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "f83ec24f76d4c8f525099b2ac475fc098138ec31" +git-tree-sha1 = "c5aeb516a84459e0318a02507d2261edad97eb75" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.4.11" +version = "7.7.1" [deps.ArrayInterface.extensions] ArrayInterfaceBandedMatricesExt = "BandedMatrices" @@ -72,16 +72,22 @@ version = "0.4.2" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +[[deps.Blosc_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Lz4_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "19b98ee7e3db3b4eff74c5c9c72bf32144e24f10" +uuid = "0b7ba130-8d10-5ba8-a3d6-c5182647fed9" +version = "1.21.5+0" + [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" +git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+0" +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" +version = "0.5.0" [[deps.CFTime]] deps = ["Dates", "Printf"] @@ -90,32 +96,36 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.2" [[deps.CUDA]] -deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "Crayons", "DataFrames", "ExprTools", "GPUArrays", "GPUCompiler", "KernelAbstractions", "LLVM", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "NVTX", "Preferences", "PrettyTables", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "Statistics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "f062a48c26ae027f70c44f48f244862aec47bf99" +deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "Crayons", "DataFrames", "ExprTools", "GPUArrays", "GPUCompiler", "KernelAbstractions", "LLVM", "LLVMLoopInfo", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "NVTX", "Preferences", "PrettyTables", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "StaticArrays", "Statistics"] +git-tree-sha1 = "baa8ea7a1ea63316fa3feb454635215773c9c845" uuid = "052768ef-5323-5732-b1bb-66c8b64840ba" -version = "5.0.0" -weakdeps = ["SpecialFunctions"] +version = "5.2.0" [deps.CUDA.extensions] + ChainRulesCoreExt = "ChainRulesCore" SpecialFunctionsExt = "SpecialFunctions" + [deps.CUDA.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + [[deps.CUDA_Driver_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "35a37bb72b35964f2895c12c687ae263b4ac170c" +git-tree-sha1 = "d01bfc999768f0a31ed36f5d22a76161fc63079c" uuid = "4ee394cb-3365-5eb0-8335-949819d2adfc" -version = "0.6.0+3" +version = "0.7.0+1" [[deps.CUDA_Runtime_Discovery]] deps = ["Libdl"] -git-tree-sha1 = "bcc4a23cbbd99c8535a5318455dcf0f2546ec536" +git-tree-sha1 = "2cb12f6b2209f40a4b8967697689a47c50485490" uuid = "1af6417a-86b4-443c-805f-a4643ffb695f" -version = "0.2.2" +version = "0.2.3" [[deps.CUDA_Runtime_jll]] deps = ["Artifacts", "CUDA_Driver_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "178a606891f82b6d734f0eadd5336b7aad44d5df" +git-tree-sha1 = "8e25c009d2bf16c2c31a70a6e9e8939f7325cc84" uuid = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" -version = "0.9.2+1" +version = "0.11.1+0" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] @@ -130,16 +140,16 @@ uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" version = "0.12.10" [[deps.CommonDataModel]] -deps = ["CFTime", "DataStructures", "Dates", "Preferences", "Printf"] -git-tree-sha1 = "7f5717cbb2c1ce650cfd454451f282df33103596" +deps = ["CFTime", "DataStructures", "Dates", "Preferences", "Printf", "Statistics"] +git-tree-sha1 = "d7d7b58e149f19c322840a50d1bc20e8c23addb4" uuid = "1fbeeb36-5f17-413c-809b-666fb144f157" -version = "0.2.5" +version = "0.3.5" [[deps.Compat]] -deps = ["UUIDs"] -git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "c955881e3c981181362ae4088b35995446298b80" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.10.0" +version = "4.14.0" weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] @@ -148,7 +158,7 @@ weakdeps = ["Dates", "LinearAlgebra"] [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.5+0" +version = "1.1.0+0" [[deps.ConstructionBase]] deps = ["LinearAlgebra"] @@ -171,14 +181,14 @@ version = "4.1.1" [[deps.CubedSphere]] deps = ["Elliptic", "FFTW", "Printf", "ProgressBars", "SpecialFunctions", "TaylorSeries", "Test"] -git-tree-sha1 = "131498c78453d02b4821d8b93f6e44595399f19f" +git-tree-sha1 = "10134667d7d3569b191a65801514271b8a93b292" uuid = "7445602f-e544-4518-8976-18f8e8ae6cdb" -version = "0.2.3" +version = "0.2.5" [[deps.DataAPI]] -git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.15.0" +version = "1.16.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"] @@ -188,9 +198,9 @@ version = "1.6.1" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" +git-tree-sha1 = "1fb174f0d48fe7d142e1109a10636bc1d14f5ac2" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.15" +version = "0.18.17" [[deps.DataValueInterfaces]] git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" @@ -202,16 +212,16 @@ deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" [[deps.DiskArrays]] -deps = ["OffsetArrays"] -git-tree-sha1 = "1bfa9de80f35ac63c6c381b2d43c590875896a1f" +deps = ["LRUCache", "OffsetArrays"] +git-tree-sha1 = "ef25c513cad08d7ebbed158c91768ae32f308336" uuid = "3c3547ce-8d99-4f5e-a174-61eb10b00ae3" -version = "0.3.22" +version = "0.3.23" [[deps.Distances]] deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "5225c965635d8c21168e32a12954675e7bea1151" +git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.10" +version = "0.10.11" [deps.Distances.extensions] DistancesChainRulesCoreExt = "ChainRulesCore" @@ -248,9 +258,9 @@ version = "0.1.10" [[deps.FFTW]] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "b4fbdd20c889804969571cc589900803edda16b7" +git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.7.1" +version = "1.8.0" [[deps.FFTW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -260,9 +270,9 @@ version = "3.3.10+0" [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "299dc33549f68299137e51e6d49a13b5b1da9673" +git-tree-sha1 = "c5c28c245101bd59154f649e19b038d15901b5dc" uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.1" +version = "1.16.2" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" @@ -277,34 +287,51 @@ version = "0.8.4" deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +[[deps.GMP_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d" +version = "6.2.1+6" + [[deps.GPUArrays]] deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "8ad8f375ae365aa1eb2f42e2565a40b55a4b69a8" +git-tree-sha1 = "47e4686ec18a9620850bad110b79966132f14283" uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "9.0.0" +version = "10.0.2" [[deps.GPUArraysCore]] deps = ["Adapt"] -git-tree-sha1 = "2d6ca471a6c7b536127afccfa7564b5b39227fe0" +git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.5" +version = "0.1.6" [[deps.GPUCompiler]] deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "Scratch", "TimerOutputs", "UUIDs"] -git-tree-sha1 = "5e4487558477f191c043166f8301dd0b4be4e2b2" +git-tree-sha1 = "a846f297ce9d09ccba02ead0cae70690e072a119" uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" -version = "0.24.5" +version = "0.25.0" [[deps.Glob]] git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" version = "1.3.1" +[[deps.GnuTLS_jll]] +deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Nettle_jll", "P11Kit_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "266fe9b2335527cbf569ba4fd0979e3d8c6fd491" +uuid = "0951126a-58fd-58f1-b5b3-b08c7c4a876d" +version = "3.7.8+1" + [[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 = "38c8874692d48d5440d5752d6c74b0c6b0b60739" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "OpenSSL_jll", "TOML", "Zlib_jll", "libaec_jll"] +git-tree-sha1 = "e4591176488495bf44d7456bd73179d87d5e6eab" uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" -version = "1.14.2+1" +version = "1.14.3+1" + +[[deps.Hwloc_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "ca0f6bf568b4bfc807e7537f081c81e35ceca114" +uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" +version = "2.10.0+0" [[deps.IfElse]] git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" @@ -324,10 +351,10 @@ uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" version = "1.4.0" [[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ad37c091f7d7daf900963171600d7c1c5c3ede32" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "5fdf2fe6724d8caabf43b557b84ce53f3b7e2f6b" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2023.2.0+0" +version = "2024.0.2+0" [[deps.InteractiveUtils]] deps = ["Markdown"] @@ -345,9 +372,9 @@ version = "0.2.2" [[deps.IterativeSolvers]] deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"] -git-tree-sha1 = "1169632f425f79429f245113b775a0e3d121457c" +git-tree-sha1 = "59545b0a2b27208b0650df0a46b8e3019f85055b" uuid = "42fd0dbc-a981-5370-80f2-aaf504508153" -version = "0.9.2" +version = "0.9.4" [[deps.IteratorInterfaceExtensions]] git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" @@ -355,10 +382,10 @@ uuid = "82899510-4779-5014-852e-03e436cf321d" version = "1.0.0" [[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "Printf", "Reexport", "Requires", "TranscodingStreams", "UUIDs"] -git-tree-sha1 = "c11d691a0dc8e90acfa4740d293ade57f68bfdbb" +deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Printf", "Reexport", "Requires", "TranscodingStreams", "UUIDs"] +git-tree-sha1 = "5ea6acdd53a51d897672edb694e3cc2912f3f8a7" uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.35" +version = "0.4.46" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -368,9 +395,15 @@ version = "1.5.0" [[deps.JSON3]] deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] -git-tree-sha1 = "95220473901735a0f4df9d1ca5b171b568b2daa3" +git-tree-sha1 = "eb3edce0ed4fa32f75a0a11217433c31d56bd48b" uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" -version = "1.13.2" +version = "1.14.0" + + [deps.JSON3.extensions] + JSON3ArrowExt = ["ArrowTypes"] + + [deps.JSON3.weakdeps] + ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" [[deps.JuliaNVTXCallbacks_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -380,9 +413,9 @@ version = "0.2.1+0" [[deps.KernelAbstractions]] deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "5f1ecfddb6abde48563d08b2cc7e5116ebcd6c27" +git-tree-sha1 = "c7753cc3febe006708ce6798482004241f7d890b" uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.10" +version = "0.9.17" [deps.KernelAbstractions.extensions] EnzymeExt = "EnzymeCore" @@ -391,27 +424,39 @@ version = "0.9.10" EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" [[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Printf", "Unicode"] -git-tree-sha1 = "4ea2928a96acfcf8589e6cd1429eff2a3a82c366" +deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] +git-tree-sha1 = "ddab4d40513bce53c8e3157825e245224f74fae7" uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "6.3.0" +version = "6.6.0" +weakdeps = ["BFloat16s"] + + [deps.LLVM.extensions] + BFloat16sExt = "BFloat16s" [[deps.LLVMExtra_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "e7c01b69bcbcb93fd4cbc3d0fea7d229541e18d2" +git-tree-sha1 = "88b916503aac4fb7f701bb625cd84ca5dd1677bc" uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.26+0" +version = "0.0.29+0" -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.4+0" +[[deps.LLVMLoopInfo]] +git-tree-sha1 = "2e5c102cfc41f48ae4740c7eca7743cc7e7b75ea" +uuid = "8b046642-f1f6-4319-8d3c-209ddc03c586" +version = "1.0.0" + +[[deps.LRUCache]] +git-tree-sha1 = "b3cc6698599b10e652832c2f23db3cab99d51b59" +uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" +version = "1.6.1" +weakdeps = ["Serialization"] + + [deps.LRUCache.extensions] + SerializationExt = ["Serialization"] [[deps.LaTeXStrings]] -git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.0" +version = "1.3.1" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] @@ -428,9 +473,14 @@ uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" version = "8.4.0+0" [[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +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" @@ -451,9 +501,9 @@ uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" +git-tree-sha1 = "18144f3e9cbe9b15b070288eef858f71b291ce37" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.26" +version = "0.3.27" [deps.LogExpFunctions.extensions] LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" @@ -468,17 +518,23 @@ version = "0.3.26" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +[[deps.Lz4_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6c26c5e8a4203d43b5497be3ec5d4e0c3cde240a" +uuid = "5ced341a-0733-55b8-9ab6-a4889d929147" +version = "1.9.4+0" + [[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "eb006abbd7041c28e0d16260e50a24f8f9104913" +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "72dc3cf284559eb8f53aa593fe62cb33f83ed0c0" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2023.2.0+0" +version = "2024.0.0+0" [[deps.MPI]] deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] -git-tree-sha1 = "b4d8707e42b693720b54f0b3434abee6dd4d947a" +git-tree-sha1 = "4e3136db3735924f96632a5b40a5979f1f53fa07" uuid = "da04e1cc-30fd-572f-bb4f-1f8673147195" -version = "0.20.16" +version = "0.20.19" [deps.MPI.extensions] AMDGPUExt = "AMDGPU" @@ -489,28 +545,28 @@ version = "0.20.16" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" [[deps.MPICH_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "8a5b4d2220377d1ece13f49438d71ad20cf1ba83" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "656036b9ed6f942d35e536e249600bc31d0f9df8" uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.1.2+0" +version = "4.2.0+0" [[deps.MPIPreferences]] deps = ["Libdl", "Preferences"] -git-tree-sha1 = "781916a2ebf2841467cda03b6f1af43e23839d85" +git-tree-sha1 = "8f6af051b9e8ec597fa09d8885ed79fd582f33c9" uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" -version = "0.1.9" +version = "0.1.10" [[deps.MPItrampoline_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "6979eccb6a9edbbb62681e158443e79ecc0d056a" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "77c3bd69fdb024d75af38713e883d0f249ce19c2" uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.3.1+0" +version = "5.3.2+0" [[deps.MacroTools]] deps = ["Markdown", "Random"] -git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.11" +version = "0.5.13" [[deps.Markdown]] deps = ["Base64"] @@ -519,13 +575,13 @@ uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" +version = "2.28.2+1" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "a7023883872e52bc29bcaac74f19adf39347d2d5" +git-tree-sha1 = "f12a29c4400ba812841c6ace3f4efbb6dbb3ba01" uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" -version = "10.1.4+0" +version = "10.1.4+2" [[deps.Missings]] deps = ["DataAPI"] @@ -538,19 +594,19 @@ uuid = "a63ad114-7e13-5084-954f-fe012c677804" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" +version = "2023.1.10" [[deps.NCDatasets]] deps = ["CFTime", "CommonDataModel", "DataStructures", "Dates", "DiskArrays", "NetCDF_jll", "NetworkOptions", "Printf"] -git-tree-sha1 = "7fcb4378f9c648a186bcb996fa29acc929a179ed" +git-tree-sha1 = "98ca95cf41116a24e46dc9a06fa22b923e8411b7" uuid = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" -version = "0.13.1" +version = "0.14.2" [[deps.NVTX]] deps = ["Colors", "JuliaNVTXCallbacks_jll", "Libdl", "NVTX_jll"] -git-tree-sha1 = "8bc9ce4233be3c63f8dcd78ccaf1b63a9c0baa34" +git-tree-sha1 = "53046f0483375e3ed78e49190f1154fa0a4083a1" uuid = "5da4648a-3479-48b8-97b9-01cb529c0a1f" -version = "0.3.3" +version = "0.3.4" [[deps.NVTX_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -559,30 +615,39 @@ uuid = "e98f9f5b-d649-5603-91fd-7774390e6439" version = "3.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" +deps = ["Artifacts", "Blosc_jll", "Bzip2_jll", "HDF5_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "OpenMPI_jll", "XML2_jll", "Zlib_jll", "Zstd_jll", "libzip_jll"] +git-tree-sha1 = "a8af1798e4eb9ff768ce7fdefc0e957097793f15" uuid = "7243133f-43d8-5620-bbf4-c2c921802cf3" -version = "400.902.208+0" +version = "400.902.209+0" + +[[deps.Nettle_jll]] +deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "eca63e3847dad608cfa6a3329b95ef674c7160b4" +uuid = "4c82536e-c426-54e4-b420-14f461c4ed8b" +version = "3.7.2+0" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" [[deps.OffsetArrays]] -deps = ["Adapt"] -git-tree-sha1 = "2ac17d29c523ce1cd38e27785a7d23024853a4bb" +git-tree-sha1 = "6a731f2b5c03157418a20c12195eb4b74c8f8621" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.12.10" +version = "1.13.0" +weakdeps = ["Adapt"] + + [deps.OffsetArrays.extensions] + OffsetArraysAdaptExt = "Adapt" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.21+4" +version = "0.3.23+4" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" +version = "0.8.1+2" [[deps.OpenMPI_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] @@ -592,9 +657,9 @@ version = "4.1.6+0" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ceeda72c9fd6bbebc4f4f598560789145a8b6c4c" +git-tree-sha1 = "60e3045590bd104a16fefb12836c00c0ef8c7f8c" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.11+0" +version = "3.0.13+0" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -603,9 +668,15 @@ uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" version = "0.5.5+0" [[deps.OrderedCollections]] -git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.2" +version = "1.6.3" + +[[deps.P11Kit_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "2cd396108e178f3ae8dedbd8e938a18726ab2fbf" +uuid = "c2071276-7c44-58a7-b746-946036e04d0a" +version = "0.24.1+0" [[deps.PackageExtensionCompat]] git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518" @@ -615,15 +686,15 @@ weakdeps = ["Requires", "TOML"] [[deps.Parsers]] deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "716e24b21538abc91f6205fd1d8363f39b442851" +git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.7.2" +version = "2.8.1" [[deps.PencilArrays]] deps = ["Adapt", "JSON3", "LinearAlgebra", "MPI", "OffsetArrays", "Random", "Reexport", "StaticArrayInterface", "StaticArrays", "StaticPermutations", "Strided", "TimerOutputs", "VersionParsing"] -git-tree-sha1 = "1a473d028436947e08436275ff3fcc2f3e9c5b06" +git-tree-sha1 = "6510e851700a851944f7ffa5cd990cced4802ad2" uuid = "0e08944d-e94e-41b1-9406-dcf66b6a9d2e" -version = "0.19.2" +version = "0.19.3" [deps.PencilArrays.extensions] PencilArraysDiffEqExt = ["DiffEqBase"] @@ -642,7 +713,7 @@ version = "0.15.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.9.2" +version = "1.10.0" [[deps.PkgVersion]] deps = ["Pkg"] @@ -669,10 +740,10 @@ uuid = "21216c6a-2e73-6563-6e65-726566657250" version = "1.4.1" [[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "ee094908d720185ddbdc58dbe0c1cbe35453ec7a" +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "88b895d13d53b5577fd53379d913b9ab9ac82660" uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.2.7" +version = "2.3.1" [[deps.Printf]] deps = ["Unicode"] @@ -686,23 +757,23 @@ version = "1.5.1" [[deps.Quaternions]] deps = ["LinearAlgebra", "Random", "RealDot"] -git-tree-sha1 = "da095158bdc8eaccb7890f9884048555ab771019" +git-tree-sha1 = "994cc27cdacca10e68feb291673ec3a76aa2fae9" uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" -version = "0.7.4" +version = "0.7.6" [[deps.REPL]] deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] -deps = ["SHA", "Serialization"] +deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.Random123]] deps = ["Random", "RandomNumbers"] -git-tree-sha1 = "552f30e847641591ba3f39fd1bed559b9deb0ef3" +git-tree-sha1 = "4743b43e5a9c4a2ede372de7061eed81795b12e7" uuid = "74087812-796a-5b5d-8853-05524746bad3" -version = "1.6.1" +version = "1.7.0" [[deps.RandomNumbers]] deps = ["Random", "Requires"] @@ -735,9 +806,13 @@ version = "1.3.0" [[deps.Rotations]] deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays"] -git-tree-sha1 = "0783924e4a332493f72490253ba4e668aeba1d73" +git-tree-sha1 = "2a0a5d8569f481ff8840e3b7c84bbf188db6a3fe" uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc" -version = "1.6.0" +version = "1.7.0" +weakdeps = ["RecipesBase"] + + [deps.Rotations.extensions] + RotationsRecipesBaseExt = "RecipesBase" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -745,9 +820,9 @@ version = "0.7.0" [[deps.Scratch]] deps = ["Dates"] -git-tree-sha1 = "30449ee12237627992a99d5e30ae63e4d78cd24a" +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.0" +version = "1.2.1" [[deps.SeawaterPolynomials]] git-tree-sha1 = "6d85acd6de472f8e6da81c61c7c5b6280a55e0bc" @@ -756,9 +831,9 @@ version = "0.3.4" [[deps.SentinelArrays]] deps = ["Dates", "Random"] -git-tree-sha1 = "04bdff0b09c65ff3e06a05e3eb7b120223da3d39" +git-tree-sha1 = "0e7508ff27ba32f26cd459474ca2ede1bc10991f" uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.0" +version = "1.4.1" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -768,13 +843,14 @@ uuid = "6462fe0b-24de-5631-8697-dd941f90decc" [[deps.SortingAlgorithms]] deps = ["DataStructures"] -git-tree-sha1 = "c60ec5c62180f27efea3ba2908480f8055e17cee" +git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.1" +version = "1.2.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"] @@ -790,15 +866,15 @@ version = "2.3.1" [[deps.Static]] deps = ["IfElse"] -git-tree-sha1 = "f295e0a1da4ca425659c57441bcb59abb035a4bc" +git-tree-sha1 = "d2fdac9ff3906e27f7a618d47b676941baa6c80c" uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "0.8.8" +version = "0.8.10" [[deps.StaticArrayInterface]] deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Requires", "SparseArrays", "Static", "SuiteSparse"] -git-tree-sha1 = "03fec6800a986d191f64f5c0996b59ed526eda25" +git-tree-sha1 = "5d66818a39bb04bf328e92bc933ec5b4ee88e436" uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" -version = "1.4.1" +version = "1.5.0" weakdeps = ["OffsetArrays", "StaticArrays"] [deps.StaticArrayInterface.extensions] @@ -806,15 +882,19 @@ weakdeps = ["OffsetArrays", "StaticArrays"] StaticArrayInterfaceStaticArraysExt = "StaticArrays" [[deps.StaticArrays]] -deps = ["LinearAlgebra", "Random", "StaticArraysCore"] -git-tree-sha1 = "0adf069a2a490c47273727e029371b31d44b72b2" +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "bf074c045d3d5ffd956fa0a461da38a44685d6b2" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.6.5" -weakdeps = ["Statistics"] +version = "1.9.3" [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" StaticArraysStatisticsExt = "Statistics" + [deps.StaticArrays.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + [[deps.StaticArraysCore]] git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" @@ -828,7 +908,7 @@ version = "0.3.0" [[deps.Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" +version = "1.10.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] @@ -844,9 +924,9 @@ version = "2.0.4" [[deps.StridedViews]] deps = ["LinearAlgebra", "PackageExtensionCompat"] -git-tree-sha1 = "cf857ff7de76f39e5daef6d032e8a74279ddff6a" +git-tree-sha1 = "5b765c4e401693ab08981989f74a36a010aa1d8e" uuid = "4db3bf67-4bd7-4b4e-b153-31dc3fb37143" -version = "0.2.1" +version = "0.2.2" weakdeps = ["CUDA"] [deps.StridedViews.extensions] @@ -859,10 +939,17 @@ uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" version = "0.3.4" [[deps.StructArrays]] -deps = ["Adapt", "ConstructionBase", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] -git-tree-sha1 = "0a3db38e4cce3c54fe7a71f831cd7b6194a54213" +deps = ["ConstructionBase", "DataAPI", "Tables"] +git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.16" +version = "0.6.18" +weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] + + [deps.StructArrays.extensions] + StructArraysAdaptExt = "Adapt" + StructArraysGPUArraysCoreExt = "GPUArraysCore" + StructArraysSparseArraysExt = "SparseArrays" + StructArraysStaticArraysExt = "StaticArrays" [[deps.StructTypes]] deps = ["Dates", "UUIDs"] @@ -875,9 +962,9 @@ deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" [[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" +version = "7.2.1+1" [[deps.TOML]] deps = ["Dates"] @@ -892,9 +979,9 @@ version = "1.0.1" [[deps.Tables]] deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "a1f34829d5ac0ef499f6d84428bd6b4c71f02ead" +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.11.0" +version = "1.11.1" [[deps.Tar]] deps = ["ArgTools", "SHA"] @@ -903,9 +990,9 @@ version = "1.10.0" [[deps.TaylorSeries]] deps = ["LinearAlgebra", "Markdown", "Requires", "SparseArrays"] -git-tree-sha1 = "50718b4fc1ce20cecf28d85215028c78b4d875c2" +git-tree-sha1 = "1c7170668366821b0c4c4fe03ee78f8d6cf36e2c" uuid = "6aa5eb33-94cf-58f4-a9d0-e4b2c4fc25ea" -version = "0.15.2" +version = "0.16.0" [deps.TaylorSeries.extensions] TaylorSeriesIAExt = "IntervalArithmetic" @@ -924,15 +1011,18 @@ uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" version = "0.5.23" [[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" +git-tree-sha1 = "54194d92959d8ebaa8e26227dbe3cdefcdcd594f" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" +version = "0.10.3" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] [[deps.TupleTools]] -git-tree-sha1 = "155515ed4c4236db30049ac1495e2969cc06be9d" +git-tree-sha1 = "41d61b1c545b06279871ef1a4b5fcb2cac2191cd" uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6" -version = "1.4.3" +version = "1.5.0" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -959,14 +1049,20 @@ version = "1.3.0" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "24b81b59bd35b3c42ab84fa589086e19be919916" +git-tree-sha1 = "07e470dabc5a6a4254ffebc29a1b3fc01464e105" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.11.5+0" +version = "2.12.5+0" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "37195dcb94a5970397ad425b95a9a26d0befce3a" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.6.0+0" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" +version = "1.2.13+1" [[deps.Zstd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -983,7 +1079,13 @@ version = "1.0.6+1" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+0" +version = "5.8.0+1" + +[[deps.libzip_jll]] +deps = ["Artifacts", "Bzip2_jll", "GnuTLS_jll", "JLLWrappers", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "3282b7d16ae7ac3e57ec2f3fa8fafb564d8f9f7f" +uuid = "337d8026-41b4-5cde-a456-74a10e5b31d1" +version = "1.10.1+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] @@ -993,4 +1095,4 @@ version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" +version = "17.4.0+2" diff --git a/Project.toml b/Project.toml index aa53b72cf9..79a70ce4b4 100644 --- a/Project.toml +++ b/Project.toml @@ -42,7 +42,7 @@ Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" OceananigansEnzymeExt = "Enzyme" [compat] -Adapt = "3" +Adapt = "3, 4" CUDA = "4.1.1, 5" Crayons = "4" CubedSphere = "0.1, 0.2" @@ -60,7 +60,7 @@ KernelAbstractions = "0.9" LinearAlgebra = "1.9" Logging = "1.9" MPI = "0.16, 0.17, 0.18, 0.19, 0.20" -NCDatasets = "0.12.10, 0.13.1" +NCDatasets = "0.12.10, 0.13.1, 0.14" OffsetArrays = "1.4" OrderedCollections = "1.1" PencilArrays = "0.16, 0.17, 0.18, 0.19" diff --git a/docs/Manifest.toml b/docs/Manifest.toml index 58c04e4892..fb74b8fa0d 100644 --- a/docs/Manifest.toml +++ b/docs/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.4" +julia_version = "1.10.1" manifest_format = "2.0" -project_hash = "0aada4916f44c3fc6530fbd36bbf78fb661dbc9c" +project_hash = "557d52a05599ce90be2c57f1ff77f12735a978b2" [[deps.ANSIColoredPrinters]] git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c" @@ -26,9 +26,9 @@ uuid = "398f06c4-4d28-53ec-89ca-5b2656b7603d" version = "0.3.0" [[deps.AbstractTrees]] -git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" +git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.4" +version = "0.4.5" [[deps.Adapt]] deps = ["LinearAlgebra", "Requires"] @@ -52,9 +52,9 @@ version = "1.1.1" [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "bbec08a37f8722786d87bedf84eae19c020c4efa" +git-tree-sha1 = "c5aeb516a84459e0318a02507d2261edad97eb75" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.7.0" +version = "7.7.1" [deps.ArrayInterface.extensions] ArrayInterfaceBandedMatricesExt = "BandedMatrices" @@ -96,6 +96,12 @@ version = "0.4.7" [[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.BibInternal]] git-tree-sha1 = "0c62b284a52ec39ee831e10bf62c17d587dde75f" uuid = "2027ae74-3657-4b95-ae00-e2f7d55c3e64" @@ -113,6 +119,12 @@ git-tree-sha1 = "520c679daed011ce835d9efa7778863aad6687ed" uuid = "f1be7e48-bf82-45af-a471-ae754a193061" version = "0.2.20" +[[deps.Blosc_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Lz4_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "19b98ee7e3db3b4eff74c5c9c72bf32144e24f10" +uuid = "0b7ba130-8d10-5ba8-a3d6-c5182647fed9" +version = "1.21.5+0" + [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" @@ -133,12 +145,6 @@ version = "0.1.2" [[deps.CRC32c]] uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" -[[deps.CRlibm]] -deps = ["CRlibm_jll"] -git-tree-sha1 = "32abd86e3c2025db5172aa182b982debed519834" -uuid = "96374032-68de-5a5b-8d9e-752f78720389" -version = "1.0.1" - [[deps.CRlibm_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "e329286945d0cfc04456972ea732551869af1cfc" @@ -153,9 +159,9 @@ version = "1.0.5" [[deps.CairoMakie]] deps = ["CRC32c", "Cairo", "Colors", "FFTW", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"] -git-tree-sha1 = "ec7c21818710774e72195bda25c70fd6c56bc005" +git-tree-sha1 = "6dc1bbdd6a133adf4aa751d12dbc2c6ae59f873d" uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" -version = "0.11.5" +version = "0.11.9" [[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"] @@ -171,14 +177,26 @@ version = "0.5.1" [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "c1deebd76f7a443d527fc0430d5758b8b2112ed8" +git-tree-sha1 = "aef70bb349b20aa81a82a19704c3ef339d4ee494" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.19.1" +version = "1.22.1" weakdeps = ["SparseArrays"] [deps.ChainRulesCore.extensions] ChainRulesCoreSparseArraysExt = "SparseArrays" +[[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 = "59939d8a997469ee05c4b4944560a820f9ba0d73" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.4" + [[deps.ColorBrewer]] deps = ["Colors", "JSON", "Test"] git-tree-sha1 = "61c5334f33d91e570e1d0c3eb5465835242582c4" @@ -219,10 +237,10 @@ uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" version = "1.0.2" [[deps.CommonDataModel]] -deps = ["CFTime", "DataStructures", "Dates", "Preferences", "Printf"] -git-tree-sha1 = "7f5717cbb2c1ce650cfd454451f282df33103596" +deps = ["CFTime", "DataStructures", "Dates", "Preferences", "Printf", "Statistics"] +git-tree-sha1 = "d7d7b58e149f19c322840a50d1bc20e8c23addb4" uuid = "1fbeeb36-5f17-413c-809b-666fb144f157" -version = "0.2.5" +version = "0.3.5" [[deps.CommonSubexpressions]] deps = ["MacroTools", "Test"] @@ -232,9 +250,9 @@ version = "0.3.0" [[deps.Compat]] deps = ["TOML", "UUIDs"] -git-tree-sha1 = "75bd5b6fc5089df449b5d35fa501c846c9b6549b" +git-tree-sha1 = "c955881e3c981181362ae4088b35995446298b80" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.12.0" +version = "4.14.0" weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] @@ -243,7 +261,7 @@ weakdeps = ["Dates", "LinearAlgebra"] [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.5+0" +version = "1.1.0+0" [[deps.CompoundPeriods]] deps = ["Dates"] @@ -274,9 +292,9 @@ version = "1.16.0" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "ac67408d9ddf207de5cfa9a97e114352430f01ed" +git-tree-sha1 = "1fb174f0d48fe7d142e1109a10636bc1d14f5ac2" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.16" +version = "0.18.17" [[deps.DataValueInterfaces]] git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" @@ -289,9 +307,9 @@ uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" [[deps.DelaunayTriangulation]] deps = ["DataStructures", "EnumX", "ExactPredicates", "Random", "SimpleGraphs"] -git-tree-sha1 = "26eb8e2331b55735c3d305d949aabd7363f07ba7" +git-tree-sha1 = "d4e9dc4c6106b8d44e40cd4faf8261a678552c7c" uuid = "927a84f5-c5f4-47a5-9785-b46e178433df" -version = "0.8.11" +version = "0.8.12" [[deps.DiffResults]] deps = ["StaticArraysCore"] @@ -306,10 +324,10 @@ uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" version = "1.15.1" [[deps.DiskArrays]] -deps = ["OffsetArrays"] -git-tree-sha1 = "1bfa9de80f35ac63c6c381b2d43c590875896a1f" +deps = ["LRUCache", "OffsetArrays"] +git-tree-sha1 = "ef25c513cad08d7ebbed158c91768ae32f308336" uuid = "3c3547ce-8d99-4f5e-a174-61eb10b00ae3" -version = "0.3.22" +version = "0.3.23" [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] @@ -373,9 +391,9 @@ version = "1.0.4" [[deps.ExactPredicates]] deps = ["IntervalArithmetic", "Random", "StaticArrays"] -git-tree-sha1 = "e8b8c949551f417e040f16e5c431b6e83e306e54" +git-tree-sha1 = "b3f2ff58735b5f024c392fde763f29b057e4b025" uuid = "429591f6-91af-11e9-00e2-59fbe8cec110" -version = "2.2.7" +version = "2.2.8" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -395,9 +413,9 @@ version = "0.1.2" [[deps.FFMPEG_jll]] deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" +git-tree-sha1 = "ab3f7e1819dba9434a3a5126510c8fda3a4e7000" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.4+1" +version = "6.1.1+0" [[deps.FFTW]] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] @@ -472,11 +490,10 @@ git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" version = "2.13.93+0" -[[deps.Formatting]] -deps = ["Printf"] -git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" -uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" -version = "0.4.2" +[[deps.Format]] +git-tree-sha1 = "f3cf88025f6d03c194d73f5d13fee9004a108329" +uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" +version = "1.3.6" [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] @@ -516,11 +533,10 @@ version = "1.0.10+0" deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" +[[deps.GMP_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d" +version = "6.2.1+6" [[deps.GeoInterface]] deps = ["Extents"] @@ -530,9 +546,9 @@ version = "1.3.3" [[deps.GeometryBasics]] deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "424a5a6ce7c5d97cca7bcc4eac551b97294c54af" +git-tree-sha1 = "5694b56ccf9d15addedc35e9a4ba9c317721b788" uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -version = "0.4.9" +version = "0.4.10" [[deps.Gettext_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] @@ -542,15 +558,15 @@ version = "0.21.0+0" [[deps.Git]] deps = ["Git_jll"] -git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" +git-tree-sha1 = "04eff47b1354d702c3a85e8ab23d539bb7d5957e" uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" -version = "1.3.0" +version = "1.3.1" [[deps.Git_jll]] deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "b30c473c97fcc1e1e44fab8f3e88fd1b89c9e9d1" +git-tree-sha1 = "99f27817475017260f1ff24c771a5efef5765e34" uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" -version = "2.43.0+0" +version = "2.44.0+0" [[deps.Glib_jll]] deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] @@ -558,6 +574,12 @@ git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" version = "2.76.5+0" +[[deps.GnuTLS_jll]] +deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Nettle_jll", "P11Kit_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "266fe9b2335527cbf569ba4fd0979e3d8c6fd491" +uuid = "0951126a-58fd-58f1-b5b3-b08c7c4a876d" +version = "3.7.8+1" + [[deps.Graphics]] deps = ["Colors", "LinearAlgebra", "NaNMath"] git-tree-sha1 = "d61890399bc535850c4bf08e4e0d3a7ad0f21cbd" @@ -593,6 +615,12 @@ git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" version = "2.8.1+1" +[[deps.Hwloc_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "ca0f6bf568b4bfc807e7537f081c81e35ceca114" +uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" +version = "2.10.0+0" + [[deps.HypergeometricFunctions]] deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" @@ -618,10 +646,10 @@ 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" +deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] +git-tree-sha1 = "b2a7eaa169c13f5bcae8131a83bc30eff8f71be0" uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.10.1" +version = "0.10.2" [[deps.ImageIO]] deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs"] @@ -685,24 +713,26 @@ version = "0.15.1" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [[deps.IntervalArithmetic]] -deps = ["CRlibm", "RoundingEmulator"] -git-tree-sha1 = "c274ec586ea58eb7b42afd0c5d67e50ff50229b5" +deps = ["CRlibm_jll", "RoundingEmulator"] +git-tree-sha1 = "2d6d22fe481eff6e337808cc0880c567d7324f9a" uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" -version = "0.22.5" -weakdeps = ["DiffRules", "RecipesBase"] +version = "0.22.8" +weakdeps = ["DiffRules", "ForwardDiff", "RecipesBase"] [deps.IntervalArithmetic.extensions] IntervalArithmeticDiffRulesExt = "DiffRules" + IntervalArithmeticForwardDiffExt = "ForwardDiff" IntervalArithmeticRecipesBaseExt = "RecipesBase" [[deps.IntervalSets]] -deps = ["Dates", "Random"] -git-tree-sha1 = "3d8866c029dd6b16e69e0d4a939c4dfcb98fac47" +git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0" uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.8" -weakdeps = ["Statistics"] +version = "0.7.10" +weakdeps = ["Random", "RecipesBase", "Statistics"] [deps.IntervalSets.extensions] + IntervalSetsRandomExt = "Random" + IntervalSetsRecipesBaseExt = "RecipesBase" IntervalSetsStatisticsExt = "Statistics" [[deps.IrrationalConstants]] @@ -728,9 +758,9 @@ version = "1.0.0" [[deps.JLD2]] deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Printf", "Reexport", "Requires", "TranscodingStreams", "UUIDs"] -git-tree-sha1 = "7c0008f0b7622c6c0ee5c65cbc667b69f8a65672" +git-tree-sha1 = "5ea6acdd53a51d897672edb694e3cc2912f3f8a7" uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.45" +version = "0.4.46" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -770,9 +800,9 @@ version = "0.1.5" [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "60b1194df0a3298f460063de985eae7b01bc011a" +git-tree-sha1 = "3336abae9a713d2210bb57ab484b1e065edd7d23" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.0.1+0" +version = "3.0.2+0" [[deps.KernelDensity]] deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] @@ -792,6 +822,15 @@ git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713" uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" version = "15.0.7+0" +[[deps.LRUCache]] +git-tree-sha1 = "b3cc6698599b10e652832c2f23db3cab99d51b59" +uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" +version = "1.6.1" +weakdeps = ["Serialization"] + + [deps.LRUCache.extensions] + SerializationExt = ["Serialization"] + [[deps.LZO_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" @@ -828,9 +867,14 @@ uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" version = "8.4.0+0" [[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +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" @@ -905,9 +949,9 @@ version = "2.16.1" [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" +git-tree-sha1 = "18144f3e9cbe9b15b070288eef858f71b291ce37" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.26" +version = "0.3.27" [deps.LogExpFunctions.extensions] LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" @@ -922,6 +966,12 @@ version = "0.3.26" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +[[deps.Lz4_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6c26c5e8a4203d43b5497be3ec5d4e0c3cde240a" +uuid = "5ced341a-0733-55b8-9ab6-a4889d929147" +version = "1.9.4+0" + [[deps.MKL_jll]] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl"] git-tree-sha1 = "72dc3cf284559eb8f53aa593fe62cb33f83ed0c0" @@ -929,10 +979,10 @@ uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" version = "2024.0.0+0" [[deps.MPICH_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "2ee75365ca243c1a39d467e35ffd3d4d32eef11e" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "656036b9ed6f942d35e536e249600bc31d0f9df8" uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.1.2+1" +version = "4.2.0+0" [[deps.MPIPreferences]] deps = ["Libdl", "Preferences"] @@ -941,10 +991,10 @@ uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" version = "0.1.10" [[deps.MPItrampoline_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "8eeb3c73bbc0ca203d0dc8dad4008350bbe5797b" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "77c3bd69fdb024d75af38713e883d0f249ce19c2" uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.3.1+1" +version = "5.3.2+0" [[deps.MacroTools]] deps = ["Markdown", "Random"] @@ -953,16 +1003,16 @@ uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" version = "0.5.13" [[deps.Makie]] -deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Formatting", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageIO", "InteractiveUtils", "IntervalSets", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "Setfield", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "StableHashTraits", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun"] -git-tree-sha1 = "a37c6610dd20425b131caf65d52abdf859da5ab1" +deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageIO", "InteractiveUtils", "IntervalSets", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "StableHashTraits", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun"] +git-tree-sha1 = "27af6be179c711fb916a597b6644fbb5b80becc0" uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" -version = "0.20.4" +version = "0.20.8" [[deps.MakieCore]] deps = ["Observables", "REPL"] -git-tree-sha1 = "ec5db7bb2dc9b85072658dcb2d3ad09569b09ac9" +git-tree-sha1 = "248b7a4be0f92b497f7a331aed02c1e9a878f46b" uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b" -version = "0.7.2" +version = "0.7.3" [[deps.MappedArrays]] git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" @@ -979,6 +1029,12 @@ git-tree-sha1 = "465a70f0fc7d443a00dcdc3267a497397b8a3899" uuid = "d0879d2d-cac2-40c8-9cee-1863dc0c7391" version = "0.1.2" +[[deps.MathOptInterface]] +deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] +git-tree-sha1 = "e8b98c868029d007102dc5f98986c81f33b0ec37" +uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" +version = "1.26.0" + [[deps.MathTeXEngine]] deps = ["AbstractTrees", "Automa", "DataStructures", "FreeTypeAbstraction", "GeometryBasics", "LaTeXStrings", "REPL", "RelocatableFolders", "UnicodeFun"] git-tree-sha1 = "96ca8a313eb6437db5ffe946c457a401bbb8ce1d" @@ -988,7 +1044,7 @@ version = "0.5.7" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" +version = "2.28.2+1" [[deps.Measures]] git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" @@ -997,9 +1053,9 @@ version = "0.3.2" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "b01beb91d20b0d1312a9471a36017b5b339d26de" +git-tree-sha1 = "f12a29c4400ba812841c6ace3f4efbb6dbb3ba01" uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" -version = "10.1.4+1" +version = "10.1.4+2" [[deps.Missings]] deps = ["DataAPI"] @@ -1029,18 +1085,24 @@ version = "0.3.4" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" +version = "2023.1.10" [[deps.Multisets]] git-tree-sha1 = "8d852646862c96e226367ad10c8af56099b4047e" uuid = "3b2b4ff1-bcff-5658-a3ee-dbcf1ce5ac09" version = "0.4.4" +[[deps.MutableArithmetics]] +deps = ["LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "302fd161eb1c439e4115b51ae456da4e9984f130" +uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" +version = "1.4.1" + [[deps.NCDatasets]] deps = ["CFTime", "CommonDataModel", "DataStructures", "Dates", "DiskArrays", "NetCDF_jll", "NetworkOptions", "Printf"] -git-tree-sha1 = "173a378f357e9bb24b22019efb5e4778223ce8cf" +git-tree-sha1 = "98ca95cf41116a24e46dc9a06fa22b923e8411b7" uuid = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" -version = "0.13.2" +version = "0.14.2" [[deps.NLSolversBase]] deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] @@ -1055,10 +1117,10 @@ 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" +deps = ["Artifacts", "Blosc_jll", "Bzip2_jll", "HDF5_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "OpenMPI_jll", "XML2_jll", "Zlib_jll", "Zstd_jll", "libzip_jll"] +git-tree-sha1 = "a8af1798e4eb9ff768ce7fdefc0e957097793f15" uuid = "7243133f-43d8-5620-bbf4-c2c921802cf3" -version = "400.902.208+0" +version = "400.902.209+0" [[deps.Netpbm]] deps = ["FileIO", "ImageCore", "ImageMetadata"] @@ -1066,6 +1128,12 @@ git-tree-sha1 = "d92b107dbb887293622df7697a2223f9f8176fcd" uuid = "f09324ee-3d7c-5217-9330-fc30815ba969" version = "1.1.1" +[[deps.Nettle_jll]] +deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "eca63e3847dad608cfa6a3329b95ef674c7160b4" +uuid = "4c82536e-c426-54e4-b420-14f461c4ed8b" +version = "3.7.2+0" + [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" @@ -1093,7 +1161,7 @@ version = "1.3.5+1" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.21+4" +version = "0.3.23+4" [[deps.OpenEXR]] deps = ["Colors", "FileIO", "OpenEXR_jll"] @@ -1110,7 +1178,7 @@ version = "3.1.4+0" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" +version = "0.8.1+2" [[deps.OpenMPI_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] @@ -1120,9 +1188,9 @@ version = "4.1.6+0" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" +git-tree-sha1 = "60e3045590bd104a16fefb12836c00c0ef8c7f8c" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.12+0" +version = "3.0.13+0" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -1131,10 +1199,10 @@ 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 = "01f85d9269b13fedc61e63cc72ee2213565f7a72" +deps = ["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "MathOptInterface", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] +git-tree-sha1 = "d024bfb56144d947d4fafcd9cb5cafbe3410b133" uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.7.8" +version = "1.9.2" [[deps.Opus_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1147,10 +1215,16 @@ git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" version = "1.6.3" +[[deps.P11Kit_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "2cd396108e178f3ae8dedbd8e938a18726ab2fbf" +uuid = "c2071276-7c44-58a7-b746-946036e04d0a" +version = "0.24.1+0" + [[deps.PCRE2_jll]] deps = ["Artifacts", "Libdl"] uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+0" +version = "10.42.0+1" [[deps.PDMats]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] @@ -1215,7 +1289,7 @@ version = "0.42.2+0" [[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.9.2" +version = "1.10.0" [[deps.PkgVersion]] deps = ["Pkg"] @@ -1239,6 +1313,7 @@ deps = ["LinearAlgebra", "RecipesBase", "Setfield", "SparseArrays"] git-tree-sha1 = "a9c7a523d5ed375be3983db190f6a5874ae9286d" uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45" version = "4.0.6" +weakdeps = ["ChainRulesCore", "FFTW", "MakieCore", "MutableArithmetics"] [deps.Polynomials.extensions] PolynomialsChainRulesCoreExt = "ChainRulesCore" @@ -1246,12 +1321,6 @@ version = "4.0.6" PolynomialsMakieCoreExt = "MakieCore" PolynomialsMutableArithmeticsExt = "MutableArithmetics" - [deps.Polynomials.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" - MakieCore = "20f20a25-4f0e-4fdf-b5d1-57303727442b" - MutableArithmetics = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" - [[deps.PositiveFactorizations]] deps = ["LinearAlgebra"] git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" @@ -1272,14 +1341,18 @@ version = "1.4.1" [[deps.Primes]] deps = ["IntegerMathUtils"] -git-tree-sha1 = "1d05623b5952aed1307bf8b43bec8b8d1ef94b6e" +git-tree-sha1 = "cb420f77dc474d23ee47ca8d14c90810cafe69e7" uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" -version = "0.5.5" +version = "0.5.6" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +[[deps.Profile]] +deps = ["Printf"] +uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" + [[deps.ProgressMeter]] deps = ["Distributed", "Printf"] git-tree-sha1 = "00099623ffee15972c16111bcf84c58a0051257c" @@ -1303,7 +1376,7 @@ deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] -deps = ["SHA", "Serialization"] +deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.RangeArrays]] @@ -1394,9 +1467,9 @@ version = "1.1.1" [[deps.ShaderAbstractions]] deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "db0219befe4507878b1a90e07820fed3e62c289d" +git-tree-sha1 = "79123bc60c5507f035e6d1d9e563bb2971954ec8" uuid = "65257c39-d410-5151-9873-9b3e5be5013e" -version = "0.4.0" +version = "0.4.1" [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] @@ -1422,9 +1495,9 @@ version = "0.8.6" [[deps.SimplePartitions]] deps = ["AbstractLattices", "DataStructures", "Permutations"] -git-tree-sha1 = "e9330391d04241eafdc358713b48396619c83bcb" +git-tree-sha1 = "e182b9e5afb194142d4668536345a365ea19363a" uuid = "ec83eff0-a5b5-5643-ae32-5cbf6eedec9d" -version = "0.3.1" +version = "0.3.2" [[deps.SimplePolynomials]] deps = ["Mods", "Multisets", "Polynomials", "Primes"] @@ -1462,6 +1535,7 @@ version = "1.2.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"] @@ -1475,9 +1549,9 @@ weakdeps = ["ChainRulesCore"] [[deps.StableHashTraits]] deps = ["Compat", "PikaParser", "SHA", "Tables", "TupleTools"] -git-tree-sha1 = "662f56ffe22b3985f3be7474f0aecbaf214ecf0f" +git-tree-sha1 = "10dc702932fe05a0e09b8e5955f00794ea1e8b12" uuid = "c5dd0088-6c3f-4803-b00e-f31a60c170fa" -version = "1.1.6" +version = "1.1.8" [[deps.StackViews]] deps = ["OffsetArrays"] @@ -1487,9 +1561,9 @@ version = "0.1.1" [[deps.StaticArrays]] deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "f68dd04d131d9a8a8eb836173ee8f105c360b0c5" +git-tree-sha1 = "bf074c045d3d5ffd956fa0a461da38a44685d6b2" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.1" +version = "1.9.3" weakdeps = ["ChainRulesCore", "Statistics"] [deps.StaticArrays.extensions] @@ -1504,7 +1578,7 @@ version = "1.4.2" [[deps.Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" +version = "1.10.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] @@ -1520,9 +1594,9 @@ version = "0.34.2" [[deps.StatsFuns]] deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" +git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.0" +version = "1.3.1" [deps.StatsFuns.extensions] StatsFunsChainRulesCoreExt = "ChainRulesCore" @@ -1539,10 +1613,22 @@ uuid = "69024149-9ee7-55f6-a4c4-859efe599b68" version = "0.3.7" [[deps.StructArrays]] -deps = ["Adapt", "ConstructionBase", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] -git-tree-sha1 = "1b0b1205a56dc288b71b1961d48e351520702e24" +deps = ["ConstructionBase", "DataAPI", "Tables"] +git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.17" +version = "0.6.18" + + [deps.StructArrays.extensions] + StructArraysAdaptExt = "Adapt" + StructArraysGPUArraysCoreExt = "GPUArraysCore" + StructArraysSparseArraysExt = "SparseArrays" + StructArraysStaticArraysExt = "StaticArrays" + + [deps.StructArrays.weakdeps] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" [[deps.StructTypes]] deps = ["Dates", "UUIDs"] @@ -1555,9 +1641,9 @@ deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" [[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" +version = "7.2.1+1" [[deps.TOML]] deps = ["Dates"] @@ -1566,9 +1652,9 @@ version = "1.0.3" [[deps.TZJData]] deps = ["Artifacts"] -git-tree-sha1 = "d39314cdbaf5b90a047db33858626f8d1cc973e1" +git-tree-sha1 = "b69f8338df046774bd975b13be9d297eca5efacb" uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" -version = "1.0.0+2023c" +version = "1.1.0+2023d" [[deps.TableTraits]] deps = ["IteratorInterfaceExtensions"] @@ -1620,9 +1706,9 @@ uuid = "bdfc003b-8df8-5c39-adcd-3a9087f5df4a" version = "0.3.1" [[deps.TranscodingStreams]] -git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" +git-tree-sha1 = "54194d92959d8ebaa8e26227dbe3cdefcdcd594f" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.2" +version = "0.10.3" weakdeps = ["Random", "Test"] [deps.TranscodingStreams.extensions] @@ -1634,9 +1720,9 @@ uuid = "981d1d27-644d-49a2-9326-4793e63143c3" version = "0.1.0" [[deps.TupleTools]] -git-tree-sha1 = "155515ed4c4236db30049ac1495e2969cc06be9d" +git-tree-sha1 = "41d61b1c545b06279871ef1a4b5fcb2cac2191cd" uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6" -version = "1.4.3" +version = "1.5.0" [[deps.URIs]] git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" @@ -1669,9 +1755,9 @@ version = "1.0.0" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "801cbe47eae69adc50f36c3caec4758d2650741b" +git-tree-sha1 = "07e470dabc5a6a4254ffebc29a1b3fc01464e105" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.12.2+0" +version = "2.12.5+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] @@ -1679,6 +1765,12 @@ git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" uuid = "aed1982a-8fda-507f-9586-7b0439959a61" version = "1.1.34+0" +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "37195dcb94a5970397ad425b95a9a26d0befce3a" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.6.0+0" + [[deps.Xorg_libX11_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" @@ -1736,7 +1828,7 @@ version = "0.4.9" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" +version = "1.2.13+1" [[deps.Zstd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1771,7 +1863,7 @@ version = "0.15.1+0" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+0" +version = "5.8.0+1" [[deps.libfdk_aac_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1781,9 +1873,9 @@ version = "2.0.2+0" [[deps.libpng_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "93284c28274d9e75218a416c65ec49d0e0fcdf3d" +git-tree-sha1 = "873b4f805771d3e4bafe63af759a26ea8ca84d14" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.40+0" +version = "1.6.42+0" [[deps.libsixel_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "libpng_jll"] @@ -1797,6 +1889,12 @@ git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" version = "1.3.7+1" +[[deps.libzip_jll]] +deps = ["Artifacts", "Bzip2_jll", "GnuTLS_jll", "JLLWrappers", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "3282b7d16ae7ac3e57ec2f3fa8fafb564d8f9f7f" +uuid = "337d8026-41b4-5cde-a456-74a10e5b31d1" +version = "1.10.1+0" + [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" @@ -1805,7 +1903,7 @@ version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" +version = "17.4.0+2" [[deps.x264_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] diff --git a/docs/Project.toml b/docs/Project.toml index 1f9bd5848c..21cddd2813 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -15,4 +15,4 @@ CairoMakie = "0.11" Documenter = "1" DocumenterCitations = "1" Literate = "≥2.9.0" -NCDatasets = "0.12.10, 0.13.1" +NCDatasets = "0.12.10, 0.13.1, 0.14" diff --git a/docs/src/model_setup/background_fields.md b/docs/src/model_setup/background_fields.md index 11d6279d91..44bec466e3 100644 --- a/docs/src/model_setup/background_fields.md +++ b/docs/src/model_setup/background_fields.md @@ -80,7 +80,7 @@ U_field = BackgroundField(U, parameters=parameters.α) B_field = BackgroundField(B, parameters=parameters) # output -BackgroundField{typeof(B), NamedTuple{(:α, :N, :f), Tuple{Float64, Float64, Float64}}} +BackgroundField{typeof(B), @NamedTuple{α::Float64, N::Float64, f::Float64}} ├── func: B (generic function with 1 method) └── parameters: (α = 3.14, N = 1.0, f = 0.1) ``` diff --git a/docs/src/model_setup/forcing_functions.md b/docs/src/model_setup/forcing_functions.md index 16e1873ec0..49714b333d 100644 --- a/docs/src/model_setup/forcing_functions.md +++ b/docs/src/model_setup/forcing_functions.md @@ -73,7 +73,7 @@ model = NonhydrostaticModel(grid=grid, forcing=(u=u_forcing, T=T_forcing), buoya model.forcing.T # output -ContinuousForcing{NamedTuple{(:μ, :λ, :k, :ω), Tuple{Int64, Float64, Float64, Float64}}} at (Center, Center, Center) +ContinuousForcing{@NamedTuple{μ::Int64, λ::Float64, k::Float64, ω::Float64}} at (Center, Center, Center) ├── func: T_forcing_func (generic function with 1 method) ├── parameters: (μ = 1, λ = 0.5, k = 6.283185307179586, ω = 12.566370614359172) └── field dependencies: () diff --git a/examples/langmuir_turbulence.jl b/examples/langmuir_turbulence.jl index bbce03861a..9111d80cd9 100644 --- a/examples/langmuir_turbulence.jl +++ b/examples/langmuir_turbulence.jl @@ -31,13 +31,13 @@ using Oceananigans.Units: minute, minutes, hours # # ### Domain and numerical grid specification # -# We use a modest resolution and the same total extent as Wagner et al. 2021, +# We use a modest resolution and the same total extent as Wagner et al. (2021), grid = RectilinearGrid(size=(32, 32, 32), extent=(128, 128, 64)) # ### The Stokes Drift profile # -# The surface wave Stokes drift profile prescribed in Wagner et al. 2021, +# The surface wave Stokes drift profile prescribed in Wagner et al. (2021), # corresponds to a 'monochromatic' (that is, single-frequency) wave field. # # A monochromatic wave field is characterized by its wavelength and amplitude @@ -59,8 +59,7 @@ const vertical_scale = wavelength / 4π const Uˢ = amplitude^2 * wavenumber * frequency # m s⁻¹ # The `const` declarations ensure that Stokes drift functions compile on the GPU. -# To run this example on the GPU, include `GPU()` in the -# constructor for `RectilinearGrid` above. +# To run this example on the GPU, include `GPU()` in the `RectilinearGrid` constructor above. # # The Stokes drift profile is @@ -84,18 +83,18 @@ uˢ(z) = Uˢ * exp(z / vertical_scale) # # Finally, we note that the time-derivative of the Stokes drift must be provided # if the Stokes drift and surface wave field undergoes _forced_ changes in time. -# In this example, the Stokes drift is constant -# and thus the time-derivative of the Stokes drift is 0. +# In this example, the Stokes drift is constant and thus the time-derivative of +# the Stokes drift is 0. # ### Boundary conditions # -# At the surface at ``z=0``, Wagner et al. 2021 impose +# At the surface ``z = 0``, Wagner et al. (2021) impose Qᵘ = -3.72e-5 # m² s⁻², surface kinematic momentum flux u_boundary_conditions = FieldBoundaryConditions(top = FluxBoundaryCondition(Qᵘ)) -# Wagner et al. 2021 impose a linear buoyancy gradient `N²` at the bottom +# Wagner et al. (2021) impose a linear buoyancy gradient `N²` at the bottom # along with a weak, destabilizing flux of buoyancy at the surface to faciliate # spin-up from rest. @@ -214,7 +213,7 @@ simulation.output_writers[:fields] = # ### An "averages" writer # # We also set up output of time- and horizontally-averaged velocity field and -# momentum fluxes, +# momentum fluxes. u, v, w = model.velocities b = model.tracers.b @@ -239,7 +238,7 @@ run!(simulation) # # Making a neat movie # -# We look at the results by loading data from file with FieldTimeSeries, +# We look at the results by loading data from file with `FieldTimeSeries`, # and plotting vertical slices of ``u`` and ``w``, and a horizontal # slice of ``w`` to look for Langmuir cells. diff --git a/examples/tilted_bottom_boundary_layer.jl b/examples/tilted_bottom_boundary_layer.jl index cc23f3807a..62a24ababb 100644 --- a/examples/tilted_bottom_boundary_layer.jl +++ b/examples/tilted_bottom_boundary_layer.jl @@ -72,7 +72,7 @@ current_figure() #hide θ = 3 # degrees -# so that ``x`` is the along-slope direction, ``z`` is the across-sloce direction that +# so that ``x`` is the along-slope direction, ``z`` is the across-slope direction that # is perpendicular to the bottom, and the unit vector anti-aligned with gravity is ĝ = [sind(θ), 0, cosd(θ)] diff --git a/src/AbstractOperations/conditional_operations.jl b/src/AbstractOperations/conditional_operations.jl index a4e3ea5b78..cf183c7f29 100644 --- a/src/AbstractOperations/conditional_operations.jl +++ b/src/AbstractOperations/conditional_operations.jl @@ -61,7 +61,7 @@ julia> f(i, j, k, grid, c) = i < 2; d = condition_operand(cos, c, f, 10) ConditionalOperation at (Center, Center, Center) ├── operand: 2×1×1 Field{Center, Center, Center} on RectilinearGrid on CPU ├── grid: 2×1×1 RectilinearGrid{Float64, Periodic, Periodic, Bounded} on CPU with 3×3×3 halo -├── func: cos (generic function with 31 methods) +├── func: cos (generic function with 32 methods) ├── condition: f (generic function with 1 method) └── mask: 10 diff --git a/src/Advection/Advection.jl b/src/Advection/Advection.jl index 3fdf8adb79..c2e091c663 100644 --- a/src/Advection/Advection.jl +++ b/src/Advection/Advection.jl @@ -29,7 +29,6 @@ using DocStringExtensions using Base: @propagate_inbounds using Adapt using OffsetArrays -using KernelAbstractions.Extras.LoopInfo: @unroll using Oceananigans.Grids using Oceananigans.Grids: with_halo, coordinates diff --git a/src/Advection/positivity_preserving_tracer_advection_operators.jl b/src/Advection/positivity_preserving_tracer_advection_operators.jl index f8d3469679..0f07db7dab 100644 --- a/src/Advection/positivity_preserving_tracer_advection_operators.jl +++ b/src/Advection/positivity_preserving_tracer_advection_operators.jl @@ -24,8 +24,8 @@ end @inline function bounded_tracer_flux_divergence_x(i, j, k, grid, advection::BoundPreservingScheme, u, c) - lower_limit = advection.bounds[1] - upper_limit = advection.bounds[2] + lower_limit = @inbounds advection.bounds[1] + upper_limit = @inbounds advection.bounds[2] cᵢⱼ = @inbounds c[i, j, k] @@ -48,8 +48,8 @@ end @inline function bounded_tracer_flux_divergence_y(i, j, k, grid, advection::BoundPreservingScheme, v, c) - lower_limit = advection.bounds[1] - upper_limit = advection.bounds[2] + lower_limit = @inbounds advection.bounds[1] + upper_limit = @inbounds advection.bounds[2] cᵢⱼ = @inbounds c[i, j, k] @@ -72,8 +72,8 @@ end @inline function bounded_tracer_flux_divergence_z(i, j, k, grid, advection::BoundPreservingScheme, w, c) - lower_limit = advection.bounds[1] - upper_limit = advection.bounds[2] + lower_limit = @inbounds advection.bounds[1] + upper_limit = @inbounds advection.bounds[2] cᵢⱼ = @inbounds c[i, j, k] diff --git a/src/Advection/reconstruction_coefficients.jl b/src/Advection/reconstruction_coefficients.jl index 33c90ba00f..e0c72a88f4 100644 --- a/src/Advection/reconstruction_coefficients.jl +++ b/src/Advection/reconstruction_coefficients.jl @@ -28,8 +28,8 @@ struct FirstDerivative end struct SecondDerivative end struct Primitive end -num_prod(i, m, l, r, xr, xi, shift, op, order, args...) = prod(xr[i+shift] - xi[op(i, r-q+1)] for q=0:order if (q != m && q != l)) -num_prod(i, m, l, r, xr, xi, shift, op, order, ::FirstDerivative) = 2*xr[i+shift] - sum(xi[op(i, r-q+1)] for q=0:order if (q != m && q != l)) +num_prod(i, m, l, r, xr, xi, shift, op, order, args...) = @inbounds prod(xr[i+shift] - xi[op(i, r-q+1)] for q=0:order if (q != m && q != l)) +num_prod(i, m, l, r, xr, xi, shift, op, order, ::FirstDerivative) = @inbounds 2*xr[i+shift] - sum(xi[op(i, r-q+1)] for q=0:order if (q != m && q != l)) num_prod(i, m, l, r, xr, xi, shift, op, order, ::SecondDerivative) = 2 @inline function num_prod(i, m, l, r, xr, xi, shift, op, order, ::Primitive) @@ -56,11 +56,13 @@ On a uniform `grid`, the coefficients are independent of the `xr` and `xi` value """ @inline function stencil_coefficients(i, r, xr, xi; shift = 0, op = Base.:(-), order = 3, der = nothing) coeffs = zeros(order) - for j in 0:order-1 - for m in j+1:order - numerator = sum(num_prod(i, m, l, r, xr, xi, shift, op, order, der) for l=0:order if l != m) - denominator = prod(xi[op(i, r-m+1)] - xi[op(i, r-l+1)] for l=0:order if l != m) - coeffs[j+1] += numerator / denominator * (xi[op(i, r-j)] - xi[op(i, r-j+1)]) + @inbounds begin + for j in 0:order-1 + for m in j+1:order + numerator = sum(num_prod(i, m, l, r, xr, xi, shift, op, order, der) for l=0:order if l != m) + denominator = prod(xi[op(i, r-m+1)] - xi[op(i, r-l+1)] for l=0:order if l != m) + coeffs[j+1] += numerator / denominator * (xi[op(i, r-j)] - xi[op(i, r-j+1)]) + end end end @@ -153,7 +155,7 @@ julia> calc_reconstruction_stencil(3, :left, :x) for (idx, n) in enumerate(rng) c = n - buffer - 1 if func - stencil_full[idx] = dir == :x ? + stencil_full[idx] = dir == :x ? :(convert(FT, $coeff[$(order - idx + 1)]) * ψ(i + $c, j, k, grid, args...)) : dir == :y ? :(convert(FT, $coeff[$(order - idx + 1)]) * ψ(i, j + $c, k, grid, args...)) : @@ -173,7 +175,7 @@ end ##### Shenanigans for stretched directions ##### -@inline function reconstruction_stencil(buffer, shift, dir, func::Bool = false) +@inline function reconstruction_stencil(buffer, shift, dir, func::Bool = false) N = buffer * 2 order = shift == :symmetric ? N : N - 1 if shift != :symmetric @@ -188,13 +190,13 @@ end for (idx, n) in enumerate(rng) c = n - buffer - 1 if func - stencil_full[idx] = dir == :x ? + stencil_full[idx] = dir == :x ? :(ψ(i + $c, j, k, grid, args...)) : dir == :y ? :(ψ(i, j + $c, k, grid, args...)) : :(ψ(i, j, k + $c, grid, args...)) else - stencil_full[idx] = dir == :x ? + stencil_full[idx] = dir == :x ? :(ψ[i + $c, j, k]) : dir == :y ? :(ψ[i, j + $c, k]) : diff --git a/src/Advection/stretched_weno_smoothness.jl b/src/Advection/stretched_weno_smoothness.jl index 454673934a..3b3c49bac8 100644 --- a/src/Advection/stretched_weno_smoothness.jl +++ b/src/Advection/stretched_weno_smoothness.jl @@ -1,3 +1,5 @@ +using KernelAbstractions.Extras.LoopInfo: @unroll + ##### ##### Stretched smoothness indicators gathered from precomputed values. ##### The stretched values for β coefficients are calculated from @@ -39,19 +41,19 @@ end @inline right_biased_β₁(FT, ψ, T, scheme, args...) = biased_right_β(ψ, scheme, 1, args...) @inline right_biased_β₂(FT, ψ, T, scheme, args...) = biased_right_β(ψ, scheme, 0, args...) -@inline retrieve_left_smooth(scheme, r, ::Val{1}, i, ::Type{Face}) = scheme.smooth_xᶠᵃᵃ[r+1][i] -@inline retrieve_left_smooth(scheme, r, ::Val{1}, i, ::Type{Center}) = scheme.smooth_xᶜᵃᵃ[r+1][i] -@inline retrieve_left_smooth(scheme, r, ::Val{2}, i, ::Type{Face}) = scheme.smooth_yᵃᶠᵃ[r+1][i] -@inline retrieve_left_smooth(scheme, r, ::Val{2}, i, ::Type{Center}) = scheme.smooth_yᵃᶜᵃ[r+1][i] -@inline retrieve_left_smooth(scheme, r, ::Val{3}, i, ::Type{Face}) = scheme.smooth_zᵃᵃᶠ[r+1][i] -@inline retrieve_left_smooth(scheme, r, ::Val{3}, i, ::Type{Center}) = scheme.smooth_zᵃᵃᶜ[r+1][i] +@inline retrieve_left_smooth(scheme, r, ::Val{1}, i, ::Type{Face}) = @inbounds scheme.smooth_xᶠᵃᵃ[r+1][i] +@inline retrieve_left_smooth(scheme, r, ::Val{1}, i, ::Type{Center}) = @inbounds scheme.smooth_xᶜᵃᵃ[r+1][i] +@inline retrieve_left_smooth(scheme, r, ::Val{2}, i, ::Type{Face}) = @inbounds scheme.smooth_yᵃᶠᵃ[r+1][i] +@inline retrieve_left_smooth(scheme, r, ::Val{2}, i, ::Type{Center}) = @inbounds scheme.smooth_yᵃᶜᵃ[r+1][i] +@inline retrieve_left_smooth(scheme, r, ::Val{3}, i, ::Type{Face}) = @inbounds scheme.smooth_zᵃᵃᶠ[r+1][i] +@inline retrieve_left_smooth(scheme, r, ::Val{3}, i, ::Type{Center}) = @inbounds scheme.smooth_zᵃᵃᶜ[r+1][i] -@inline retrieve_right_smooth(scheme, r, ::Val{1}, i, ::Type{Face}) = scheme.smooth_xᶠᵃᵃ[r+4][i] -@inline retrieve_right_smooth(scheme, r, ::Val{1}, i, ::Type{Center}) = scheme.smooth_xᶜᵃᵃ[r+4][i] -@inline retrieve_right_smooth(scheme, r, ::Val{2}, i, ::Type{Face}) = scheme.smooth_yᵃᶠᵃ[r+4][i] -@inline retrieve_right_smooth(scheme, r, ::Val{2}, i, ::Type{Center}) = scheme.smooth_yᵃᶜᵃ[r+4][i] -@inline retrieve_right_smooth(scheme, r, ::Val{3}, i, ::Type{Face}) = scheme.smooth_zᵃᵃᶠ[r+4][i] -@inline retrieve_right_smooth(scheme, r, ::Val{3}, i, ::Type{Center}) = scheme.smooth_zᵃᵃᶜ[r+4][i] +@inline retrieve_right_smooth(scheme, r, ::Val{1}, i, ::Type{Face}) = @inbounds scheme.smooth_xᶠᵃᵃ[r+4][i] +@inline retrieve_right_smooth(scheme, r, ::Val{1}, i, ::Type{Center}) = @inbounds scheme.smooth_xᶜᵃᵃ[r+4][i] +@inline retrieve_right_smooth(scheme, r, ::Val{2}, i, ::Type{Face}) = @inbounds scheme.smooth_yᵃᶠᵃ[r+4][i] +@inline retrieve_right_smooth(scheme, r, ::Val{2}, i, ::Type{Center}) = @inbounds scheme.smooth_yᵃᶜᵃ[r+4][i] +@inline retrieve_right_smooth(scheme, r, ::Val{3}, i, ::Type{Face}) = @inbounds scheme.smooth_zᵃᵃᶠ[r+4][i] +@inline retrieve_right_smooth(scheme, r, ::Val{3}, i, ::Type{Center}) = @inbounds scheme.smooth_zᵃᵃᶜ[r+4][i] @inline calc_smoothness_coefficients(FT, ::Val{false}, args...; kwargs...) = nothing @inline calc_smoothness_coefficients(FT, ::Val{true}, coord::OffsetArray{<:Any, <:Any, <:AbstractRange}, arch, N; order) = nothing @@ -62,14 +64,14 @@ function calc_smoothness_coefficients(FT, beta, coord, arch, N; order) cpu_coord = arch_array(CPU(), coord) order == 3 || throw(ArgumentError("The stretched smoothness coefficients are only implemented for order == 3")) - + s1 = create_smoothness_coefficients(FT, 0, -, cpu_coord, arch, N; order) s2 = create_smoothness_coefficients(FT, 1, -, cpu_coord, arch, N; order) s3 = create_smoothness_coefficients(FT, 2, -, cpu_coord, arch, N; order) s4 = create_smoothness_coefficients(FT, 0, +, cpu_coord, arch, N; order) s5 = create_smoothness_coefficients(FT, 1, +, cpu_coord, arch, N; order) s6 = create_smoothness_coefficients(FT, 2, +, cpu_coord, arch, N; order) - + return (s1, s2, s3, s4, s5, s6) end @@ -79,12 +81,12 @@ function create_smoothness_coefficients(FT, r, op, cpu_coord, arch, N; order) stencil = NTuple{2, NTuple{order, FT}}[] @inbounds begin for i = 0:N+1 - + bias1 = Int(op == +) bias2 = bias1 - 1 Δcᵢ = cpu_coord[i + bias1] - cpu_coord[i + bias2] - + Bᵢ = stencil_coefficients(i, r, cpu_coord, cpu_coord; order, op, shift = bias1, der = Primitive()) bᵢ = stencil_coefficients(i, r, cpu_coord, cpu_coord; order, op, shift = bias1) bₓᵢ = stencil_coefficients(i, r, cpu_coord, cpu_coord; order, op, shift = bias1, der = FirstDerivative()) @@ -95,8 +97,8 @@ function create_smoothness_coefficients(FT, r, op, cpu_coord, arch, N; order) Pᵢ = (Bᵢ .- Aᵢ) - wᵢᵢ = Δcᵢ .* (bᵢ .* bₓᵢ .- aᵢ .* aₓᵢ .- pₓₓ .* Pᵢ) .+ Δcᵢ^4 .* (pₓₓ .* pₓₓ) - wᵢⱼ = Δcᵢ .* (star(bᵢ, bₓᵢ) .- star(aᵢ, aₓᵢ) .- star(pₓₓ, Pᵢ)) .+ Δcᵢ^4 .* star(pₓₓ, pₓₓ) + wᵢᵢ = Δcᵢ .* (bᵢ .* bₓᵢ .- aᵢ .* aₓᵢ .- pₓₓ .* Pᵢ) .+ Δcᵢ^4 .* (pₓₓ .* pₓₓ) + wᵢⱼ = Δcᵢ .* (star(bᵢ, bₓᵢ) .- star(aᵢ, aₓᵢ) .- star(pₓₓ, Pᵢ)) .+ Δcᵢ^4 .* star(pₓₓ, pₓₓ) push!(stencil, (wᵢᵢ, wᵢⱼ)) end @@ -107,4 +109,3 @@ end @inline dagger(ψ) = (ψ[2], ψ[3], ψ[1]) @inline star(ψ₁, ψ₂) = (ψ₁ .* dagger(ψ₂) .+ dagger(ψ₁) .* ψ₂) - diff --git a/src/BoundaryConditions/fill_halo_regions.jl b/src/BoundaryConditions/fill_halo_regions.jl index 3e16d2f260..cc92479f40 100644 --- a/src/BoundaryConditions/fill_halo_regions.jl +++ b/src/BoundaryConditions/fill_halo_regions.jl @@ -1,7 +1,6 @@ using OffsetArrays: OffsetArray using Oceananigans.Utils using Oceananigans.Grids: architecture -using KernelAbstractions.Extras.LoopInfo: @unroll import Base diff --git a/src/BoundaryConditions/fill_halo_regions_flux.jl b/src/BoundaryConditions/fill_halo_regions_flux.jl index 5feafa50cc..64cbaf9fb2 100644 --- a/src/BoundaryConditions/fill_halo_regions_flux.jl +++ b/src/BoundaryConditions/fill_halo_regions_flux.jl @@ -1,5 +1,3 @@ -using KernelAbstractions.Extras.LoopInfo: @unroll - ##### Kernels that ensure 'no-flux' from second- and fourth-order diffusion operators. ##### Kernel functions that ensure 'no-flux' from second- and fourth-order diffusion operators. ##### Note that flux divergence associated with a flux boundary condition is added diff --git a/src/BoundaryConditions/fill_halo_regions_periodic.jl b/src/BoundaryConditions/fill_halo_regions_periodic.jl index 257e792abe..890b9c2fba 100644 --- a/src/BoundaryConditions/fill_halo_regions_periodic.jl +++ b/src/BoundaryConditions/fill_halo_regions_periodic.jl @@ -17,19 +17,19 @@ end function fill_west_and_east_halo!(c, ::PBCT, ::PBCT, size, offset, loc, arch, grid, args...; kw...) c_parent, yz_size, offset = parent_size_and_offset(c, 2, 3, size, offset) - launch!(arch, grid, KernelParameters(yz_size, offset), fill_periodic_west_and_east_halo!, c_parent, grid.Hx, grid.Nx; kw...) + launch!(arch, grid, KernelParameters(yz_size, offset), fill_periodic_west_and_east_halo!, c_parent, Val(grid.Hx), grid.Nx; kw...) return nothing end function fill_south_and_north_halo!(c, ::PBCT, ::PBCT, size, offset, loc, arch, grid, args...; kw...) c_parent, xz_size, offset = parent_size_and_offset(c, 1, 3, size, offset) - launch!(arch, grid, KernelParameters(xz_size, offset), fill_periodic_south_and_north_halo!, c_parent, grid.Hy, grid.Ny; kw...) + launch!(arch, grid, KernelParameters(xz_size, offset), fill_periodic_south_and_north_halo!, c_parent, Val(grid.Hy), grid.Ny; kw...) return nothing end function fill_bottom_and_top_halo!(c, ::PBCT, ::PBCT, size, offset, loc, arch, grid, args...; kw...) c_parent, xy_size, offset = parent_size_and_offset(c, 1, 2, size, offset) - launch!(arch, grid, KernelParameters(xy_size, offset), fill_periodic_bottom_and_top_halo!, c_parent, grid.Hz, grid.Nz; kw...) + launch!(arch, grid, KernelParameters(xy_size, offset), fill_periodic_bottom_and_top_halo!, c_parent, Val(grid.Hz), grid.Nz; kw...) return nothing end @@ -37,7 +37,7 @@ end ##### Periodic boundary condition kernels ##### -@kernel function fill_periodic_west_and_east_halo!(c, H::Int, N) +@kernel function fill_periodic_west_and_east_halo!(c, ::Val{H}, N) where H j, k = @index(Global, NTuple) @unroll for i = 1:H @inbounds begin @@ -47,7 +47,7 @@ end end end -@kernel function fill_periodic_south_and_north_halo!(c, H::Int, N) +@kernel function fill_periodic_south_and_north_halo!(c, ::Val{H}, N) where H i, k = @index(Global, NTuple) @unroll for j = 1:H @inbounds begin @@ -57,7 +57,7 @@ end end end -@kernel function fill_periodic_bottom_and_top_halo!(c, H::Int, N) +@kernel function fill_periodic_bottom_and_top_halo!(c, ::Val{H}, N) where H i, j = @index(Global, NTuple) @unroll for k = 1:H @inbounds begin @@ -71,7 +71,7 @@ end #### Tupled periodic boundary condition #### -@kernel function fill_periodic_west_and_east_halo!(c::NTuple{M}, H::Int, N) where M +@kernel function fill_periodic_west_and_east_halo!(c::NTuple{M}, ::Val{H}, N) where {M, H} j, k = @index(Global, NTuple) @unroll for n = 1:M @unroll for i = 1:H @@ -83,7 +83,7 @@ end end end -@kernel function fill_periodic_south_and_north_halo!(c::NTuple{M}, H::Int, N) where M +@kernel function fill_periodic_south_and_north_halo!(c::NTuple{M}, ::Val{H}, N) where {M, H} i, k = @index(Global, NTuple) @unroll for n = 1:M @unroll for j = 1:H @@ -95,7 +95,7 @@ end end end -@kernel function fill_periodic_bottom_and_top_halo!(c::NTuple{M}, H::Int, N) where M +@kernel function fill_periodic_bottom_and_top_halo!(c::NTuple{M}, ::Val{H}, N) where {M, H} i, j = @index(Global, NTuple) @unroll for n = 1:M @unroll for k = 1:H diff --git a/src/Fields/field_boundary_buffers.jl b/src/Fields/field_boundary_buffers.jl index d0c2be1b69..f11b2e9558 100644 --- a/src/Fields/field_boundary_buffers.jl +++ b/src/Fields/field_boundary_buffers.jl @@ -3,7 +3,6 @@ using Oceananigans.Architectures: arch_array using Oceananigans.Grids: halo_size, size using Oceananigans.Utils: launch! using KernelAbstractions: @kernel, @index -using KernelAbstractions.Extras.LoopInfo: @unroll struct FieldBoundaryBuffers{W, E, S, N, SW, SE, NW, NE} west :: W diff --git a/src/Fields/regridding_fields.jl b/src/Fields/regridding_fields.jl index c42be8daca..a23c6e6a48 100644 --- a/src/Fields/regridding_fields.jl +++ b/src/Fields/regridding_fields.jl @@ -1,5 +1,4 @@ using KernelAbstractions: @kernel, @index -using KernelAbstractions.Extras.LoopInfo: @unroll using Oceananigans.Architectures: arch_array, architecture using Oceananigans.Operators: Δzᶜᶜᶜ, Δyᶜᶜᶜ, Δxᶜᶜᶜ, Azᶜᶜᶜ @@ -141,7 +140,7 @@ end fo = ForwardOrdering() - @inbounds @unroll for k = 1:target_grid.Nz + @inbounds for k = 1:target_grid.Nz target_field[i, j, k] = 0 z₋ = znode(i, j, k, target_grid, c, c, f) @@ -160,7 +159,7 @@ end target_field[i, j, k] = source_field[i_src, j_src, k₊_src] else # Add contribution from all full cells in the integration range - @unroll for k_src = k₋_src:k₊_src-1 + for k_src = k₋_src:k₊_src-1 target_field[i, j, k] += source_field[i_src, j_src, k_src] * Δzᶜᶜᶜ(i_src, j_src, k_src, source_grid) end @@ -196,7 +195,7 @@ end fo = ForwardOrdering() - @inbounds @unroll for j = 1:target_grid.Ny + @inbounds for j = 1:target_grid.Ny target_field[i, j, k] = 0 y₋ = ηnode(i, j, k, target_grid, c, f, c) @@ -215,7 +214,7 @@ end target_field[i, j, k] = source_field[i_src, j₊_src, k_src] else # Add contribution from all full cells in the integration range - @unroll for j_src = j₋_src:j₊_src-1 + for j_src = j₋_src:j₊_src-1 target_field[i, j, k] += source_field[i_src, j_src, k_src] * Azᶜᶜᶜ(i_src, j_src, k_src, source_grid) end @@ -263,7 +262,7 @@ end fo = ForwardOrdering() - @inbounds @unroll for i = 1:target_grid.Nx + @inbounds for i = 1:target_grid.Nx target_field[i, j, k] = 0 # Integrate source field from ξ₋ to ξ₊ @@ -288,7 +287,7 @@ end # sum up all the contributions from the source field to the target cell. # First we add up all the contributions from all source cells that lie entirely within the target cell. - @unroll for i_src = i₋_src:i₊_src-1 + for i_src = i₋_src:i₊_src-1 target_field[i, j, k] += source_field[i_src, j_src, k_src] * Azᶜᶜᶜ(i_src, j_src, k_src, source_grid) end @@ -338,4 +337,3 @@ end @inline fractional_horizontal_area(grid::LatitudeLongitudeGrid{<:Any, <:Flat}, λ₁, λ₂, φ₁, φ₂) = grid.radius^2 * (hack_sind(φ₂) - hack_sind(φ₁)) @inline fractional_horizontal_area(grid::LatitudeLongitudeGrid{<:Any, <:Any, <:Flat}, λ₁, λ₂, φ₁, φ₂) = grid.radius^2 * deg2rad(λ₂ - λ₁) - diff --git a/src/Forcings/forcing.jl b/src/Forcings/forcing.jl index 78405f792d..5225adba1c 100644 --- a/src/Forcings/forcing.jl +++ b/src/Forcings/forcing.jl @@ -74,7 +74,7 @@ parameterized_func(x, y, z, t, p) = p.μ * exp(z / p.λ) * cos(p.ω * t) v_forcing = Forcing(parameterized_func, parameters = (μ=42, λ=0.1, ω=π)) # output -ContinuousForcing{NamedTuple{(:μ, :λ, :ω), Tuple{Int64, Float64, Irrational{:π}}}} +ContinuousForcing{@NamedTuple{μ::Int64, λ::Float64, ω::Irrational{:π}}} ├── func: parameterized_func (generic function with 1 method) ├── parameters: (μ = 42, λ = 0.1, ω = π) └── field dependencies: () @@ -90,7 +90,7 @@ model = NonhydrostaticModel(grid=grid, forcing=(v=v_forcing,)) model.forcing.v # output -ContinuousForcing{NamedTuple{(:μ, :λ, :ω), Tuple{Int64, Float64, Irrational{:π}}}} at (Center, Face, Center) +ContinuousForcing{@NamedTuple{μ::Int64, λ::Float64, ω::Irrational{:π}}} at (Center, Face, Center) ├── func: parameterized_func (generic function with 1 method) ├── parameters: (μ = 42, λ = 0.1, ω = π) └── field dependencies: () @@ -121,7 +121,7 @@ c_forcing = Forcing(tracer_relaxation, parameters = (μ=1/60, λ=10, H=1000, dCdz=1)) # output -ContinuousForcing{NamedTuple{(:μ, :λ, :H, :dCdz), Tuple{Float64, Int64, Int64, Int64}}} +ContinuousForcing{@NamedTuple{μ::Float64, λ::Int64, H::Int64, dCdz::Int64}} ├── func: tracer_relaxation (generic function with 1 method) ├── parameters: (μ = 0.016666666666666666, λ = 10, H = 1000, dCdz = 1) └── field dependencies: (:c,) @@ -148,7 +148,7 @@ masked_damping(i, j, k, grid, clock, model_fields, parameters) = masked_damping_forcing = Forcing(masked_damping, parameters=(μ=42, λ=π), discrete_form=true) # output -DiscreteForcing{NamedTuple{(:μ, :λ), Tuple{Int64, Irrational{:π}}}} +DiscreteForcing{@NamedTuple{μ::Int64, λ::Irrational{:π}}} ├── func: masked_damping (generic function with 1 method) └── parameters: (μ = 42, λ = π) ``` @@ -160,4 +160,3 @@ function Forcing(func; parameters=nothing, field_dependencies=(), discrete_form= return ContinuousForcing(func; parameters=parameters, field_dependencies=field_dependencies) end end - diff --git a/src/Models/HydrostaticFreeSurfaceModels/compute_w_from_continuity.jl b/src/Models/HydrostaticFreeSurfaceModels/compute_w_from_continuity.jl index 8e8f2cc43a..b43920d41d 100644 --- a/src/Models/HydrostaticFreeSurfaceModels/compute_w_from_continuity.jl +++ b/src/Models/HydrostaticFreeSurfaceModels/compute_w_from_continuity.jl @@ -20,8 +20,8 @@ compute_w_from_continuity!(velocities, arch, grid; parameters = w_kernel_paramet @kernel function _compute_w_from_continuity!(U, grid) i, j = @index(Global, NTuple) - U.w[i, j, 1] = 0 - @unroll for k in 2:grid.Nz+1 + @inbounds U.w[i, j, 1] = 0 + for k in 2:grid.Nz+1 @inbounds U.w[i, j, k] = U.w[i, j, k-1] - Δzᶜᶜᶜ(i, j, k-1, grid) * div_xyᶜᶜᶜ(i, j, k-1, grid, U.u, U.v) end end diff --git a/src/Models/HydrostaticFreeSurfaceModels/split_explicit_free_surface_kernels.jl b/src/Models/HydrostaticFreeSurfaceModels/split_explicit_free_surface_kernels.jl index b795182e72..b9389a0440 100644 --- a/src/Models/HydrostaticFreeSurfaceModels/split_explicit_free_surface_kernels.jl +++ b/src/Models/HydrostaticFreeSurfaceModels/split_explicit_free_surface_kernels.jl @@ -1,5 +1,4 @@ using KernelAbstractions: @index, @kernel -using KernelAbstractions.Extras.LoopInfo: @unroll using Oceananigans.Grids: topology using Oceananigans.Utils using Oceananigans.AbstractOperations: Δz @@ -17,7 +16,7 @@ const θ = - 0.5 - 2β const γ = 0.088 const δ = 0.614 const ϵ = 0.013 -const μ = 1.0 - δ - γ - ϵ +const μ = 1 - δ - γ - ϵ # Evolution Kernels # @@ -203,20 +202,20 @@ end # Barotropic Model Kernels # u_Δz = u * Δz +# Possibly we can optimize this further by passing in Val(Nz) in order to +# @unroll the loop over `k`. @kernel function _barotropic_mode_kernel!(U, V, grid, u, v) - i, j = @index(Global, NTuple) + i, j = @index(Global, NTuple) - # hand unroll first loop @inbounds U[i, j, 1] = Δzᶠᶜᶜ(i, j, 1, grid) * u[i, j, 1] @inbounds V[i, j, 1] = Δzᶜᶠᶜ(i, j, 1, grid) * v[i, j, 1] - @unroll for k in 2:grid.Nz + for k in 2:grid.Nz @inbounds U[i, j, 1] += Δzᶠᶜᶜ(i, j, k, grid) * u[i, j, k] @inbounds V[i, j, 1] += Δzᶜᶠᶜ(i, j, k, grid) * v[i, j, k] end end -# may need to do Val(Nk) since it may not be known at compile compute_barotropic_mode!(U, V, grid, u, v) = launch!(architecture(grid), grid, :xy, _barotropic_mode_kernel!, U, V, grid, u, v) @@ -247,12 +246,11 @@ end i, j, k = @index(Global, NTuple) @inbounds begin - u[i, j, k] = u[i, j, k] + (U̅[i, j] - U[i, j]) / Hᶠᶜ[i, j] + u[i, j, k] = u[i, j, k] + (U̅[i, j] - U[i, j]) / Hᶠᶜ[i, j] v[i, j, k] = v[i, j, k] + (V̅[i, j] - V[i, j]) / Hᶜᶠ[i, j] end end -# may need to do Val(Nk) since it may not be known at compile. Also figure out where to put H function barotropic_split_explicit_corrector!(u, v, free_surface, grid) sefs = free_surface.state Hᶠᶜ, Hᶜᶠ = free_surface.auxiliary.Hᶠᶜ, free_surface.auxiliary.Hᶜᶠ @@ -350,14 +348,15 @@ function iterate_split_explicit!(free_surface, grid, Δt) end # Calculate RHS for the barotopic time step. +# Possibly we can optimize this further by passing in Val(Nz) in order to +# @unroll the loop over `k`. @kernel function _compute_integrated_ab2_tendencies!(Gᵁ, Gⱽ, grid, Gu⁻, Gv⁻, Guⁿ, Gvⁿ, χ) - i, j = @index(Global, NTuple) + i, j = @index(Global, NTuple) - # hand unroll first loop @inbounds Gᵁ[i, j, 1] = Δzᶠᶜᶜ(i, j, 1, grid) * ab2_step_Gu(i, j, 1, grid, Gu⁻, Guⁿ, χ) @inbounds Gⱽ[i, j, 1] = Δzᶜᶠᶜ(i, j, 1, grid) * ab2_step_Gv(i, j, 1, grid, Gv⁻, Gvⁿ, χ) - @unroll for k in 2:grid.Nz + for k in 2:grid.Nz @inbounds Gᵁ[i, j, 1] += Δzᶠᶜᶜ(i, j, k, grid) * ab2_step_Gu(i, j, k, grid, Gu⁻, Guⁿ, χ) @inbounds Gⱽ[i, j, 1] += Δzᶜᶠᶜ(i, j, k, grid) * ab2_step_Gv(i, j, k, grid, Gv⁻, Gvⁿ, χ) end diff --git a/src/Models/NonhydrostaticModels/update_hydrostatic_pressure.jl b/src/Models/NonhydrostaticModels/update_hydrostatic_pressure.jl index b589596374..b6b53a86e3 100644 --- a/src/Models/NonhydrostaticModels/update_hydrostatic_pressure.jl +++ b/src/Models/NonhydrostaticModels/update_hydrostatic_pressure.jl @@ -14,14 +14,15 @@ the `buoyancy_perturbationᶜᶜᶜ` downwards: @inbounds pHY′[i, j, grid.Nz] = - z_dot_g_bᶜᶜᶠ(i, j, grid.Nz+1, grid, buoyancy, C) * Δzᶜᶜᶠ(i, j, grid.Nz+1, grid) - @unroll for k in grid.Nz-1 : -1 : 1 + for k in grid.Nz-1 : -1 : 1 @inbounds pHY′[i, j, k] = pHY′[i, j, k+1] - z_dot_g_bᶜᶜᶠ(i, j, k+1, grid, buoyancy, C) * Δzᶜᶜᶠ(i, j, k+1, grid) end end update_hydrostatic_pressure!(model; kwargs...) = update_hydrostatic_pressure!(model.grid, model; kwargs...) update_hydrostatic_pressure!(::AbstractGrid{<:Any, <:Any, <:Any, <:Flat}, model; kwargs...) = nothing -update_hydrostatic_pressure!(grid, model; kwargs...) = update_hydrostatic_pressure!(model.pressures.pHY′, model.architecture, model.grid, model.buoyancy, model.tracers; kwargs...) +update_hydrostatic_pressure!(grid, model; kwargs...) = + update_hydrostatic_pressure!(model.pressures.pHY′, model.architecture, model.grid, model.buoyancy, model.tracers; kwargs...) # Partial cell "algorithm" const PCB = PartialCellBottom @@ -30,7 +31,7 @@ const PCBIBG = ImmersedBoundaryGrid{<:Any, <:Any, <:Any, <:Any, <:Any, <:PCB} update_hydrostatic_pressure!(pHY′, arch, ibg::PCBIBG, buoyancy, tracers; parameters = p_kernel_parameters(ibg.underlying_grid)) = update_hydrostatic_pressure!(pHY′, arch, ibg.underlying_grid, buoyancy, tracers; parameters) -update_hydrostatic_pressure!(pHY′, arch, grid, buoyancy, tracers; parameters = p_kernel_parameters(grid)) = +update_hydrostatic_pressure!(pHY′, arch, grid, buoyancy, tracers; parameters = p_kernel_parameters(grid)) = launch!(arch, grid, parameters, _update_hydrostatic_pressure!, pHY′, grid, buoyancy, tracers) # extend p kernel to compute also the boundaries @@ -38,8 +39,8 @@ update_hydrostatic_pressure!(pHY′, arch, grid, buoyancy, tracers; parameters = Nx, Ny, _ = size(grid) TX, TY, _ = topology(grid) - Sx = TX == Flat ? Nx : Nx + 2 - Sy = TY == Flat ? Ny : Ny + 2 + Sx = TX == Flat ? Nx : Nx + 2 + Sy = TY == Flat ? Ny : Ny + 2 Ox = TX == Flat ? 0 : - 1 Oy = TY == Flat ? 0 : - 1 diff --git a/src/Models/ShallowWaterModels/ShallowWaterModels.jl b/src/Models/ShallowWaterModels/ShallowWaterModels.jl index b257ea3765..90fd05f5da 100644 --- a/src/Models/ShallowWaterModels/ShallowWaterModels.jl +++ b/src/Models/ShallowWaterModels/ShallowWaterModels.jl @@ -4,7 +4,6 @@ export ShallowWaterModel, ShallowWaterScalarDiffusivity, ConservativeFormulation, VectorInvariantFormulation using KernelAbstractions: @index, @kernel -using KernelAbstractions.Extras.LoopInfo: @unroll using Adapt using Oceananigans.Utils: launch! diff --git a/src/Models/ShallowWaterModels/store_shallow_water_tendencies.jl b/src/Models/ShallowWaterModels/store_shallow_water_tendencies.jl index 5374dda2d6..3330be091c 100644 --- a/src/Models/ShallowWaterModels/store_shallow_water_tendencies.jl +++ b/src/Models/ShallowWaterModels/store_shallow_water_tendencies.jl @@ -2,6 +2,8 @@ using Oceananigans.Utils: work_layout using Oceananigans.Architectures: device using Oceananigans.TimeSteppers: store_tracer_tendency! +using KernelAbstractions.Extras.LoopInfo: @unroll + import Oceananigans.TimeSteppers: store_tendencies! """ Store source terms for `uh`, `vh`, and `h`. """ diff --git a/src/Solvers/Solvers.jl b/src/Solvers/Solvers.jl index 2c05dd373c..9dac3b9e93 100644 --- a/src/Solvers/Solvers.jl +++ b/src/Solvers/Solvers.jl @@ -12,7 +12,6 @@ using FFTW using CUDA using SparseArrays using KernelAbstractions -using KernelAbstractions.Extras.LoopInfo: @unroll using Oceananigans.Architectures: device, CPU, GPU, array_type, arch_array using Oceananigans.Utils diff --git a/src/Solvers/batched_tridiagonal_solver.jl b/src/Solvers/batched_tridiagonal_solver.jl index e13ed7c36a..8cd68a6631 100644 --- a/src/Solvers/batched_tridiagonal_solver.jl +++ b/src/Solvers/batched_tridiagonal_solver.jl @@ -135,7 +135,7 @@ end f₁ = get_coefficient(1, j, k, grid, f, p, tridiagonal_direction, args...) ϕ[1, j, k] = f₁ / β - @unroll for i = 2:Nx + for i = 2:Nx cᵏ⁻¹ = get_coefficient(i-1, j, k, grid, c, p, tridiagonal_direction, args...) bᵏ = get_coefficient(i, j, k, grid, b, p, tridiagonal_direction, args...) aᵏ⁻¹ = get_coefficient(i-1, j, k, grid, a, p, tridiagonal_direction, args...) @@ -152,7 +152,7 @@ end ϕ[i, j, k] = (fᵏ - aᵏ⁻¹ * ϕ[i-1, j, k]) / β end - @unroll for i = Nx-1:-1:1 + for i = Nx-1:-1:1 ϕ[i, j, k] -= t[i+1, j, k] * ϕ[i+1, j, k] end end @@ -167,7 +167,7 @@ end f₁ = get_coefficient(i, 1, k, grid, f, p, tridiagonal_direction, args...) ϕ[i, 1, k] = f₁ / β - @unroll for j = 2:Ny + for j = 2:Ny cᵏ⁻¹ = get_coefficient(i, j-1, k, grid, c, p, tridiagonal_direction, args...) bᵏ = get_coefficient(i, j, k, grid, b, p, tridiagonal_direction, args...) aᵏ⁻¹ = get_coefficient(i, j-1, k, grid, a, p, tridiagonal_direction, args...) @@ -184,7 +184,7 @@ end ϕ[i, j, k] = (fᵏ - aᵏ⁻¹ * ϕ[i, j-1, k]) / β end - @unroll for j = Ny-1:-1:1 + for j = Ny-1:-1:1 ϕ[i, j, k] -= t[i, j+1, k] * ϕ[i, j+1, k] end end @@ -199,7 +199,7 @@ end f₁ = get_coefficient(i, j, 1, grid, f, p, tridiagonal_direction, args...) ϕ[i, j, 1] = f₁ / β - @unroll for k = 2:Nz + for k = 2:Nz cᵏ⁻¹ = get_coefficient(i, j, k-1, grid, c, p, tridiagonal_direction, args...) bᵏ = get_coefficient(i, j, k, grid, b, p, tridiagonal_direction, args...) aᵏ⁻¹ = get_coefficient(i, j, k-1, grid, a, p, tridiagonal_direction, args...) @@ -215,7 +215,7 @@ end ϕ[i, j, k] = (fᵏ - aᵏ⁻¹ * ϕ[i, j, k-1]) / β end - @unroll for k = Nz-1:-1:1 + for k = Nz-1:-1:1 ϕ[i, j, k] -= t[i, j, k+1] * ϕ[i, j, k+1] end end diff --git a/src/Solvers/fourier_tridiagonal_poisson_solver.jl b/src/Solvers/fourier_tridiagonal_poisson_solver.jl index db837735a7..2f93f2f51a 100644 --- a/src/Solvers/fourier_tridiagonal_poisson_solver.jl +++ b/src/Solvers/fourier_tridiagonal_poisson_solver.jl @@ -20,7 +20,7 @@ architecture(solver::FourierTridiagonalPoissonSolver) = architecture(solver.grid # Using a homogeneous Neumann (zero Gradient) boundary condition: @inbounds D[1, j, k] = -1 / Δxᶠᵃᵃ(2, j, k, grid) - Δxᶜᵃᵃ(1, j, k, grid) * (λy[j] + λz[k]) - @unroll for i in 2:Nx-1 + for i in 2:Nx-1 @inbounds D[i, j, k] = - (1 / Δxᶠᵃᵃ(i+1, j, k, grid) + 1 / Δxᶠᵃᵃ(i, j, k, grid)) - Δxᶜᵃᵃ(i, j, k, grid) * (λy[j] + λz[k]) end @inbounds D[Nx, j, k] = -1 / Δxᶠᵃᵃ(Nx, j, k, grid) - Δxᶜᵃᵃ(Nx, j, k, grid) * (λy[j] + λz[k]) @@ -32,7 +32,7 @@ end # Using a homogeneous Neumann (zero Gradient) boundary condition: @inbounds D[i, 1, k] = -1 / Δyᵃᶠᵃ(i, 2, k, grid) - Δyᵃᶜᵃ(i, 1, k, grid) * (λx[i] + λz[k]) - @unroll for j in 2:Ny-1 + for j in 2:Ny-1 @inbounds D[i, j, k] = - (1 / Δyᵃᶠᵃ(i, j+1, k, grid) + 1 / Δyᵃᶠᵃ(i, j, k, grid)) - Δyᵃᶜᵃ(i, j, k, grid) * (λx[i] + λz[k]) end @inbounds D[i, Ny, k] = -1 / Δyᵃᶠᵃ(i, Ny, k, grid) - Δyᵃᶜᵃ(i, Ny, k, grid) * (λx[i] + λz[k]) @@ -44,7 +44,7 @@ end # Using a homogeneous Neumann (zero Gradient) boundary condition: @inbounds D[i, j, 1] = -1 / Δzᵃᵃᶠ(i, j, 2, grid) - Δzᵃᵃᶜ(i, j, 1, grid) * (λx[i] + λy[j]) - @unroll for k in 2:Nz-1 + for k in 2:Nz-1 @inbounds D[i, j, k] = - (1 / Δzᵃᵃᶠ(i, j, k+1, grid) + 1 / Δzᵃᵃᶠ(i, j, k, grid)) - Δzᵃᵃᶜ(i, j, k, grid) * (λx[i] + λy[j]) end @inbounds D[i, j, Nz] = -1 / Δzᵃᵃᶠ(i, j, Nz, grid) - Δzᵃᵃᶜ(i, j, Nz, grid) * (λx[i] + λy[j]) diff --git a/src/TurbulenceClosures/turbulence_closure_implementations/scalar_diffusivity.jl b/src/TurbulenceClosures/turbulence_closure_implementations/scalar_diffusivity.jl index 4c021f8be2..df66ead80b 100644 --- a/src/TurbulenceClosures/turbulence_closure_implementations/scalar_diffusivity.jl +++ b/src/TurbulenceClosures/turbulence_closure_implementations/scalar_diffusivity.jl @@ -1,6 +1,7 @@ +using Oceananigans.Utils: prettysummary + import Adapt import Oceananigans.Grids: required_halo_size -using Oceananigans.Utils: prettysummary struct ScalarDiffusivity{TD, F, V, K, N} <: AbstractScalarDiffusivity{TD, F, N} ν :: V @@ -25,12 +26,12 @@ Arguments ========= * `time_discretization`: either `ExplicitTimeDiscretization()` (default) - or `VerticallyImplicitTimeDiscretization()`. + or `VerticallyImplicitTimeDiscretization()`. * `formulation`: - - `HorizontalFormulation()` for diffusivity applied in the horizontal direction(s) - - `VerticalFormulation()` for diffusivity applied in the vertical direction, - - `ThreeDimensionalFormulation()` (default) for diffusivity applied isotropically to all directions + - `HorizontalFormulation()` for diffusivity applied in the horizontal direction(s) + - `VerticalFormulation()` for diffusivity applied in the vertical direction, + - `ThreeDimensionalFormulation()` (default) for diffusivity applied isotropically to all directions * `FT`: the float datatype (default: `Float64`) @@ -40,26 +41,25 @@ Keyword arguments * `ν`: Viscosity. `Number`, three-dimensional `AbstractArray`, `Field`, or `Function`. * `κ`: Diffusivity. `Number`, `AbstractArray`, `Field`, `Function`, or - `NamedTuple` of diffusivities with entries for each tracer. + `NamedTuple` of diffusivities with entries for each tracer. -* `discrete_form`: `Boolean`; default: `False`. +* `discrete_form`: `Boolean`; default: `false`. When prescribing the viscosities or diffusivities as functions, depending on the value of keyword argument `discrete_form`, the constructor expects: * `discrete_form = false` (default): functions of the grid's native coordinates - and time, e.g., `(x, y, z, t)` for a `RectilinearGrid` or - `(λ, φ, z, t)` for a `LatitudeLongitudeGrid`. + and time, e.g., `(x, y, z, t)` for a `RectilinearGrid` or `(λ, φ, z, t)` for + a `LatitudeLongitudeGrid`. * `discrete_form = true`: - - with `loc = (nothing, nothing, nothing)` (default): - functions of `(i, j, k, grid, ℓx, ℓy, ℓz)` with `ℓx`, `ℓy` - and `ℓz` either `Face()` or `Center()`. - - with `loc = (ℓx, ℓy, ℓz)` with `ℓx`, `ℓy` - and `ℓz` either `Face()` or `Center()`: functions of `(i, j, k, grid)`. - + - with `loc = (nothing, nothing, nothing)` (default): + functions of `(i, j, k, grid, ℓx, ℓy, ℓz)` with `ℓx`, `ℓy` + and `ℓz` either `Face()` or `Center()`. + - with `loc = (ℓx, ℓy, ℓz)` with `ℓx`, `ℓy` + and `ℓz` either `Face()` or `Center()`: functions of `(i, j, k, grid)`. * `parameters`: `NamedTuple` with parameters used by the functions - that compute viscosity and/or diffusivity; default: `nothing`. + that compute viscosity and/or diffusivity; default: `nothing`. Examples ======== @@ -67,7 +67,7 @@ Examples ```jldoctest ScalarDiffusivity julia> using Oceananigans -julia> ScalarDiffusivity(ν = 1000, κ=2000) +julia> ScalarDiffusivity(ν=1000, κ=2000) ScalarDiffusivity{ExplicitTimeDiscretization}(ν=1000.0, κ=2000.0) ``` @@ -77,7 +77,7 @@ julia> const depth_scale = 100; julia> @inline ν(x, y, z) = 1000 * exp(z / depth_scale) ν (generic function with 1 method) -julia> ScalarDiffusivity(ν = ν) +julia> ScalarDiffusivity(ν=ν) ScalarDiffusivity{ExplicitTimeDiscretization}(ν=ν (generic function with 1 method), κ=0.0) ``` @@ -90,7 +90,7 @@ julia> @inline function κ(i, j, k, grid, ℓx, ℓy, ℓz) end κ (generic function with 1 method) -julia> ScalarDiffusivity(κ = κ, discrete_form = true) +julia> ScalarDiffusivity(κ=κ, discrete_form=true) ScalarDiffusivity{ExplicitTimeDiscretization}(ν=0.0, κ=Oceananigans.TurbulenceClosures.DiscreteDiffusionFunction{Nothing, Nothing, Nothing, Nothing, typeof(κ)}) ``` @@ -101,8 +101,8 @@ julia> @inline function another_κ(i, j, k, grid, p) end another_κ (generic function with 1 method) -julia> ScalarDiffusivity(κ = another_κ, discrete_form = true, loc = (Center, Center, Face), parameters = (; depth_scale = 120.0)) -ScalarDiffusivity{ExplicitTimeDiscretization}(ν=0.0, κ=Oceananigans.TurbulenceClosures.DiscreteDiffusionFunction{Center, Center, Face, NamedTuple{(:depth_scale,), Tuple{Float64}}, typeof(another_κ)}) +julia> ScalarDiffusivity(κ=another_κ, discrete_form=true, loc=(Center, Center, Face), parameters=(; depth_scale = 120.0)) +ScalarDiffusivity{ExplicitTimeDiscretization}(ν=0.0, κ=Oceananigans.TurbulenceClosures.DiscreteDiffusionFunction{Center, Center, Face, @NamedTuple{depth_scale::Float64}, typeof(another_κ)}) ``` """ function ScalarDiffusivity(time_discretization=ExplicitTimeDiscretization(), @@ -208,4 +208,3 @@ function Adapt.adapt_structure(to, closure::ScalarDiffusivity{TD, F, <:Any, <:An κ = Adapt.adapt(to, closure.κ) return ScalarDiffusivity{TD, F, N}(ν, κ) end - diff --git a/test/test_distributed_hydrostatic_model.jl b/test/test_distributed_hydrostatic_model.jl index 60e99f2f04..8511a4c8ad 100644 --- a/test/test_distributed_hydrostatic_model.jl +++ b/test/test_distributed_hydrostatic_model.jl @@ -114,10 +114,13 @@ for arch in archs cs = partition_global_array(cpu_arch, cs, size(c)) ηs = partition_global_array(cpu_arch, ηs, size(η)) - @test all(u .≈ us) - @test all(v .≈ vs) - @test all(w .≈ ws) - @test all(c .≈ cs) - @test all(η .≈ ηs) + atol = eps(eltype(grid)) + rtol = sqrt(eps(eltype(grid))) + + @test all(isapprox(u, us; atol, rtol)) + @test all(isapprox(v, vs; atol, rtol)) + @test all(isapprox(w, ws; atol, rtol)) + @test all(isapprox(c, cs; atol, rtol)) + @test all(isapprox(η, ηs; atol, rtol)) end end diff --git a/test/test_distributed_models.jl b/test/test_distributed_models.jl index 1c97bdce32..9ddfe6903c 100644 --- a/test/test_distributed_models.jl +++ b/test/test_distributed_models.jl @@ -354,7 +354,6 @@ function test_triply_periodic_halo_communication_with_411_ranks(halo, child_arch @test all(bottom_halo(field, include_corners=false) .== arch.local_rank) end - return nothing end @@ -376,6 +375,7 @@ function test_triply_periodic_halo_communication_with_141_ranks(halo, child_arch @test all(top_halo(field, include_corners=false) .== arch.local_rank) @test all(bottom_halo(field, include_corners=false) .== arch.local_rank) end + return nothing end @@ -449,8 +449,6 @@ end # Only test on CPU because we do not have a GPU pressure solver yet @testset "Time stepping NonhydrostaticModel" begin if CPU() ∈ archs - #for ranks in [(1, 4, 1), (2, 2, 1), (4, 1, 1)] - #@info "Time-stepping a distributed NonhydrostaticModel with ranks $ranks..." for partition in [Partition(1, 4), Partition(2, 2), Partition(4, 1)] @info "Time-stepping a distributed NonhydrostaticModel with partition $partition..." arch = Distributed(; partition) @@ -487,4 +485,3 @@ end end end end - diff --git a/test/test_distributed_poisson_solvers.jl b/test/test_distributed_poisson_solvers.jl index 6ecf5eb8fe..772e128902 100644 --- a/test/test_distributed_poisson_solvers.jl +++ b/test/test_distributed_poisson_solvers.jl @@ -59,7 +59,7 @@ function random_divergent_source_term(grid) ArrayType = array_type(arch) R = zeros(Nx, Ny, Nz) |> ArrayType launch!(arch, grid, :xyz, divergence!, grid, U.u.data, U.v.data, U.w.data, R) - + return R end @@ -74,7 +74,7 @@ function divergence_free_poisson_solution_triply_periodic(grid_points, ranks) ϕ = CenterField(local_grid, boundary_conditions=bcs) ∇²ϕ = CenterField(local_grid, boundary_conditions=bcs) R = random_divergent_source_term(local_grid) - + global_grid = reconstruct_global_grid(local_grid) solver = DistributedFFTBasedPoissonSolver(global_grid, local_grid) @@ -108,4 +108,3 @@ end @test_throws ArgumentError divergence_free_poisson_solution_triply_periodic((16, 44, 1), (2, 2, 1)) @test_throws ArgumentError divergence_free_poisson_solution_triply_periodic((44, 16, 1), (2, 2, 1)) end - diff --git a/test/test_poisson_solvers.jl b/test/test_poisson_solvers.jl index dbd7d73ba3..7e37253a3e 100644 --- a/test/test_poisson_solvers.jl +++ b/test/test_poisson_solvers.jl @@ -31,7 +31,6 @@ two_dimensional_topologies = [(Flat, Bounded, Bounded), grids_2d = [RectilinearGrid(arch, FT, size=(2, 2), extent=(1, 1), topology=topo) for topo in two_dimensional_topologies] - grids = [] push!(grids, grids_3d..., grids_2d...) diff --git a/test/test_regrid.jl b/test/test_regrid.jl index 4eb578a3f6..f0034a829e 100644 --- a/test/test_regrid.jl +++ b/test/test_regrid.jl @@ -4,7 +4,7 @@ using Oceananigans.Fields: regrid_in_x!, regrid_in_y!, regrid_in_z! @testset "Field regridding" begin @info " Testing field regridding..." - + L = 1.1 ℓ = 0.5 @@ -12,7 +12,7 @@ using Oceananigans.Fields: regrid_in_x!, regrid_in_y!, regrid_in_z! fine_stretched_ξ = [0, ℓ, L] very_fine_stretched_ξ = [0, 0.2, 0.6, L] super_fine_stretched_ξ = [0, 0.1, 0.3, 0.65, L] - + topologies_1d = (x = (Bounded, Flat, Flat), y = (Flat, Bounded, Flat), z = (Flat, Flat, Bounded)) @@ -87,7 +87,7 @@ using Oceananigans.Fields: regrid_in_x!, regrid_in_y!, regrid_in_z! CUDA.@allowscalar begin @test interior(fine_1d_regular_c)[1] ≈ ℓ/(L/2) * c₁ + (1 - ℓ/(L/2)) * c₂ @test interior(fine_1d_regular_c)[2] ≈ c₂ - end + end # Fine-graining regrid!(very_fine_1d_stretched_c, fine_1d_stretched_c) @@ -121,7 +121,7 @@ using Oceananigans.Fields: regrid_in_x!, regrid_in_y!, regrid_in_z! # This test does not work, because we can only regrid in one direction. # To make this work, we have to transfer the reduced data to a "reduced" grid # (ie with one grid point in each reduced direction). - + # Fine-graining from reduction ind1 = dim == :x ? (1, :, :) : dim == :y ? (:, 1, :) : (:, :, 1) ind2 = dim == :x ? (2, :, :) : dim == :y ? (:, 2, :) : (:, :, 2) @@ -129,7 +129,7 @@ using Oceananigans.Fields: regrid_in_x!, regrid_in_y!, regrid_in_z! Base.dotview(fine_stretched_c, ind1...) .= c₁ Base.dotview(fine_stretched_c, ind2...) .= c₂ - + fine_stretched_c_mean_xy = Field(Reduction(mean!, fine_stretched_c; dims)) compute!(fine_stretched_c_mean_xy) diff --git a/test/utils_for_runtests.jl b/test/utils_for_runtests.jl index 1551bd262b..d4a92035e2 100644 --- a/test/utils_for_runtests.jl +++ b/test/utils_for_runtests.jl @@ -1,13 +1,13 @@ -using Oceananigans +using Test using Statistics -using KernelAbstractions: @kernel, @index using CUDA -using Test using Printf -using Test +using MPI +using KernelAbstractions: @kernel, @index + +using Oceananigans using Oceananigans.TimeSteppers: QuasiAdamsBashforth2TimeStepper, RungeKutta3TimeStepper, update_state! using Oceananigans.DistributedComputations: Distributed, Partition, child_architecture, Fractional, Equal -using MPI import Oceananigans.Fields: interior @@ -32,11 +32,11 @@ end function summarize_regression_test(fields, correct_fields) for (field_name, φ, φ_c) in zip(keys(fields), fields, correct_fields) Δ = φ .- φ_c - Δ_min = minimum(Δ) - Δ_max = maximum(Δ) - Δ_mean = mean(Δ) - Δ_abs_mean = mean(abs, Δ) - Δ_std = std(Δ) + Δ_min = minimum(Δ) + Δ_max = maximum(Δ) + Δ_mean = mean(Δ) + Δ_abs_mean = mean(abs, Δ) + Δ_std = std(Δ) matching = sum(φ .≈ φ_c) grid_points = length(φ_c) diff --git a/validation/barotropic_gyre/visualize_barotropic_gyre.jl b/validation/barotropic_gyre/visualize_barotropic_gyre.jl index 70f2875f08..2c6de5377e 100644 --- a/validation/barotropic_gyre/visualize_barotropic_gyre.jl +++ b/validation/barotropic_gyre/visualize_barotropic_gyre.jl @@ -52,7 +52,7 @@ function visualize_barotropic_gyre(filepath) v = @lift file["timeseries/v/" * string($iter)][:, :, 1] η = @lift file["timeseries/η/" * string($iter)][:, :, 1] - fig = Figure(resolution = (2160, 1080)) + fig = Figure(size=(2160, 1080)) x = (xu, xv, xc) y = (yu, yv, yc) diff --git a/validation/bickley_jet/bickley_jet.jl b/validation/bickley_jet/bickley_jet.jl index ad95dce4f0..d29d00ab72 100644 --- a/validation/bickley_jet/bickley_jet.jl +++ b/validation/bickley_jet/bickley_jet.jl @@ -82,7 +82,7 @@ function visualize_bickley_jet(name) t = ζt.times Nt = length(t) - fig = Figure(resolution=(1400, 800)) + fig = Figure(size=(1400, 800)) slider = Slider(fig[2, 1:2], range=1:Nt, startvalue=1) n = slider.value diff --git a/validation/biogeochemistry/sediment_entrainment.jl b/validation/biogeochemistry/sediment_entrainment.jl index 91a9effa51..5e53c747da 100644 --- a/validation/biogeochemistry/sediment_entrainment.jl +++ b/validation/biogeochemistry/sediment_entrainment.jl @@ -60,7 +60,7 @@ end simulation.callbacks[:progress] = Callback(progress, IterationInterval(100)) -fig = Figure(resolution=(1600, 600)) +fig = Figure(size=(1600, 600)) ax_ξ = Axis(fig[1, 1]) ax_w = Axis(fig[1, 2]) ax_s = Axis(fig[1, 3]) @@ -118,7 +118,7 @@ st = FieldTimeSeries(filepath, "sediment") wt = FieldTimeSeries(filepath, "w") Nt = length(wt.times) -fig = Figure(resolution=(1600, 600)) +fig = Figure(size=(1600, 600)) ax_ξ = Axis(fig[1, 1], xlabel="x (m)", ylabel="z (m)", title="Vorticity", aspect=2) ax_w = Axis(fig[1, 2], xlabel="x (m)", ylabel="z (m)", title="Vertical velocity", aspect=2) ax_s = Axis(fig[1, 3], xlabel="x (m)", ylabel="z (m)", title="Sediment concentration", aspect=2) diff --git a/validation/biogeochemistry/simple_plankton_continuous_form_biogeochemistry.jl b/validation/biogeochemistry/simple_plankton_continuous_form_biogeochemistry.jl index aee105fede..5ca59253b8 100644 --- a/validation/biogeochemistry/simple_plankton_continuous_form_biogeochemistry.jl +++ b/validation/biogeochemistry/simple_plankton_continuous_form_biogeochemistry.jl @@ -104,7 +104,7 @@ end ∫chl = @inbounds - (zᶜ[grid.Nz] - zᶠ[grid.Nz]) * P[i, j, grid.Nz] ^ e @inbounds PAR[i, j, grid.Nz] = PAR⁰ * exp(kʷ * zᶜ[grid.Nz] - χ * ∫chl) - @unroll for k in grid.Nz-1:-1:1 + for k in grid.Nz-1:-1:1 @inbounds begin ∫chl += (zᶜ[k + 1] - zᶠ[k])*P[i, j, k + 1]^e + (zᶠ[k] - zᶜ[k])*P[i, j, k]^e PAR[i, j, k] = PAR⁰*exp(kʷ * zᶜ[k] - χ * ∫chl) diff --git a/validation/curvilinear_diffusion/longitudinal_tracer_diffusion.jl b/validation/curvilinear_diffusion/longitudinal_tracer_diffusion.jl index 52baf67f9b..5542ccc386 100644 --- a/validation/curvilinear_diffusion/longitudinal_tracer_diffusion.jl +++ b/validation/curvilinear_diffusion/longitudinal_tracer_diffusion.jl @@ -84,7 +84,7 @@ title = @lift "Tracer diffusion on a parallel, t = $(file["timeseries/t/" * stri c = @lift file["timeseries/c/" * string($iter)][:, 1, 1] -fig = Figure(resolution = (1080, 540)) +fig = Figure(size=(1080, 540)) ax = fig[1, 1] = Axis(fig, ylabel = "c(λ)", xlabel = "λ") diff --git a/validation/curvilinear_diffusion/meridional_diffusion.jl b/validation/curvilinear_diffusion/meridional_diffusion.jl index af984df941..7a48019107 100644 --- a/validation/curvilinear_diffusion/meridional_diffusion.jl +++ b/validation/curvilinear_diffusion/meridional_diffusion.jl @@ -87,7 +87,7 @@ c = @lift file["timeseries/c/" * string($iter)][1, :, 1] set_theme!(Theme(fontsize = 30)) -fig = Figure(resolution = (1920, 1080)) +fig = Figure(size=(1920, 1080)) c_title = @lift @sprintf("Tracer diffusion on a meridian, t = %.2e", file["timeseries/t/" * string($iter)]) u_title = @lift @sprintf("Momentum diffusion on a meridian, t = %.2e", file["timeseries/t/" * string($iter)]) diff --git a/validation/curvilinear_diffusion/spot_tracer_diffusion.jl b/validation/curvilinear_diffusion/spot_tracer_diffusion.jl index dd9c9127a6..c6395af442 100644 --- a/validation/curvilinear_diffusion/spot_tracer_diffusion.jl +++ b/validation/curvilinear_diffusion/spot_tracer_diffusion.jl @@ -89,7 +89,7 @@ c = @lift file["timeseries/c/" * string($iter)][:, :, 1] set_theme!(Theme(fontsize = 30)) -fig = Figure(resolution = (1920, 1080)) +fig = Figure(size=(1920, 1080)) title = @lift "Tracer spot on a sphere, t = $(file["timeseries/t/" * string($iter)])" diff --git a/validation/distributed_simulations/distributed_shallow_water_turbulence.jl b/validation/distributed_simulations/distributed_shallow_water_turbulence.jl index 8af73b84fc..343671a312 100644 --- a/validation/distributed_simulations/distributed_shallow_water_turbulence.jl +++ b/validation/distributed_simulations/distributed_shallow_water_turbulence.jl @@ -51,7 +51,7 @@ if local_rank == 0 plot_title = @lift @sprintf("Oceananigans.jl + MPI: 2D turbulence t = %.2f", ds[1]["time"][$frame]) ζ = [@lift ds[r]["ζ"][:, :, 1, $frame] for r in 1:Nranks] - fig = Figure(resolution=(1600, 1200)) + fig = Figure(size=(1600, 1200)) for rx in 1:ranks[1], ry in 1:ranks[2] ax = fig[rx, ry] = Axis(fig) diff --git a/validation/field_time_series_boundary_conditions/seasonal_baroclinic_channel.jl b/validation/field_time_series_boundary_conditions/seasonal_baroclinic_channel.jl index 751e4f0a17..fb90a9307a 100644 --- a/validation/field_time_series_boundary_conditions/seasonal_baroclinic_channel.jl +++ b/validation/field_time_series_boundary_conditions/seasonal_baroclinic_channel.jl @@ -54,7 +54,7 @@ iter = Observable(1) Q = @lift(interior(Qˢ[$iter], :, :, 1)) τ = @lift(interior(τₓ[$iter], :, :, 1)) -fig = Figure(resolution = (800, 300)) +fig = Figure(size=(800, 300)) ax = Axis(fig[1, 1], title = "Surface heat flux") heatmap!(ax, Q, colormap = :thermal, colorrange = (-5e-5, 5e-5)) ax = Axis(fig[1, 2], title = "Surface wind stress") diff --git a/validation/immersed_boundaries/bumpy_baroclinic_adjustment.jl b/validation/immersed_boundaries/bumpy_baroclinic_adjustment.jl index c41e8a3ad9..bc073e20c0 100644 --- a/validation/immersed_boundaries/bumpy_baroclinic_adjustment.jl +++ b/validation/immersed_boundaries/bumpy_baroclinic_adjustment.jl @@ -132,7 +132,7 @@ ct = FieldTimeSeries(filepath, "c") t = ζt.times Nt = length(t) -fig = Figure(resolution=(1800, 600)) +fig = Figure(size=(1800, 600)) axζ = Axis(fig[1, 1], xlabel="x (km)", ylabel="y (km)") #, title="Vorticity at surface") axb = Axis(fig[1, 2], xlabel="x (km)", ylabel="y (km)") #, title="Buoyancy at surface") diff --git a/validation/immersed_boundaries/flow_over_hills.jl b/validation/immersed_boundaries/flow_over_hills.jl index 62efbaa494..4a2d9d2016 100644 --- a/validation/immersed_boundaries/flow_over_hills.jl +++ b/validation/immersed_boundaries/flow_over_hills.jl @@ -162,7 +162,7 @@ t = ξ["reference"].times[1:Nt] δU = Dict(exp => δU_series(u) for (exp, u) in U) δKE = Dict(exp => δK_series(k) for (exp, k) in KE) -fig = Figure(resolution=(1800, 1200)) +fig = Figure(size=(1800, 1200)) ax = Dict(exp => Axis(fig[i+1, 2:4], aspect=2π, xlabel="x", ylabel="z", title=exp) for (i, exp) in enumerate(experiments)) diff --git a/validation/immersed_boundaries/resting_stratified_bumpy_ocean.jl b/validation/immersed_boundaries/resting_stratified_bumpy_ocean.jl index 639bb73628..892b942951 100644 --- a/validation/immersed_boundaries/resting_stratified_bumpy_ocean.jl +++ b/validation/immersed_boundaries/resting_stratified_bumpy_ocean.jl @@ -72,7 +72,7 @@ v_partial = v[1] v_full = v[2] Δv = v_full .- v_partial -fig = Figure(resolution=(1200, 1800)) +fig = Figure(size=(1200, 1800)) partial_cell_title = @sprintf("PartialCellBottom with ϵ = %.1f", minimum_fractional_Δz) ax_bp = Axis(fig[1, 2], title=partial_cell_title) diff --git a/validation/implicit_free_surface/geostrophic_adjustment_test.jl b/validation/implicit_free_surface/geostrophic_adjustment_test.jl index bb6f7a904c..bedc84db7e 100644 --- a/validation/implicit_free_surface/geostrophic_adjustment_test.jl +++ b/validation/implicit_free_surface/geostrophic_adjustment_test.jl @@ -177,7 +177,7 @@ u1 = @lift(interior(data[1][3][$iter], :, mid, 1)) u2 = @lift(interior(data[2][3][$iter], :, mid, 1)) u3 = @lift(interior(data[3][3][$iter], :, mid, 1)) -fig = Figure(resolution = (1400, 1000)) +fig = Figure(size=(1400, 1000)) options = (; ylabelsize = 22, xlabelsize = 22, xgridstyle = :dash, ygridstyle = :dash, xtickalign = 1, xticksize = 10, ytickalign = 1, yticksize = 10, xlabel = "y [m]") diff --git a/validation/mesoscale_turbulence/baroclinic_adjustment.jl b/validation/mesoscale_turbulence/baroclinic_adjustment.jl index b6b5126cf2..f994fa843c 100644 --- a/validation/mesoscale_turbulence/baroclinic_adjustment.jl +++ b/validation/mesoscale_turbulence/baroclinic_adjustment.jl @@ -188,7 +188,7 @@ end using CairoMakie -fig = Figure(resolution = (1400, 700)) +fig = Figure(size=(1400, 700)) ax_b = fig[1:5, 1] = LScene(fig) ax_c = fig[1:5, 2] = LScene(fig) diff --git a/validation/mesoscale_turbulence/coarse_baroclinic_adjustment.jl b/validation/mesoscale_turbulence/coarse_baroclinic_adjustment.jl index 278f386486..cd26a180dc 100644 --- a/validation/mesoscale_turbulence/coarse_baroclinic_adjustment.jl +++ b/validation/mesoscale_turbulence/coarse_baroclinic_adjustment.jl @@ -131,7 +131,7 @@ run!(simulation) ##### Visualize ##### -fig = Figure(resolution = (1400, 700)) +fig = Figure(size=(1400, 700)) filepath = filename * "_fields.jld2" diff --git a/validation/mesoscale_turbulence/coarse_lat_lon_baroclinic_adjustment.jl b/validation/mesoscale_turbulence/coarse_lat_lon_baroclinic_adjustment.jl index 3e263e0133..3b32a6d74b 100644 --- a/validation/mesoscale_turbulence/coarse_lat_lon_baroclinic_adjustment.jl +++ b/validation/mesoscale_turbulence/coarse_lat_lon_baroclinic_adjustment.jl @@ -132,7 +132,7 @@ run!(simulation) ##### Visualize ##### -fig = Figure(resolution = (1400, 700)) +fig = Figure(size=(1400, 700)) filepath = filename * "_fields.jld2" diff --git a/validation/mesoscale_turbulence/eddying_channel.jl b/validation/mesoscale_turbulence/eddying_channel.jl index c3c468cad0..9fa11cf38c 100644 --- a/validation/mesoscale_turbulence/eddying_channel.jl +++ b/validation/mesoscale_turbulence/eddying_channel.jl @@ -315,7 +315,7 @@ end using CairoMakie -fig = Figure(resolution = (2000, 1000)) +fig = Figure(size=(2000, 1000)) ax_b = fig[1:5, 1] = LScene(fig) ax_ζ = fig[1:5, 2] = LScene(fig) diff --git a/validation/mesoscale_turbulence/modified_baroclinic_adjustment.jl b/validation/mesoscale_turbulence/modified_baroclinic_adjustment.jl index 78057986bf..0a65de89a8 100644 --- a/validation/mesoscale_turbulence/modified_baroclinic_adjustment.jl +++ b/validation/mesoscale_turbulence/modified_baroclinic_adjustment.jl @@ -141,7 +141,7 @@ println("done with gradient in ", gradient) ##### Visualize ##### -fig = Figure(resolution=(1400, 700)) +fig = Figure(size=(1400, 700)) filepath = filename * "_fields.jld2" diff --git a/validation/mesoscale_turbulence/zonally_averaged_baroclinic_adjustment.jl b/validation/mesoscale_turbulence/zonally_averaged_baroclinic_adjustment.jl index 0695712599..fa4f0b33dc 100644 --- a/validation/mesoscale_turbulence/zonally_averaged_baroclinic_adjustment.jl +++ b/validation/mesoscale_turbulence/zonally_averaged_baroclinic_adjustment.jl @@ -135,7 +135,7 @@ filename = "zonally_averaged_baroclinic_adjustment" using GLMakie using Oceananigans -fig = Figure(resolution = (2800, 1600)) +fig = Figure(size=(2800, 1600)) filepath = filename * ".jld2" diff --git a/validation/multi_region/cubed_sphere_tracer_advection.jl b/validation/multi_region/cubed_sphere_tracer_advection.jl index aa9d89fa43..d8d6959c61 100644 --- a/validation/multi_region/cubed_sphere_tracer_advection.jl +++ b/validation/multi_region/cubed_sphere_tracer_advection.jl @@ -157,7 +157,7 @@ n = Observable(1) Θₙ = @lift tracer_fields[$n] -fig = Figure(resolution = (1600, 1200), fontsize=30) +fig = Figure(size=(1600, 1200), fontsize=30) ax = GeoAxis(fig[1, 1], coastlines = true, lonlims = automatic) heatlatlon!(ax, Θₙ, colorrange=(-θ₀, θ₀), colormap = :balance) diff --git a/validation/multi_region/multi_region_cubed_sphere.jl b/validation/multi_region/multi_region_cubed_sphere.jl index 72d3cb2fde..69bc942a9f 100644 --- a/validation/multi_region/multi_region_cubed_sphere.jl +++ b/validation/multi_region/multi_region_cubed_sphere.jl @@ -67,7 +67,7 @@ fig save("multi_region_cubed_sphere_c_heatlatlon.png", fig) -fig = Figure(resolution = (1200, 600)) +fig = Figure(size=(1200, 600)) ax = GeoAxis(fig[1, 1], coastlines = true, lonlims = automatic) heatlatlon!(ax, c; colorrange, colormap) fig @@ -99,7 +99,7 @@ heatlatlon!(ax, u; colorrange, colormap) fig save("multi_region_cubed_sphere_u_heatlatlon.png", fig) -# fig = Figure(resolution = (1200, 600)) +# fig = Figure(size=(1200, 600)) # ax = GeoAxis(fig[1, 1], coastlines = true, lonlims = automatic) # heatlatlon!(ax, u; colorrange, colormap) # fig @@ -119,7 +119,7 @@ fig save("multi_region_cubed_sphere_v_heatlatlon.png", fig) -# fig = Figure(resolution = (1200, 600)) +# fig = Figure(size=(1200, 600)) # ax = GeoAxis(fig[1, 1], coastlines = true, lonlims = automatic) # heatlatlon!(ax, v; colorrange, colormap) # fig diff --git a/validation/orthogonal_spherical_shell_grid/splash.jl b/validation/orthogonal_spherical_shell_grid/splash.jl index 57c769c898..6583761fc7 100644 --- a/validation/orthogonal_spherical_shell_grid/splash.jl +++ b/validation/orthogonal_spherical_shell_grid/splash.jl @@ -80,7 +80,7 @@ sₙ = @lift interior(s_timeseries[$n], :, :, grid.Nz) s_lim = maximum(abs, interior(s_timeseries)) -fig = Figure(resolution = (800, 800)) +fig = Figure(size=(800, 800)) ax_u = Axis(fig[1, 1]) ax_v = Axis(fig[1, 3]) diff --git a/validation/shallow_water_model/make_animation.jl b/validation/shallow_water_model/make_animation.jl index 00e8ea1860..0c0413ffd6 100644 --- a/validation/shallow_water_model/make_animation.jl +++ b/validation/shallow_water_model/make_animation.jl @@ -57,7 +57,7 @@ h′ = @lift(file["timeseries/h/" * string($iter)][:, :, 1] .- bat2) clims_ζ = @lift 1.1 .* extrema(file["timeseries/ζ/" * string($iter)][:]) title1 = @lift(@sprintf("Vorticity in Shallow Water Model at time = %s", prettytime(file["timeseries/t/" * string($iter)]))) -fig = Figure(resolution = (2000, 600)) +fig = Figure(size=(2000, 600)) ax = Axis(fig[1,1], xlabel = "longitude", ylabel = "latitude", title=title1) heatmap_plot = heatmap!(ax, x, y, ζ′, colormap=:blues, nan_color = :black, colorrange=(-1e-5, 1e-5)) Colorbar(fig[1,2], heatmap_plot, width=25) diff --git a/validation/shallow_water_model/vortex_merger.jl b/validation/shallow_water_model/vortex_merger.jl index 2de36a2630..8fc162ad99 100644 --- a/validation/shallow_water_model/vortex_merger.jl +++ b/validation/shallow_water_model/vortex_merger.jl @@ -129,7 +129,7 @@ for Nh in [100, 200, 400, 800, 1600], stencil in [VorticityStencil, VelocitySten xh, yh, z = nodes((Center, Center, Center), grid) title = @lift(@sprintf("Vorticity in Shallow Water Model at time = %s", prettytime(file["timeseries/t/" * string($iter)]))) - fig = CairoMakie.Figure(resolution = (1000, 600)) + fig = CairoMakie.Figure(size=(1000, 600)) ax = CairoMakie.Axis(fig[1,1], xlabel = "longitude", ylabel = "latitude", title=title) heatmap_plot = CairoMakie.heatmap!(ax, yζ, xζ, PV, colormap=Reverse(:balance), colorrange = (-9.0, 9.0)) diff --git a/validation/solid_body_rotation/solid_body_rotation.jl b/validation/solid_body_rotation/solid_body_rotation.jl index 48b791979a..98e52ed16f 100644 --- a/validation/solid_body_rotation/solid_body_rotation.jl +++ b/validation/solid_body_rotation/solid_body_rotation.jl @@ -162,7 +162,7 @@ function plot_zonal_average_solid_body_rotation(filepath) zonal_average_u = @lift dropdims(mean(file["timeseries/u/" * string($iter)][2:Nx+1, 2:Ny+1, 1], dims=1), dims=1) - fig = Figure(resolution = (1080, 1080)) + fig = Figure(size=(1080, 1080)) ax = fig[1, 1] = Axis(fig, xlabel = "U(φ)", ylabel = "φ") diff --git a/validation/solid_body_rotation/solid_body_tracer_advection.jl b/validation/solid_body_rotation/solid_body_tracer_advection.jl index fa289e0b67..397aaccc54 100644 --- a/validation/solid_body_rotation/solid_body_tracer_advection.jl +++ b/validation/solid_body_rotation/solid_body_tracer_advection.jl @@ -163,7 +163,7 @@ function visualize_solid_body_tracer_advection(filepath) y = @. sind(λ_azimuthal) * sind(ϕ_azimuthal) z = @. cosd(ϕ_azimuthal) - fig = Figure(resolution = (1080, 1080)) + fig = Figure(size=(1080, 1080)) titles = ["c", "d", "e"] diff --git a/validation/solid_body_rotation/visualization.jl b/validation/solid_body_rotation/visualization.jl index 0f40145677..49b1df039d 100644 --- a/validation/solid_body_rotation/visualization.jl +++ b/validation/solid_body_rotation/visualization.jl @@ -53,7 +53,7 @@ function visualize_spherical_field(filepath, variable, range = nothing) y = @. sind(λ_azimuthal) * sind(φ_azimuthal) z = @. cosd(φ_azimuthal) - fig = Figure(resolution = (2000, 2000)) + fig = Figure(size=(2000, 2000)) fontsize_theme = Theme(fontsize = 25) set_theme!(fontsize_theme) @@ -106,7 +106,7 @@ function visualize_cartesian_field(filepath, variable, range = nothing) var = @lift file["timeseries/$(variable)/" * string($iter)][:, :, 1] - fig = Figure(resolution = (2000, 2000)) + fig = Figure(size=(2000, 2000)) fontsize_theme = Theme(fontsize = 25) set_theme!(fontsize_theme) @@ -145,7 +145,7 @@ function visualize_cartesian_comparison(filepath1, filepath2, title1, title2, va var1 = @lift file1["timeseries/$(variable)/" * string(it1[$iter])][:, :, 1] var2 = @lift file2["timeseries/$(variable)/" * string(it2[$iter])][:, :, 1] - fig = Figure(resolution = (3500, 1000)) + fig = Figure(size=(3500, 1000)) ax = Axis(fig[1, 1], title = title1) hm = heatmap!(ax, var1, colormap=:balance, colorrange=(-10, 10)) diff --git a/validation/stokes_drift/Langmuir_with_Stokes_x_jet.jl b/validation/stokes_drift/Langmuir_with_Stokes_x_jet.jl index e92921ad3d..285ffd3184 100644 --- a/validation/stokes_drift/Langmuir_with_Stokes_x_jet.jl +++ b/validation/stokes_drift/Langmuir_with_Stokes_x_jet.jl @@ -11,13 +11,13 @@ using Oceananigans.Units # # ### Domain and numerical grid specification # -# We use a modest resolution and the same total extent as Wagner et al. 2021, +# We use a modest resolution and the same total extent as Wagner et al. (2021), grid = RectilinearGrid(size=(32, 64, 32), extent=(128, 256, 64)) # ### The Stokes Drift profile # -# We utilize the same monochromatic wave parameters as Wagner et al. 2021, +# We utilize the same monochromatic wave parameters as Wagner et al. (2021), using Oceananigans.BuoyancyModels: g_Earth @@ -140,13 +140,13 @@ wˢ(x, y, z, t) = 2π / grid.Lx *vertical_scale * Uˢ * ( exp(z / vertical_scale # ### Boundary conditions # -# At the surface at ``z=0``, Wagner et al. 2021 impose +# At the surface ``z=0``, Wagner et al. (2021) impose Qᵘ = -3.72e-5 # m² s⁻², surface kinematic momentum flux u_boundary_conditions = FieldBoundaryConditions(top = FluxBoundaryCondition(Qᵘ)) -# Wagner et al. 2021 impose a linear buoyancy gradient `N²` at the bottom +# Wagner et al. (2021) impose a linear buoyancy gradient `N²` at the bottom # along with a weak, destabilizing flux of buoyancy at the surface to faciliate # spin-up from rest. diff --git a/validation/stokes_drift/Langmuir_with_Stokes_y_jet.jl b/validation/stokes_drift/Langmuir_with_Stokes_y_jet.jl index aa20147a48..d116960cc2 100644 --- a/validation/stokes_drift/Langmuir_with_Stokes_y_jet.jl +++ b/validation/stokes_drift/Langmuir_with_Stokes_y_jet.jl @@ -11,13 +11,13 @@ using Oceananigans.Units: minute, minutes, hours # # ### Domain and numerical grid specification # -# We use a modest resolution and the same total extent as Wagner et al. 2021, +# We use a modest resolution and the same total extent as Wagner et al. (2021), grid = RectilinearGrid(size=(64, 32, 32), extent=(256, 128, 64)) # ### The Stokes Drift profile # -# We utilize the same monochromatic wave parameters as Wagner et al. 2021, +# We utilize the same monochromatic wave parameters as Wagner et al. (2021), using Oceananigans.BuoyancyModels: g_Earth @@ -141,13 +141,13 @@ wˢ(x, y, z, t) = 2π / grid.Ly *vertical_scale * Uˢ * ( exp(z / vertical_scale # ### Boundary conditions # -# At the surface at ``z=0``, Wagner et al. 2021 impose +# At the surface ``z=0``, Wagner et al. (2021) impose Qᵛ = -3.72e-5 # m² s⁻², surface kinematic momentum flux v_boundary_conditions = FieldBoundaryConditions(top = FluxBoundaryCondition(Qᵛ)) -# Wagner et al. 2021 impose a linear buoyancy gradient `N²` at the bottom +# Wagner et al. (2021) impose a linear buoyancy gradient `N²` at the bottom # along with a weak, destabilizing flux of buoyancy at the surface to faciliate # spin-up from rest. diff --git a/validation/vertical_mixing_closures/column_windy_convection.jl b/validation/vertical_mixing_closures/column_windy_convection.jl index adc118c98c..9394f1e5e6 100644 --- a/validation/vertical_mixing_closures/column_windy_convection.jl +++ b/validation/vertical_mixing_closures/column_windy_convection.jl @@ -97,7 +97,7 @@ zc = znodes(b1) zf = znodes(κ1) Nt = length(b1.times) -fig = Figure(resolution=(1800, 600)) +fig = Figure(size=(1800, 600)) slider = Slider(fig[2, 1:4], range=1:Nt, startvalue=1) n = slider.value diff --git a/validation/vertical_mixing_closures/heterogeneous_windy_convection.jl b/validation/vertical_mixing_closures/heterogeneous_windy_convection.jl index 140f9a26e1..6faf2950d0 100644 --- a/validation/vertical_mixing_closures/heterogeneous_windy_convection.jl +++ b/validation/vertical_mixing_closures/heterogeneous_windy_convection.jl @@ -126,7 +126,7 @@ for ψ in (b_ts, e_ts, u_ts, v_ts, w_ts, κ_ts) #, N_ts) ψp[ψp .== 0] .= NaN end -fig = Figure(resolution=(1600, 800)) +fig = Figure(size=(1600, 800)) ax_uyz = Axis(fig[1, 1], title="u(y, z) - ") #ax_vyz = Axis(fig[1, 2], title="v(y, z)")