From aeae5208ae289666d55a342b7a496700534381d3 Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Wed, 14 Aug 2024 17:03:40 -0400 Subject: [PATCH 01/99] creating new example for the ACC --- examples/acc_regional_simulation.jl | 212 ++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 examples/acc_regional_simulation.jl diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl new file mode 100644 index 000000000..bf925adaf --- /dev/null +++ b/examples/acc_regional_simulation.jl @@ -0,0 +1,212 @@ +using Printf +using Oceananigans +using Oceananigans.Units +using ClimaOcean +using CairoMakie + +using CFTime +using Dates + +using ClimaOcean.ECCO + +#things to do +# 1. git pull +# 2. update library +# 3. add CairoMakie +# 4. add oceananigans#main +# 5. ECCO_USERNAME=francispoulin ECCO_PASSWORD=???????????? julia --project + + +# 1) No output, need to add +# 2) Restoring force (work in progress) + + + +arch = GPU() + +z_faces = exponential_z_faces(Nz=40, depth=6000) + +Nx = 1440 +Ny = 600 +Nz = length(z_faces) - 1 + +grid = LatitudeLongitudeGrid(arch; + size = (Nx, Ny, Nz), + halo = (7, 7, 7), + z = z_faces, + latitude = (-80, -20), + longitude = (0, 360)) + +bottom_height = regrid_bathymetry(grid; + minimum_depth = 10, + interpolation_passes = 5, + connected_regions_allowed = 0) + +grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height), active_cells_map=true) + +dates = DateTimeProlepticGregorian(1993, 1, 1) : Month(1) : DateTimeProlepticGregorian(1993, 5, 1) + +temperature = ECCOMetadata(:temperature, dates, ECCO4Monthly()) +salinity = ECCOMetadata(:salinity, dates, ECCO4Monthly()) + +@inline mask(λ, φ, z, t) = min(1, max(0, -(λ + 80)/10 + 1, (λ + 30)/10)) + +FT = ECCO_restoring_forcing(temperature; grid, architecture = GPU(), timescale = 2days, mask) +FS = ECCO_restoring_forcing(salinity; grid, architecture = GPU(), timescale = 2days, mask) + +forcing = (T=FT, S=FS) + +ocean = ocean_simulation(grid; forcing) +model = ocean.model + +set!(model, + T = temperature[1] + S = salinity[1] + +backend = JRA55NetCDFBackend(41) +atmosphere = JRA55_prescribed_atmosphere(arch; backend) +radiation = Radiation(arch) + +sea_ice = ClimaOcean.OceanSeaIceModels.MinimumTemperatureSeaIce() + +coupled_model = OceanSeaIceModel(ocean, sea_ice; atmosphere, radiation) +coupled_simulation = Simulation(coupled_model; Δt=10, stop_time = 10days) + +wall_time = [time_ns()] + +function progress(sim) + ocean = sim.model.ocean + u, v, w = ocean.model.velocities + T = ocean.model.tracers.T + + Tmax = maximum(interior(T)) + Tmin = minimum(interior(T)) + umax = maximum(abs, interior(u)), maximum(abs, interior(v)), maximum(abs, interior(w)) + step_time = 1e-9 * (time_ns() - wall_time[1]) + + @info @sprintf("Time: %s, Iteration %d, Δt %s, max(vel): (%.2e, %.2e, %.2e), max(T): %.2f, min(T): %.2f, wtime: %s \n", + prettytime(ocean.model.clock.time), + ocean.model.clock.iteration, + prettytime(ocean.Δt), + umax..., Tmax, Tmin, prettytime(step_time)) + + wall_time[1] = time_ns() +end + +coupled_simulation.callbacks[:progress] = Callback(progress, IterationInterval(1000)) + +ocean.output_writers[:surface] = JLD2OutputWriter(model, merge(model.tracers, model.velocities); + schedule = TimeInterval(1days), + filename = "surface", + indices = (:, :, grid.Nz), + overwrite_existing = true, + array_type = Array{Float32}) +nothing #hide + +# ### Spinning up the simulation +# +# As an initial condition, we have interpolated ECCO tracer fields onto our custom grid. +# The bathymetry of the original ECCO data may differ from our grid, so the initialization of the velocity +# field might cause shocks if a large time step is used. +# +# Therefore, we spin up the simulation with a small time step to ensure that the interpolated initial +# conditions adapt to the model numerics and parameterization without causing instability. A 10-day +# integration with a maximum time step of 1.5 minutes should be sufficient to dissipate spurious +# initialization shocks. +# We use an adaptive time step that maintains the [CFL condition](https://en.wikipedia.org/wiki/Courant%E2%80%93Friedrichs%E2%80%93Lewy_condition) equal to 0.1. +# For this scope, we use the Oceananigans utility `conjure_time_step_wizard!` (see Oceanigans's documentation). + +ocean.stop_time = 10days +conjure_time_step_wizard!(ocean; cfl = 0.1, max_Δt = 90, max_change = 1.1) +run!(coupled_simulation) +nothing #hide + +# ### Running the simulation +# +# Now that the simulation has spun up, we can run it for the full 100 days. +# We increase the maximum time step size to 10 minutes and let the simulation run for 100 days. +# This time, we set the CFL in the time_step_wizard to be 0.25 as this is the maximum recommended CFL to be +# used in conjunction with Oceananigans' hydrostatic time-stepping algorithm ([two step Adams-Bashfort](https://en.wikipedia.org/wiki/Linear_multistep_method)) + +ocean.stop_time = 100days +coupled_simulation.stop_time = 100days +conjure_time_step_wizard!(ocean; cfl = 0.25, max_Δt = 10minutes, max_change = 1.1) +run!(coupled_simulation) +nothing #hide + +# ## Visualizing the results +# +# The simulation has finished, let's visualize the results. +# In this section we pull up the saved data and create visualizations using the CairoMakie.jl package. +# In particular, we generate an animation of the evolution of surface fields: +# surface speed (s), surface temperature (T), and turbulent kinetic energy (e). + +u = FieldTimeSeries("surface.jld2", "u"; backend = OnDisk()) +v = FieldTimeSeries("surface.jld2", "v"; backend = OnDisk()) +T = FieldTimeSeries("surface.jld2", "T"; backend = OnDisk()) +e = FieldTimeSeries("surface.jld2", "e"; backend = OnDisk()) + +times = u.times +Nt = length(times) + +iter = Observable(Nt) + +Ti = @lift begin + Ti = interior(T[$iter], :, :, 1) + Ti[Ti .== 0] .= NaN + Ti +end + +ei = @lift begin + ei = interior(e[$iter], :, :, 1) + ei[ei .== 0] .= NaN + ei +end + +si = @lift begin + s = Field(sqrt(u[$iter]^2 + v[$iter]^2)) + compute!(s) + s = interior(s, :, :, 1) + s[s .== 0] .= NaN + s +end + + +fig = Figure(size = (800, 400)) +ax = Axis(fig[1, 1]) +hm = heatmap!(ax, si, colorrange = (0, 0.5), colormap = :deep) +cb = Colorbar(fig[0, 1], hm, vertical = false, label = "Surface speed (ms⁻¹)") +hidedecorations!(ax) + +CairoMakie.record(fig, "near_global_ocean_surface_s.mp4", 1:Nt, framerate = 8) do i + iter[] = i +end +nothing #hide + + # ![](near_global_ocean_surface_s.mp4) + +fig = Figure(size = (800, 400)) +ax = Axis(fig[1, 1]) +hm = heatmap!(ax, Ti, colorrange = (-1, 30), colormap = :magma) +cb = Colorbar(fig[0, 1], hm, vertical = false, label = "Surface Temperature (Cᵒ)") +hidedecorations!(ax) + +CairoMakie.record(fig, "near_global_ocean_surface_T.mp4", 1:Nt, framerate = 8) do i + iter[] = i +end +nothing #hide + +# ![](near_global_ocean_surface_T.mp4) + +fig = Figure(size = (800, 400)) +ax = Axis(fig[1, 1]) +hm = heatmap!(ax, ei, colorrange = (0, 1e-3), colormap = :solar) +cb = Colorbar(fig[0, 1], hm, vertical = false, label = "Turbulent Kinetic Energy (m²s⁻²)") +hidedecorations!(ax) + +CairoMakie.record(fig, "near_global_ocean_surface_e.mp4", 1:Nt, framerate = 8) do i + iter[] = i +end +nothing #hide + +# ![](near_global_ocean_surface_e.mp4) From 705f078ac828fe97b2fe32bacb831b489041c192 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Thu, 15 Aug 2024 09:25:17 -0400 Subject: [PATCH 02/99] Update acc_regional_simulation.jl --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index bf925adaf..577d1ad7f 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -60,8 +60,8 @@ ocean = ocean_simulation(grid; forcing) model = ocean.model set!(model, - T = temperature[1] - S = salinity[1] + T = temperature[1], + S = salinity[1] ) backend = JRA55NetCDFBackend(41) atmosphere = JRA55_prescribed_atmosphere(arch; backend) From bc3184958b75f3381b42a04fcc69029f90c0d6be Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Tue, 20 Aug 2024 15:16:06 -0400 Subject: [PATCH 03/99] Update acc_regional_simulation.jl Make changes so that it runs --- examples/acc_regional_simulation.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 577d1ad7f..046201aa7 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -3,6 +3,7 @@ using Oceananigans using Oceananigans.Units using ClimaOcean using CairoMakie +using ClimaOcean.OceanSeaIceModels.CrossRealmFluxes: LatitudeDependentAlbedo using CFTime using Dates @@ -65,7 +66,7 @@ set!(model, backend = JRA55NetCDFBackend(41) atmosphere = JRA55_prescribed_atmosphere(arch; backend) -radiation = Radiation(arch) +radiation = Radiation(ocean_albedo = LatitudeDependentAlbedo()) sea_ice = ClimaOcean.OceanSeaIceModels.MinimumTemperatureSeaIce() From 7741ea7717738110fa541c603e77ba8349e780e5 Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Wed, 18 Dec 2024 09:34:20 -0500 Subject: [PATCH 04/99] updated script --- examples/acc_regional_simulation.jl | 30 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 046201aa7..9467a2905 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -3,7 +3,6 @@ using Oceananigans using Oceananigans.Units using ClimaOcean using CairoMakie -using ClimaOcean.OceanSeaIceModels.CrossRealmFluxes: LatitudeDependentAlbedo using CFTime using Dates @@ -22,13 +21,12 @@ using ClimaOcean.ECCO # 2) Restoring force (work in progress) - arch = GPU() z_faces = exponential_z_faces(Nz=40, depth=6000) -Nx = 1440 -Ny = 600 +Nx = 100 #1440 +Ny = 100 #600 Nz = length(z_faces) - 1 grid = LatitudeLongitudeGrid(arch; @@ -41,19 +39,21 @@ grid = LatitudeLongitudeGrid(arch; bottom_height = regrid_bathymetry(grid; minimum_depth = 10, interpolation_passes = 5, - connected_regions_allowed = 0) + major_basins = 1) grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height), active_cells_map=true) dates = DateTimeProlepticGregorian(1993, 1, 1) : Month(1) : DateTimeProlepticGregorian(1993, 5, 1) -temperature = ECCOMetadata(:temperature, dates, ECCO4Monthly()) -salinity = ECCOMetadata(:salinity, dates, ECCO4Monthly()) +mask = LinearlyTaperedPolarMask( northern = (-35, -30), southern = (-85, -80), z = (-10000,0) ) + +@inline function u_restoring(i, j, k, grid, clock, fields, parameters) + -@inline mask(λ, φ, z, t) = min(1, max(0, -(λ + 80)/10 + 1, (λ + 30)/10)) +#FU = Forcing(:, grid; dates, timescale = 2days, mask) -FT = ECCO_restoring_forcing(temperature; grid, architecture = GPU(), timescale = 2days, mask) -FS = ECCO_restoring_forcing(salinity; grid, architecture = GPU(), timescale = 2days, mask) +FT = ECCORestoringForcing(:temperature, grid; dates, timescale = 2days, mask) +FS = ECCORestoringForcing(:salinity, grid; dates, timescale = 2days, mask) forcing = (T=FT, S=FS) @@ -61,16 +61,14 @@ ocean = ocean_simulation(grid; forcing) model = ocean.model set!(model, - T = temperature[1], - S = salinity[1] ) + T = ECCOMetadata(:temperature; dates = dates[1]), + S = ECCOMetadata(:salinity; dates = dates[1])) backend = JRA55NetCDFBackend(41) atmosphere = JRA55_prescribed_atmosphere(arch; backend) -radiation = Radiation(ocean_albedo = LatitudeDependentAlbedo()) - -sea_ice = ClimaOcean.OceanSeaIceModels.MinimumTemperatureSeaIce() +radiation = Radiation() -coupled_model = OceanSeaIceModel(ocean, sea_ice; atmosphere, radiation) +coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) coupled_simulation = Simulation(coupled_model; Δt=10, stop_time = 10days) wall_time = [time_ns()] From a398d0c33873d8a3b65a6662b2b2a42cb0de6e86 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Wed, 18 Dec 2024 15:55:47 +0100 Subject: [PATCH 05/99] add different masking --- examples/acc_regional_simulation.jl | 45 +++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 9467a2905..befe62263 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -16,11 +16,9 @@ using ClimaOcean.ECCO # 4. add oceananigans#main # 5. ECCO_USERNAME=francispoulin ECCO_PASSWORD=???????????? julia --project - # 1) No output, need to add # 2) Restoring force (work in progress) - arch = GPU() z_faces = exponential_z_faces(Nz=40, depth=6000) @@ -45,17 +43,46 @@ grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height), active_cells_ dates = DateTimeProlepticGregorian(1993, 1, 1) : Month(1) : DateTimeProlepticGregorian(1993, 5, 1) -mask = LinearlyTaperedPolarMask( northern = (-35, -30), southern = (-85, -80), z = (-10000,0) ) +# +# Restoring force +# φS φN -20 +# -------------- | ------------------ | ------------ | +# no restoring 0 linear mask 1 mask = 1 1 +# + +const φN₁ = -22 +const φN₂ = -25 +const φS₁ = -78 +const φS₂ = -75 + +@inline northern_mask(φ) = min(max((φ - φN₂) / (φN₁ - φN₂), zero(φ)), one(φ)) +@inline southern_mask(φ, z) = ifelse(z > -20, + min(max((φ - φS₂) / (φS₁ - φS₂), zero(φ)), one(φ)), + zero(φ)) -@inline function u_restoring(i, j, k, grid, clock, fields, parameters) - +@inline function tracer_mask(λ, φ, z, t) + n = northern_mask(φ) + s = southern_mask(φ, z) + return max(s, n) +end + +@inline function u_restoring(i, j, k, grid, clock, fields, p) + φ = φ(j, grid, Center()) + return - p.rate * fields.u[i, j, k] * northern_mask(φ) +end + +@inline function v_restoring(i, j, k, grid, clock, fields, p) + φ = φ(j, grid, Center()) + return - p.rate * fields.v[i, j, k] * northern_mask(φ) +end -#FU = Forcing(:, grid; dates, timescale = 2days, mask) +Fu = Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/2days)) +Fv = Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/2days)) -FT = ECCORestoringForcing(:temperature, grid; dates, timescale = 2days, mask) -FS = ECCORestoringForcing(:salinity, grid; dates, timescale = 2days, mask) +FT = ECCORestoringForcing(:temperature, grid; dates, rate=1/2days, tracer_mask) +FS = ECCORestoringForcing(:salinity, grid; dates, rate=1/2days, tracer_mask) -forcing = (T=FT, S=FS) +forcing = (T=FT, S=FS, u=Fu, v=Fv) ocean = ocean_simulation(grid; forcing) model = ocean.model From e377edf395eebda0a0357832413771fc9eb00076 Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Wed, 18 Dec 2024 10:39:41 -0500 Subject: [PATCH 06/99] updating script to get further --- examples/acc_regional_simulation.jl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index befe62263..e18b1cc63 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -1,6 +1,7 @@ using Printf using Oceananigans using Oceananigans.Units +using Oceananigans.Grids: φnode using ClimaOcean using CairoMakie @@ -79,8 +80,8 @@ end Fu = Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/2days)) Fv = Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/2days)) -FT = ECCORestoringForcing(:temperature, grid; dates, rate=1/2days, tracer_mask) -FS = ECCORestoringForcing(:salinity, grid; dates, rate=1/2days, tracer_mask) +FT = ECCORestoring(:temperature, grid; dates, rate=1/2days, mask=tracer_mask) +FS = ECCORestoring(:salinity, grid; dates, rate=1/2days, mask=tracer_mask) forcing = (T=FT, S=FS, u=Fu, v=Fv) @@ -92,7 +93,7 @@ set!(model, S = ECCOMetadata(:salinity; dates = dates[1])) backend = JRA55NetCDFBackend(41) -atmosphere = JRA55_prescribed_atmosphere(arch; backend) +atmosphere = JRA55PrescribedAtmosphere(arch; backend) radiation = Radiation() coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) From ef9d130d28b3474e6e92ba31050f2a833fd653aa Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Wed, 18 Dec 2024 11:15:07 -0500 Subject: [PATCH 07/99] fix node problem --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index e18b1cc63..92e53fe27 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -68,12 +68,12 @@ const φS₂ = -75 end @inline function u_restoring(i, j, k, grid, clock, fields, p) - φ = φ(j, grid, Center()) + φ = node(i, j, k, Face(), Center(), Center())[2] return - p.rate * fields.u[i, j, k] * northern_mask(φ) end @inline function v_restoring(i, j, k, grid, clock, fields, p) - φ = φ(j, grid, Center()) + φ = node(i, j, k, Center(), Face(), Center())[2] return - p.rate * fields.v[i, j, k] * northern_mask(φ) end From 5e95104690a7cf7843828c8e0c52ab69045f432e Mon Sep 17 00:00:00 2001 From: Francis Poulin Date: Wed, 18 Dec 2024 12:34:14 -0500 Subject: [PATCH 08/99] fix phinodes --- examples/acc_regional_simulation.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 92e53fe27..19e802018 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -20,7 +20,7 @@ using ClimaOcean.ECCO # 1) No output, need to add # 2) Restoring force (work in progress) -arch = GPU() +arch = CPU() z_faces = exponential_z_faces(Nz=40, depth=6000) @@ -68,12 +68,12 @@ const φS₂ = -75 end @inline function u_restoring(i, j, k, grid, clock, fields, p) - φ = node(i, j, k, Face(), Center(), Center())[2] + φ = φnode(i, j, k, Face(), Center(), Center())[2] return - p.rate * fields.u[i, j, k] * northern_mask(φ) end @inline function v_restoring(i, j, k, grid, clock, fields, p) - φ = node(i, j, k, Center(), Face(), Center())[2] + φ = φnode(i, j, k, Center(), Face(), Center())[2] return - p.rate * fields.v[i, j, k] * northern_mask(φ) end From 9abbc322b8dc406720f377b4f7c7ad9da4796b17 Mon Sep 17 00:00:00 2001 From: Francis Poulin Date: Wed, 18 Dec 2024 12:55:29 -0500 Subject: [PATCH 09/99] add grid to varphinodes --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 19e802018..93f27754f 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -68,12 +68,12 @@ const φS₂ = -75 end @inline function u_restoring(i, j, k, grid, clock, fields, p) - φ = φnode(i, j, k, Face(), Center(), Center())[2] + φ = φnode(i, j, k, grid, Face(), Center(), Center())[2] return - p.rate * fields.u[i, j, k] * northern_mask(φ) end @inline function v_restoring(i, j, k, grid, clock, fields, p) - φ = φnode(i, j, k, Center(), Face(), Center())[2] + φ = φnode(i, j, k, grid, Center(), Face(), Center())[2] return - p.rate * fields.v[i, j, k] * northern_mask(φ) end From 55f667b4e3a90b05f6f2b0daecab2214d104d7d7 Mon Sep 17 00:00:00 2001 From: francispoulin Date: Wed, 18 Dec 2024 13:49:49 -0500 Subject: [PATCH 10/99] fix varphinode for real --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 93f27754f..f9eda4ca6 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -68,12 +68,12 @@ const φS₂ = -75 end @inline function u_restoring(i, j, k, grid, clock, fields, p) - φ = φnode(i, j, k, grid, Face(), Center(), Center())[2] + φ = φnode(i, j, k, grid, Face(), Center(), Center()) return - p.rate * fields.u[i, j, k] * northern_mask(φ) end @inline function v_restoring(i, j, k, grid, clock, fields, p) - φ = φnode(i, j, k, grid, Center(), Face(), Center())[2] + φ = φnode(i, j, k, grid, Center(), Face(), Center()) return - p.rate * fields.v[i, j, k] * northern_mask(φ) end From 3f9dd7d1a51a8c2735f8a7669ecc0e7ffbd0c123 Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Wed, 18 Dec 2024 21:33:30 -0500 Subject: [PATCH 11/99] a working version on a gpu --- examples/acc_regional_simulation.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index f9eda4ca6..68c8efb49 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -20,12 +20,12 @@ using ClimaOcean.ECCO # 1) No output, need to add # 2) Restoring force (work in progress) -arch = CPU() +arch = GPU() z_faces = exponential_z_faces(Nz=40, depth=6000) -Nx = 100 #1440 -Ny = 100 #600 +Nx = 1440 +Ny = 600 Nz = length(z_faces) - 1 grid = LatitudeLongitudeGrid(arch; @@ -155,7 +155,7 @@ nothing #hide # This time, we set the CFL in the time_step_wizard to be 0.25 as this is the maximum recommended CFL to be # used in conjunction with Oceananigans' hydrostatic time-stepping algorithm ([two step Adams-Bashfort](https://en.wikipedia.org/wiki/Linear_multistep_method)) -ocean.stop_time = 100days +ocean.stop_time = 2*365days coupled_simulation.stop_time = 100days conjure_time_step_wizard!(ocean; cfl = 0.25, max_Δt = 10minutes, max_change = 1.1) run!(coupled_simulation) From 47ec55eed9d0c810b7a36f4216612e24867f45a9 Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Fri, 20 Dec 2024 11:38:17 -0500 Subject: [PATCH 12/99] change time step to 10 minutes --- examples/acc_regional_simulation.jl | 33 ++++++++--------------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 68c8efb49..5b83072bb 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -10,16 +10,6 @@ using Dates using ClimaOcean.ECCO -#things to do -# 1. git pull -# 2. update library -# 3. add CairoMakie -# 4. add oceananigans#main -# 5. ECCO_USERNAME=francispoulin ECCO_PASSWORD=???????????? julia --project - -# 1) No output, need to add -# 2) Restoring force (work in progress) - arch = GPU() z_faces = exponential_z_faces(Nz=40, depth=6000) @@ -97,7 +87,7 @@ atmosphere = JRA55PrescribedAtmosphere(arch; backend) radiation = Radiation() coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) -coupled_simulation = Simulation(coupled_model; Δt=10, stop_time = 10days) +coupled_simulation = Simulation(coupled_model; Δt=10minutes, stop_time = 10days) wall_time = [time_ns()] @@ -138,26 +128,21 @@ nothing #hide # # Therefore, we spin up the simulation with a small time step to ensure that the interpolated initial # conditions adapt to the model numerics and parameterization without causing instability. A 10-day -# integration with a maximum time step of 1.5 minutes should be sufficient to dissipate spurious +# integration with a maximum time step of 1 minute should be sufficient to dissipate spurious # initialization shocks. -# We use an adaptive time step that maintains the [CFL condition](https://en.wikipedia.org/wiki/Courant%E2%80%93Friedrichs%E2%80%93Lewy_condition) equal to 0.1. -# For this scope, we use the Oceananigans utility `conjure_time_step_wizard!` (see Oceanigans's documentation). -ocean.stop_time = 10days -conjure_time_step_wizard!(ocean; cfl = 0.1, max_Δt = 90, max_change = 1.1) +coupled_simulation.stop_time = 10days +coupled_simulation.Δt = 1minutes run!(coupled_simulation) nothing #hide # ### Running the simulation # -# Now that the simulation has spun up, we can run it for the full 100 days. -# We increase the maximum time step size to 10 minutes and let the simulation run for 100 days. -# This time, we set the CFL in the time_step_wizard to be 0.25 as this is the maximum recommended CFL to be -# used in conjunction with Oceananigans' hydrostatic time-stepping algorithm ([two step Adams-Bashfort](https://en.wikipedia.org/wiki/Linear_multistep_method)) - -ocean.stop_time = 2*365days -coupled_simulation.stop_time = 100days -conjure_time_step_wizard!(ocean; cfl = 0.25, max_Δt = 10minutes, max_change = 1.1) +# Now that the simulation has spun up, we can run it for the full 2 years. +# We increase the maximum time step size to 10 minutes and let the simulation run for 2 years. + +coupled_simulation.stop_time = 2*365days +coupled_simulation.Δt = 10minutes run!(coupled_simulation) nothing #hide From a6989e803ae4f4fd9483cbb88b4b8f99de9cc281 Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Fri, 20 Dec 2024 15:28:18 -0500 Subject: [PATCH 13/99] cleaning up callbacks --- examples/acc_regional_simulation.jl | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 5b83072bb..23ecdb745 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -1,22 +1,21 @@ -using Printf using Oceananigans using Oceananigans.Units using Oceananigans.Grids: φnode using ClimaOcean -using CairoMakie +using ClimaOcean.ECCO +using Printf +using CairoMakie using CFTime using Dates -using ClimaOcean.ECCO - arch = GPU() -z_faces = exponential_z_faces(Nz=40, depth=6000) - Nx = 1440 Ny = 600 -Nz = length(z_faces) - 1 +Nz = 40 + +z_faces = exponential_z_faces(Nz=Nz+1, depth=6000) grid = LatitudeLongitudeGrid(arch; size = (Nx, Ny, Nz), @@ -67,13 +66,10 @@ end return - p.rate * fields.v[i, j, k] * northern_mask(φ) end -Fu = Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/2days)) -Fv = Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/2days)) - -FT = ECCORestoring(:temperature, grid; dates, rate=1/2days, mask=tracer_mask) -FS = ECCORestoring(:salinity, grid; dates, rate=1/2days, mask=tracer_mask) - -forcing = (T=FT, S=FS, u=Fu, v=Fv) +forcing = (T=ECCORestoring(:temperature, grid; dates, rate=1/2days, mask=tracer_mask), + S=ECCORestoring(:salinity, grid; dates, rate=1/2days, mask=tracer_mask), + u=Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/2days)), + v=Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/2days))) ocean = ocean_simulation(grid; forcing) model = ocean.model @@ -96,8 +92,7 @@ function progress(sim) u, v, w = ocean.model.velocities T = ocean.model.tracers.T - Tmax = maximum(interior(T)) - Tmin = minimum(interior(T)) + Tmax, Tmin = maximum(interior(T)), minimum(interior(T)) umax = maximum(abs, interior(u)), maximum(abs, interior(v)), maximum(abs, interior(w)) step_time = 1e-9 * (time_ns() - wall_time[1]) @@ -110,7 +105,7 @@ function progress(sim) wall_time[1] = time_ns() end -coupled_simulation.callbacks[:progress] = Callback(progress, IterationInterval(1000)) +coupled_simulation.callbacks[:progress] = Callback(progress, TimeInterval(4hours)) ocean.output_writers[:surface] = JLD2OutputWriter(model, merge(model.tracers, model.velocities); schedule = TimeInterval(1days), From 8cc2719a8277b636b340a3bd2424f08f7608c737 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Sun, 22 Dec 2024 12:35:56 -0500 Subject: [PATCH 14/99] Update examples/acc_regional_simulation.jl Co-authored-by: Simone Silvestri --- examples/acc_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 23ecdb745..03f0d1029 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -31,7 +31,7 @@ bottom_height = regrid_bathymetry(grid; grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height), active_cells_map=true) -dates = DateTimeProlepticGregorian(1993, 1, 1) : Month(1) : DateTimeProlepticGregorian(1993, 5, 1) +dates = DateTimeProlepticGregorian(1993, 1, 1) : Month(1) : DateTimeProlepticGregorian(1993, 12, 1) # # Restoring force From c341fdcf1aa36d4926b8a731540e365e77f11a07 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Mon, 13 Jan 2025 13:57:55 -0500 Subject: [PATCH 15/99] change to the restoring rate and the outputwriter schedule --- examples/acc_regional_simulation.jl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 03f0d1029..5642b6aee 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -40,7 +40,7 @@ dates = DateTimeProlepticGregorian(1993, 1, 1) : Month(1) : DateTimeProlepticGre # no restoring 0 linear mask 1 mask = 1 1 # -const φN₁ = -22 +const φN₁ = -23 const φN₂ = -25 const φS₁ = -78 const φS₂ = -75 @@ -66,10 +66,10 @@ end return - p.rate * fields.v[i, j, k] * northern_mask(φ) end -forcing = (T=ECCORestoring(:temperature, grid; dates, rate=1/2days, mask=tracer_mask), - S=ECCORestoring(:salinity, grid; dates, rate=1/2days, mask=tracer_mask), - u=Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/2days)), - v=Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/2days))) +forcing = (T=ECCORestoring(:temperature, grid; dates, rate=1/5days, mask=tracer_mask), + S=ECCORestoring(:salinity, grid; dates, rate=1/5days, mask=tracer_mask), + u=Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), + v=Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) ocean = ocean_simulation(grid; forcing) model = ocean.model @@ -108,7 +108,7 @@ end coupled_simulation.callbacks[:progress] = Callback(progress, TimeInterval(4hours)) ocean.output_writers[:surface] = JLD2OutputWriter(model, merge(model.tracers, model.velocities); - schedule = TimeInterval(1days), + schedule = TimeInterval(5days), filename = "surface", indices = (:, :, grid.Nz), overwrite_existing = true, @@ -127,7 +127,7 @@ nothing #hide # initialization shocks. coupled_simulation.stop_time = 10days -coupled_simulation.Δt = 1minutes +coupled_simulation.Δt = 2minutes run!(coupled_simulation) nothing #hide From 75d909ffaba441d099a7415b706fb4498cb5648a Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 29 May 2025 16:30:36 +0200 Subject: [PATCH 16/99] update example --- examples/acc_regional_simulation.jl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 5642b6aee..5c101d830 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -31,7 +31,8 @@ bottom_height = regrid_bathymetry(grid; grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height), active_cells_map=true) -dates = DateTimeProlepticGregorian(1993, 1, 1) : Month(1) : DateTimeProlepticGregorian(1993, 12, 1) +start_date = DateTime(1993, 1, 1) +end_date = DateTime(1993, 12, 1) # # Restoring force @@ -66,17 +67,20 @@ end return - p.rate * fields.v[i, j, k] * northern_mask(φ) end -forcing = (T=ECCORestoring(:temperature, grid; dates, rate=1/5days, mask=tracer_mask), - S=ECCORestoring(:salinity, grid; dates, rate=1/5days, mask=tracer_mask), +forcing = (T=DatasetRestoring(:temperature, grid; start_date, end_date, rate=1/5days, mask=tracer_mask), + S=DatasetRestoring(:salinity, grid; start_date, end_date, rate=1/5days, mask=tracer_mask), u=Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), v=Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) -ocean = ocean_simulation(grid; forcing) +momentum_advection = WENOVectorInvariant() +tracer_advection = WENO(order=7) + +ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) model = ocean.model set!(model, - T = ECCOMetadata(:temperature; dates = dates[1]), - S = ECCOMetadata(:salinity; dates = dates[1])) + T = Metadatum(:temperature; date=start_date), + S = Metadatum(:salinity; date=start_date)) backend = JRA55NetCDFBackend(41) atmosphere = JRA55PrescribedAtmosphere(arch; backend) From 4462fe047ba8225dfad7c1110e264e7575f9e187 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 29 May 2025 16:39:45 +0200 Subject: [PATCH 17/99] run docs --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 5c101d830..00aa58730 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -15,7 +15,7 @@ Nx = 1440 Ny = 600 Nz = 40 -z_faces = exponential_z_faces(Nz=Nz+1, depth=6000) +z_faces = exponential_z_faces(; Nz, depth=6000) grid = LatitudeLongitudeGrid(arch; size = (Nx, Ny, Nz), @@ -26,7 +26,7 @@ grid = LatitudeLongitudeGrid(arch; bottom_height = regrid_bathymetry(grid; minimum_depth = 10, - interpolation_passes = 5, + interpolation_passes = 7, major_basins = 1) grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height), active_cells_map=true) From 2101f85922dabbd2716c6eb5933bf5b0dc4e8586 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 29 May 2025 16:41:27 +0200 Subject: [PATCH 18/99] run docs --- docs/make.jl | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index 2b06b6dc7..a7d6931c6 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -17,9 +17,10 @@ const EXAMPLES_DIR = joinpath(@__DIR__, "..", "examples") const OUTPUT_DIR = joinpath(@__DIR__, "src/literated") to_be_literated = [ - "single_column_os_papa_simulation.jl", - "one_degree_simulation.jl", - "near_global_ocean_simulation.jl" + # "single_column_os_papa_simulation.jl", + # "one_degree_simulation.jl", + # "near_global_ocean_simulation.jl" + "acc_regional_simulation.jl" ] for file in to_be_literated @@ -42,9 +43,10 @@ pages = [ "Home" => "index.md", "Examples" => [ - "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", - "One-degree ocean simulation" => "literated/one_degree_simulation.md", - "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", + # "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", + # "One-degree ocean simulation" => "literated/one_degree_simulation.md", + # "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", + "Regional ACC simulation" => "literated/acc_regional_simulation.md", ], "Interface fluxes" => "interface_fluxes.md", From a53438e0ba098f0f841df69ff8e11da1220ee717 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 29 May 2025 16:51:01 +0200 Subject: [PATCH 19/99] Update examples/acc_regional_simulation.jl --- examples/acc_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 00aa58730..10f2f7efa 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -12,7 +12,7 @@ using Dates arch = GPU() Nx = 1440 -Ny = 600 +Ny = 400 Nz = 40 z_faces = exponential_z_faces(; Nz, depth=6000) From 9f2a04db7e2345abc24a5591b5c173f2a03372ca Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 29 May 2025 17:09:57 +0200 Subject: [PATCH 20/99] add a dataset --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 10f2f7efa..1707fb3df 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -79,8 +79,8 @@ ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) model = ocean.model set!(model, - T = Metadatum(:temperature; date=start_date), - S = Metadatum(:salinity; date=start_date)) + T = Metadatum(:temperature; date=start_date, dataset=ECCO2Daily()), + S = Metadatum(:salinity; date=start_date, dataset=ECCO2Daily())) backend = JRA55NetCDFBackend(41) atmosphere = JRA55PrescribedAtmosphere(arch; backend) From bb228d174944a20c71df42eed371875a2ec4088e Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 29 May 2025 17:12:10 +0200 Subject: [PATCH 21/99] fix restoring --- examples/acc_regional_simulation.jl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 1707fb3df..26cfb8686 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -67,8 +67,11 @@ end return - p.rate * fields.v[i, j, k] * northern_mask(φ) end -forcing = (T=DatasetRestoring(:temperature, grid; start_date, end_date, rate=1/5days, mask=tracer_mask), - S=DatasetRestoring(:salinity, grid; start_date, end_date, rate=1/5days, mask=tracer_mask), +T_meta = Metadata(:temperature; start_date, end_date, dataset=ECCO4Monthly()) +S_meta = Metadata(:temperature; start_date, end_date, dataset=ECCO4Monthly()) + +forcing = (T=DatasetRestoring(T_meta; rate=1/5days, mask=tracer_mask), + S=DatasetRestoring(S_meta; rate=1/5days, mask=tracer_mask), u=Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), v=Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) From 291f3817d6446451fe8c57827e614fa8e1050e21 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 29 May 2025 18:22:36 +0200 Subject: [PATCH 22/99] jld2 writer --- examples/acc_regional_simulation.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 26cfb8686..835a55994 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -114,12 +114,12 @@ end coupled_simulation.callbacks[:progress] = Callback(progress, TimeInterval(4hours)) -ocean.output_writers[:surface] = JLD2OutputWriter(model, merge(model.tracers, model.velocities); - schedule = TimeInterval(5days), - filename = "surface", - indices = (:, :, grid.Nz), - overwrite_existing = true, - array_type = Array{Float32}) +ocean.output_writers[:surface] = JLD2Writer(model, merge(model.tracers, model.velocities); + schedule = TimeInterval(5days), + filename = "surface", + indices = (:, :, grid.Nz), + overwrite_existing = true, + array_type = Array{Float32}) nothing #hide # ### Spinning up the simulation From 7a30c07d596e5f495dd2cf9b97d8e6e2493a347c Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 29 May 2025 18:48:40 +0200 Subject: [PATCH 23/99] remove the interior --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 835a55994..359014f3c 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -99,8 +99,8 @@ function progress(sim) u, v, w = ocean.model.velocities T = ocean.model.tracers.T - Tmax, Tmin = maximum(interior(T)), minimum(interior(T)) - umax = maximum(abs, interior(u)), maximum(abs, interior(v)), maximum(abs, interior(w)) + Tmax, Tmin = maximum(T), minimum(T) + umax = maximum(abs, u), maximum(abs, v), maximum(abs, w) step_time = 1e-9 * (time_ns() - wall_time[1]) @info @sprintf("Time: %s, Iteration %d, Δt %s, max(vel): (%.2e, %.2e, %.2e), max(T): %.2f, min(T): %.2f, wtime: %s \n", From feb1e12a22416b411efbd25c3244ed8a8cf729b8 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Fri, 30 May 2025 09:29:29 +0200 Subject: [PATCH 24/99] correctly compute restoring on GPU --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 359014f3c..19da8a61c 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -70,8 +70,8 @@ end T_meta = Metadata(:temperature; start_date, end_date, dataset=ECCO4Monthly()) S_meta = Metadata(:temperature; start_date, end_date, dataset=ECCO4Monthly()) -forcing = (T=DatasetRestoring(T_meta; rate=1/5days, mask=tracer_mask), - S=DatasetRestoring(S_meta; rate=1/5days, mask=tracer_mask), +forcing = (T=DatasetRestoring(T_meta; arch_or_grid=grid, rate=1/5days, mask=tracer_mask), + S=DatasetRestoring(S_meta; arch_or_grid=grid, rate=1/5days, mask=tracer_mask), u=Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), v=Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) From 06f479fb7ae85fec41a937173fec42b4c2ac514a Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Fri, 30 May 2025 09:32:30 +0200 Subject: [PATCH 25/99] pass it --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 19da8a61c..eaa47ecae 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -70,8 +70,8 @@ end T_meta = Metadata(:temperature; start_date, end_date, dataset=ECCO4Monthly()) S_meta = Metadata(:temperature; start_date, end_date, dataset=ECCO4Monthly()) -forcing = (T=DatasetRestoring(T_meta; arch_or_grid=grid, rate=1/5days, mask=tracer_mask), - S=DatasetRestoring(S_meta; arch_or_grid=grid, rate=1/5days, mask=tracer_mask), +forcing = (T=DatasetRestoring(T_meta, arch; rate=1/5days, mask=tracer_mask), + S=DatasetRestoring(S_meta, arch; rate=1/5days, mask=tracer_mask), u=Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), v=Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) From 16957c2cfa2cf47493aee95fbc99bb3cee5748b5 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Fri, 30 May 2025 09:46:15 -0400 Subject: [PATCH 26/99] Update acc_regional_simulation.jl Make sure to only use ECCCO4Monthly, should remove numerical instabilities we were getting with ECCO2Daily. --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index eaa47ecae..5b48d5185 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -82,8 +82,8 @@ ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) model = ocean.model set!(model, - T = Metadatum(:temperature; date=start_date, dataset=ECCO2Daily()), - S = Metadatum(:salinity; date=start_date, dataset=ECCO2Daily())) + T = Metadatum(:temperature; date=start_date, dataset=ECCO4Monthly()), + S = Metadatum(:salinity; date=start_date, dataset=ECCO4Monthly())) backend = JRA55NetCDFBackend(41) atmosphere = JRA55PrescribedAtmosphere(arch; backend) From a3ad47ef59abe46762b4f4c27f31139d7e0c4677 Mon Sep 17 00:00:00 2001 From: Francis Poulin Date: Sat, 31 May 2025 22:33:51 -0400 Subject: [PATCH 27/99] updating file names --- examples/acc_regional_simulation.jl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 5b48d5185..a12e5dec4 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -26,8 +26,8 @@ grid = LatitudeLongitudeGrid(arch; bottom_height = regrid_bathymetry(grid; minimum_depth = 10, - interpolation_passes = 7, - major_basins = 1) + interpolation_passes = 5, + major_basins = 3) grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height), active_cells_map=true) @@ -116,7 +116,7 @@ coupled_simulation.callbacks[:progress] = Callback(progress, TimeInterval(4hours ocean.output_writers[:surface] = JLD2Writer(model, merge(model.tracers, model.velocities); schedule = TimeInterval(5days), - filename = "surface", + filename = "acc_surface_fields", indices = (:, :, grid.Nz), overwrite_existing = true, array_type = Array{Float32}) @@ -133,7 +133,7 @@ nothing #hide # integration with a maximum time step of 1 minute should be sufficient to dissipate spurious # initialization shocks. -coupled_simulation.stop_time = 10days +coupled_simulation.stop_time = 60days coupled_simulation.Δt = 2minutes run!(coupled_simulation) nothing #hide @@ -192,7 +192,7 @@ hm = heatmap!(ax, si, colorrange = (0, 0.5), colormap = :deep) cb = Colorbar(fig[0, 1], hm, vertical = false, label = "Surface speed (ms⁻¹)") hidedecorations!(ax) -CairoMakie.record(fig, "near_global_ocean_surface_s.mp4", 1:Nt, framerate = 8) do i +CairoMakie.record(fig, "acc_surface_s.mp4", 1:Nt, framerate = 8) do i iter[] = i end nothing #hide @@ -205,7 +205,7 @@ hm = heatmap!(ax, Ti, colorrange = (-1, 30), colormap = :magma) cb = Colorbar(fig[0, 1], hm, vertical = false, label = "Surface Temperature (Cᵒ)") hidedecorations!(ax) -CairoMakie.record(fig, "near_global_ocean_surface_T.mp4", 1:Nt, framerate = 8) do i +CairoMakie.record(fig, "acc_surface_T.mp4", 1:Nt, framerate = 8) do i iter[] = i end nothing #hide @@ -218,7 +218,7 @@ hm = heatmap!(ax, ei, colorrange = (0, 1e-3), colormap = :solar) cb = Colorbar(fig[0, 1], hm, vertical = false, label = "Turbulent Kinetic Energy (m²s⁻²)") hidedecorations!(ax) -CairoMakie.record(fig, "near_global_ocean_surface_e.mp4", 1:Nt, framerate = 8) do i +CairoMakie.record(fig, "acc_surface_e.mp4", 1:Nt, framerate = 8) do i iter[] = i end nothing #hide From 88fa6a64be93c07350d914a23ca7ed6af1206dc5 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Mon, 2 Jun 2025 16:16:20 +0200 Subject: [PATCH 28/99] try with passing the grid --- examples/acc_regional_simulation.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index a12e5dec4..0119ab8c8 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -26,8 +26,8 @@ grid = LatitudeLongitudeGrid(arch; bottom_height = regrid_bathymetry(grid; minimum_depth = 10, - interpolation_passes = 5, - major_basins = 3) + interpolation_passes = 7, + major_basins = 1) grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height), active_cells_map=true) @@ -70,8 +70,8 @@ end T_meta = Metadata(:temperature; start_date, end_date, dataset=ECCO4Monthly()) S_meta = Metadata(:temperature; start_date, end_date, dataset=ECCO4Monthly()) -forcing = (T=DatasetRestoring(T_meta, arch; rate=1/5days, mask=tracer_mask), - S=DatasetRestoring(S_meta, arch; rate=1/5days, mask=tracer_mask), +forcing = (T=DatasetRestoring(T_meta, grid; rate=1/5days, mask=tracer_mask), + S=DatasetRestoring(S_meta, grid; rate=1/5days, mask=tracer_mask), u=Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), v=Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) From ad5bdb6ebeb689e8779717e80ced840d3f74e9d3 Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Mon, 2 Jun 2025 09:57:51 -0400 Subject: [PATCH 29/99] changing the name of the files to save --- examples/acc_regional_simulation.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 0119ab8c8..053889f4f 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -90,7 +90,7 @@ atmosphere = JRA55PrescribedAtmosphere(arch; backend) radiation = Radiation() coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) -coupled_simulation = Simulation(coupled_model; Δt=10minutes, stop_time = 10days) +coupled_simulation = Simulation(coupled_model; Δt=5minutes, stop_time = 60days) wall_time = [time_ns()] @@ -197,7 +197,7 @@ CairoMakie.record(fig, "acc_surface_s.mp4", 1:Nt, framerate = 8) do i end nothing #hide - # ![](near_global_ocean_surface_s.mp4) + # ![](acc_surface_s.mp4) fig = Figure(size = (800, 400)) ax = Axis(fig[1, 1]) @@ -210,7 +210,7 @@ CairoMakie.record(fig, "acc_surface_T.mp4", 1:Nt, framerate = 8) do i end nothing #hide -# ![](near_global_ocean_surface_T.mp4) +# ![](acc_surface_T.mp4) fig = Figure(size = (800, 400)) ax = Axis(fig[1, 1]) @@ -223,4 +223,4 @@ CairoMakie.record(fig, "acc_surface_e.mp4", 1:Nt, framerate = 8) do i end nothing #hide -# ![](near_global_ocean_surface_e.mp4) +# ![](acc_surface_e.mp4) From b0c23ea5c7b44f5886985bc9b6ca71616b26af66 Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Tue, 3 Jun 2025 07:30:03 -0400 Subject: [PATCH 30/99] modifying some names and using the visualization from near global simulation --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 053889f4f..aae177a16 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -90,7 +90,7 @@ atmosphere = JRA55PrescribedAtmosphere(arch; backend) radiation = Radiation() coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) -coupled_simulation = Simulation(coupled_model; Δt=5minutes, stop_time = 60days) +coupled_simulation = Simulation(coupled_model; Δt=5minutes, stop_time = 20days) wall_time = [time_ns()] @@ -133,7 +133,7 @@ nothing #hide # integration with a maximum time step of 1 minute should be sufficient to dissipate spurious # initialization shocks. -coupled_simulation.stop_time = 60days +coupled_simulation.stop_time = 20days coupled_simulation.Δt = 2minutes run!(coupled_simulation) nothing #hide From 43693b948f5400b568500061cf033c0c4f4ce5b6 Mon Sep 17 00:00:00 2001 From: Francis Poulin Date: Tue, 3 Jun 2025 07:32:48 -0400 Subject: [PATCH 31/99] changing a few names and using the visualization from near global (for real this time) --- examples/acc_regional_simulation.jl | 140 ++++++++++++++-------------- 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 053889f4f..b95ad92d4 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -67,30 +67,27 @@ end return - p.rate * fields.v[i, j, k] * northern_mask(φ) end -T_meta = Metadata(:temperature; start_date, end_date, dataset=ECCO4Monthly()) -S_meta = Metadata(:temperature; start_date, end_date, dataset=ECCO4Monthly()) +T_meta = Metadata(:temperature; start_date, end_date, dataset = ECCO4Monthly()) +S_meta = Metadata(:temperature; start_date, end_date, dataset = ECCO4Monthly()) -forcing = (T=DatasetRestoring(T_meta, grid; rate=1/5days, mask=tracer_mask), - S=DatasetRestoring(S_meta, grid; rate=1/5days, mask=tracer_mask), - u=Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), - v=Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) +forcing = (T = DatasetRestoring(T_meta, grid; rate=1/5days, mask=tracer_mask), + S = DatasetRestoring(S_meta, grid; rate=1/5days, mask=tracer_mask), + u = Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), + v = Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) momentum_advection = WENOVectorInvariant() tracer_advection = WENO(order=7) -ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) -model = ocean.model - -set!(model, - T = Metadatum(:temperature; date=start_date, dataset=ECCO4Monthly()), - S = Metadatum(:salinity; date=start_date, dataset=ECCO4Monthly())) - -backend = JRA55NetCDFBackend(41) -atmosphere = JRA55PrescribedAtmosphere(arch; backend) +ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) +atmosphere = JRA55PrescribedAtmosphere(arch; JRA55NetCDFBackend(41)) radiation = Radiation() -coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) -coupled_simulation = Simulation(coupled_model; Δt=5minutes, stop_time = 60days) +set!(ocean.model, + T = Metadatum(:temperature; date = start_date, dataset = ECCO4Monthly()), + S = Metadatum(:salinity; date = start_date, dataset = ECCO4Monthly())) + +coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) +simulation = Simulation(coupled_model; Δt=2minutes, stop_time = 10days) wall_time = [time_ns()] @@ -112,7 +109,7 @@ function progress(sim) wall_time[1] = time_ns() end -coupled_simulation.callbacks[:progress] = Callback(progress, TimeInterval(4hours)) +simulation.callbacks[:progress] = Callback(progress, TimeInterval(4hours)) ocean.output_writers[:surface] = JLD2Writer(model, merge(model.tracers, model.velocities); schedule = TimeInterval(5days), @@ -133,9 +130,7 @@ nothing #hide # integration with a maximum time step of 1 minute should be sufficient to dissipate spurious # initialization shocks. -coupled_simulation.stop_time = 60days -coupled_simulation.Δt = 2minutes -run!(coupled_simulation) +run!(simulation) nothing #hide # ### Running the simulation @@ -143,9 +138,9 @@ nothing #hide # Now that the simulation has spun up, we can run it for the full 2 years. # We increase the maximum time step size to 10 minutes and let the simulation run for 2 years. -coupled_simulation.stop_time = 2*365days -coupled_simulation.Δt = 10minutes -run!(coupled_simulation) +simulation.stop_time = 2*365days +simulation.Δt = 10minutes +run!(simulation) nothing #hide # ## Visualizing the results @@ -163,64 +158,69 @@ e = FieldTimeSeries("surface.jld2", "e"; backend = OnDisk()) times = u.times Nt = length(times) -iter = Observable(Nt) +n = Observable(Nt) -Ti = @lift begin - Ti = interior(T[$iter], :, :, 1) - Ti[Ti .== 0] .= NaN - Ti -end +land = interior(T.grid.immersed_boundary.bottom_height) .>= 0 -ei = @lift begin - ei = interior(e[$iter], :, :, 1) - ei[ei .== 0] .= NaN - ei +Tn = @lift begin + Tn = interior(T[$n]) + Tn[land] .= NaN + view(Tn, :, :, 1) end -si = @lift begin - s = Field(sqrt(u[$iter]^2 + v[$iter]^2)) - compute!(s) - s = interior(s, :, :, 1) - s[s .== 0] .= NaN - s +en = @lift begin + en = interior(e[$n]) + en[land] .= NaN + view(en, :, :, 1) end +un = Field{Face, Center, Nothing}(u.grid) +vn = Field{Center, Face, Nothing}(v.grid) -fig = Figure(size = (800, 400)) -ax = Axis(fig[1, 1]) -hm = heatmap!(ax, si, colorrange = (0, 0.5), colormap = :deep) -cb = Colorbar(fig[0, 1], hm, vertical = false, label = "Surface speed (ms⁻¹)") -hidedecorations!(ax) +s = @at (Center, Center, Nothing) sqrt(un^2 + vn^2) +s = Field(s) -CairoMakie.record(fig, "acc_surface_s.mp4", 1:Nt, framerate = 8) do i - iter[] = i -end -nothing #hide - - # ![](acc_surface_s.mp4) - -fig = Figure(size = (800, 400)) -ax = Axis(fig[1, 1]) -hm = heatmap!(ax, Ti, colorrange = (-1, 30), colormap = :magma) -cb = Colorbar(fig[0, 1], hm, vertical = false, label = "Surface Temperature (Cᵒ)") -hidedecorations!(ax) - -CairoMakie.record(fig, "acc_surface_T.mp4", 1:Nt, framerate = 8) do i - iter[] = i +sn = @lift begin + parent(un) .= parent(u[$n]) + parent(vn) .= parent(v[$n]) + compute!(s) + sn = interior(s) + sn[land] .= NaN + view(sn, :, :, 1) end + +title = @lift string("ACC regional ocean simulation after ", + prettytime(times[$n] - times[1])) + +λ, φ, _ = nodes(T) + +fig = Figure(size = (1000, 1500)) + +axs = Axis(fig[1, 1], xlabel="Longitude (deg)", ylabel="Latitude (deg)") +axT = Axis(fig[2, 1], xlabel="Longitude (deg)", ylabel="Latitude (deg)") +axe = Axis(fig[3, 1], xlabel="Longitude (deg)", ylabel="Latitude (deg)") + +hm = heatmap!(axs, λ, φ, sn, colorrange = (0, 0.5), colormap = :deep, nan_color=:lightgray) +Colorbar(fig[1, 2], hm, label = "Surface Speed (m s⁻¹)") + +hm = heatmap!(axT, λ, φ, Tn, colorrange = (-1, 30), colormap = :magma, nan_color=:lightgray) +Colorbar(fig[2, 2], hm, label = "Surface Temperature (ᵒC)") + +hm = heatmap!(axe, λ, φ, en, colorrange = (0, 1e-3), colormap = :solar, nan_color=:lightgray) +Colorbar(fig[3, 2], hm, label = "Turbulent Kinetic Energy (m² s⁻²)") + +Label(fig[0, :], title) + +save("snapshot_acc.png", fig) nothing #hide - -# ![](acc_surface_T.mp4) -fig = Figure(size = (800, 400)) -ax = Axis(fig[1, 1]) -hm = heatmap!(ax, ei, colorrange = (0, 1e-3), colormap = :solar) -cb = Colorbar(fig[0, 1], hm, vertical = false, label = "Turbulent Kinetic Energy (m²s⁻²)") -hidedecorations!(ax) +# ![](snapshot.png) + +# And now we make a movie: -CairoMakie.record(fig, "acc_surface_e.mp4", 1:Nt, framerate = 8) do i - iter[] = i +record(fig, "acc_region_surface.mp4", 1:Nt, framerate = 8) do nn + n[] = nn end nothing #hide -# ![](acc_surface_e.mp4) +# ![](near_global_ocean_surface.mp4) From 3f546de43e67999ea0185fc1b3a9b4a5b676b2fd Mon Sep 17 00:00:00 2001 From: Francis Poulin Date: Tue, 3 Jun 2025 07:44:16 -0400 Subject: [PATCH 32/99] remove two unnecessary lines --- examples/acc_regional_simulation.jl | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 2c1f2ee53..49ca26c29 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -126,8 +126,6 @@ nothing #hide # integration with a maximum time step of 1 minute should be sufficient to dissipate spurious # initialization shocks. -simulation.stop_time = 20days -simulation.Δt = 2minutes run!(simulation) nothing #hide From 2837862e8a9a7562bbb243b5ff39de49ff4a420b Mon Sep 17 00:00:00 2001 From: Francis Poulin Date: Tue, 3 Jun 2025 07:47:39 -0400 Subject: [PATCH 33/99] fix alignments --- examples/acc_regional_simulation.jl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 49ca26c29..1af1e7f37 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -71,9 +71,9 @@ T_meta = Metadata(:temperature; start_date, end_date, dataset = ECCO4Monthly()) S_meta = Metadata(:temperature; start_date, end_date, dataset = ECCO4Monthly()) forcing = (T = DatasetRestoring(T_meta, grid; rate=1/5days, mask=tracer_mask), - S = DatasetRestoring(S_meta, grid; rate=1/5days, mask=tracer_mask), - u = Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), - v = Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) + S = DatasetRestoring(S_meta, grid; rate=1/5days, mask=tracer_mask), + u = Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), + v = Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) momentum_advection = WENOVectorInvariant() tracer_advection = WENO(order=7) @@ -82,8 +82,8 @@ ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advectio atmosphere = JRA55PrescribedAtmosphere(arch; JRA55NetCDFBackend(41)) radiation = Radiation() -coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) -simulation = Simulation(coupled_model; Δt=5minutes, stop_time = 20days) +coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) +simulation = Simulation(coupled_model; Δt=5minutes, stop_time = 20days) wall_time = [time_ns()] From 0738b8b2e00c3c85503a178c9d10bf4d3b4e8c5c Mon Sep 17 00:00:00 2001 From: Francis Poulin Date: Tue, 3 Jun 2025 07:53:12 -0400 Subject: [PATCH 34/99] restore backend definition --- examples/acc_regional_simulation.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 1af1e7f37..ff29df33d 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -79,7 +79,8 @@ momentum_advection = WENOVectorInvariant() tracer_advection = WENO(order=7) ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) -atmosphere = JRA55PrescribedAtmosphere(arch; JRA55NetCDFBackend(41)) +backend = JRA55NetCDFBackend(41) +atmosphere = JRA55PrescribedAtmosphere(arch; backend) radiation = Radiation() coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) From 1fcd5ede1cab3edeb292dd048e3e81b22fe80fd8 Mon Sep 17 00:00:00 2001 From: Francis Poulin Date: Tue, 3 Jun 2025 08:04:11 -0400 Subject: [PATCH 35/99] returning to model --- examples/acc_regional_simulation.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index ff29df33d..c9e3cac6a 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -82,6 +82,7 @@ ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advectio backend = JRA55NetCDFBackend(41) atmosphere = JRA55PrescribedAtmosphere(arch; backend) radiation = Radiation() +model = ocean.model coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) simulation = Simulation(coupled_model; Δt=5minutes, stop_time = 20days) From c343d9cd38e6a951061db29a1f0ba7382d0eab9c Mon Sep 17 00:00:00 2001 From: Francis Poulin Date: Tue, 3 Jun 2025 08:29:59 -0400 Subject: [PATCH 36/99] changing initial time step to 2*minutes --- examples/acc_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index c9e3cac6a..41fc65925 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -85,7 +85,7 @@ radiation = Radiation() model = ocean.model coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) -simulation = Simulation(coupled_model; Δt=5minutes, stop_time = 20days) +simulation = Simulation(coupled_model; Δt=2minutes, stop_time = 10days) wall_time = [time_ns()] From 727f16e8fff521aae7afc5a323f47e310788f1ae Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Mon, 16 Jun 2025 12:51:21 -0400 Subject: [PATCH 37/99] trying the simulation from T=S=0 and no atmospheric forcing --- examples/acc_regional_simulation.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 41fc65925..235990ff5 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -79,12 +79,13 @@ momentum_advection = WENOVectorInvariant() tracer_advection = WENO(order=7) ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) +set!(ocean.model, T=0, S=0) backend = JRA55NetCDFBackend(41) atmosphere = JRA55PrescribedAtmosphere(arch; backend) radiation = Radiation() model = ocean.model -coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) +coupled_model = OceanSeaIceModel(ocean; atmosphere=nothing, radiation) simulation = Simulation(coupled_model; Δt=2minutes, stop_time = 10days) wall_time = [time_ns()] From f6f8492eac5cc3fe6e352bb2f1c4e2aa75695baf Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Mon, 16 Jun 2025 14:12:47 -0400 Subject: [PATCH 38/99] adding line so it can run --- examples/acc_regional_simulation.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 235990ff5..cfbd9f1a5 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -4,6 +4,8 @@ using Oceananigans.Grids: φnode using ClimaOcean using ClimaOcean.ECCO +Oceananigans.TimeSteppers.time_step!(::Nothing, dt) = nothing + using Printf using CairoMakie using CFTime From 759c1ac31cf93d3658ad23b190887dc079f67f2d Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 17 Jul 2025 11:57:58 +0200 Subject: [PATCH 39/99] Update Project.toml --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index f31d23962..edc3c208f 100644 --- a/Project.toml +++ b/Project.toml @@ -55,7 +55,7 @@ JLD2 = "0.4, 0.5" KernelAbstractions = "0.9" MPI = "0.20" NCDatasets = "0.12, 0.13, 0.14" -Oceananigans = "0.96" +Oceananigans = "0.97" OffsetArrays = "1.14" PrecompileTools = "1" PythonCall = "0.9" From 01e9f05aea705bd0c3db79e415a43598bd1eaa53 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 17 Jul 2025 11:58:10 +0200 Subject: [PATCH 40/99] Update near_global_ocean_simulation.jl --- examples/near_global_ocean_simulation.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/near_global_ocean_simulation.jl b/examples/near_global_ocean_simulation.jl index b50150239..f1426c04a 100644 --- a/examples/near_global_ocean_simulation.jl +++ b/examples/near_global_ocean_simulation.jl @@ -20,6 +20,7 @@ using CairoMakie using CFTime using Dates using Printf +using CUDA # ### Grid configuration # From e48a2b548b987424b5a4d0c6554a84b100553407 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 17 Jul 2025 11:58:20 +0200 Subject: [PATCH 41/99] Update one_degree_simulation.jl --- examples/one_degree_simulation.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/one_degree_simulation.jl b/examples/one_degree_simulation.jl index 65e3acf6f..4cf4d92cc 100644 --- a/examples/one_degree_simulation.jl +++ b/examples/one_degree_simulation.jl @@ -15,6 +15,7 @@ using Oceananigans.Units using Dates using Printf using Statistics +using CUDA # ### Grid and Bathymetry From 0765874310053ea4218c96ba7c13a7da5c721822 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 17 Jul 2025 12:01:04 +0200 Subject: [PATCH 42/99] changes --- .../distributed_perfect_one_degree_model_calibration.jl | 1 - .../one_degree_calibration/gm_one_degree_model_calibration.jl | 1 - .../perfect_one_degree_model_calibration.jl | 1 - src/DataWrangling/JRA55/JRA55.jl | 1 - 4 files changed, 4 deletions(-) diff --git a/experiments/one_degree_calibration/distributed_perfect_one_degree_model_calibration.jl b/experiments/one_degree_calibration/distributed_perfect_one_degree_model_calibration.jl index e0aa4f853..e23b6b532 100644 --- a/experiments/one_degree_calibration/distributed_perfect_one_degree_model_calibration.jl +++ b/experiments/one_degree_calibration/distributed_perfect_one_degree_model_calibration.jl @@ -1,5 +1,4 @@ using Oceananigans -using Oceananigans.Architectures: arch_array using Oceananigans.Units using Oceananigans.Utils: WallTimeInterval using Oceananigans.BuoyancyFormulations: buoyancy diff --git a/experiments/one_degree_calibration/gm_one_degree_model_calibration.jl b/experiments/one_degree_calibration/gm_one_degree_model_calibration.jl index 81a8592a4..1b5c5bb83 100644 --- a/experiments/one_degree_calibration/gm_one_degree_model_calibration.jl +++ b/experiments/one_degree_calibration/gm_one_degree_model_calibration.jl @@ -1,5 +1,4 @@ using Oceananigans -using Oceananigans.Architectures: arch_array using Oceananigans.Units using Oceananigans.Grids: on_architecture using Oceananigans.Utils: WallTimeInterval diff --git a/experiments/one_degree_calibration/perfect_one_degree_model_calibration.jl b/experiments/one_degree_calibration/perfect_one_degree_model_calibration.jl index 665e9e3f4..a258714fb 100644 --- a/experiments/one_degree_calibration/perfect_one_degree_model_calibration.jl +++ b/experiments/one_degree_calibration/perfect_one_degree_model_calibration.jl @@ -1,5 +1,4 @@ using Oceananigans -using Oceananigans.Architectures: arch_array using Oceananigans.Units using Oceananigans.Utils: WallTimeInterval using Oceananigans.BuoyancyFormulations: buoyancy diff --git a/src/DataWrangling/JRA55/JRA55.jl b/src/DataWrangling/JRA55/JRA55.jl index 34dc0097d..a3e45fec7 100644 --- a/src/DataWrangling/JRA55/JRA55.jl +++ b/src/DataWrangling/JRA55/JRA55.jl @@ -5,7 +5,6 @@ export JRA55FieldTimeSeries, JRA55PrescribedAtmosphere, RepeatYearJRA55, MultiYe using Oceananigans using Oceananigans.Units -using Oceananigans.Architectures: arch_array using Oceananigans.DistributedComputations using Oceananigans.DistributedComputations: child_architecture using Oceananigans.BoundaryConditions: fill_halo_regions! From 3ecb067a5a1074c4a5cbba589c77bba7c738332a Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 17 Jul 2025 16:40:14 +0200 Subject: [PATCH 43/99] force with salinity field --- examples/acc_regional_simulation.jl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index cfbd9f1a5..771f5764a 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -70,7 +70,7 @@ end end T_meta = Metadata(:temperature; start_date, end_date, dataset = ECCO4Monthly()) -S_meta = Metadata(:temperature; start_date, end_date, dataset = ECCO4Monthly()) +S_meta = Metadata(:salinity; start_date, end_date, dataset = ECCO4Monthly()) forcing = (T = DatasetRestoring(T_meta, grid; rate=1/5days, mask=tracer_mask), S = DatasetRestoring(S_meta, grid; rate=1/5days, mask=tracer_mask), @@ -80,8 +80,11 @@ forcing = (T = DatasetRestoring(T_meta, grid; rate=1/5days, mask=tracer_mask), momentum_advection = WENOVectorInvariant() tracer_advection = WENO(order=7) -ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) -set!(ocean.model, T=0, S=0) +ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) + +set!(ocean.model, T=T_meta[1], S=S_meta[1]) + + backend = JRA55NetCDFBackend(41) atmosphere = JRA55PrescribedAtmosphere(arch; backend) radiation = Radiation() From dd95781cf9207778606fa66378b8f3633062ecca Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 17 Jul 2025 16:57:26 +0200 Subject: [PATCH 44/99] adding the Manifest --- Manifest.toml | 1547 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1547 insertions(+) create mode 100644 Manifest.toml diff --git a/Manifest.toml b/Manifest.toml new file mode 100644 index 000000000..4b016b948 --- /dev/null +++ b/Manifest.toml @@ -0,0 +1,1547 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.10.10" +manifest_format = "2.0" +project_hash = "c1aced48fc46b475353c38dfa4f0b044bb0c2f23" + +[[deps.AbstractFFTs]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" +uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" +version = "1.5.0" + + [deps.AbstractFFTs.extensions] + AbstractFFTsChainRulesCoreExt = "ChainRulesCore" + AbstractFFTsTestExt = "Test" + + [deps.AbstractFFTs.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.Accessors]] +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] +git-tree-sha1 = "3b86719127f50670efe356bc11073d84b4ed7a5d" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.42" + + [deps.Accessors.extensions] + AxisKeysExt = "AxisKeys" + IntervalSetsExt = "IntervalSets" + LinearAlgebraExt = "LinearAlgebra" + StaticArraysExt = "StaticArrays" + StructArraysExt = "StructArrays" + TestExt = "Test" + UnitfulExt = "Unitful" + + [deps.Accessors.weakdeps] + AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "f7817e2e585aa6d924fd714df1e2a84be7896c60" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "4.3.0" +weakdeps = ["SparseArrays", "StaticArrays"] + + [deps.Adapt.extensions] + AdaptSparseArraysExt = "SparseArrays" + AdaptStaticArraysExt = "StaticArrays" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.ArnoldiMethod]] +deps = ["LinearAlgebra", "Random", "StaticArrays"] +git-tree-sha1 = "f87e559f87a45bece9c9ed97458d3afe98b1ebb9" +uuid = "ec485272-7323-5ecc-a04f-4719b315124d" +version = "0.1.0" + +[[deps.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra"] +git-tree-sha1 = "9606d7832795cbef89e06a550475be300364a8aa" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.19.0" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceCUDSSExt = "CUDSS" + ArrayInterfaceChainRulesCoreExt = "ChainRulesCore" + ArrayInterfaceChainRulesExt = "ChainRules" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceReverseDiffExt = "ReverseDiff" + ArrayInterfaceSparseArraysExt = "SparseArrays" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Atomix]] +deps = ["UnsafeAtomics"] +git-tree-sha1 = "b5bb4dc6248fde467be2a863eb8452993e74d402" +uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" +version = "1.1.1" + + [deps.Atomix.extensions] + AtomixCUDAExt = "CUDA" + AtomixMetalExt = "Metal" + AtomixOpenCLExt = "OpenCL" + AtomixoneAPIExt = "oneAPI" + + [deps.Atomix.weakdeps] + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + OpenCL = "08131aa3-fb12-5dee-8b74-c09406e224a2" + oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" + +[[deps.BFloat16s]] +deps = ["LinearAlgebra", "Printf", "Random"] +git-tree-sha1 = "3b642331600250f592719140c60cf12372b82d66" +uuid = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" +version = "0.5.1" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BitFlags]] +git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.9" + +[[deps.BitTwiddlingConvenienceFunctions]] +deps = ["Static"] +git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87" +uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" +version = "0.1.6" + +[[deps.Blosc_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Lz4_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "535c80f1c0847a4c967ea945fca21becc9de1522" +uuid = "0b7ba130-8d10-5ba8-a3d6-c5182647fed9" +version = "1.21.7+0" + +[[deps.Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1b96ea4a01afe0ea4090c5c8039690672dd13f2e" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.9+0" + +[[deps.CEnum]] +git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" +uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" +version = "0.5.0" + +[[deps.CFTime]] +deps = ["Dates", "Printf"] +git-tree-sha1 = "937628bf8b377208ac359f57314fd85d3e0165d9" +uuid = "179af706-886a-5703-950a-314cd64e0468" +version = "0.1.4" + +[[deps.CPUSummary]] +deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] +git-tree-sha1 = "5a97e67919535d6841172016c9530fd69494e5ec" +uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" +version = "0.2.6" + +[[deps.CUDA]] +deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "Crayons", "DataFrames", "ExprTools", "GPUArrays", "GPUCompiler", "GPUToolbox", "KernelAbstractions", "LLVM", "LLVMLoopInfo", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "NVTX", "Preferences", "PrettyTables", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "StaticArrays", "Statistics", "demumble_jll"] +git-tree-sha1 = "b8ae59258f3d96ce75a00f9229e719356eb929d6" +uuid = "052768ef-5323-5732-b1bb-66c8b64840ba" +version = "5.8.2" + + [deps.CUDA.extensions] + ChainRulesCoreExt = "ChainRulesCore" + EnzymeCoreExt = "EnzymeCore" + SparseMatricesCSRExt = "SparseMatricesCSR" + SpecialFunctionsExt = "SpecialFunctions" + + [deps.CUDA.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + SparseMatricesCSR = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + +[[deps.CUDA_Driver_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "18afa851ed10552e6df25dfaa7ef450104ae73d4" +uuid = "4ee394cb-3365-5eb0-8335-949819d2adfc" +version = "0.13.1+0" + +[[deps.CUDA_Runtime_Discovery]] +deps = ["Libdl"] +git-tree-sha1 = "33576c7c1b2500f8e7e6baa082e04563203b3a45" +uuid = "1af6417a-86b4-443c-805f-a4643ffb695f" +version = "0.3.5" + +[[deps.CUDA_Runtime_jll]] +deps = ["Artifacts", "CUDA_Driver_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] +git-tree-sha1 = "b5c173a64f9f4224a82fdc26fda8614cb2ecfa27" +uuid = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" +version = "0.17.1+0" + +[[deps.ClimaSeaIce]] +deps = ["Adapt", "KernelAbstractions", "Oceananigans", "RootSolvers", "Roots", "SeawaterPolynomials"] +git-tree-sha1 = "8166751d954fdaa2e9fe183ad1a24b01343d422f" +uuid = "6ba0ff68-24e6-4315-936c-2e99227c95a4" +version = "0.3.1" + +[[deps.CloseOpenIntervals]] +deps = ["Static", "StaticArrayInterface"] +git-tree-sha1 = "05ba0d07cd4fd8b7a39541e31a7b0254704ea581" +uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" +version = "0.1.13" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "962834c22b66e32aa10f7611c08c8ca4e20749a9" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.8" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.12.1" + + [deps.ColorTypes.extensions] + StyledStringsExt = "StyledStrings" + + [deps.ColorTypes.weakdeps] + StyledStrings = "f489334b-da3d-4c2e-b8f0-e476e12c162b" + +[[deps.ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.11.0" +weakdeps = ["SpecialFunctions"] + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" + +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "37ea44092930b1811e666c3bc38065d7d87fcc74" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.13.1" + +[[deps.CommonDataModel]] +deps = ["CFTime", "DataStructures", "Dates", "Preferences", "Printf", "Statistics"] +git-tree-sha1 = "358bf5a7d5c1387b995a43577673290c5d344758" +uuid = "1fbeeb36-5f17-413c-809b-666fb144f157" +version = "0.3.8" + +[[deps.CommonSolve]] +git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" +uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" +version = "0.2.4" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools"] +git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.1" + +[[deps.CommonWorldInvalidations]] +git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0" +uuid = "f70d9fcc-98c5-4d4a-abd7-e4cdeebd8ca8" +version = "1.0.0" + +[[deps.Compat]] +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "3a3dfb30697e96a440e4149c8c51bf32f818c0f3" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.17.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.1.1+0" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" +weakdeps = ["InverseFunctions"] + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "d9d26935a0bcffc87d2613ce14c527c99fc543fd" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.5.0" + +[[deps.ConstructionBase]] +git-tree-sha1 = "b4b092499347b18a015186eae3042f72267106cb" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.6.0" + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseLinearAlgebraExt = "LinearAlgebra" + ConstructionBaseStaticArraysExt = "StaticArrays" + + [deps.ConstructionBase.weakdeps] + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.CpuId]] +deps = ["Markdown"] +git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" +uuid = "adafc99b-e345-5852-983c-f28acb93d879" +version = "0.3.1" + +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + +[[deps.CubedSphere]] +deps = ["TaylorSeries"] +git-tree-sha1 = "afe9e8c11bf816a6fee878ddfc661e0bd138b747" +uuid = "7445602f-e544-4518-8976-18f8e8ae6cdb" +version = "0.3.2" + +[[deps.CubicSplines]] +deps = ["Random", "Test"] +git-tree-sha1 = "4875023d456ea37c581f406b8b1bc35bea95ae67" +uuid = "9c784101-8907-5a6d-9be6-98f00873c89b" +version = "0.2.1" + +[[deps.DataAPI]] +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.16.0" + +[[deps.DataDeps]] +deps = ["HTTP", "Libdl", "Reexport", "SHA", "Scratch", "p7zip_jll"] +git-tree-sha1 = "8ae085b71c462c2cb1cfedcb10c3c877ec6cf03f" +uuid = "124859b0-ceae-595e-8997-d05f6a7a8dfe" +version = "0.7.13" + +[[deps.DataFrames]] +deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] +git-tree-sha1 = "fb61b4812c49343d7ef0b533ba982c46021938a6" +uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +version = "1.7.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "4e1fe97fdaed23e9dc21d4d664bea76b65fc50a0" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.22" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.DiffResults]] +deps = ["StaticArraysCore"] +git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.1.0" + +[[deps.DiffRules]] +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.15.1" + +[[deps.DiskArrays]] +deps = ["ConstructionBase", "LRUCache", "Mmap", "OffsetArrays"] +git-tree-sha1 = "16d93ff95ecc421463eaefd694e6746bb1c0919e" +uuid = "3c3547ce-8d99-4f5e-a174-61eb10b00ae3" +version = "0.4.14" + +[[deps.Distances]] +deps = ["LinearAlgebra", "Statistics", "StatsAPI"] +git-tree-sha1 = "c7e3a542b999843086e2f29dac96a618c105be1d" +uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" +version = "0.10.12" + + [deps.Distances.extensions] + DistancesChainRulesCoreExt = "ChainRulesCore" + DistancesSparseArraysExt = "SparseArrays" + + [deps.Distances.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[deps.DocStringExtensions]] +git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.5" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.11" + +[[deps.ExprTools]] +git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" +uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" +version = "0.1.10" + +[[deps.ExpressionExplorer]] +git-tree-sha1 = "4a8c0a9eebf807ac42f0f6de758e60a20be25ffb" +uuid = "21656369-7473-754a-2065-74616d696c43" +version = "1.1.3" + +[[deps.FFTW]] +deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] +git-tree-sha1 = "797762812ed063b9b94f6cc7742bc8883bb5e69e" +uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" +version = "1.9.0" + +[[deps.FFTW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6d6219a004b8cf1e0b4dbe27a2860b8e04eba0be" +uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" +version = "3.3.11+0" + +[[deps.FileIO]] +deps = ["Pkg", "Requires", "UUIDs"] +git-tree-sha1 = "b66970a70db13f45b7e57fbda1736e1cf72174ea" +uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" +version = "1.17.0" +weakdeps = ["HTTP"] + + [deps.FileIO.extensions] + HTTPExt = "HTTP" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.5" + +[[deps.ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] +git-tree-sha1 = "910febccb28d493032495b7009dce7d7f7aee554" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "1.0.1" +weakdeps = ["StaticArrays"] + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + +[[deps.GPUArrays]] +deps = ["Adapt", "GPUArraysCore", "KernelAbstractions", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "ScopedValues", "Serialization", "Statistics"] +git-tree-sha1 = "be941842a40b6daac98496994ea69054ba4c5144" +uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" +version = "11.2.3" + +[[deps.GPUArraysCore]] +deps = ["Adapt"] +git-tree-sha1 = "83cf05ab16a73219e5f6bd1bdfa9848fa24ac627" +uuid = "46192b85-c4d5-4398-a991-12ede77f4527" +version = "0.2.0" + +[[deps.GPUCompiler]] +deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "Scratch", "Serialization", "TOML", "Tracy", "UUIDs"] +git-tree-sha1 = "eb1e212e12cc058fa16712082d44be499d23638c" +uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" +version = "1.6.1" + +[[deps.GPUToolbox]] +git-tree-sha1 = "15d8b0f5a6dca9bf8c02eeaf6687660dafa638d0" +uuid = "096a3bc2-3ced-46d0-87f4-dd12716f4bfc" +version = "0.2.0" + +[[deps.Glob]] +git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" +uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" +version = "1.3.1" + +[[deps.HDF5_jll]] +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 = "e94f84da9af7ce9c6be049e9067e511e17ff89ec" +uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" +version = "1.14.6+0" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "ed5e9c58612c4e081aecdb6e1a479e18462e041e" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.17" + +[[deps.HashArrayMappedTries]] +git-tree-sha1 = "2eaa69a7cab70a52b9687c8bf950a5a93ec895ae" +uuid = "076d061b-32b6-4027-95e0-9a2c6f6d7e74" +version = "0.2.0" + +[[deps.HostCPUFeatures]] +deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] +git-tree-sha1 = "8e070b599339d622e9a081d17230d74a5c473293" +uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" +version = "0.1.17" + +[[deps.Hwloc_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "92f65c4d78ce8cdbb6b68daf88889950b0a99d11" +uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" +version = "2.12.1+0" + +[[deps.IfElse]] +git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" +uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" +version = "0.1.1" + +[[deps.ImageCore]] +deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] +git-tree-sha1 = "8c193230235bbcee22c8066b0374f63b5683c2d3" +uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" +version = "0.10.5" + +[[deps.ImageMorphology]] +deps = ["DataStructures", "ImageCore", "LinearAlgebra", "LoopVectorization", "OffsetArrays", "Requires", "TiledIteration"] +git-tree-sha1 = "cffa21df12f00ca1a365eb8ed107614b40e8c6da" +uuid = "787d08f9-d448-5407-9aad-5290dd7ab264" +version = "0.4.6" + +[[deps.Inflate]] +git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d" +uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" +version = "0.1.5" + +[[deps.InlineStrings]] +git-tree-sha1 = "8594fac023c5ce1ef78260f24d1ad18b4327b420" +uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" +version = "1.4.4" + + [deps.InlineStrings.extensions] + ArrowTypesExt = "ArrowTypes" + ParsersExt = "Parsers" + + [deps.InlineStrings.weakdeps] + ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" + Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" + +[[deps.IntelOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "0f14a5456bdc6b9731a5682f439a672750a09e48" +uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" +version = "2025.0.4+0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.InverseFunctions]] +git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.17" +weakdeps = ["Dates", "Test"] + + [deps.InverseFunctions.extensions] + InverseFunctionsDatesExt = "Dates" + InverseFunctionsTestExt = "Test" + +[[deps.InvertedIndices]] +git-tree-sha1 = "6da3c4316095de0f5ee2ebd875df8721e7e0bdbe" +uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" +version = "1.3.1" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "e2222959fbc6c19554dc15174c81bf7bf3aa691c" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.4" + +[[deps.IterativeSolvers]] +deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"] +git-tree-sha1 = "59545b0a2b27208b0650df0a46b8e3019f85055b" +uuid = "42fd0dbc-a981-5370-80f2-aaf504508153" +version = "0.9.4" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLD2]] +deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "PrecompileTools", "ScopedValues", "TranscodingStreams"] +git-tree-sha1 = "d97791feefda45729613fafeccc4fbef3f539151" +uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" +version = "0.5.15" +weakdeps = ["UnPack"] + + [deps.JLD2.extensions] + UnPackExt = "UnPack" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "a007feb38b422fbdab534406aeca1b86823cb4d6" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.7.0" + +[[deps.JuliaNVTXCallbacks_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "af433a10f3942e882d3c671aacb203e006a5808f" +uuid = "9c1d0b0a-7046-5b2e-a33f-ea22f176ac7e" +version = "0.2.1+0" + +[[deps.KernelAbstractions]] +deps = ["Adapt", "Atomix", "InteractiveUtils", "MacroTools", "PrecompileTools", "Requires", "StaticArrays", "UUIDs"] +git-tree-sha1 = "38a03910123867c11af988e8718d12c98bf6a234" +uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" +version = "0.9.37" + + [deps.KernelAbstractions.extensions] + EnzymeExt = "EnzymeCore" + LinearAlgebraExt = "LinearAlgebra" + SparseArraysExt = "SparseArrays" + + [deps.KernelAbstractions.weakdeps] + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Krylov]] +deps = ["LinearAlgebra", "Printf", "SparseArrays"] +git-tree-sha1 = "b94257a1a8737099ca40bc7271a8b374033473ed" +uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" +version = "0.10.1" + +[[deps.KrylovPreconditioners]] +deps = ["Adapt", "KernelAbstractions", "LightGraphs", "LinearAlgebra", "Metis", "SparseArrays"] +git-tree-sha1 = "52d302d5e950e242f037316b6dd6e1e080afea09" +uuid = "45d422c2-293f-44ce-8315-2cb988662dec" +version = "0.3.4" + + [deps.KrylovPreconditioners.extensions] + KrylovPreconditionersAMDGPUExt = "AMDGPU" + KrylovPreconditionersCUDAExt = "CUDA" + KrylovPreconditionersOneAPIExt = "oneAPI" + + [deps.KrylovPreconditioners.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" + +[[deps.LLVM]] +deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Unicode"] +git-tree-sha1 = "9c7c721cfd800d87d48c745d8bfb65144f0a91df" +uuid = "929cbde3-209d-540e-8aea-75f648917ca0" +version = "9.4.2" +weakdeps = ["BFloat16s"] + + [deps.LLVM.extensions] + BFloat16sExt = "BFloat16s" + +[[deps.LLVMExtra_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] +git-tree-sha1 = "2ea068aac1e7f0337d381b0eae3110581e3f3216" +uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" +version = "0.0.37+2" + +[[deps.LLVMLoopInfo]] +git-tree-sha1 = "2e5c102cfc41f48ae4740c7eca7743cc7e7b75ea" +uuid = "8b046642-f1f6-4319-8d3c-209ddc03c586" +version = "1.0.0" + +[[deps.LRUCache]] +git-tree-sha1 = "5519b95a490ff5fe629c4a7aa3b3dfc9160498b3" +uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" +version = "1.6.2" +weakdeps = ["Serialization"] + + [deps.LRUCache.extensions] + SerializationExt = ["Serialization"] + +[[deps.LaTeXStrings]] +git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.4.0" + +[[deps.LayoutPointers]] +deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] +git-tree-sha1 = "a9eaadb366f5493a5654e843864c13d8b107548c" +uuid = "10f19ff3-798f-405d-979b-55457f8fc047" +version = "0.1.17" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.6.4+0" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.LibTracyClient_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d2bc4e1034b2d43076b50f0e34ea094c2cb0a717" +uuid = "ad6e5548-8b26-5c9f-8ef3-ef0ad883f3a5" +version = "0.9.1+6" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "be484f5c92fad0bd8acfef35fe017900b0b73809" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.18.0+0" + +[[deps.LightGraphs]] +deps = ["ArnoldiMethod", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] +git-tree-sha1 = "432428df5f360964040ed60418dd5601ecd240b6" +uuid = "093fc24a-ae57-5d10-9952-331d41423f4d" +version = "1.3.5" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.29" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "f02b56007b064fbfddb4c9cd60161b6dd0f40df3" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.1.0" + +[[deps.LoopVectorization]] +deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] +git-tree-sha1 = "e5afce7eaf5b5ca0d444bcb4dc4fd78c54cbbac0" +uuid = "bdcacae8-1622-11e9-2a5c-532679323890" +version = "0.12.172" + + [deps.LoopVectorization.extensions] + ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"] + SpecialFunctionsExt = "SpecialFunctions" + + [deps.LoopVectorization.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + +[[deps.Lz4_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "191686b1ac1ea9c89fc52e996ad15d1d241d1e33" +uuid = "5ced341a-0733-55b8-9ab6-a4889d929147" +version = "1.10.1+0" + +[[deps.METIS_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "2eefa8baa858871ae7770c98c3c2a7e46daba5b4" +uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" +version = "5.1.3+0" + +[[deps.MKL_jll]] +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] +git-tree-sha1 = "5de60bc6cb3899cd318d80d627560fae2e2d99ae" +uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" +version = "2025.0.1+1" + +[[deps.MPI]] +deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] +git-tree-sha1 = "892676019c58f34e38743bc989b0eca5bce5edc5" +uuid = "da04e1cc-30fd-572f-bb4f-1f8673147195" +version = "0.20.22" + + [deps.MPI.extensions] + AMDGPUExt = "AMDGPU" + CUDAExt = "CUDA" + + [deps.MPI.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + +[[deps.MPICH_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "d72d0ecc3f76998aac04e446547259b9ae4c265f" +uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" +version = "4.3.1+0" + +[[deps.MPIPreferences]] +deps = ["Libdl", "Preferences"] +git-tree-sha1 = "c105fe467859e7f6e9a852cb15cb4301126fac07" +uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" +version = "0.1.11" + +[[deps.MPItrampoline_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "e214f2a20bdd64c04cd3e4ff62d3c9be7e969a59" +uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" +version = "5.5.4+0" + +[[deps.MacroTools]] +git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.16" + +[[deps.ManualMemory]] +git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" +uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" +version = "0.1.8" + +[[deps.MappedArrays]] +git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" +uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" +version = "0.4.2" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+1" + +[[deps.Metis]] +deps = ["CEnum", "LinearAlgebra", "METIS_jll", "SparseArrays"] +git-tree-sha1 = "54aca4fd53d39dcd2c3f1bef367b6921e8178628" +uuid = "2679e427-3c69-5b7f-982b-ece356f1e94b" +version = "1.5.0" + + [deps.Metis.extensions] + MetisGraphs = "Graphs" + MetisLightGraphs = "LightGraphs" + MetisSimpleWeightedGraphs = ["SimpleWeightedGraphs", "Graphs"] + + [deps.Metis.weakdeps] + Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" + LightGraphs = "093fc24a-ae57-5d10-9952-331d41423f4d" + SimpleWeightedGraphs = "47aef6b3-ad0c-573a-a1e2-d07658019622" + +[[deps.MicrosoftMPI_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "bc95bf4149bf535c09602e3acdf950d9b4376227" +uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" +version = "10.1.4+3" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.2.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MosaicViews]] +deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] +git-tree-sha1 = "7b86a5d4d70a9f5cdf2dacb3cbe6d251d1a61dbe" +uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389" +version = "0.3.4" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2023.1.10" + +[[deps.MuladdMacro]] +git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" +uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" +version = "0.2.4" + +[[deps.NCDatasets]] +deps = ["CFTime", "CommonDataModel", "DataStructures", "Dates", "DiskArrays", "NetCDF_jll", "NetworkOptions", "Printf"] +git-tree-sha1 = "be1095e2b767c19529409ec670bcfb01b825d717" +uuid = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" +version = "0.14.8" + +[[deps.NVTX]] +deps = ["Colors", "JuliaNVTXCallbacks_jll", "Libdl", "NVTX_jll"] +git-tree-sha1 = "1a24c3430fa2ef3317c4c97fa7e431ef45793bd2" +uuid = "5da4648a-3479-48b8-97b9-01cb529c0a1f" +version = "1.0.0" + +[[deps.NVTX_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cd475b587ff77910789a18e68da789fc446a2a05" +uuid = "e98f9f5b-d649-5603-91fd-7774390e6439" +version = "3.2.1+0" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "9b8215b1ee9e78a293f99797cd31375471b2bcae" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.1.3" + +[[deps.NetCDF_jll]] +deps = ["Artifacts", "Blosc_jll", "Bzip2_jll", "HDF5_jll", "JLLWrappers", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "TOML", "XML2_jll", "Zlib_jll", "Zstd_jll", "libaec_jll", "libzip_jll"] +git-tree-sha1 = "d574803b6055116af212434460adf654ce98e345" +uuid = "7243133f-43d8-5620-bbf4-c2c921802cf3" +version = "401.900.300+0" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.Oceananigans]] +deps = ["Adapt", "Crayons", "CubedSphere", "Dates", "Distances", "DocStringExtensions", "FFTW", "GPUArrays", "GPUArraysCore", "Glob", "InteractiveUtils", "IterativeSolvers", "JLD2", "KernelAbstractions", "Krylov", "KrylovPreconditioners", "LinearAlgebra", "Logging", "MPI", "MuladdMacro", "OffsetArrays", "OrderedCollections", "Pkg", "Printf", "Random", "ReactantCore", "Rotations", "SeawaterPolynomials", "SparseArrays", "StaticArrays", "Statistics", "StructArrays"] +git-tree-sha1 = "28e755421fb78813e45a7dffb18469ba3167ea9e" +repo-rev = "ss/fix-indexing-bug" +repo-url = "https://github.com/CliMA/Oceananigans.jl.git" +uuid = "9e8cae18-63c1-5223-a75c-80ca9d6e9a09" +version = "0.97.0" + + [deps.Oceananigans.extensions] + OceananigansAMDGPUExt = "AMDGPU" + OceananigansCUDAExt = "CUDA" + OceananigansEnzymeExt = "Enzyme" + OceananigansMakieExt = ["MakieCore", "Makie"] + OceananigansMetalExt = "Metal" + OceananigansNCDatasetsExt = "NCDatasets" + OceananigansOneAPIExt = "oneAPI" + OceananigansReactantExt = ["Reactant", "KernelAbstractions", "ConstructionBase"] + + [deps.Oceananigans.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + MakieCore = "20f20a25-4f0e-4fdf-b5d1-57303727442b" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + NCDatasets = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" + Reactant = "3c362404-f566-11ee-1572-e11a4b42c853" + oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" + +[[deps.OffsetArrays]] +git-tree-sha1 = "117432e406b5c023f665fa73dc26e79ec3630151" +uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" +version = "1.17.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.23+4" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.5+0" + +[[deps.OpenMPI_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML", "Zlib_jll"] +git-tree-sha1 = "ec764453819f802fc1e144bfe750c454181bd66d" +uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" +version = "5.0.8+0" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "f1a7e086c677df53e064e0fdd2c9d0b0833e3f6e" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.5.0" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "87510f7292a2b21aeff97912b0898f9553cc5c2c" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.5.1+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1346c9208249809840c91b26703912dff463d335" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.6+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "05868e21324cede2207c6f0f466b4bfef6d5e7ee" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.8.1" + +[[deps.PaddedViews]] +deps = ["OffsetArrays"] +git-tree-sha1 = "0fac6313486baae819364c52b4f483450a9d793f" +uuid = "5432bcbf-9aad-5242-b902-cca2824c8663" +version = "0.5.12" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.10.0" + +[[deps.PkgVersion]] +deps = ["Pkg"] +git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" +uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" +version = "0.3.3" + +[[deps.PolyesterWeave]] +deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] +git-tree-sha1 = "645bed98cd47f72f67316fd42fc47dee771aefcd" +uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" +version = "0.2.2" + +[[deps.PooledArrays]] +deps = ["DataAPI", "Future"] +git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" +uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" +version = "1.4.3" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.1" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.3" + +[[deps.PrettyTables]] +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "2.4.0" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.Quaternions]] +deps = ["LinearAlgebra", "Random", "RealDot"] +git-tree-sha1 = "994cc27cdacca10e68feb291673ec3a76aa2fae9" +uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" +version = "0.7.6" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Random123]] +deps = ["Random", "RandomNumbers"] +git-tree-sha1 = "dbe5fd0b334694e905cb9fda73cd8554333c46e2" +uuid = "74087812-796a-5b5d-8853-05524746bad3" +version = "1.7.1" + +[[deps.RandomNumbers]] +deps = ["Random"] +git-tree-sha1 = "c6ec94d2aaba1ab2ff983052cf6a606ca5985902" +uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" +version = "1.6.0" + +[[deps.ReactantCore]] +deps = ["ExpressionExplorer", "MacroTools"] +git-tree-sha1 = "120feaf6a97738e3a63902644a0afb3b69cc7b98" +uuid = "a3311ec8-5e00-46d5-b541-4f83e724a433" +version = "0.1.15" + +[[deps.RealDot]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" +uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" +version = "0.1.0" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.1" + +[[deps.RootSolvers]] +deps = ["ForwardDiff", "Printf"] +git-tree-sha1 = "892b77767827af30868111d257930f567d5d78f8" +uuid = "7181ea78-2dcb-4de3-ab41-2b8ab5a31e74" +version = "0.4.4" + +[[deps.Roots]] +deps = ["Accessors", "CommonSolve", "Printf"] +git-tree-sha1 = "668e411c0616a70860249b4c96e5d35296631a1d" +uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" +version = "2.2.8" + + [deps.Roots.extensions] + RootsChainRulesCoreExt = "ChainRulesCore" + RootsForwardDiffExt = "ForwardDiff" + RootsIntervalRootFindingExt = "IntervalRootFinding" + RootsSymPyExt = "SymPy" + RootsSymPyPythonCallExt = "SymPyPythonCall" + + [deps.Roots.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + IntervalRootFinding = "d2bf35a9-74e0-55ec-b149-d360ff49b807" + SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" + SymPyPythonCall = "bc8888f7-b21e-4b7c-a06a-5d9c9496438c" + +[[deps.Rotations]] +deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays"] +git-tree-sha1 = "5680a9276685d392c87407df00d57c9924d9f11e" +uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc" +version = "1.7.1" +weakdeps = ["RecipesBase"] + + [deps.Rotations.extensions] + RotationsRecipesBaseExt = "RecipesBase" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.SIMDTypes]] +git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" +uuid = "94e857df-77ce-4151-89e5-788b33177be4" +version = "0.1.0" + +[[deps.SLEEFPirates]] +deps = ["IfElse", "Static", "VectorizationBase"] +git-tree-sha1 = "456f610ca2fbd1c14f5fcf31c6bfadc55e7d66e0" +uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" +version = "0.6.43" + +[[deps.ScopedValues]] +deps = ["HashArrayMappedTries", "Logging"] +git-tree-sha1 = "7f44eef6b1d284465fafc66baf4d9bdcc239a15b" +uuid = "7e506255-f358-4e82-b7e4-beb19740aa63" +version = "1.4.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "9b81b8393e50b7d4e6d0a9f14e192294d3b7c109" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.3.0" + +[[deps.SeawaterPolynomials]] +git-tree-sha1 = "e2671e9abe2a2faa51dcecd9d911522931c16012" +uuid = "d496a93d-167e-4197-9f49-d3af4ff8fe40" +version = "0.3.10" + +[[deps.SentinelArrays]] +deps = ["Dates", "Random"] +git-tree-sha1 = "712fb0231ee6f9120e005ccd56297abbc053e7e0" +uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" +version = "1.4.8" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "f305871d2f381d21527c770d4788c06c097c9bc1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.2.0" + +[[deps.SimpleTraits]] +deps = ["InteractiveUtils", "MacroTools"] +git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" +uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" +version = "0.9.4" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +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"] +git-tree-sha1 = "41852b8679f78c8d8961eeadc8f62cef861a52e3" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.5.1" + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + + [deps.SpecialFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + +[[deps.StackViews]] +deps = ["OffsetArrays"] +git-tree-sha1 = "be1cf4eb0ac528d96f5115b4ed80c26a8d8ae621" +uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15" +version = "0.1.2" + +[[deps.Static]] +deps = ["CommonWorldInvalidations", "IfElse", "PrecompileTools"] +git-tree-sha1 = "f737d444cb0ad07e61b3c1bef8eb91203c321eff" +uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" +version = "1.2.0" + +[[deps.StaticArrayInterface]] +deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Static"] +git-tree-sha1 = "96381d50f1ce85f2663584c8e886a6ca97e60554" +uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" +version = "1.8.0" +weakdeps = ["OffsetArrays", "StaticArrays"] + + [deps.StaticArrayInterface.extensions] + StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" + StaticArrayInterfaceStaticArraysExt = "StaticArrays" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "cbea8a6bd7bed51b1619658dec70035e07b8502f" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.9.14" + + [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 = "192954ef1208c7019899fbf8049e717f92959682" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.3" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.10.0" + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "9d72a13a3f4dd3795a195ac5a44d7d6ff5f552ff" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.1" + +[[deps.StringManipulation]] +deps = ["PrecompileTools"] +git-tree-sha1 = "725421ae8e530ec29bcbdddbe91ff8053421d023" +uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" +version = "0.4.1" + +[[deps.StructArrays]] +deps = ["ConstructionBase", "DataAPI", "Tables"] +git-tree-sha1 = "8ad2e38cbb812e29348719cc63580ec1dfeb9de4" +uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" +version = "0.7.1" +weakdeps = ["Adapt", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "SparseArrays", "StaticArrays"] + + [deps.StructArrays.extensions] + StructArraysAdaptExt = "Adapt" + StructArraysGPUArraysCoreExt = ["GPUArraysCore", "KernelAbstractions"] + StructArraysLinearAlgebraExt = "LinearAlgebra" + StructArraysSparseArraysExt = "SparseArrays" + StructArraysStaticArraysExt = "StaticArrays" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "7.2.1+1" + +[[deps.SurfaceFluxes]] +deps = ["DocStringExtensions", "RootSolvers", "Thermodynamics"] +git-tree-sha1 = "aee530bde85cd41374273568cb649e72d82921e7" +uuid = "49b00bb7-8bd4-4f2b-b78c-51cd0450215f" +version = "0.12.0" + + [deps.SurfaceFluxes.extensions] + CreateParametersExt = "ClimaParams" + + [deps.SurfaceFluxes.weakdeps] + ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "f2c1efbc8f3a609aadf318094f8fc5204bdaf344" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.12.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.TaylorSeries]] +deps = ["LinearAlgebra", "Markdown", "SparseArrays"] +git-tree-sha1 = "2c308aab2e14b399e4b8d6af7c486a241c8ca87a" +uuid = "6aa5eb33-94cf-58f4-a9d0-e4b2c4fc25ea" +version = "0.19.1" + + [deps.TaylorSeries.extensions] + TaylorSeriesIAExt = "IntervalArithmetic" + TaylorSeriesJLD2Ext = "JLD2" + TaylorSeriesRATExt = "RecursiveArrayTools" + TaylorSeriesSAExt = "StaticArrays" + + [deps.TaylorSeries.weakdeps] + IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" + JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" + RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.Thermodynamics]] +deps = ["DocStringExtensions", "KernelAbstractions", "Random", "RootSolvers"] +git-tree-sha1 = "94f0e8e3135840568082e62fb69d31669539e627" +uuid = "b60c26fb-14c3-4610-9d3e-2d17fe7ff00c" +version = "0.12.14" + + [deps.Thermodynamics.extensions] + CreateParametersExt = "ClimaParams" + + [deps.Thermodynamics.weakdeps] + ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c" + +[[deps.ThreadingUtilities]] +deps = ["ManualMemory"] +git-tree-sha1 = "d969183d3d244b6c33796b5ed01ab97328f2db85" +uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" +version = "0.5.5" + +[[deps.TiledIteration]] +deps = ["OffsetArrays", "StaticArrayInterface"] +git-tree-sha1 = "1176cc31e867217b06928e2f140c90bd1bc88283" +uuid = "06e1c1a7-607b-532d-9fad-de7d9aa2abac" +version = "0.5.0" + +[[deps.Tracy]] +deps = ["ExprTools", "LibTracyClient_jll", "Libdl"] +git-tree-sha1 = "91dbaee0f50faa4357f7e9fc69442c7b6364dfe5" +uuid = "e689c965-62c8-4b79-b2c5-8359227902fd" +version = "0.1.5" + + [deps.Tracy.extensions] + TracyProfilerExt = "TracyProfiler_jll" + + [deps.Tracy.weakdeps] + TracyProfiler_jll = "0c351ed6-8a68-550e-8b79-de6f926da83c" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.11.3" + +[[deps.URIs]] +git-tree-sha1 = "bef26fb046d031353ef97a82e3fdb6afe7f21b1a" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.6.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.UnPack]] +git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" +uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +version = "1.0.2" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.UnsafeAtomics]] +git-tree-sha1 = "b13c4edda90890e5b04ba24e20a310fbe6f249ff" +uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" +version = "0.3.0" +weakdeps = ["LLVM"] + + [deps.UnsafeAtomics.extensions] + UnsafeAtomicsLLVM = ["LLVM"] + +[[deps.VectorizationBase]] +deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] +git-tree-sha1 = "4ab62a49f1d8d9548a1c8d1a75e5f55cf196f64e" +uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" +version = "0.21.71" + +[[deps.XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "b8b243e47228b4a3877f1dd6aee0c5d56db7fcf4" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.13.6+1" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "fee71455b0aaa3440dfdd54a9a36ccef829be7d4" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.8.1+0" + +[[deps.ZipFile]] +deps = ["Libdl", "Printf", "Zlib_jll"] +git-tree-sha1 = "f492b7fe1698e623024e873244f10d89c95c340a" +uuid = "a5390f91-8eb1-5f08-bee0-b1d1ffed6cea" +version = "0.10.1" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+1" + +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "446b23e73536f84e8037f5dce465e92275f6a308" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.7+1" + +[[deps.demumble_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6498e3581023f8e530f34760d18f75a69e3a4ea8" +uuid = "1e29f10c-031c-5a83-9565-69cddfc27673" +version = "1.3.0+0" + +[[deps.libaec_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f5733a5a9047722470b95a81e1b172383971105c" +uuid = "477f73a3-ac25-53e9-8cc3-50b2fa2566f0" +version = "1.1.3+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.11.0+0" + +[[deps.libzip_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "OpenSSL_jll", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "86addc139bca85fdf9e7741e10977c45785727b7" +uuid = "337d8026-41b4-5cde-a456-74a10e5b31d1" +version = "1.11.3+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.oneTBB_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d5a767a3bb77135a99e433afe0eb14cd7f6914c3" +uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" +version = "2022.0.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+2" From 019b3314ebfcfdc53737bbaf16e8b5d33c50b159 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 17 Jul 2025 16:58:42 +0200 Subject: [PATCH 45/99] add CUDA --- examples/acc_regional_simulation.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 771f5764a..259c15c2e 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -10,6 +10,7 @@ using Printf using CairoMakie using CFTime using Dates +using CUDA arch = GPU() From 5453bfbc253d0b3442f9724b52078f869c420ed3 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 17 Jul 2025 16:59:23 +0200 Subject: [PATCH 46/99] change the zfaces --- examples/acc_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 259c15c2e..73b9dbcd2 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -18,7 +18,7 @@ Nx = 1440 Ny = 400 Nz = 40 -z_faces = exponential_z_faces(; Nz, depth=6000) +z_faces = ExponentialCoordinate(Nz, -6000) grid = LatitudeLongitudeGrid(arch; size = (Nx, Ny, Nz), From 11bfa0e020181c7fa65007c2c73bb365ddb970bc Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 17 Jul 2025 17:51:11 +0200 Subject: [PATCH 47/99] add CUDA to the examples --- .buildkite/examples_build.yml | 2 +- .buildkite/pipeline.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.buildkite/examples_build.yml b/.buildkite/examples_build.yml index 66d2197e3..60cece10e 100644 --- a/.buildkite/examples_build.yml +++ b/.buildkite/examples_build.yml @@ -18,7 +18,7 @@ steps: TMPDIR: "$TARTARUS_HOME/tmp" command: - "echo '--- Instantiate project'" - - "$TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia --color=yes -O0 --project -e 'using Pkg; Pkg.instantiate(; verbose=true); Pkg.precompile(; strict=true)'" + - "$TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia --color=yes -O0 --project -e 'using Pkg; Pkg.add("CUDA"); Pkg.instantiate(; verbose=true); Pkg.precompile(; strict=true)'" # force the initialization of the CUDA runtime as it is lazily loaded by default - "$TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia --color=yes -O0 --project -e 'using CUDA; CUDA.precompile_runtime()'" agents: diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 136eefb90..1175bdc42 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -17,7 +17,7 @@ steps: TEST_GROUP: "init" command: - "echo '--- Instantiate project'" - - "julia --project -e 'using Pkg; Pkg.instantiate(verbose=true)'" + - "julia --project -e 'using Pkg; Pkg.add("CUDA"); Pkg.instantiate(verbose=true)'" - "echo '--- Precompile project'" - "julia --project -e 'using Pkg; Pkg.precompile(strict=true)'" From bd5eb4020a07e88741a1c4c46635b8c52122bcd5 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 17 Jul 2025 17:56:53 +0200 Subject: [PATCH 48/99] using CUDA --- Manifest.toml | 2 +- docs/make.jl | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Manifest.toml b/Manifest.toml index 4b016b948..7d99f5aeb 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.10.10" manifest_format = "2.0" -project_hash = "c1aced48fc46b475353c38dfa4f0b044bb0c2f23" +project_hash = "bb09aa984e1a9dbd83743fc29ea3d49437328c99" [[deps.AbstractFFTs]] deps = ["LinearAlgebra"] diff --git a/docs/make.jl b/docs/make.jl index 3d8e7f469..ead8872d8 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -2,7 +2,8 @@ using ClimaOcean, Documenter, DocumenterCitations, - Literate + Literate, + CUDA ENV["DATADEPS_ALWAYS_ACCEPT"] = "true" From c5cf41231afc1077dc60be18b5dddc6777be5c36 Mon Sep 17 00:00:00 2001 From: Simone Silvestri Date: Thu, 17 Jul 2025 18:00:15 +0200 Subject: [PATCH 49/99] revert cuda --- .buildkite/examples_build.yml | 2 +- .buildkite/pipeline.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.buildkite/examples_build.yml b/.buildkite/examples_build.yml index 60cece10e..66d2197e3 100644 --- a/.buildkite/examples_build.yml +++ b/.buildkite/examples_build.yml @@ -18,7 +18,7 @@ steps: TMPDIR: "$TARTARUS_HOME/tmp" command: - "echo '--- Instantiate project'" - - "$TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia --color=yes -O0 --project -e 'using Pkg; Pkg.add("CUDA"); Pkg.instantiate(; verbose=true); Pkg.precompile(; strict=true)'" + - "$TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia --color=yes -O0 --project -e 'using Pkg; Pkg.instantiate(; verbose=true); Pkg.precompile(; strict=true)'" # force the initialization of the CUDA runtime as it is lazily loaded by default - "$TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia --color=yes -O0 --project -e 'using CUDA; CUDA.precompile_runtime()'" agents: diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 1175bdc42..136eefb90 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -17,7 +17,7 @@ steps: TEST_GROUP: "init" command: - "echo '--- Instantiate project'" - - "julia --project -e 'using Pkg; Pkg.add("CUDA"); Pkg.instantiate(verbose=true)'" + - "julia --project -e 'using Pkg; Pkg.instantiate(verbose=true)'" - "echo '--- Precompile project'" - "julia --project -e 'using Pkg; Pkg.precompile(strict=true)'" From d6339c66d0a305fc8a8a761e5cdd9ea120587ddd Mon Sep 17 00:00:00 2001 From: Francis Poulin Date: Thu, 17 Jul 2025 18:48:52 -0400 Subject: [PATCH 50/99] specify which record function to use --- examples/acc_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 73b9dbcd2..cc528d086 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -223,7 +223,7 @@ nothing #hide # And now we make a movie: -record(fig, "acc_region_surface.mp4", 1:Nt, framerate = 8) do nn +CairoMakie.record(fig, "acc_region_surface.mp4", 1:Nt, framerate = 8) do nn n[] = nn end nothing #hide From a2ed43330b94f3474152980e4c33a963298824cf Mon Sep 17 00:00:00 2001 From: Francis Poulin Date: Thu, 17 Jul 2025 18:56:41 -0400 Subject: [PATCH 51/99] fixing names of the files to load --- examples/acc_regional_simulation.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index cc528d086..6bd2bbdf9 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -155,10 +155,10 @@ nothing #hide # In particular, we generate an animation of the evolution of surface fields: # surface speed (s), surface temperature (T), and turbulent kinetic energy (e). -u = FieldTimeSeries("surface.jld2", "u"; backend = OnDisk()) -v = FieldTimeSeries("surface.jld2", "v"; backend = OnDisk()) -T = FieldTimeSeries("surface.jld2", "T"; backend = OnDisk()) -e = FieldTimeSeries("surface.jld2", "e"; backend = OnDisk()) +u = FieldTimeSeries("acc_surface_fields.jld2", "u"; backend = OnDisk()) +v = FieldTimeSeries("acc_surface_fields.jld2", "v"; backend = OnDisk()) +T = FieldTimeSeries("acc_surface_fields.jld2", "T"; backend = OnDisk()) +e = FieldTimeSeries("acc_surface_fields.jld2", "e"; backend = OnDisk()) times = u.times Nt = length(times) From ca71f87ed0093c4858241aeef240aa8b3d7ba045 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Fri, 18 Jul 2025 09:09:08 +1000 Subject: [PATCH 52/99] Update examples/acc_regional_simulation.jl --- examples/acc_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 6bd2bbdf9..4e7d1821d 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -18,12 +18,12 @@ Nx = 1440 Ny = 400 Nz = 40 -z_faces = ExponentialCoordinate(Nz, -6000) +depth = 6000 grid = LatitudeLongitudeGrid(arch; size = (Nx, Ny, Nz), halo = (7, 7, 7), - z = z_faces, + z = ExponentialCoordinate(Nz, -depth), latitude = (-80, -20), longitude = (0, 360)) From e35fd74d05be958b84d560da801ed364be18ff5b Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Tue, 22 Jul 2025 21:49:32 +1000 Subject: [PATCH 53/99] Delete Manifest.toml --- Manifest.toml | 1547 ------------------------------------------------- 1 file changed, 1547 deletions(-) delete mode 100644 Manifest.toml diff --git a/Manifest.toml b/Manifest.toml deleted file mode 100644 index 7d99f5aeb..000000000 --- a/Manifest.toml +++ /dev/null @@ -1,1547 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.10" -manifest_format = "2.0" -project_hash = "bb09aa984e1a9dbd83743fc29ea3d49437328c99" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - - [deps.AbstractFFTs.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.Accessors]] -deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] -git-tree-sha1 = "3b86719127f50670efe356bc11073d84b4ed7a5d" -uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.42" - - [deps.Accessors.extensions] - AxisKeysExt = "AxisKeys" - IntervalSetsExt = "IntervalSets" - LinearAlgebraExt = "LinearAlgebra" - StaticArraysExt = "StaticArrays" - StructArraysExt = "StructArrays" - TestExt = "Test" - UnitfulExt = "Unitful" - - [deps.Accessors.weakdeps] - AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "f7817e2e585aa6d924fd714df1e2a84be7896c60" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.3.0" -weakdeps = ["SparseArrays", "StaticArrays"] - - [deps.Adapt.extensions] - AdaptSparseArraysExt = "SparseArrays" - AdaptStaticArraysExt = "StaticArrays" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.ArnoldiMethod]] -deps = ["LinearAlgebra", "Random", "StaticArrays"] -git-tree-sha1 = "f87e559f87a45bece9c9ed97458d3afe98b1ebb9" -uuid = "ec485272-7323-5ecc-a04f-4719b315124d" -version = "0.1.0" - -[[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra"] -git-tree-sha1 = "9606d7832795cbef89e06a550475be300364a8aa" -uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.19.0" - - [deps.ArrayInterface.extensions] - ArrayInterfaceBandedMatricesExt = "BandedMatrices" - ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" - ArrayInterfaceCUDAExt = "CUDA" - ArrayInterfaceCUDSSExt = "CUDSS" - ArrayInterfaceChainRulesCoreExt = "ChainRulesCore" - ArrayInterfaceChainRulesExt = "ChainRules" - ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" - ArrayInterfaceReverseDiffExt = "ReverseDiff" - ArrayInterfaceSparseArraysExt = "SparseArrays" - ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" - ArrayInterfaceTrackerExt = "Tracker" - - [deps.ArrayInterface.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" - ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "b5bb4dc6248fde467be2a863eb8452993e74d402" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "1.1.1" - - [deps.Atomix.extensions] - AtomixCUDAExt = "CUDA" - AtomixMetalExt = "Metal" - AtomixOpenCLExt = "OpenCL" - AtomixoneAPIExt = "oneAPI" - - [deps.Atomix.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - OpenCL = "08131aa3-fb12-5dee-8b74-c09406e224a2" - oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" - -[[deps.BFloat16s]] -deps = ["LinearAlgebra", "Printf", "Random"] -git-tree-sha1 = "3b642331600250f592719140c60cf12372b82d66" -uuid = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" -version = "0.5.1" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.BitFlags]] -git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.9" - -[[deps.BitTwiddlingConvenienceFunctions]] -deps = ["Static"] -git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87" -uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" -version = "0.1.6" - -[[deps.Blosc_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Lz4_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "535c80f1c0847a4c967ea945fca21becc9de1522" -uuid = "0b7ba130-8d10-5ba8-a3d6-c5182647fed9" -version = "1.21.7+0" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1b96ea4a01afe0ea4090c5c8039690672dd13f2e" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.9+0" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CFTime]] -deps = ["Dates", "Printf"] -git-tree-sha1 = "937628bf8b377208ac359f57314fd85d3e0165d9" -uuid = "179af706-886a-5703-950a-314cd64e0468" -version = "0.1.4" - -[[deps.CPUSummary]] -deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] -git-tree-sha1 = "5a97e67919535d6841172016c9530fd69494e5ec" -uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" -version = "0.2.6" - -[[deps.CUDA]] -deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "Crayons", "DataFrames", "ExprTools", "GPUArrays", "GPUCompiler", "GPUToolbox", "KernelAbstractions", "LLVM", "LLVMLoopInfo", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "NVTX", "Preferences", "PrettyTables", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "StaticArrays", "Statistics", "demumble_jll"] -git-tree-sha1 = "b8ae59258f3d96ce75a00f9229e719356eb929d6" -uuid = "052768ef-5323-5732-b1bb-66c8b64840ba" -version = "5.8.2" - - [deps.CUDA.extensions] - ChainRulesCoreExt = "ChainRulesCore" - EnzymeCoreExt = "EnzymeCore" - SparseMatricesCSRExt = "SparseMatricesCSR" - SpecialFunctionsExt = "SpecialFunctions" - - [deps.CUDA.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - SparseMatricesCSR = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" - SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" - -[[deps.CUDA_Driver_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "18afa851ed10552e6df25dfaa7ef450104ae73d4" -uuid = "4ee394cb-3365-5eb0-8335-949819d2adfc" -version = "0.13.1+0" - -[[deps.CUDA_Runtime_Discovery]] -deps = ["Libdl"] -git-tree-sha1 = "33576c7c1b2500f8e7e6baa082e04563203b3a45" -uuid = "1af6417a-86b4-443c-805f-a4643ffb695f" -version = "0.3.5" - -[[deps.CUDA_Runtime_jll]] -deps = ["Artifacts", "CUDA_Driver_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "b5c173a64f9f4224a82fdc26fda8614cb2ecfa27" -uuid = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" -version = "0.17.1+0" - -[[deps.ClimaSeaIce]] -deps = ["Adapt", "KernelAbstractions", "Oceananigans", "RootSolvers", "Roots", "SeawaterPolynomials"] -git-tree-sha1 = "8166751d954fdaa2e9fe183ad1a24b01343d422f" -uuid = "6ba0ff68-24e6-4315-936c-2e99227c95a4" -version = "0.3.1" - -[[deps.CloseOpenIntervals]] -deps = ["Static", "StaticArrayInterface"] -git-tree-sha1 = "05ba0d07cd4fd8b7a39541e31a7b0254704ea581" -uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" -version = "0.1.13" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "962834c22b66e32aa10f7611c08c8ca4e20749a9" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.8" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.12.1" - - [deps.ColorTypes.extensions] - StyledStringsExt = "StyledStrings" - - [deps.ColorTypes.weakdeps] - StyledStrings = "f489334b-da3d-4c2e-b8f0-e476e12c162b" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.11.0" -weakdeps = ["SpecialFunctions"] - - [deps.ColorVectorSpace.extensions] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "37ea44092930b1811e666c3bc38065d7d87fcc74" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.13.1" - -[[deps.CommonDataModel]] -deps = ["CFTime", "DataStructures", "Dates", "Preferences", "Printf", "Statistics"] -git-tree-sha1 = "358bf5a7d5c1387b995a43577673290c5d344758" -uuid = "1fbeeb36-5f17-413c-809b-666fb144f157" -version = "0.3.8" - -[[deps.CommonSolve]] -git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" -uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" -version = "0.2.4" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools"] -git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.1" - -[[deps.CommonWorldInvalidations]] -git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0" -uuid = "f70d9fcc-98c5-4d4a-abd7-e4cdeebd8ca8" -version = "1.0.0" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "3a3dfb30697e96a440e4149c8c51bf32f818c0f3" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.17.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" -weakdeps = ["InverseFunctions"] - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "d9d26935a0bcffc87d2613ce14c527c99fc543fd" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.5.0" - -[[deps.ConstructionBase]] -git-tree-sha1 = "b4b092499347b18a015186eae3042f72267106cb" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.6.0" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseLinearAlgebraExt = "LinearAlgebra" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.CpuId]] -deps = ["Markdown"] -git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" -uuid = "adafc99b-e345-5852-983c-f28acb93d879" -version = "0.3.1" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.CubedSphere]] -deps = ["TaylorSeries"] -git-tree-sha1 = "afe9e8c11bf816a6fee878ddfc661e0bd138b747" -uuid = "7445602f-e544-4518-8976-18f8e8ae6cdb" -version = "0.3.2" - -[[deps.CubicSplines]] -deps = ["Random", "Test"] -git-tree-sha1 = "4875023d456ea37c581f406b8b1bc35bea95ae67" -uuid = "9c784101-8907-5a6d-9be6-98f00873c89b" -version = "0.2.1" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataDeps]] -deps = ["HTTP", "Libdl", "Reexport", "SHA", "Scratch", "p7zip_jll"] -git-tree-sha1 = "8ae085b71c462c2cb1cfedcb10c3c877ec6cf03f" -uuid = "124859b0-ceae-595e-8997-d05f6a7a8dfe" -version = "0.7.13" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "fb61b4812c49343d7ef0b533ba982c46021938a6" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.7.0" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "4e1fe97fdaed23e9dc21d4d664bea76b65fc50a0" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.22" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.DiskArrays]] -deps = ["ConstructionBase", "LRUCache", "Mmap", "OffsetArrays"] -git-tree-sha1 = "16d93ff95ecc421463eaefd694e6746bb1c0919e" -uuid = "3c3547ce-8d99-4f5e-a174-61eb10b00ae3" -version = "0.4.14" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "c7e3a542b999843086e2f29dac96a618c105be1d" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.12" - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - - [deps.Distances.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.DocStringExtensions]] -git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.5" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.11" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.ExpressionExplorer]] -git-tree-sha1 = "4a8c0a9eebf807ac42f0f6de758e60a20be25ffb" -uuid = "21656369-7473-754a-2065-74616d696c43" -version = "1.1.3" - -[[deps.FFTW]] -deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "797762812ed063b9b94f6cc7742bc8883bb5e69e" -uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.9.0" - -[[deps.FFTW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6d6219a004b8cf1e0b4dbe27a2860b8e04eba0be" -uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.11+0" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "b66970a70db13f45b7e57fbda1736e1cf72174ea" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.17.0" -weakdeps = ["HTTP"] - - [deps.FileIO.extensions] - HTTPExt = "HTTP" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "910febccb28d493032495b7009dce7d7f7aee554" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "1.0.1" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "KernelAbstractions", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "ScopedValues", "Serialization", "Statistics"] -git-tree-sha1 = "be941842a40b6daac98496994ea69054ba4c5144" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "11.2.3" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "83cf05ab16a73219e5f6bd1bdfa9848fa24ac627" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.2.0" - -[[deps.GPUCompiler]] -deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "Scratch", "Serialization", "TOML", "Tracy", "UUIDs"] -git-tree-sha1 = "eb1e212e12cc058fa16712082d44be499d23638c" -uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" -version = "1.6.1" - -[[deps.GPUToolbox]] -git-tree-sha1 = "15d8b0f5a6dca9bf8c02eeaf6687660dafa638d0" -uuid = "096a3bc2-3ced-46d0-87f4-dd12716f4bfc" -version = "0.2.0" - -[[deps.Glob]] -git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" -uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" -version = "1.3.1" - -[[deps.HDF5_jll]] -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 = "e94f84da9af7ce9c6be049e9067e511e17ff89ec" -uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" -version = "1.14.6+0" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "ed5e9c58612c4e081aecdb6e1a479e18462e041e" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.17" - -[[deps.HashArrayMappedTries]] -git-tree-sha1 = "2eaa69a7cab70a52b9687c8bf950a5a93ec895ae" -uuid = "076d061b-32b6-4027-95e0-9a2c6f6d7e74" -version = "0.2.0" - -[[deps.HostCPUFeatures]] -deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] -git-tree-sha1 = "8e070b599339d622e9a081d17230d74a5c473293" -uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" -version = "0.1.17" - -[[deps.Hwloc_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "92f65c4d78ce8cdbb6b68daf88889950b0a99d11" -uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.12.1+0" - -[[deps.IfElse]] -git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" -uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" -version = "0.1.1" - -[[deps.ImageCore]] -deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] -git-tree-sha1 = "8c193230235bbcee22c8066b0374f63b5683c2d3" -uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.10.5" - -[[deps.ImageMorphology]] -deps = ["DataStructures", "ImageCore", "LinearAlgebra", "LoopVectorization", "OffsetArrays", "Requires", "TiledIteration"] -git-tree-sha1 = "cffa21df12f00ca1a365eb8ed107614b40e8c6da" -uuid = "787d08f9-d448-5407-9aad-5290dd7ab264" -version = "0.4.6" - -[[deps.Inflate]] -git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d" -uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" -version = "0.1.5" - -[[deps.InlineStrings]] -git-tree-sha1 = "8594fac023c5ce1ef78260f24d1ad18b4327b420" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.4" - - [deps.InlineStrings.extensions] - ArrowTypesExt = "ArrowTypes" - ParsersExt = "Parsers" - - [deps.InlineStrings.weakdeps] - ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" - Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" - -[[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] -git-tree-sha1 = "0f14a5456bdc6b9731a5682f439a672750a09e48" -uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2025.0.4+0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.InverseFunctions]] -git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" -uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.17" -weakdeps = ["Dates", "Test"] - - [deps.InverseFunctions.extensions] - InverseFunctionsDatesExt = "Dates" - InverseFunctionsTestExt = "Test" - -[[deps.InvertedIndices]] -git-tree-sha1 = "6da3c4316095de0f5ee2ebd875df8721e7e0bdbe" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.1" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "e2222959fbc6c19554dc15174c81bf7bf3aa691c" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.4" - -[[deps.IterativeSolvers]] -deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"] -git-tree-sha1 = "59545b0a2b27208b0650df0a46b8e3019f85055b" -uuid = "42fd0dbc-a981-5370-80f2-aaf504508153" -version = "0.9.4" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "PrecompileTools", "ScopedValues", "TranscodingStreams"] -git-tree-sha1 = "d97791feefda45729613fafeccc4fbef3f539151" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.5.15" -weakdeps = ["UnPack"] - - [deps.JLD2.extensions] - UnPackExt = "UnPack" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "a007feb38b422fbdab534406aeca1b86823cb4d6" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.7.0" - -[[deps.JuliaNVTXCallbacks_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "af433a10f3942e882d3c671aacb203e006a5808f" -uuid = "9c1d0b0a-7046-5b2e-a33f-ea22f176ac7e" -version = "0.2.1+0" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "MacroTools", "PrecompileTools", "Requires", "StaticArrays", "UUIDs"] -git-tree-sha1 = "38a03910123867c11af988e8718d12c98bf6a234" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.37" - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - LinearAlgebraExt = "LinearAlgebra" - SparseArraysExt = "SparseArrays" - - [deps.KernelAbstractions.weakdeps] - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.Krylov]] -deps = ["LinearAlgebra", "Printf", "SparseArrays"] -git-tree-sha1 = "b94257a1a8737099ca40bc7271a8b374033473ed" -uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" -version = "0.10.1" - -[[deps.KrylovPreconditioners]] -deps = ["Adapt", "KernelAbstractions", "LightGraphs", "LinearAlgebra", "Metis", "SparseArrays"] -git-tree-sha1 = "52d302d5e950e242f037316b6dd6e1e080afea09" -uuid = "45d422c2-293f-44ce-8315-2cb988662dec" -version = "0.3.4" - - [deps.KrylovPreconditioners.extensions] - KrylovPreconditionersAMDGPUExt = "AMDGPU" - KrylovPreconditionersCUDAExt = "CUDA" - KrylovPreconditionersOneAPIExt = "oneAPI" - - [deps.KrylovPreconditioners.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Unicode"] -git-tree-sha1 = "9c7c721cfd800d87d48c745d8bfb65144f0a91df" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "9.4.2" -weakdeps = ["BFloat16s"] - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "2ea068aac1e7f0337d381b0eae3110581e3f3216" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.37+2" - -[[deps.LLVMLoopInfo]] -git-tree-sha1 = "2e5c102cfc41f48ae4740c7eca7743cc7e7b75ea" -uuid = "8b046642-f1f6-4319-8d3c-209ddc03c586" -version = "1.0.0" - -[[deps.LRUCache]] -git-tree-sha1 = "5519b95a490ff5fe629c4a7aa3b3dfc9160498b3" -uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" -version = "1.6.2" -weakdeps = ["Serialization"] - - [deps.LRUCache.extensions] - SerializationExt = ["Serialization"] - -[[deps.LaTeXStrings]] -git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.4.0" - -[[deps.LayoutPointers]] -deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "a9eaadb366f5493a5654e843864c13d8b107548c" -uuid = "10f19ff3-798f-405d-979b-55457f8fc047" -version = "0.1.17" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.LibTracyClient_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d2bc4e1034b2d43076b50f0e34ea094c2cb0a717" -uuid = "ad6e5548-8b26-5c9f-8ef3-ef0ad883f3a5" -version = "0.9.1+6" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "be484f5c92fad0bd8acfef35fe017900b0b73809" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.18.0+0" - -[[deps.LightGraphs]] -deps = ["ArnoldiMethod", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "432428df5f360964040ed60418dd5601ecd240b6" -uuid = "093fc24a-ae57-5d10-9952-331d41423f4d" -version = "1.3.5" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.29" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "f02b56007b064fbfddb4c9cd60161b6dd0f40df3" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.1.0" - -[[deps.LoopVectorization]] -deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] -git-tree-sha1 = "e5afce7eaf5b5ca0d444bcb4dc4fd78c54cbbac0" -uuid = "bdcacae8-1622-11e9-2a5c-532679323890" -version = "0.12.172" - - [deps.LoopVectorization.extensions] - ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"] - SpecialFunctionsExt = "SpecialFunctions" - - [deps.LoopVectorization.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" - -[[deps.Lz4_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "191686b1ac1ea9c89fc52e996ad15d1d241d1e33" -uuid = "5ced341a-0733-55b8-9ab6-a4889d929147" -version = "1.10.1+0" - -[[deps.METIS_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "2eefa8baa858871ae7770c98c3c2a7e46daba5b4" -uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" -version = "5.1.3+0" - -[[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] -git-tree-sha1 = "5de60bc6cb3899cd318d80d627560fae2e2d99ae" -uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2025.0.1+1" - -[[deps.MPI]] -deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] -git-tree-sha1 = "892676019c58f34e38743bc989b0eca5bce5edc5" -uuid = "da04e1cc-30fd-572f-bb4f-1f8673147195" -version = "0.20.22" - - [deps.MPI.extensions] - AMDGPUExt = "AMDGPU" - CUDAExt = "CUDA" - - [deps.MPI.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MPICH_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "d72d0ecc3f76998aac04e446547259b9ae4c265f" -uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.3.1+0" - -[[deps.MPIPreferences]] -deps = ["Libdl", "Preferences"] -git-tree-sha1 = "c105fe467859e7f6e9a852cb15cb4301126fac07" -uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" -version = "0.1.11" - -[[deps.MPItrampoline_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "e214f2a20bdd64c04cd3e4ff62d3c9be7e969a59" -uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.5.4+0" - -[[deps.MacroTools]] -git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.16" - -[[deps.ManualMemory]] -git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" -uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" -version = "0.1.8" - -[[deps.MappedArrays]] -git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" -uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" -version = "0.4.2" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.9" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.Metis]] -deps = ["CEnum", "LinearAlgebra", "METIS_jll", "SparseArrays"] -git-tree-sha1 = "54aca4fd53d39dcd2c3f1bef367b6921e8178628" -uuid = "2679e427-3c69-5b7f-982b-ece356f1e94b" -version = "1.5.0" - - [deps.Metis.extensions] - MetisGraphs = "Graphs" - MetisLightGraphs = "LightGraphs" - MetisSimpleWeightedGraphs = ["SimpleWeightedGraphs", "Graphs"] - - [deps.Metis.weakdeps] - Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" - LightGraphs = "093fc24a-ae57-5d10-9952-331d41423f4d" - SimpleWeightedGraphs = "47aef6b3-ad0c-573a-a1e2-d07658019622" - -[[deps.MicrosoftMPI_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bc95bf4149bf535c09602e3acdf950d9b4376227" -uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" -version = "10.1.4+3" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.MosaicViews]] -deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] -git-tree-sha1 = "7b86a5d4d70a9f5cdf2dacb3cbe6d251d1a61dbe" -uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389" -version = "0.3.4" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.MuladdMacro]] -git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" -uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" -version = "0.2.4" - -[[deps.NCDatasets]] -deps = ["CFTime", "CommonDataModel", "DataStructures", "Dates", "DiskArrays", "NetCDF_jll", "NetworkOptions", "Printf"] -git-tree-sha1 = "be1095e2b767c19529409ec670bcfb01b825d717" -uuid = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" -version = "0.14.8" - -[[deps.NVTX]] -deps = ["Colors", "JuliaNVTXCallbacks_jll", "Libdl", "NVTX_jll"] -git-tree-sha1 = "1a24c3430fa2ef3317c4c97fa7e431ef45793bd2" -uuid = "5da4648a-3479-48b8-97b9-01cb529c0a1f" -version = "1.0.0" - -[[deps.NVTX_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "cd475b587ff77910789a18e68da789fc446a2a05" -uuid = "e98f9f5b-d649-5603-91fd-7774390e6439" -version = "3.2.1+0" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "9b8215b1ee9e78a293f99797cd31375471b2bcae" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.1.3" - -[[deps.NetCDF_jll]] -deps = ["Artifacts", "Blosc_jll", "Bzip2_jll", "HDF5_jll", "JLLWrappers", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "TOML", "XML2_jll", "Zlib_jll", "Zstd_jll", "libaec_jll", "libzip_jll"] -git-tree-sha1 = "d574803b6055116af212434460adf654ce98e345" -uuid = "7243133f-43d8-5620-bbf4-c2c921802cf3" -version = "401.900.300+0" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.Oceananigans]] -deps = ["Adapt", "Crayons", "CubedSphere", "Dates", "Distances", "DocStringExtensions", "FFTW", "GPUArrays", "GPUArraysCore", "Glob", "InteractiveUtils", "IterativeSolvers", "JLD2", "KernelAbstractions", "Krylov", "KrylovPreconditioners", "LinearAlgebra", "Logging", "MPI", "MuladdMacro", "OffsetArrays", "OrderedCollections", "Pkg", "Printf", "Random", "ReactantCore", "Rotations", "SeawaterPolynomials", "SparseArrays", "StaticArrays", "Statistics", "StructArrays"] -git-tree-sha1 = "28e755421fb78813e45a7dffb18469ba3167ea9e" -repo-rev = "ss/fix-indexing-bug" -repo-url = "https://github.com/CliMA/Oceananigans.jl.git" -uuid = "9e8cae18-63c1-5223-a75c-80ca9d6e9a09" -version = "0.97.0" - - [deps.Oceananigans.extensions] - OceananigansAMDGPUExt = "AMDGPU" - OceananigansCUDAExt = "CUDA" - OceananigansEnzymeExt = "Enzyme" - OceananigansMakieExt = ["MakieCore", "Makie"] - OceananigansMetalExt = "Metal" - OceananigansNCDatasetsExt = "NCDatasets" - OceananigansOneAPIExt = "oneAPI" - OceananigansReactantExt = ["Reactant", "KernelAbstractions", "ConstructionBase"] - - [deps.Oceananigans.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" - MakieCore = "20f20a25-4f0e-4fdf-b5d1-57303727442b" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - NCDatasets = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" - Reactant = "3c362404-f566-11ee-1572-e11a4b42c853" - oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" - -[[deps.OffsetArrays]] -git-tree-sha1 = "117432e406b5c023f665fa73dc26e79ec3630151" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.17.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.23+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.5+0" - -[[deps.OpenMPI_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML", "Zlib_jll"] -git-tree-sha1 = "ec764453819f802fc1e144bfe750c454181bd66d" -uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" -version = "5.0.8+0" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "f1a7e086c677df53e064e0fdd2c9d0b0833e3f6e" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.5.0" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "87510f7292a2b21aeff97912b0898f9553cc5c2c" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.5.1+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1346c9208249809840c91b26703912dff463d335" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.6+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "05868e21324cede2207c6f0f466b4bfef6d5e7ee" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.8.1" - -[[deps.PaddedViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "0fac6313486baae819364c52b4f483450a9d793f" -uuid = "5432bcbf-9aad-5242-b902-cca2824c8663" -version = "0.5.12" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PkgVersion]] -deps = ["Pkg"] -git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" -uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" -version = "0.3.3" - -[[deps.PolyesterWeave]] -deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] -git-tree-sha1 = "645bed98cd47f72f67316fd42fc47dee771aefcd" -uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" -version = "0.2.2" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.4.0" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.Quaternions]] -deps = ["LinearAlgebra", "Random", "RealDot"] -git-tree-sha1 = "994cc27cdacca10e68feb291673ec3a76aa2fae9" -uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" -version = "0.7.6" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.Random123]] -deps = ["Random", "RandomNumbers"] -git-tree-sha1 = "dbe5fd0b334694e905cb9fda73cd8554333c46e2" -uuid = "74087812-796a-5b5d-8853-05524746bad3" -version = "1.7.1" - -[[deps.RandomNumbers]] -deps = ["Random"] -git-tree-sha1 = "c6ec94d2aaba1ab2ff983052cf6a606ca5985902" -uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" -version = "1.6.0" - -[[deps.ReactantCore]] -deps = ["ExpressionExplorer", "MacroTools"] -git-tree-sha1 = "120feaf6a97738e3a63902644a0afb3b69cc7b98" -uuid = "a3311ec8-5e00-46d5-b541-4f83e724a433" -version = "0.1.15" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.1" - -[[deps.RootSolvers]] -deps = ["ForwardDiff", "Printf"] -git-tree-sha1 = "892b77767827af30868111d257930f567d5d78f8" -uuid = "7181ea78-2dcb-4de3-ab41-2b8ab5a31e74" -version = "0.4.4" - -[[deps.Roots]] -deps = ["Accessors", "CommonSolve", "Printf"] -git-tree-sha1 = "668e411c0616a70860249b4c96e5d35296631a1d" -uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" -version = "2.2.8" - - [deps.Roots.extensions] - RootsChainRulesCoreExt = "ChainRulesCore" - RootsForwardDiffExt = "ForwardDiff" - RootsIntervalRootFindingExt = "IntervalRootFinding" - RootsSymPyExt = "SymPy" - RootsSymPyPythonCallExt = "SymPyPythonCall" - - [deps.Roots.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - IntervalRootFinding = "d2bf35a9-74e0-55ec-b149-d360ff49b807" - SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" - SymPyPythonCall = "bc8888f7-b21e-4b7c-a06a-5d9c9496438c" - -[[deps.Rotations]] -deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays"] -git-tree-sha1 = "5680a9276685d392c87407df00d57c9924d9f11e" -uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc" -version = "1.7.1" -weakdeps = ["RecipesBase"] - - [deps.Rotations.extensions] - RotationsRecipesBaseExt = "RecipesBase" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.SIMDTypes]] -git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" -uuid = "94e857df-77ce-4151-89e5-788b33177be4" -version = "0.1.0" - -[[deps.SLEEFPirates]] -deps = ["IfElse", "Static", "VectorizationBase"] -git-tree-sha1 = "456f610ca2fbd1c14f5fcf31c6bfadc55e7d66e0" -uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" -version = "0.6.43" - -[[deps.ScopedValues]] -deps = ["HashArrayMappedTries", "Logging"] -git-tree-sha1 = "7f44eef6b1d284465fafc66baf4d9bdcc239a15b" -uuid = "7e506255-f358-4e82-b7e4-beb19740aa63" -version = "1.4.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "9b81b8393e50b7d4e6d0a9f14e192294d3b7c109" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.3.0" - -[[deps.SeawaterPolynomials]] -git-tree-sha1 = "e2671e9abe2a2faa51dcecd9d911522931c16012" -uuid = "d496a93d-167e-4197-9f49-d3af4ff8fe40" -version = "0.3.10" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "712fb0231ee6f9120e005ccd56297abbc053e7e0" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.8" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.SharedArrays]] -deps = ["Distributed", "Mmap", "Random", "Serialization"] -uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "f305871d2f381d21527c770d4788c06c097c9bc1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.2.0" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -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"] -git-tree-sha1 = "41852b8679f78c8d8961eeadc8f62cef861a52e3" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.5.1" - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - - [deps.SpecialFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - -[[deps.StackViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "be1cf4eb0ac528d96f5115b4ed80c26a8d8ae621" -uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15" -version = "0.1.2" - -[[deps.Static]] -deps = ["CommonWorldInvalidations", "IfElse", "PrecompileTools"] -git-tree-sha1 = "f737d444cb0ad07e61b3c1bef8eb91203c321eff" -uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "1.2.0" - -[[deps.StaticArrayInterface]] -deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Static"] -git-tree-sha1 = "96381d50f1ce85f2663584c8e886a6ca97e60554" -uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" -version = "1.8.0" -weakdeps = ["OffsetArrays", "StaticArrays"] - - [deps.StaticArrayInterface.extensions] - StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" - StaticArrayInterfaceStaticArraysExt = "StaticArrays" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "cbea8a6bd7bed51b1619658dec70035e07b8502f" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.14" - - [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 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9d72a13a3f4dd3795a195ac5a44d7d6ff5f552ff" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.1" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "725421ae8e530ec29bcbdddbe91ff8053421d023" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.4.1" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "8ad2e38cbb812e29348719cc63580ec1dfeb9de4" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.7.1" -weakdeps = ["Adapt", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = ["GPUArraysCore", "KernelAbstractions"] - StructArraysLinearAlgebraExt = "LinearAlgebra" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.SurfaceFluxes]] -deps = ["DocStringExtensions", "RootSolvers", "Thermodynamics"] -git-tree-sha1 = "aee530bde85cd41374273568cb649e72d82921e7" -uuid = "49b00bb7-8bd4-4f2b-b78c-51cd0450215f" -version = "0.12.0" - - [deps.SurfaceFluxes.extensions] - CreateParametersExt = "ClimaParams" - - [deps.SurfaceFluxes.weakdeps] - ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "f2c1efbc8f3a609aadf318094f8fc5204bdaf344" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.12.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TaylorSeries]] -deps = ["LinearAlgebra", "Markdown", "SparseArrays"] -git-tree-sha1 = "2c308aab2e14b399e4b8d6af7c486a241c8ca87a" -uuid = "6aa5eb33-94cf-58f4-a9d0-e4b2c4fc25ea" -version = "0.19.1" - - [deps.TaylorSeries.extensions] - TaylorSeriesIAExt = "IntervalArithmetic" - TaylorSeriesJLD2Ext = "JLD2" - TaylorSeriesRATExt = "RecursiveArrayTools" - TaylorSeriesSAExt = "StaticArrays" - - [deps.TaylorSeries.weakdeps] - IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" - JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" - RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.Thermodynamics]] -deps = ["DocStringExtensions", "KernelAbstractions", "Random", "RootSolvers"] -git-tree-sha1 = "94f0e8e3135840568082e62fb69d31669539e627" -uuid = "b60c26fb-14c3-4610-9d3e-2d17fe7ff00c" -version = "0.12.14" - - [deps.Thermodynamics.extensions] - CreateParametersExt = "ClimaParams" - - [deps.Thermodynamics.weakdeps] - ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c" - -[[deps.ThreadingUtilities]] -deps = ["ManualMemory"] -git-tree-sha1 = "d969183d3d244b6c33796b5ed01ab97328f2db85" -uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" -version = "0.5.5" - -[[deps.TiledIteration]] -deps = ["OffsetArrays", "StaticArrayInterface"] -git-tree-sha1 = "1176cc31e867217b06928e2f140c90bd1bc88283" -uuid = "06e1c1a7-607b-532d-9fad-de7d9aa2abac" -version = "0.5.0" - -[[deps.Tracy]] -deps = ["ExprTools", "LibTracyClient_jll", "Libdl"] -git-tree-sha1 = "91dbaee0f50faa4357f7e9fc69442c7b6364dfe5" -uuid = "e689c965-62c8-4b79-b2c5-8359227902fd" -version = "0.1.5" - - [deps.Tracy.extensions] - TracyProfilerExt = "TracyProfiler_jll" - - [deps.Tracy.weakdeps] - TracyProfiler_jll = "0c351ed6-8a68-550e-8b79-de6f926da83c" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.11.3" - -[[deps.URIs]] -git-tree-sha1 = "bef26fb046d031353ef97a82e3fdb6afe7f21b1a" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.6.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "b13c4edda90890e5b04ba24e20a310fbe6f249ff" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.3.0" -weakdeps = ["LLVM"] - - [deps.UnsafeAtomics.extensions] - UnsafeAtomicsLLVM = ["LLVM"] - -[[deps.VectorizationBase]] -deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "4ab62a49f1d8d9548a1c8d1a75e5f55cf196f64e" -uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" -version = "0.21.71" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "b8b243e47228b4a3877f1dd6aee0c5d56db7fcf4" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.6+1" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "fee71455b0aaa3440dfdd54a9a36ccef829be7d4" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.8.1+0" - -[[deps.ZipFile]] -deps = ["Libdl", "Printf", "Zlib_jll"] -git-tree-sha1 = "f492b7fe1698e623024e873244f10d89c95c340a" -uuid = "a5390f91-8eb1-5f08-bee0-b1d1ffed6cea" -version = "0.10.1" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "446b23e73536f84e8037f5dce465e92275f6a308" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.7+1" - -[[deps.demumble_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6498e3581023f8e530f34760d18f75a69e3a4ea8" -uuid = "1e29f10c-031c-5a83-9565-69cddfc27673" -version = "1.3.0+0" - -[[deps.libaec_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f5733a5a9047722470b95a81e1b172383971105c" -uuid = "477f73a3-ac25-53e9-8cc3-50b2fa2566f0" -version = "1.1.3+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.11.0+0" - -[[deps.libzip_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "OpenSSL_jll", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "86addc139bca85fdf9e7741e10977c45785727b7" -uuid = "337d8026-41b4-5cde-a456-74a10e5b31d1" -version = "1.11.3+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.oneTBB_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d5a767a3bb77135a99e433afe0eb14cd7f6914c3" -uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" -version = "2022.0.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" From b31060321e6eef8b751ebb5e44433d43e8489a8d Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Tue, 22 Jul 2025 21:49:54 +1000 Subject: [PATCH 54/99] bump Oceananigans compat --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index edc3c208f..38662c9cb 100644 --- a/Project.toml +++ b/Project.toml @@ -55,7 +55,7 @@ JLD2 = "0.4, 0.5" KernelAbstractions = "0.9" MPI = "0.20" NCDatasets = "0.12, 0.13, 0.14" -Oceananigans = "0.97" +Oceananigans = "0.97.1" OffsetArrays = "1.14" PrecompileTools = "1" PythonCall = "0.9" From ed80673ee279d9f88fdceef9c34dd953346b8a3c Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Thu, 24 Jul 2025 05:35:52 +1000 Subject: [PATCH 55/99] Update make.jl --- docs/make.jl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index a9b4be69f..2d2a75586 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -2,8 +2,7 @@ using ClimaOcean, Documenter, DocumenterCitations, - Literate, - CUDA + Literate ENV["DATADEPS_ALWAYS_ACCEPT"] = "true" From 915296499e2bac710c4c3830c49aaa8b6e21c84e Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Sun, 3 Aug 2025 14:29:07 -0400 Subject: [PATCH 56/99] a working version with non constant TKE --- examples/Testing/acc_regional_simulation.jl | 237 ++++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 examples/Testing/acc_regional_simulation.jl diff --git a/examples/Testing/acc_regional_simulation.jl b/examples/Testing/acc_regional_simulation.jl new file mode 100644 index 000000000..0625b0a5f --- /dev/null +++ b/examples/Testing/acc_regional_simulation.jl @@ -0,0 +1,237 @@ +using ClimaOcean +using ClimaOcean.ECCO +using Oceananigans +using Oceananigans.Units +using Oceananigans.Grids: φnode +using CairoMakie +using CFTime +using Dates +using Printf +using CUDA + +Oceananigans.TimeSteppers.time_step!(::Nothing, dt) = nothing + +arch = GPU() +Nx = 1440 +Ny = 400 +Nz = 40 + +depth = 6000meters +z = ExponentialCoordinate(Nz, -depth) + +grid = LatitudeLongitudeGrid(arch; + size = (Nx, Ny, Nz), + halo = (7, 7, 7), + z = z, + latitude = (-80, -20), + longitude = (0, 360)) + +bottom_height = regrid_bathymetry(grid; + minimum_depth = 10meters, + interpolation_passes = 7, + major_basins = 1) + +grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height); active_cells_map=true) + +h = grid.immersed_boundary.bottom_height + +fig, ax, hm = heatmap(h, colormap=:deep, colorrange=(-depth, 0)) +Colorbar(fig[0, 1], hm, label="Bottom height (m)", vertical=false) +save("acc_bathymetry.png", fig) + +start_date = DateTime(1993, 1, 1) +end_date = DateTime(1993, 12, 1) + +# +# Restoring force +# φS φN -20 +# -------------- | ------------------ | ------------ | +# no restoring 0 linear mask 1 mask = 1 1 +# + +const φN₁ = -23 +const φN₂ = -25 +const φS₁ = -78 +const φS₂ = -75 + +@inline northern_mask(φ) = min(max((φ - φN₂) / (φN₁ - φN₂), zero(φ)), one(φ)) +@inline southern_mask(φ, z) = ifelse(z > -20, + min(max((φ - φS₂) / (φS₁ - φS₂), zero(φ)), one(φ)), + zero(φ)) + +@inline function tracer_mask(λ, φ, z, t) + n = northern_mask(φ) + s = southern_mask(φ, z) + return max(s, n) +end + +@inline function u_restoring(i, j, k, grid, clock, fields, p) + φ = φnode(i, j, k, grid, Face(), Center(), Center()) + return - p.rate * fields.u[i, j, k] * northern_mask(φ) +end + +@inline function v_restoring(i, j, k, grid, clock, fields, p) + φ = φnode(i, j, k, grid, Center(), Face(), Center()) + return - p.rate * fields.v[i, j, k] * northern_mask(φ) +end + +T_meta = Metadata(:temperature; start_date, end_date, dataset = ECCO4Monthly()) +S_meta = Metadata(:salinity; start_date, end_date, dataset = ECCO4Monthly()) + +forcing = (T = DatasetRestoring(T_meta, grid; rate=1/5days, mask=tracer_mask), + S = DatasetRestoring(S_meta, grid; rate=1/5days, mask=tracer_mask), + u = Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), + v = Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) + +momentum_advection = WENOVectorInvariant() +tracer_advection = WENO(order=7) + +ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) + +set!(ocean.model, T=T_meta[1], S=S_meta[1]) + +backend = JRA55NetCDFBackend(41) +atmosphere = JRA55PrescribedAtmosphere(arch; backend) +radiation = Radiation() +model = ocean.model + +coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) +simulation = Simulation(coupled_model; Δt=2minutes, stop_time = 10days) + +wall_time = [time_ns()] + +function progress(sim) + ocean = sim.model.ocean + u, v, w = ocean.model.velocities + T = ocean.model.tracers.T + + Tmax, Tmin = maximum(T), minimum(T) + umax = maximum(abs, u), maximum(abs, v), maximum(abs, w) + step_time = 1e-9 * (time_ns() - wall_time[1]) + + @info @sprintf("Time: %s, Iteration %d, Δt %s, max(vel): (%.2e, %.2e, %.2e), max(T): %.2f, min(T): %.2f, wtime: %s \n", + prettytime(ocean.model.clock.time), + ocean.model.clock.iteration, + prettytime(ocean.Δt), + umax..., Tmax, Tmin, prettytime(step_time)) + + wall_time[1] = time_ns() +end + +simulation.callbacks[:progress] = Callback(progress, TimeInterval(6hours)) + +ocean.output_writers[:surface] = JLD2Writer(model, merge(model.tracers, model.velocities); + schedule = TimeInterval(1days), + filename = "acc_surface_fields", + indices = (:, :, grid.Nz), + overwrite_existing = true, + array_type = Array{Float32}) +nothing #hide + +# ### Spinning up the simulation +# +# As an initial condition, we have interpolated ECCO tracer fields onto our custom grid. +# The bathymetry of the original ECCO data may differ from our grid, so the initialization of the velocity +# field might cause shocks if a large time step is used. +# +# Therefore, we spin up the simulation with a small time step to ensure that the interpolated initial +# conditions adapt to the model numerics and parameterization without causing instability. A 10-day +# integration with a maximum time step of 1 minute should be sufficient to dissipate spurious +# initialization shocks. + +run!(simulation) +nothing #hide + +# ### Running the simulation +# +# Now that the simulation has spun up, we can run it for the full 2 years. +# We increase the maximum time step size to 10 minutes and let the simulation run for 2 years. + +#= +simulation.stop_time = 2*365days +simulation.Δt = 10minutes +run!(simulation) +nothing #hide +=# + +# ## Visualizing the results +# +# The simulation has finished, let's visualize the results. +# In this section we pull up the saved data and create visualizations using the CairoMakie.jl package. +# In particular, we generate an animation of the evolution of surface fields: +# surface speed (s), surface temperature (T), and turbulent kinetic energy (e). + +u = FieldTimeSeries("acc_surface_fields.jld2", "u"; backend = OnDisk()) +v = FieldTimeSeries("acc_surface_fields.jld2", "v"; backend = OnDisk()) +T = FieldTimeSeries("acc_surface_fields.jld2", "T"; backend = OnDisk()) +e = FieldTimeSeries("acc_surface_fields.jld2", "e"; backend = OnDisk()) + +times = u.times +Nt = length(times) + +n = Observable(Nt) + +land = interior(T.grid.immersed_boundary.bottom_height) .>= 0 + +Tn = @lift begin + Tn = interior(T[$n]) + Tn[land] .= NaN + view(Tn, :, :, 1) +end + +en = @lift begin + en = interior(e[$n]) + en[land] .= NaN + view(en, :, :, 1) +end + +un = Field{Face, Center, Nothing}(u.grid) +vn = Field{Center, Face, Nothing}(v.grid) + +s = @at (Center, Center, Nothing) sqrt(un^2 + vn^2) +s = Field(s) + +sn = @lift begin + parent(un) .= parent(u[$n]) + parent(vn) .= parent(v[$n]) + compute!(s) + sn = interior(s) + sn[land] .= NaN + view(sn, :, :, 1) +end + +title = @lift string("ACC regional ocean simulation after ", + prettytime(times[$n] - times[1])) + +λ, φ, _ = nodes(T) + +fig = Figure(size = (1000, 1500)) + +axs = Axis(fig[1, 1], xlabel="Longitude (deg)", ylabel="Latitude (deg)") +axT = Axis(fig[2, 1], xlabel="Longitude (deg)", ylabel="Latitude (deg)") +axe = Axis(fig[3, 1], xlabel="Longitude (deg)", ylabel="Latitude (deg)") + +hm = heatmap!(axs, λ, φ, sn, colorrange = (0, 0.5), colormap = :deep, nan_color=:lightgray) +Colorbar(fig[1, 2], hm, label = "Surface Speed (m s⁻¹)") + +hm = heatmap!(axT, λ, φ, Tn, colorrange = (-1, 30), colormap = :magma, nan_color=:lightgray) +Colorbar(fig[2, 2], hm, label = "Surface Temperature (ᵒC)") + +hm = heatmap!(axe, λ, φ, en, colorrange = (0, 1e-3), colormap = :solar, nan_color=:lightgray) +Colorbar(fig[3, 2], hm, label = "Turbulent Kinetic Energy (m² s⁻²)") + +Label(fig[0, :], title) + +save("acc_snapshot.png", fig) +nothing #hide + +# ![](snapshot.png) + +# And now we make a movie: + +CairoMakie.record(fig, "acc_region_surface.mp4", 1:Nt, framerate = 8) do nn + n[] = nn +end +nothing #hide + +# ![](near_global_ocean_surface.mp4) From f36e9f9e0cad8075a4a183090947eec52dac1d12 Mon Sep 17 00:00:00 2001 From: Francis J Poulin Date: Sun, 3 Aug 2025 14:37:37 -0400 Subject: [PATCH 57/99] adding a regional acc example, with TKE --- examples/acc_regional_simulation.jl | 44 ++++++++++++++++------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 4e7d1821d..0625b0a5f 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -1,38 +1,43 @@ +using ClimaOcean +using ClimaOcean.ECCO using Oceananigans using Oceananigans.Units using Oceananigans.Grids: φnode -using ClimaOcean -using ClimaOcean.ECCO - -Oceananigans.TimeSteppers.time_step!(::Nothing, dt) = nothing - -using Printf using CairoMakie using CFTime using Dates +using Printf using CUDA -arch = GPU() +Oceananigans.TimeSteppers.time_step!(::Nothing, dt) = nothing +arch = GPU() Nx = 1440 Ny = 400 -Nz = 40 +Nz = 40 -depth = 6000 +depth = 6000meters +z = ExponentialCoordinate(Nz, -depth) grid = LatitudeLongitudeGrid(arch; size = (Nx, Ny, Nz), halo = (7, 7, 7), - z = ExponentialCoordinate(Nz, -depth), + z = z, latitude = (-80, -20), longitude = (0, 360)) -bottom_height = regrid_bathymetry(grid; - minimum_depth = 10, +bottom_height = regrid_bathymetry(grid; + minimum_depth = 10meters, interpolation_passes = 7, major_basins = 1) -grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height), active_cells_map=true) +grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height); active_cells_map=true) + +h = grid.immersed_boundary.bottom_height + +fig, ax, hm = heatmap(h, colormap=:deep, colorrange=(-depth, 0)) +Colorbar(fig[0, 1], hm, label="Bottom height (m)", vertical=false) +save("acc_bathymetry.png", fig) start_date = DateTime(1993, 1, 1) end_date = DateTime(1993, 12, 1) @@ -85,18 +90,17 @@ ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) set!(ocean.model, T=T_meta[1], S=S_meta[1]) - backend = JRA55NetCDFBackend(41) atmosphere = JRA55PrescribedAtmosphere(arch; backend) radiation = Radiation() model = ocean.model -coupled_model = OceanSeaIceModel(ocean; atmosphere=nothing, radiation) +coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) simulation = Simulation(coupled_model; Δt=2minutes, stop_time = 10days) wall_time = [time_ns()] -function progress(sim) +function progress(sim) ocean = sim.model.ocean u, v, w = ocean.model.velocities T = ocean.model.tracers.T @@ -114,10 +118,10 @@ function progress(sim) wall_time[1] = time_ns() end -simulation.callbacks[:progress] = Callback(progress, TimeInterval(4hours)) +simulation.callbacks[:progress] = Callback(progress, TimeInterval(6hours)) ocean.output_writers[:surface] = JLD2Writer(model, merge(model.tracers, model.velocities); - schedule = TimeInterval(5days), + schedule = TimeInterval(1days), filename = "acc_surface_fields", indices = (:, :, grid.Nz), overwrite_existing = true, @@ -143,10 +147,12 @@ nothing #hide # Now that the simulation has spun up, we can run it for the full 2 years. # We increase the maximum time step size to 10 minutes and let the simulation run for 2 years. +#= simulation.stop_time = 2*365days simulation.Δt = 10minutes run!(simulation) nothing #hide +=# # ## Visualizing the results # @@ -216,7 +222,7 @@ Colorbar(fig[3, 2], hm, label = "Turbulent Kinetic Energy (m² s⁻²)") Label(fig[0, :], title) -save("snapshot_acc.png", fig) +save("acc_snapshot.png", fig) nothing #hide # ![](snapshot.png) From ed34861ca782a3a9e560f8326eb60de5cebc1bf4 Mon Sep 17 00:00:00 2001 From: Francis Pouln Date: Sun, 3 Aug 2025 14:40:02 -0400 Subject: [PATCH 58/99] removing testing folder --- examples/Testing/acc_regional_simulation.jl | 237 -------------------- 1 file changed, 237 deletions(-) delete mode 100644 examples/Testing/acc_regional_simulation.jl diff --git a/examples/Testing/acc_regional_simulation.jl b/examples/Testing/acc_regional_simulation.jl deleted file mode 100644 index 0625b0a5f..000000000 --- a/examples/Testing/acc_regional_simulation.jl +++ /dev/null @@ -1,237 +0,0 @@ -using ClimaOcean -using ClimaOcean.ECCO -using Oceananigans -using Oceananigans.Units -using Oceananigans.Grids: φnode -using CairoMakie -using CFTime -using Dates -using Printf -using CUDA - -Oceananigans.TimeSteppers.time_step!(::Nothing, dt) = nothing - -arch = GPU() -Nx = 1440 -Ny = 400 -Nz = 40 - -depth = 6000meters -z = ExponentialCoordinate(Nz, -depth) - -grid = LatitudeLongitudeGrid(arch; - size = (Nx, Ny, Nz), - halo = (7, 7, 7), - z = z, - latitude = (-80, -20), - longitude = (0, 360)) - -bottom_height = regrid_bathymetry(grid; - minimum_depth = 10meters, - interpolation_passes = 7, - major_basins = 1) - -grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height); active_cells_map=true) - -h = grid.immersed_boundary.bottom_height - -fig, ax, hm = heatmap(h, colormap=:deep, colorrange=(-depth, 0)) -Colorbar(fig[0, 1], hm, label="Bottom height (m)", vertical=false) -save("acc_bathymetry.png", fig) - -start_date = DateTime(1993, 1, 1) -end_date = DateTime(1993, 12, 1) - -# -# Restoring force -# φS φN -20 -# -------------- | ------------------ | ------------ | -# no restoring 0 linear mask 1 mask = 1 1 -# - -const φN₁ = -23 -const φN₂ = -25 -const φS₁ = -78 -const φS₂ = -75 - -@inline northern_mask(φ) = min(max((φ - φN₂) / (φN₁ - φN₂), zero(φ)), one(φ)) -@inline southern_mask(φ, z) = ifelse(z > -20, - min(max((φ - φS₂) / (φS₁ - φS₂), zero(φ)), one(φ)), - zero(φ)) - -@inline function tracer_mask(λ, φ, z, t) - n = northern_mask(φ) - s = southern_mask(φ, z) - return max(s, n) -end - -@inline function u_restoring(i, j, k, grid, clock, fields, p) - φ = φnode(i, j, k, grid, Face(), Center(), Center()) - return - p.rate * fields.u[i, j, k] * northern_mask(φ) -end - -@inline function v_restoring(i, j, k, grid, clock, fields, p) - φ = φnode(i, j, k, grid, Center(), Face(), Center()) - return - p.rate * fields.v[i, j, k] * northern_mask(φ) -end - -T_meta = Metadata(:temperature; start_date, end_date, dataset = ECCO4Monthly()) -S_meta = Metadata(:salinity; start_date, end_date, dataset = ECCO4Monthly()) - -forcing = (T = DatasetRestoring(T_meta, grid; rate=1/5days, mask=tracer_mask), - S = DatasetRestoring(S_meta, grid; rate=1/5days, mask=tracer_mask), - u = Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), - v = Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) - -momentum_advection = WENOVectorInvariant() -tracer_advection = WENO(order=7) - -ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) - -set!(ocean.model, T=T_meta[1], S=S_meta[1]) - -backend = JRA55NetCDFBackend(41) -atmosphere = JRA55PrescribedAtmosphere(arch; backend) -radiation = Radiation() -model = ocean.model - -coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) -simulation = Simulation(coupled_model; Δt=2minutes, stop_time = 10days) - -wall_time = [time_ns()] - -function progress(sim) - ocean = sim.model.ocean - u, v, w = ocean.model.velocities - T = ocean.model.tracers.T - - Tmax, Tmin = maximum(T), minimum(T) - umax = maximum(abs, u), maximum(abs, v), maximum(abs, w) - step_time = 1e-9 * (time_ns() - wall_time[1]) - - @info @sprintf("Time: %s, Iteration %d, Δt %s, max(vel): (%.2e, %.2e, %.2e), max(T): %.2f, min(T): %.2f, wtime: %s \n", - prettytime(ocean.model.clock.time), - ocean.model.clock.iteration, - prettytime(ocean.Δt), - umax..., Tmax, Tmin, prettytime(step_time)) - - wall_time[1] = time_ns() -end - -simulation.callbacks[:progress] = Callback(progress, TimeInterval(6hours)) - -ocean.output_writers[:surface] = JLD2Writer(model, merge(model.tracers, model.velocities); - schedule = TimeInterval(1days), - filename = "acc_surface_fields", - indices = (:, :, grid.Nz), - overwrite_existing = true, - array_type = Array{Float32}) -nothing #hide - -# ### Spinning up the simulation -# -# As an initial condition, we have interpolated ECCO tracer fields onto our custom grid. -# The bathymetry of the original ECCO data may differ from our grid, so the initialization of the velocity -# field might cause shocks if a large time step is used. -# -# Therefore, we spin up the simulation with a small time step to ensure that the interpolated initial -# conditions adapt to the model numerics and parameterization without causing instability. A 10-day -# integration with a maximum time step of 1 minute should be sufficient to dissipate spurious -# initialization shocks. - -run!(simulation) -nothing #hide - -# ### Running the simulation -# -# Now that the simulation has spun up, we can run it for the full 2 years. -# We increase the maximum time step size to 10 minutes and let the simulation run for 2 years. - -#= -simulation.stop_time = 2*365days -simulation.Δt = 10minutes -run!(simulation) -nothing #hide -=# - -# ## Visualizing the results -# -# The simulation has finished, let's visualize the results. -# In this section we pull up the saved data and create visualizations using the CairoMakie.jl package. -# In particular, we generate an animation of the evolution of surface fields: -# surface speed (s), surface temperature (T), and turbulent kinetic energy (e). - -u = FieldTimeSeries("acc_surface_fields.jld2", "u"; backend = OnDisk()) -v = FieldTimeSeries("acc_surface_fields.jld2", "v"; backend = OnDisk()) -T = FieldTimeSeries("acc_surface_fields.jld2", "T"; backend = OnDisk()) -e = FieldTimeSeries("acc_surface_fields.jld2", "e"; backend = OnDisk()) - -times = u.times -Nt = length(times) - -n = Observable(Nt) - -land = interior(T.grid.immersed_boundary.bottom_height) .>= 0 - -Tn = @lift begin - Tn = interior(T[$n]) - Tn[land] .= NaN - view(Tn, :, :, 1) -end - -en = @lift begin - en = interior(e[$n]) - en[land] .= NaN - view(en, :, :, 1) -end - -un = Field{Face, Center, Nothing}(u.grid) -vn = Field{Center, Face, Nothing}(v.grid) - -s = @at (Center, Center, Nothing) sqrt(un^2 + vn^2) -s = Field(s) - -sn = @lift begin - parent(un) .= parent(u[$n]) - parent(vn) .= parent(v[$n]) - compute!(s) - sn = interior(s) - sn[land] .= NaN - view(sn, :, :, 1) -end - -title = @lift string("ACC regional ocean simulation after ", - prettytime(times[$n] - times[1])) - -λ, φ, _ = nodes(T) - -fig = Figure(size = (1000, 1500)) - -axs = Axis(fig[1, 1], xlabel="Longitude (deg)", ylabel="Latitude (deg)") -axT = Axis(fig[2, 1], xlabel="Longitude (deg)", ylabel="Latitude (deg)") -axe = Axis(fig[3, 1], xlabel="Longitude (deg)", ylabel="Latitude (deg)") - -hm = heatmap!(axs, λ, φ, sn, colorrange = (0, 0.5), colormap = :deep, nan_color=:lightgray) -Colorbar(fig[1, 2], hm, label = "Surface Speed (m s⁻¹)") - -hm = heatmap!(axT, λ, φ, Tn, colorrange = (-1, 30), colormap = :magma, nan_color=:lightgray) -Colorbar(fig[2, 2], hm, label = "Surface Temperature (ᵒC)") - -hm = heatmap!(axe, λ, φ, en, colorrange = (0, 1e-3), colormap = :solar, nan_color=:lightgray) -Colorbar(fig[3, 2], hm, label = "Turbulent Kinetic Energy (m² s⁻²)") - -Label(fig[0, :], title) - -save("acc_snapshot.png", fig) -nothing #hide - -# ![](snapshot.png) - -# And now we make a movie: - -CairoMakie.record(fig, "acc_region_surface.mp4", 1:Nt, framerate = 8) do nn - n[] = nn -end -nothing #hide - -# ![](near_global_ocean_surface.mp4) From 8068ff48c6ccf816b12130084935da4b0b2aa918 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Mon, 4 Aug 2025 13:04:05 -0400 Subject: [PATCH 59/99] Update examples/acc_regional_simulation.jl Co-authored-by: Navid C. Constantinou --- examples/acc_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/acc_regional_simulation.jl b/examples/acc_regional_simulation.jl index 0625b0a5f..4d7a9dfdb 100644 --- a/examples/acc_regional_simulation.jl +++ b/examples/acc_regional_simulation.jl @@ -88,7 +88,7 @@ tracer_advection = WENO(order=7) ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) -set!(ocean.model, T=T_meta[1], S=S_meta[1]) +set!(ocean.model, T=first(T_meta), S=first(S_meta)) backend = JRA55NetCDFBackend(41) atmosphere = JRA55PrescribedAtmosphere(arch; backend) From 2ade2a1b5223493b83c2b4f5e5fd5f80ff548ade Mon Sep 17 00:00:00 2001 From: Francis Pouln Date: Mon, 4 Aug 2025 13:16:23 -0400 Subject: [PATCH 60/99] Changing the name of the example --- ...regional_simulation.jl => panantarctic_regional_simulation.jl} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/{acc_regional_simulation.jl => panantarctic_regional_simulation.jl} (100%) diff --git a/examples/acc_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl similarity index 100% rename from examples/acc_regional_simulation.jl rename to examples/panantarctic_regional_simulation.jl From 33e0d6e7613daabc4ddcdad43e1620a89c284f19 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Mon, 4 Aug 2025 21:45:41 -0400 Subject: [PATCH 61/99] Update docs/make.jl Co-authored-by: Navid C. Constantinou --- docs/make.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index 2d2a75586..4afd3f38b 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -20,7 +20,7 @@ to_be_literated = [ # "single_column_os_papa_simulation.jl", # "one_degree_simulation.jl", # "near_global_ocean_simulation.jl" - "acc_regional_simulation.jl" + "panantarctic_regional_simulation.jl" ] for file in to_be_literated From 73d599a0fac1440d1642c9628093a3b652a1176d Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Mon, 4 Aug 2025 21:45:59 -0400 Subject: [PATCH 62/99] Update docs/make.jl Co-authored-by: Navid C. Constantinou --- docs/make.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index 4afd3f38b..0c0867f66 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -45,7 +45,7 @@ pages = [ # "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", # "One-degree ocean simulation" => "literated/one_degree_simulation.md", # "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", - "Regional ACC simulation" => "literated/acc_regional_simulation.md", + "Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", ], "Vertical grids" => "vertical_grids.md", From 861f847fd66ccf935ed2b2392c57b50d7c7ce6c4 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Mon, 4 Aug 2025 21:47:39 -0400 Subject: [PATCH 63/99] Update examples/panantarctic_regional_simulation.jl Co-authored-by: Navid C. Constantinou --- examples/panantarctic_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 4d7a9dfdb..8457e0b22 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -17,7 +17,7 @@ Ny = 400 Nz = 40 depth = 6000meters -z = ExponentialCoordinate(Nz, -depth) +z = ExponentialCoordinate(Nz, -depth, 0) grid = LatitudeLongitudeGrid(arch; size = (Nx, Ny, Nz), From f69d6cf0f3198daba60e2a473e1a4e7dd91fbbe9 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Mon, 4 Aug 2025 21:48:02 -0400 Subject: [PATCH 64/99] Update examples/panantarctic_regional_simulation.jl Co-authored-by: Navid C. Constantinou --- examples/panantarctic_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 8457e0b22..71f8027b1 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -229,9 +229,9 @@ nothing #hide # And now we make a movie: -CairoMakie.record(fig, "acc_region_surface.mp4", 1:Nt, framerate = 8) do nn +CairoMakie.record(fig, "panantarctic_regional_surface.mp4", 1:Nt, framerate = 8) do nn n[] = nn end nothing #hide -# ![](near_global_ocean_surface.mp4) +# ![](panantarctic_regional_surface.mp4) From 32360a017f5a546930b6b2e1fee2d697ae8d1d1f Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Tue, 5 Aug 2025 14:17:27 -0400 Subject: [PATCH 65/99] Update panantarctic_regional_simulation.jl --- examples/panantarctic_regional_simulation.jl | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 71f8027b1..70cd21662 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -9,8 +9,6 @@ using Dates using Printf using CUDA -Oceananigans.TimeSteppers.time_step!(::Nothing, dt) = nothing - arch = GPU() Nx = 1440 Ny = 400 From 885456a9d4ad1d294e6af9fc586a6f56e652519c Mon Sep 17 00:00:00 2001 From: Francis Pouln Date: Thu, 7 Aug 2025 17:31:58 -0400 Subject: [PATCH 66/99] uncomment the running of the simulation --- examples/panantarctic_regional_simulation.jl | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 70cd21662..d754861f3 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -145,12 +145,10 @@ nothing #hide # Now that the simulation has spun up, we can run it for the full 2 years. # We increase the maximum time step size to 10 minutes and let the simulation run for 2 years. -#= simulation.stop_time = 2*365days simulation.Δt = 10minutes run!(simulation) nothing #hide -=# # ## Visualizing the results # From 32f4df820eb442f6c3a7b0540b534b4716f1f929 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Mon, 11 Aug 2025 07:06:29 +1000 Subject: [PATCH 67/99] run less time --- examples/panantarctic_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index d754861f3..7f391e5e0 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -145,7 +145,7 @@ nothing #hide # Now that the simulation has spun up, we can run it for the full 2 years. # We increase the maximum time step size to 10 minutes and let the simulation run for 2 years. -simulation.stop_time = 2*365days +simulation.stop_time = 60days simulation.Δt = 10minutes run!(simulation) nothing #hide From cbbd8c7fd12f4796de106bc5ff955d7461d35d5f Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Mon, 11 Aug 2025 09:01:13 +1000 Subject: [PATCH 68/99] Apply suggestions from code review --- examples/panantarctic_regional_simulation.jl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 7f391e5e0..1d82bfbcd 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -35,7 +35,7 @@ h = grid.immersed_boundary.bottom_height fig, ax, hm = heatmap(h, colormap=:deep, colorrange=(-depth, 0)) Colorbar(fig[0, 1], hm, label="Bottom height (m)", vertical=false) -save("acc_bathymetry.png", fig) +save("panantarctic_bathymetry.png", fig) start_date = DateTime(1993, 1, 1) end_date = DateTime(1993, 12, 1) @@ -90,7 +90,7 @@ set!(ocean.model, T=first(T_meta), S=first(S_meta)) backend = JRA55NetCDFBackend(41) atmosphere = JRA55PrescribedAtmosphere(arch; backend) -radiation = Radiation() +radiation = Radiation(arch) model = ocean.model coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) @@ -120,7 +120,7 @@ simulation.callbacks[:progress] = Callback(progress, TimeInterval(6hours)) ocean.output_writers[:surface] = JLD2Writer(model, merge(model.tracers, model.velocities); schedule = TimeInterval(1days), - filename = "acc_surface_fields", + filename = "panantarctic_surface_fields", indices = (:, :, grid.Nz), overwrite_existing = true, array_type = Array{Float32}) @@ -157,10 +157,10 @@ nothing #hide # In particular, we generate an animation of the evolution of surface fields: # surface speed (s), surface temperature (T), and turbulent kinetic energy (e). -u = FieldTimeSeries("acc_surface_fields.jld2", "u"; backend = OnDisk()) -v = FieldTimeSeries("acc_surface_fields.jld2", "v"; backend = OnDisk()) -T = FieldTimeSeries("acc_surface_fields.jld2", "T"; backend = OnDisk()) -e = FieldTimeSeries("acc_surface_fields.jld2", "e"; backend = OnDisk()) +u = FieldTimeSeries("panantarctic_surface_fields.jld2", "u"; backend = OnDisk()) +v = FieldTimeSeries("panantarctic_surface_fields.jld2", "v"; backend = OnDisk()) +T = FieldTimeSeries("panantarctic_surface_fields.jld2", "T"; backend = OnDisk()) +e = FieldTimeSeries("panantarctic_surface_fields.jld2", "e"; backend = OnDisk()) times = u.times Nt = length(times) From 721ae2aed79560d342b1c108ac6e96ebca384cc7 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Mon, 11 Aug 2025 10:33:10 +1000 Subject: [PATCH 69/99] try ECCO2 --- examples/panantarctic_regional_simulation.jl | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 1d82bfbcd..aee92c4b6 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -73,8 +73,11 @@ end return - p.rate * fields.v[i, j, k] * northern_mask(φ) end -T_meta = Metadata(:temperature; start_date, end_date, dataset = ECCO4Monthly()) -S_meta = Metadata(:salinity; start_date, end_date, dataset = ECCO4Monthly()) +dataset = ECCO2Monthly() +T_meta = Metadata(:temperature; start_date, end_date, dataset) +S_meta = Metadata(:salinity; start_date, end_date, dataset) +u_meta = Metadata(:u_velocity; start_date, end_date, dataset) +v_meta = Metadata(:v_velocity; start_date, end_date, dataset) forcing = (T = DatasetRestoring(T_meta, grid; rate=1/5days, mask=tracer_mask), S = DatasetRestoring(S_meta, grid; rate=1/5days, mask=tracer_mask), @@ -86,7 +89,11 @@ tracer_advection = WENO(order=7) ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) -set!(ocean.model, T=first(T_meta), S=first(S_meta)) +set!(ocean.model, + T=first(T_meta), + S=first(S_meta), + u=first(u_meta), + v=first(v_meta)) backend = JRA55NetCDFBackend(41) atmosphere = JRA55PrescribedAtmosphere(arch; backend) From 80ac9824770fa0cba80ba171baa855c2cdb06959 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Mon, 11 Aug 2025 10:33:24 +1000 Subject: [PATCH 70/99] Update examples/panantarctic_regional_simulation.jl --- examples/panantarctic_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index aee92c4b6..33e37033e 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -123,7 +123,7 @@ function progress(sim) wall_time[1] = time_ns() end -simulation.callbacks[:progress] = Callback(progress, TimeInterval(6hours)) +simulation.callbacks[:progress] = Callback(progress, TimeInterval(5days)) ocean.output_writers[:surface] = JLD2Writer(model, merge(model.tracers, model.velocities); schedule = TimeInterval(1days), From 2cc41d4027dd299cbd3983cc65a06f9fd162be63 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Mon, 11 Aug 2025 10:35:12 +1000 Subject: [PATCH 71/99] Update panantarctic_regional_simulation.jl --- examples/panantarctic_regional_simulation.jl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 33e37033e..4b7c474ee 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -79,10 +79,11 @@ S_meta = Metadata(:salinity; start_date, end_date, dataset) u_meta = Metadata(:u_velocity; start_date, end_date, dataset) v_meta = Metadata(:v_velocity; start_date, end_date, dataset) -forcing = (T = DatasetRestoring(T_meta, grid; rate=1/5days, mask=tracer_mask), - S = DatasetRestoring(S_meta, grid; rate=1/5days, mask=tracer_mask), - u = Forcing(u_restoring; discrete_form=true, parameters=(; rate=1/5days)), - v = Forcing(v_restoring; discrete_form=true, parameters=(; rate=1/5days))) +rate = 1/5days +forcing = (T = DatasetRestoring(T_meta, grid; rate, mask=tracer_mask), + S = DatasetRestoring(S_meta, grid; rate, mask=tracer_mask), + u = Forcing(u_restoring; discrete_form=true, parameters=(; rate)), + v = Forcing(v_restoring; discrete_form=true, parameters=(; rate))) momentum_advection = WENOVectorInvariant() tracer_advection = WENO(order=7) From 0e2675f6f2ecafb1aa633ac85b62d1bd54bbec14 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Mon, 11 Aug 2025 10:37:03 +1000 Subject: [PATCH 72/99] Apply suggestions from code review --- examples/panantarctic_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 4b7c474ee..b22739598 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -142,7 +142,7 @@ nothing #hide # # Therefore, we spin up the simulation with a small time step to ensure that the interpolated initial # conditions adapt to the model numerics and parameterization without causing instability. A 10-day -# integration with a maximum time step of 1 minute should be sufficient to dissipate spurious +# integration with a time step of 1 minute should be sufficient to dissipate spurious # initialization shocks. run!(simulation) From c25883943d422937d86339fcfddca03c1200afea Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Tue, 12 Aug 2025 05:26:34 +1000 Subject: [PATCH 73/99] fix phrasing --- examples/near_global_ocean_simulation.jl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/examples/near_global_ocean_simulation.jl b/examples/near_global_ocean_simulation.jl index 810e7587e..b34d65d94 100644 --- a/examples/near_global_ocean_simulation.jl +++ b/examples/near_global_ocean_simulation.jl @@ -90,12 +90,13 @@ set!(ocean.model, T=Metadatum(:temperature, dataset=ECCO4Monthly()), # ### Prescribed atmosphere and radiation # # Next we build a prescribed atmosphere state and radiation model, -# which will drive the ocean simulation. We use the default `Radiation` model, +# which will drive the ocean simulation. -# The radiation model specifies an ocean albedo emissivity to compute the net radiative -# fluxes. The default ocean albedo is based on Payne (1982) and depends on cloud cover -# (calculated from the ratio of maximum possible incident solar radiation to actual -# incident solar radiation) and latitude. The ocean emissivity is set to 0.97. +# We use the default `Radiation` model. The radiation model specifies an ocean albedo +# emissivity to compute the net radiative fluxes. The default ocean albedo is based +# on Payne (1982) and depends on cloud cover (calculated from the ratio of maximum possible +# incident solar radiation to actual incident solar radiation) and latitude. +# The ocean emissivity is set to 0.97. radiation = Radiation(arch) From ac389120d775838dd20609562396219833f2887d Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Tue, 12 Aug 2025 05:26:48 +1000 Subject: [PATCH 74/99] literate --- examples/panantarctic_regional_simulation.jl | 150 +++++++++++++------ 1 file changed, 105 insertions(+), 45 deletions(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index b22739598..8090f5f60 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -1,13 +1,33 @@ +# # Panantarctic regional ocean simulation +# +# This example sets up and runs a regional ocean simulation for a domain around Antarctica +# using the Oceananigans.jl and ClimaOcean.jl. The simulation covers latitudes from 80°S to 20°S, +# with a horizontal resolution of 1/4 degree and 60 vertical levels. +# +# The simulation's results are visualized with the CairoMakie.jl package. +# +# The example showcases how we can use +# +# ## Initial setup with package imports +# +# We begin by importing the necessary Julia packages for visualization (CairoMakie), +# ocean modeling (Oceananigans, ClimaOcean), handling dates and times (Dates), +# and CUDA for running on CUDA-enabled GPUs. +# These packages provide the foundational tools for setting up the simulation environment, +# including grid setup, physical processes modeling, and data visualization. + using ClimaOcean using ClimaOcean.ECCO using Oceananigans using Oceananigans.Units -using Oceananigans.Grids: φnode +using CUDA using CairoMakie -using CFTime using Dates using Printf -using CUDA + +# ### Grid and Bathymetry + +# We start by constructing a the grid around Antarctica. arch = GPU() Nx = 1440 @@ -17,35 +37,47 @@ Nz = 40 depth = 6000meters z = ExponentialCoordinate(Nz, -depth, 0) -grid = LatitudeLongitudeGrid(arch; - size = (Nx, Ny, Nz), - halo = (7, 7, 7), - z = z, - latitude = (-80, -20), - longitude = (0, 360)) +underlying_grid = LatitudeLongitudeGrid(arch; + size = (Nx, Ny, Nz), + halo = (7, 7, 7), + z = z, + latitude = (-80, -20), + longitude = (0, 360)) -bottom_height = regrid_bathymetry(grid; +# ### Bathymetry and immersed boundary +# +# We add the bottom height from ETOPO1 data on our grid via `regrid_bathymetry`: + +bottom_height = regrid_bathymetry(underlying_grid; minimum_depth = 10meters, interpolation_passes = 7, major_basins = 1) - -grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height); active_cells_map=true) -h = grid.immersed_boundary.bottom_height +grid = ImmersedBoundaryGrid(underlying_grid, GridFittedBottom(bottom_height); active_cells_map=true) + +# and visualise it: -fig, ax, hm = heatmap(h, colormap=:deep, colorrange=(-depth, 0)) +fig, ax, hm = heatmap(grid.immersed_boundary.bottom_height, + colormap=:deep, colorrange=(-depth, 0)) Colorbar(fig[0, 1], hm, label="Bottom height (m)", vertical=false) save("panantarctic_bathymetry.png", fig) +nothing #hide -start_date = DateTime(1993, 1, 1) -end_date = DateTime(1993, 12, 1) +# ![](panantarctic_bathymetry.png) +# ### Restoring force # -# Restoring force +# We need to add restoring forces (both for tracers and for velocities) at the +# northern part of the domain to mimic the effect of the part of the ocean north +# of 20°S that we are not including in our domain. +# +# First we create some mask that have the following form: +# +# ```julia # φS φN -20 # -------------- | ------------------ | ------------ | # no restoring 0 linear mask 1 mask = 1 1 -# +# ``` const φN₁ = -23 const φN₂ = -25 @@ -53,8 +85,8 @@ const φS₁ = -78 const φS₂ = -75 @inline northern_mask(φ) = min(max((φ - φN₂) / (φN₁ - φN₂), zero(φ)), one(φ)) -@inline southern_mask(φ, z) = ifelse(z > -20, - min(max((φ - φS₂) / (φS₁ - φS₂), zero(φ)), one(φ)), +@inline southern_mask(φ, z) = ifelse(z > -20, + min(max((φ - φS₂) / (φS₁ - φS₂), zero(φ)), one(φ)), zero(φ)) @inline function tracer_mask(λ, φ, z, t) @@ -64,16 +96,23 @@ const φS₂ = -75 end @inline function u_restoring(i, j, k, grid, clock, fields, p) - φ = φnode(i, j, k, grid, Face(), Center(), Center()) + φ = Oceananigans.Grids.φnode(i, j, k, grid, Face(), Center(), Center()) return - p.rate * fields.u[i, j, k] * northern_mask(φ) end @inline function v_restoring(i, j, k, grid, clock, fields, p) - φ = φnode(i, j, k, grid, Center(), Face(), Center()) + φ = Oceananigans.Grids.φnode(i, j, k, grid, Center(), Face(), Center()) return - p.rate * fields.v[i, j, k] * northern_mask(φ) end -dataset = ECCO2Monthly() +# Now we are ready to construct the forcing. We relax temperature, salinity and +# the horizontal velocities to data from the ECCO4 dataset at a +# timescale of 5 days. + +start_date = DateTime(1993, 1, 1) +end_date = DateTime(1993, 4, 1) + +dataset = ECCO4Monthly() T_meta = Metadata(:temperature; start_date, end_date, dataset) S_meta = Metadata(:salinity; start_date, end_date, dataset) u_meta = Metadata(:u_velocity; start_date, end_date, dataset) @@ -85,25 +124,47 @@ forcing = (T = DatasetRestoring(T_meta, grid; rate, mask=tracer_mask), u = Forcing(u_restoring; discrete_form=true, parameters=(; rate)), v = Forcing(v_restoring; discrete_form=true, parameters=(; rate))) +# ### Ocean model configuration +# +# We build our ocean model using `ocean_simulation`, + momentum_advection = WENOVectorInvariant() tracer_advection = WENO(order=7) ocean = ocean_simulation(grid; forcing, momentum_advection, tracer_advection) -set!(ocean.model, - T=first(T_meta), - S=first(S_meta), - u=first(u_meta), - v=first(v_meta)) +# We initialize the ocean model with eddy-resolving ECCO2 temperature, salinity, +# and horizontal velocities. + +dataset = ECCO2Monthly() +T_meta = Metadatum(:temperature; date=start_date, dataset) +S_meta = Metadatum(:salinity; date=start_date, dataset) +u_meta = Metadatum(:u_velocity; date=start_date, dataset) +v_meta = Metadatum(:v_velocity; date=start_date, dataset) + +set!(ocean.model, T=T_meta, S=S_meta, u=u_meta, v=v_meta) + +# ### Prescribed atmosphere and radiation +# +# Next we build a prescribed atmosphere state and radiation model, +# which will drive the ocean simulation. -backend = JRA55NetCDFBackend(41) +backend = JRA55NetCDFBackend(41) atmosphere = JRA55PrescribedAtmosphere(arch; backend) radiation = Radiation(arch) -model = ocean.model + +# ## The coupled simulation + +# We put all the pieces together (ocean, atmosphere, and radiation) +# into a coupled model and a coupled simulation. +# We start with a small-ish time step of 2 minutes. +# We run the simulation for 10 days with this small-ish time step. coupled_model = OceanSeaIceModel(ocean; atmosphere, radiation) simulation = Simulation(coupled_model; Δt=2minutes, stop_time = 10days) +# A callback function to monitor the simulation's progress is always useful. + wall_time = [time_ns()] function progress(sim) @@ -124,25 +185,24 @@ function progress(sim) wall_time[1] = time_ns() end -simulation.callbacks[:progress] = Callback(progress, TimeInterval(5days)) +simulation.callbacks[:progress] = Callback(progress, TimeInterval(5days)) -ocean.output_writers[:surface] = JLD2Writer(model, merge(model.tracers, model.velocities); +# ### Output +# +# We use output writers to save the simulation data at regular intervals. + +ocean.output_writers[:surface] = JLD2Writer(model, merge(ocean.model.tracers, ocean.model.velocities); schedule = TimeInterval(1days), filename = "panantarctic_surface_fields", indices = (:, :, grid.Nz), overwrite_existing = true, array_type = Array{Float32}) -nothing #hide # ### Spinning up the simulation # -# As an initial condition, we have interpolated ECCO tracer fields onto our custom grid. -# The bathymetry of the original ECCO data may differ from our grid, so the initialization of the velocity -# field might cause shocks if a large time step is used. -# -# Therefore, we spin up the simulation with a small time step to ensure that the interpolated initial -# conditions adapt to the model numerics and parameterization without causing instability. A 10-day -# integration with a time step of 1 minute should be sufficient to dissipate spurious +# We spin up the simulation with a small time step to ensure that the interpolated initial +# conditions adapt to the model numerics and parameterization without causing instability. +# A 10-day integration with a time step of 1 minute should be sufficient to dissipate spurious # initialization shocks. run!(simulation) @@ -150,8 +210,8 @@ nothing #hide # ### Running the simulation # -# Now that the simulation has spun up, we can run it for the full 2 years. -# We increase the maximum time step size to 10 minutes and let the simulation run for 2 years. +# Now that the simulation has spun up, we can run increase the timestep and run for longer; +# here we choose 60 days. simulation.stop_time = 60days simulation.Δt = 10minutes @@ -159,7 +219,7 @@ run!(simulation) nothing #hide # ## Visualizing the results -# +# # The simulation has finished, let's visualize the results. # In this section we pull up the saved data and create visualizations using the CairoMakie.jl package. # In particular, we generate an animation of the evolution of surface fields: @@ -192,7 +252,7 @@ end un = Field{Face, Center, Nothing}(u.grid) vn = Field{Center, Face, Nothing}(v.grid) -s = @at (Center, Center, Nothing) sqrt(un^2 + vn^2) +s = @at (Center, Center, Nothing) sqrt(un^2 + vn^2) s = Field(s) sn = @lift begin @@ -204,7 +264,7 @@ sn = @lift begin view(sn, :, :, 1) end -title = @lift string("ACC regional ocean simulation after ", +title = @lift string("Panantarctic regional ocean simulation after ", prettytime(times[$n] - times[1])) λ, φ, _ = nodes(T) From 717ad8df33a234614cc9a56e0b7a2dde2d44b90a Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Tue, 12 Aug 2025 05:28:11 +1000 Subject: [PATCH 75/99] bring back everyone in the show --- docs/make.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index 0c0867f66..d638ac800 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -17,9 +17,9 @@ const EXAMPLES_DIR = joinpath(@__DIR__, "..", "examples") const OUTPUT_DIR = joinpath(@__DIR__, "src/literated") to_be_literated = [ - # "single_column_os_papa_simulation.jl", - # "one_degree_simulation.jl", - # "near_global_ocean_simulation.jl" + "single_column_os_papa_simulation.jl", + "one_degree_simulation.jl", + "near_global_ocean_simulation.jl" "panantarctic_regional_simulation.jl" ] @@ -42,9 +42,9 @@ pages = [ "Home" => "index.md", "Examples" => [ - # "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", - # "One-degree ocean simulation" => "literated/one_degree_simulation.md", - # "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", + "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", + "One-degree ocean simulation" => "literated/one_degree_simulation.md", + "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", "Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", ], From f3d6252632aa51d2536205a489516b325e1992b4 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Tue, 12 Aug 2025 05:29:29 +1000 Subject: [PATCH 76/99] there is sea ice --- docs/make.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index d638ac800..bde48487b 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -43,7 +43,7 @@ pages = [ "Examples" => [ "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", - "One-degree ocean simulation" => "literated/one_degree_simulation.md", + "One-degree ocean--sea ice simulation" => "literated/one_degree_simulation.md", "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", "Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", ], From a4941a97dcbe151e117ad0c41b80f97313597ceb Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Tue, 12 Aug 2025 06:09:38 +1000 Subject: [PATCH 77/99] dreaded missing comma --- docs/make.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index bde48487b..5145ac9e2 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -19,7 +19,7 @@ const OUTPUT_DIR = joinpath(@__DIR__, "src/literated") to_be_literated = [ "single_column_os_papa_simulation.jl", "one_degree_simulation.jl", - "near_global_ocean_simulation.jl" + "near_global_ocean_simulation.jl", "panantarctic_regional_simulation.jl" ] From 010935615755823d8d3f4884b03089e471efef54 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Wed, 13 Aug 2025 11:25:46 +1000 Subject: [PATCH 78/99] Update make.jl --- docs/make.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index 5145ac9e2..0fcc5358c 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -17,9 +17,9 @@ const EXAMPLES_DIR = joinpath(@__DIR__, "..", "examples") const OUTPUT_DIR = joinpath(@__DIR__, "src/literated") to_be_literated = [ - "single_column_os_papa_simulation.jl", - "one_degree_simulation.jl", - "near_global_ocean_simulation.jl", + # "single_column_os_papa_simulation.jl", + # "one_degree_simulation.jl", + # "near_global_ocean_simulation.jl", "panantarctic_regional_simulation.jl" ] @@ -42,9 +42,9 @@ pages = [ "Home" => "index.md", "Examples" => [ - "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", - "One-degree ocean--sea ice simulation" => "literated/one_degree_simulation.md", - "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", + # "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", + # "One-degree ocean--sea ice simulation" => "literated/one_degree_simulation.md", + # "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", "Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", ], From 122e4183fb62c78152be3e494a9d23d221021f94 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Thu, 14 Aug 2025 14:54:25 +1000 Subject: [PATCH 79/99] Update panantarctic_regional_simulation.jl --- examples/panantarctic_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 8090f5f60..f7ee0cbdb 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -191,7 +191,7 @@ simulation.callbacks[:progress] = Callback(progress, TimeInterval(5days)) # # We use output writers to save the simulation data at regular intervals. -ocean.output_writers[:surface] = JLD2Writer(model, merge(ocean.model.tracers, ocean.model.velocities); +ocean.output_writers[:surface] = JLD2Writer(ocean.model, merge(ocean.model.tracers, ocean.model.velocities); schedule = TimeInterval(1days), filename = "panantarctic_surface_fields", indices = (:, :, grid.Nz), From 1241a5d8c201e43a5c906f236ac62abb3b7a902b Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Thu, 14 Aug 2025 13:46:09 -0400 Subject: [PATCH 80/99] Update panantarctic_regional_simulation.jl --- examples/panantarctic_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index f7ee0cbdb..1434f5b82 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -107,7 +107,7 @@ end # Now we are ready to construct the forcing. We relax temperature, salinity and # the horizontal velocities to data from the ECCO4 dataset at a -# timescale of 5 days. +# timescale of 5 days. A sponge layer is used for the velocities in the north. start_date = DateTime(1993, 1, 1) end_date = DateTime(1993, 4, 1) From aebd50957a41de7f0916e466bf3c50b64cbd2eed Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Fri, 15 Aug 2025 09:22:20 +1000 Subject: [PATCH 81/99] Rephrase for clarity --- examples/panantarctic_regional_simulation.jl | 35 ++++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 1434f5b82..4f7b05c8f 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -6,7 +6,8 @@ # # The simulation's results are visualized with the CairoMakie.jl package. # -# The example showcases how we can use +# The example showcases how we can use DatasetRestoring functionality to restore to a given dataset +# and also how to add custom masks on forcings. # # ## Initial setup with package imports # @@ -95,19 +96,9 @@ const φS₂ = -75 return max(s, n) end -@inline function u_restoring(i, j, k, grid, clock, fields, p) - φ = Oceananigans.Grids.φnode(i, j, k, grid, Face(), Center(), Center()) - return - p.rate * fields.u[i, j, k] * northern_mask(φ) -end - -@inline function v_restoring(i, j, k, grid, clock, fields, p) - φ = Oceananigans.Grids.φnode(i, j, k, grid, Center(), Face(), Center()) - return - p.rate * fields.v[i, j, k] * northern_mask(φ) -end - -# Now we are ready to construct the forcing. We relax temperature, salinity and -# the horizontal velocities to data from the ECCO4 dataset at a -# timescale of 5 days. A sponge layer is used for the velocities in the north. +# Now we are ready to construct the forcing. We relax temperature, salinity to +# data from the ECCO4 dataset at a timescale of 5 days. For the velocities at the +# northern part of the domain, we apply a sponge layer (i.e., we relax them to zero). start_date = DateTime(1993, 1, 1) end_date = DateTime(1993, 4, 1) @@ -115,14 +106,22 @@ end_date = DateTime(1993, 4, 1) dataset = ECCO4Monthly() T_meta = Metadata(:temperature; start_date, end_date, dataset) S_meta = Metadata(:salinity; start_date, end_date, dataset) -u_meta = Metadata(:u_velocity; start_date, end_date, dataset) -v_meta = Metadata(:v_velocity; start_date, end_date, dataset) + +@inline function u_sponge(i, j, k, grid, clock, fields, p) + φ = Oceananigans.Grids.φnode(i, j, k, grid, Face(), Center(), Center()) + return - p.rate * fields.u[i, j, k] * northern_mask(φ) +end + +@inline function v_sponge(i, j, k, grid, clock, fields, p) + φ = Oceananigans.Grids.φnode(i, j, k, grid, Center(), Face(), Center()) + return - p.rate * fields.v[i, j, k] * northern_mask(φ) +end rate = 1/5days forcing = (T = DatasetRestoring(T_meta, grid; rate, mask=tracer_mask), S = DatasetRestoring(S_meta, grid; rate, mask=tracer_mask), - u = Forcing(u_restoring; discrete_form=true, parameters=(; rate)), - v = Forcing(v_restoring; discrete_form=true, parameters=(; rate))) + u = Forcing(u_sponge; discrete_form=true, parameters=(; rate)), + v = Forcing(v_sponge; discrete_form=true, parameters=(; rate))) # ### Ocean model configuration # From c945e637fb3e45a44dc1253a294a5c3aea70e6cc Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Sat, 16 Aug 2025 06:09:01 +1000 Subject: [PATCH 82/99] Update make.jl --- docs/make.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index 0fcc5358c..5145ac9e2 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -17,9 +17,9 @@ const EXAMPLES_DIR = joinpath(@__DIR__, "..", "examples") const OUTPUT_DIR = joinpath(@__DIR__, "src/literated") to_be_literated = [ - # "single_column_os_papa_simulation.jl", - # "one_degree_simulation.jl", - # "near_global_ocean_simulation.jl", + "single_column_os_papa_simulation.jl", + "one_degree_simulation.jl", + "near_global_ocean_simulation.jl", "panantarctic_regional_simulation.jl" ] @@ -42,9 +42,9 @@ pages = [ "Home" => "index.md", "Examples" => [ - # "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", - # "One-degree ocean--sea ice simulation" => "literated/one_degree_simulation.md", - # "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", + "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", + "One-degree ocean--sea ice simulation" => "literated/one_degree_simulation.md", + "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", "Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", ], From c079625b668cfd1380bd4ddf7978e2bb38b8bb63 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Sat, 23 Aug 2025 12:01:03 +1000 Subject: [PATCH 83/99] Update make.jl --- docs/make.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index 5145ac9e2..6ea9dc3be 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -17,10 +17,10 @@ const EXAMPLES_DIR = joinpath(@__DIR__, "..", "examples") const OUTPUT_DIR = joinpath(@__DIR__, "src/literated") to_be_literated = [ + "panantarctic_regional_simulation.jl", "single_column_os_papa_simulation.jl", "one_degree_simulation.jl", "near_global_ocean_simulation.jl", - "panantarctic_regional_simulation.jl" ] for file in to_be_literated From ef77e75627e66482ff6859324cbac657bfb17d78 Mon Sep 17 00:00:00 2001 From: Francis Pouln Date: Tue, 26 Aug 2025 09:31:17 -0400 Subject: [PATCH 84/99] updating resolution for Ny --- examples/panantarctic_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 4f7b05c8f..4b5e25fa7 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -32,7 +32,7 @@ using Printf arch = GPU() Nx = 1440 -Ny = 400 +Ny = 240 Nz = 40 depth = 6000meters From f7d8df55a3e2e1dfa445d34c62fff65d6e856db2 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Thu, 4 Sep 2025 11:22:11 +1000 Subject: [PATCH 85/99] Change interpolation passes from 7 to 5 --- examples/panantarctic_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 4b5e25fa7..cafaefdd1 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -51,7 +51,7 @@ underlying_grid = LatitudeLongitudeGrid(arch; bottom_height = regrid_bathymetry(underlying_grid; minimum_depth = 10meters, - interpolation_passes = 7, + interpolation_passes = 5, major_basins = 1) grid = ImmersedBoundaryGrid(underlying_grid, GridFittedBottom(bottom_height); active_cells_map=true) From d5291d7468b10e819087ec88508c923440942b85 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Thu, 4 Sep 2025 16:17:33 -0400 Subject: [PATCH 86/99] Update panantarctic_regional_simulation.jl adding a comment --- examples/panantarctic_regional_simulation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index cafaefdd1..a6cc8eaa2 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -27,7 +27,7 @@ using Dates using Printf # ### Grid and Bathymetry - +# # We start by constructing a the grid around Antarctica. arch = GPU() From 65bbc6e1c6beb45cb2420d0164b0c825affb1d41 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Mon, 8 Sep 2025 08:40:42 +1000 Subject: [PATCH 87/99] Update make.jl --- docs/make.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index 48159a211..7f2a8d65c 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -27,7 +27,7 @@ to_be_literated = [ for file in to_be_literated filepath = joinpath(EXAMPLES_DIR, file) withenv("JULIA_DEBUG" => "Literate") do - Literate.markdown(filepath, OUTPUT_DIR; flavor = Literate.DocumenterFlavor(), execute = true) + Literate.markdown(filepath, OUTPUT_DIR; flavor = Literate.DocumenterFlavor(), execute = "system") end GC.gc() CUDA.reclaim() From 6169de0b8c5f03cafdacc4aaaacf84dd279080c8 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Mon, 8 Sep 2025 08:42:48 +1000 Subject: [PATCH 88/99] Update make.jl --- docs/make.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index 7f2a8d65c..b644538a2 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -27,7 +27,9 @@ to_be_literated = [ for file in to_be_literated filepath = joinpath(EXAMPLES_DIR, file) withenv("JULIA_DEBUG" => "Literate") do - Literate.markdown(filepath, OUTPUT_DIR; flavor = Literate.DocumenterFlavor(), execute = "system") + run(`julia --project=docs -e "using Literate; + Literate.markdown(\"$filepath\", \"$outputpath\"; + flavor=Literate.DocumenterFlavor(), execute=true)"`) end GC.gc() CUDA.reclaim() From 6537a21b21cb74cf18b85c13024e0e35267f5d90 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Wed, 10 Sep 2025 19:31:35 -0400 Subject: [PATCH 89/99] Update make.jl Removing the example to make sure everything else works file. --- docs/make.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index b644538a2..86e63dd64 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -18,7 +18,7 @@ const EXAMPLES_DIR = joinpath(@__DIR__, "..", "examples") const OUTPUT_DIR = joinpath(@__DIR__, "src/literated") to_be_literated = [ - "panantarctic_regional_simulation.jl", + #"panantarctic_regional_simulation.jl", "single_column_os_papa_simulation.jl", "one_degree_simulation.jl", "near_global_ocean_simulation.jl", @@ -50,7 +50,7 @@ pages = [ "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", "One-degree ocean--sea ice simulation" => "literated/one_degree_simulation.md", "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", - "Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", + #"Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", ], "Vertical grids" => "vertical_grids.md", From 48c69c0ee0ae1519ec21975e50f2c1982c19b5f6 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Wed, 10 Sep 2025 19:48:18 -0400 Subject: [PATCH 90/99] Update make.jl Reverting back --- docs/make.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index 86e63dd64..b644538a2 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -18,7 +18,7 @@ const EXAMPLES_DIR = joinpath(@__DIR__, "..", "examples") const OUTPUT_DIR = joinpath(@__DIR__, "src/literated") to_be_literated = [ - #"panantarctic_regional_simulation.jl", + "panantarctic_regional_simulation.jl", "single_column_os_papa_simulation.jl", "one_degree_simulation.jl", "near_global_ocean_simulation.jl", @@ -50,7 +50,7 @@ pages = [ "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", "One-degree ocean--sea ice simulation" => "literated/one_degree_simulation.md", "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", - #"Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", + "Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", ], "Vertical grids" => "vertical_grids.md", From 805445f4b41686c4e7946c26eeb4bd5403443934 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Wed, 10 Sep 2025 20:13:29 -0400 Subject: [PATCH 91/99] Update make.jl Resort to what we have in main, exactly. Surely this must work? --- docs/make.jl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index b644538a2..2d73d1086 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -18,7 +18,7 @@ const EXAMPLES_DIR = joinpath(@__DIR__, "..", "examples") const OUTPUT_DIR = joinpath(@__DIR__, "src/literated") to_be_literated = [ - "panantarctic_regional_simulation.jl", + #"panantarctic_regional_simulation.jl", "single_column_os_papa_simulation.jl", "one_degree_simulation.jl", "near_global_ocean_simulation.jl", @@ -27,9 +27,10 @@ to_be_literated = [ for file in to_be_literated filepath = joinpath(EXAMPLES_DIR, file) withenv("JULIA_DEBUG" => "Literate") do - run(`julia --project=docs -e "using Literate; - Literate.markdown(\"$filepath\", \"$outputpath\"; - flavor=Literate.DocumenterFlavor(), execute=true)"`) + Literate.markdown(filepath, OUTPUT_DIR; flavor = Literate.DocumenterFlavor(), execute = true) + #run(`julia --project=docs -e "using Literate; + # Literate.markdown(\"$filepath\", \"$outputpath\"; + # flavor=Literate.DocumenterFlavor(), execute=true)"`) end GC.gc() CUDA.reclaim() @@ -50,7 +51,7 @@ pages = [ "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", "One-degree ocean--sea ice simulation" => "literated/one_degree_simulation.md", "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", - "Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", + #"Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", ], "Vertical grids" => "vertical_grids.md", From 4fbc9d9e3a36f55dd1515dbebf985b8302716aec Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Fri, 12 Sep 2025 08:21:27 -0400 Subject: [PATCH 92/99] Update runtests.jl I want to see if everything passes without this one test. I will return this afterwards. --- test/runtests.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 2759ada3c..f628b71b8 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -65,9 +65,9 @@ if test_group == :init || test_group == :all end # Tests JRA55 utilities, plus some DataWrangling utilities -if test_group == :JRA55 || test_group == :all - include("test_jra55.jl") -end +#if test_group == :JRA55 || test_group == :all +# include("test_jra55.jl") +#end if test_group == :ecco2_monthly || test_group == :all include("test_ecco2_monthly.jl") From 4cf99b61fe515f42b6db07ecaab1c5fce18c5688 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Fri, 12 Sep 2025 09:00:26 -0400 Subject: [PATCH 93/99] Update runtests.jl Since many tests failed I am trying what we had before. Very strange! --- test/runtests.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index f628b71b8..2759ada3c 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -65,9 +65,9 @@ if test_group == :init || test_group == :all end # Tests JRA55 utilities, plus some DataWrangling utilities -#if test_group == :JRA55 || test_group == :all -# include("test_jra55.jl") -#end +if test_group == :JRA55 || test_group == :all + include("test_jra55.jl") +end if test_group == :ecco2_monthly || test_group == :all include("test_ecco2_monthly.jl") From 2ad16535f4ae5f6ece1dab3cda5b6342b616db8d Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Mon, 15 Sep 2025 09:19:52 -0400 Subject: [PATCH 94/99] Update docs/make.jl Co-authored-by: Gregory L. Wagner --- docs/make.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index 2d73d1086..dc784e180 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -18,7 +18,7 @@ const EXAMPLES_DIR = joinpath(@__DIR__, "..", "examples") const OUTPUT_DIR = joinpath(@__DIR__, "src/literated") to_be_literated = [ - #"panantarctic_regional_simulation.jl", + "panantarctic_regional_simulation.jl", "single_column_os_papa_simulation.jl", "one_degree_simulation.jl", "near_global_ocean_simulation.jl", From 3b716db80c04ed9bbeb6d90a469fd60506b5f9ef Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Mon, 15 Sep 2025 09:20:12 -0400 Subject: [PATCH 95/99] Update docs/make.jl Co-authored-by: Gregory L. Wagner --- docs/make.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index dc784e180..d67268ffd 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -28,9 +28,9 @@ for file in to_be_literated filepath = joinpath(EXAMPLES_DIR, file) withenv("JULIA_DEBUG" => "Literate") do Literate.markdown(filepath, OUTPUT_DIR; flavor = Literate.DocumenterFlavor(), execute = true) - #run(`julia --project=docs -e "using Literate; - # Literate.markdown(\"$filepath\", \"$outputpath\"; - # flavor=Literate.DocumenterFlavor(), execute=true)"`) + run(`julia --project=docs -e "using Literate; + Literate.markdown(\"$filepath\", \"$outputpath\"; + flavor=Literate.DocumenterFlavor(), execute=true)"`) end GC.gc() CUDA.reclaim() From 3ff77e83866485c7f5dd75e53a47e49b2b449714 Mon Sep 17 00:00:00 2001 From: "Gregory L. Wagner" Date: Mon, 15 Sep 2025 11:30:07 -0400 Subject: [PATCH 96/99] Update docs/make.jl --- docs/make.jl | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index d67268ffd..3f199e3bb 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -28,9 +28,6 @@ for file in to_be_literated filepath = joinpath(EXAMPLES_DIR, file) withenv("JULIA_DEBUG" => "Literate") do Literate.markdown(filepath, OUTPUT_DIR; flavor = Literate.DocumenterFlavor(), execute = true) - run(`julia --project=docs -e "using Literate; - Literate.markdown(\"$filepath\", \"$outputpath\"; - flavor=Literate.DocumenterFlavor(), execute=true)"`) end GC.gc() CUDA.reclaim() From e4309439a93d20ab10c55687067cc1e147cd2f6f Mon Sep 17 00:00:00 2001 From: "Gregory L. Wagner" Date: Mon, 15 Sep 2025 11:30:17 -0400 Subject: [PATCH 97/99] Update docs/make.jl --- docs/make.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index 3f199e3bb..48159a211 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -48,7 +48,7 @@ pages = [ "Single-column ocean simulation" => "literated/single_column_os_papa_simulation.md", "One-degree ocean--sea ice simulation" => "literated/one_degree_simulation.md", "Near-global ocean simulation" => "literated/near_global_ocean_simulation.md", - #"Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", + "Panantarctic regional simulation" => "literated/panantarctic_regional_simulation.md", ], "Vertical grids" => "vertical_grids.md", From 0bb454257bedaa5f0ff142036b685bdb3c15296a Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Tue, 16 Sep 2025 09:45:04 -0400 Subject: [PATCH 98/99] Update panantarctic_regional_simulation.jl Let's try a coarser grid to see if this allows us to avoid the memory errors. --- examples/panantarctic_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index a6cc8eaa2..40cc6bb1d 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -31,8 +31,8 @@ using Printf # We start by constructing a the grid around Antarctica. arch = GPU() -Nx = 1440 -Ny = 240 +Nx = 720 +Ny = 120 Nz = 40 depth = 6000meters From 3aa53ac72d3dbf5f2dacdc9da393aa1e6aae4b56 Mon Sep 17 00:00:00 2001 From: "Francis J. Poulin" Date: Tue, 16 Sep 2025 17:48:37 -0400 Subject: [PATCH 99/99] Update panantarctic_regional_simulation.jl Returning to the desired resolution since more errors happened with a coarser grid. Hmm... --- examples/panantarctic_regional_simulation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/panantarctic_regional_simulation.jl b/examples/panantarctic_regional_simulation.jl index 40cc6bb1d..a6cc8eaa2 100644 --- a/examples/panantarctic_regional_simulation.jl +++ b/examples/panantarctic_regional_simulation.jl @@ -31,8 +31,8 @@ using Printf # We start by constructing a the grid around Antarctica. arch = GPU() -Nx = 720 -Ny = 120 +Nx = 1440 +Ny = 240 Nz = 40 depth = 6000meters