Skip to content

Commit 8b9b11a

Browse files
authored
Update Oceananigans compat (#214)
1 parent 4bcf9b0 commit 8b9b11a

15 files changed

+88
-85
lines changed

.github/workflows/ci.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
fail-fast: false
2323
matrix:
2424
version:
25-
- '1.10'
25+
- '1.12'
2626
os:
2727
- ubuntu-latest
2828
arch:
@@ -47,7 +47,7 @@ jobs:
4747
fail-fast: false
4848
matrix:
4949
version:
50-
- '1.10'
50+
- '1.12'
5151
os:
5252
- ubuntu-latest
5353
arch:
@@ -72,7 +72,7 @@ jobs:
7272
fail-fast: false
7373
matrix:
7474
version:
75-
- '1.10'
75+
- '1.12'
7676
os:
7777
- ubuntu-latest
7878
arch:
@@ -97,7 +97,7 @@ jobs:
9797
fail-fast: false
9898
matrix:
9999
version:
100-
- '1.10'
100+
- '1.12'
101101
os:
102102
- ubuntu-latest
103103
arch:
@@ -122,7 +122,7 @@ jobs:
122122
fail-fast: false
123123
matrix:
124124
version:
125-
- '1.10'
125+
- '1.12'
126126
os:
127127
- ubuntu-latest
128128
arch:
@@ -147,7 +147,7 @@ jobs:
147147
fail-fast: false
148148
matrix:
149149
version:
150-
- '1.10'
150+
- '1.12'
151151
os:
152152
- ubuntu-latest
153153
arch:
@@ -172,7 +172,7 @@ jobs:
172172
fail-fast: false
173173
matrix:
174174
version:
175-
- '1.10'
175+
- '1.12'
176176
os:
177177
- ubuntu-latest
178178
arch:
@@ -197,7 +197,7 @@ jobs:
197197
fail-fast: false
198198
matrix:
199199
version:
200-
- '1.10'
200+
- '1.12'
201201
os:
202202
- ubuntu-latest
203203
arch:
@@ -222,7 +222,7 @@ jobs:
222222
fail-fast: false
223223
matrix:
224224
version:
225-
- '1.10'
225+
- '1.12'
226226
os:
227227
- ubuntu-latest
228228
arch:
@@ -247,7 +247,7 @@ jobs:
247247
fail-fast: false
248248
matrix:
249249
version:
250-
- '1.10'
250+
- '1.12'
251251
os:
252252
- ubuntu-latest
253253
arch:
@@ -272,7 +272,7 @@ jobs:
272272
fail-fast: false
273273
matrix:
274274
version:
275-
- '1.10'
275+
- '1.12'
276276
os:
277277
- ubuntu-latest
278278
arch:

.github/workflows/documentation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
- uses: actions/checkout@v3
2020
- uses: julia-actions/setup-julia@v2
2121
with:
22-
version: '1.10'
22+
version: '1.12'
2323
- name: Install dependencies
2424
run: julia --color=yes --project -e 'using Pkg; Pkg.instantiate()'
2525
- name: Build and deploy

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "Oceanostics"
22
uuid = "d0ccf422-c8fb-49b5-a76d-74acdde946ac"
3+
version = "0.16.5"
34
authors = ["tomchor <[email protected]>"]
4-
version = "0.16.4"
55

66
[deps]
77
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
@@ -11,7 +11,7 @@ SeawaterPolynomials = "d496a93d-167e-4197-9f49-d3af4ff8fe40"
1111

1212
[compat]
1313
DocStringExtensions = "0.9"
14-
Oceananigans = "^0.100.3"
14+
Oceananigans = "0.101"
1515
SeawaterPolynomials = "0.3"
1616
julia = "1.9"
1717

src/KineticEnergyEquation.jl

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,11 @@ KineticEnergy(model; kwargs...) = KineticEnergy(model, model.velocities...; kwar
8787
velocities,
8888
tracers,
8989
auxiliary_fields,
90-
diffusivity_fields,
90+
closure_fields,
9191
pHY′,
9292
clock,
9393
forcings)
94-
common_args = (buoyancy, background_fields, velocities, tracers, auxiliary_fields, diffusivity_fields, pHY′, clock)
94+
common_args = (buoyancy, background_fields, velocities, tracers, auxiliary_fields, closure_fields, pHY′, clock)
9595
u∂ₜu = ℑxᶜᵃᵃ(i, j, k, grid, ψf, velocities.u, u_velocity_tendency, advection, coriolis, stokes_drift, closure, u_immersed_bc, common_args..., forcings.u)
9696
v∂ₜv = ℑyᵃᶜᵃ(i, j, k, grid, ψf, velocities.v, v_velocity_tendency, advection, coriolis, stokes_drift, closure, v_immersed_bc, common_args..., forcings.v)
9797
w∂ₜw = ℑzᵃᵃᶜ(i, j, k, grid, ψf, velocities.w, w_velocity_tendency, advection, coriolis, stokes_drift, closure, w_immersed_bc, common_args..., forcings.w)
@@ -138,7 +138,7 @@ function KineticEnergyTendency(model::NonhydrostaticModel; location = (Center, C
138138
model.velocities,
139139
model.tracers,
140140
model.auxiliary_fields,
141-
model.diffusivity_fields,
141+
model.closure_fields,
142142
model.pressures.pHY′,
143143
model.clock,
144144
model.forcing,)
@@ -191,14 +191,14 @@ end
191191

192192
#+++ KineticEnergyStress
193193
@inline function uᵢ∂ⱼ_τᵢⱼᶜᶜᶜ(i, j, k, grid, closure,
194-
diffusivity_fields,
194+
closure_fields,
195195
clock,
196196
model_fields,
197197
buoyancy)
198198

199-
u∂ⱼ_τ₁ⱼ = ℑxᶜᵃᵃ(i, j, k, grid, ψf, model_fields.u, ∂ⱼ_τ₁ⱼ, closure, diffusivity_fields, clock, model_fields, buoyancy)
200-
v∂ⱼ_τ₂ⱼ = ℑyᵃᶜᵃ(i, j, k, grid, ψf, model_fields.v, ∂ⱼ_τ₂ⱼ, closure, diffusivity_fields, clock, model_fields, buoyancy)
201-
w∂ⱼ_τ₃ⱼ = ℑzᵃᵃᶜ(i, j, k, grid, ψf, model_fields.w, ∂ⱼ_τ₃ⱼ, closure, diffusivity_fields, clock, model_fields, buoyancy)
199+
u∂ⱼ_τ₁ⱼ = ℑxᶜᵃᵃ(i, j, k, grid, ψf, model_fields.u, ∂ⱼ_τ₁ⱼ, closure, closure_fields, clock, model_fields, buoyancy)
200+
v∂ⱼ_τ₂ⱼ = ℑyᵃᶜᵃ(i, j, k, grid, ψf, model_fields.v, ∂ⱼ_τ₂ⱼ, closure, closure_fields, clock, model_fields, buoyancy)
201+
w∂ⱼ_τ₃ⱼ = ℑzᵃᵃᶜ(i, j, k, grid, ψf, model_fields.w, ∂ⱼ_τ₃ⱼ, closure, closure_fields, clock, model_fields, buoyancy)
202202

203203
return u∂ⱼ_τ₁ⱼ+ v∂ⱼ_τ₂ⱼ + w∂ⱼ_τ₃ⱼ
204204
end
@@ -240,7 +240,7 @@ function KineticEnergyStress(model; location = (Center, Center, Center))
240240
model_fields = (; model_fields..., w=ZeroField())
241241
end
242242
dependencies = (model.closure,
243-
model.diffusivity_fields,
243+
model.closure_fields,
244244
model.clock,
245245
fields(model),
246246
model.buoyancy)
@@ -434,18 +434,18 @@ Axᶠᶜᶠ_δwᶠᶜᶠ_F₃₁ᶠᶜᶠ(i, j, k, grid, closure, K_fields, clo,
434434
Ayᶜᶠᶠ_δwᶜᶠᶠ_F₃₂ᶜᶠᶠ(i, j, k, grid, closure, K_fields, clo, fields, b) = -Ayᶜᶠᶠ(i, j, k, grid) * δyᵃᶠᵃ(i, j, k, grid, fields.w) * viscous_flux_wy(i, j, k, grid, closure, K_fields, clo, fields, b)
435435
Azᶜᶜᶜ_δwᶜᶜᶜ_F₃₃ᶜᶜᶜ(i, j, k, grid, closure, K_fields, clo, fields, b) = -Azᶜᶜᶜ(i, j, k, grid) * δzᵃᵃᶜ(i, j, k, grid, fields.w) * viscous_flux_wz(i, j, k, grid, closure, K_fields, clo, fields, b)
436436

437-
@inline viscous_dissipation_rate_ccc(i, j, k, grid, diffusivity_fields, fields, p) =
438-
(Axᶜᶜᶜ_δuᶜᶜᶜ_F₁₁ᶜᶜᶜ(i, j, k, grid, p.closure, diffusivity_fields, p.clock, fields, p.buoyancy) + # C, C, C
439-
ℑxyᶜᶜᵃ(i, j, k, grid, Ayᶠᶠᶜ_δuᶠᶠᶜ_F₁₂ᶠᶠᶜ, p.closure, diffusivity_fields, p.clock, fields, p.buoyancy) + # F, F, C → C, C, C
440-
ℑxzᶜᵃᶜ(i, j, k, grid, Azᶠᶜᶠ_δuᶠᶜᶠ_F₁₃ᶠᶜᶠ, p.closure, diffusivity_fields, p.clock, fields, p.buoyancy) + # F, C, F → C, C, C
437+
@inline viscous_dissipation_rate_ccc(i, j, k, grid, closure_fields, fields, p) =
438+
(Axᶜᶜᶜ_δuᶜᶜᶜ_F₁₁ᶜᶜᶜ(i, j, k, grid, p.closure, closure_fields, p.clock, fields, p.buoyancy) + # C, C, C
439+
ℑxyᶜᶜᵃ(i, j, k, grid, Ayᶠᶠᶜ_δuᶠᶠᶜ_F₁₂ᶠᶠᶜ, p.closure, closure_fields, p.clock, fields, p.buoyancy) + # F, F, C → C, C, C
440+
ℑxzᶜᵃᶜ(i, j, k, grid, Azᶠᶜᶠ_δuᶠᶜᶠ_F₁₃ᶠᶜᶠ, p.closure, closure_fields, p.clock, fields, p.buoyancy) + # F, C, F → C, C, C
441441

442-
ℑxyᶜᶜᵃ(i, j, k, grid, Axᶠᶠᶜ_δvᶠᶠᶜ_F₂₁ᶠᶠᶜ, p.closure, diffusivity_fields, p.clock, fields, p.buoyancy) + # F, F, C → C, C, C
443-
Ayᶜᶜᶜ_δvᶜᶜᶜ_F₂₂ᶜᶜᶜ(i, j, k, grid, p.closure, diffusivity_fields, p.clock, fields, p.buoyancy) + # C, C, C
444-
ℑyzᵃᶜᶜ(i, j, k, grid, Azᶜᶠᶠ_δvᶜᶠᶠ_F₂₃ᶜᶠᶠ, p.closure, diffusivity_fields, p.clock, fields, p.buoyancy) + # C, F, F → C, C, C
442+
ℑxyᶜᶜᵃ(i, j, k, grid, Axᶠᶠᶜ_δvᶠᶠᶜ_F₂₁ᶠᶠᶜ, p.closure, closure_fields, p.clock, fields, p.buoyancy) + # F, F, C → C, C, C
443+
Ayᶜᶜᶜ_δvᶜᶜᶜ_F₂₂ᶜᶜᶜ(i, j, k, grid, p.closure, closure_fields, p.clock, fields, p.buoyancy) + # C, C, C
444+
ℑyzᵃᶜᶜ(i, j, k, grid, Azᶜᶠᶠ_δvᶜᶠᶠ_F₂₃ᶜᶠᶠ, p.closure, closure_fields, p.clock, fields, p.buoyancy) + # C, F, F → C, C, C
445445

446-
ℑxzᶜᵃᶜ(i, j, k, grid, Axᶠᶜᶠ_δwᶠᶜᶠ_F₃₁ᶠᶜᶠ, p.closure, diffusivity_fields, p.clock, fields, p.buoyancy) + # F, C, F → C, C, C
447-
ℑyzᵃᶜᶜ(i, j, k, grid, Ayᶜᶠᶠ_δwᶜᶠᶠ_F₃₂ᶜᶠᶠ, p.closure, diffusivity_fields, p.clock, fields, p.buoyancy) + # C, F, F → C, C, C
448-
Azᶜᶜᶜ_δwᶜᶜᶜ_F₃₃ᶜᶜᶜ(i, j, k, grid, p.closure, diffusivity_fields, p.clock, fields, p.buoyancy) # C, C, C
446+
ℑxzᶜᵃᶜ(i, j, k, grid, Axᶠᶜᶠ_δwᶠᶜᶠ_F₃₁ᶠᶜᶠ, p.closure, closure_fields, p.clock, fields, p.buoyancy) + # F, C, F → C, C, C
447+
ℑyzᵃᶜᶜ(i, j, k, grid, Ayᶜᶠᶠ_δwᶜᶠᶠ_F₃₂ᶜᶠᶠ, p.closure, closure_fields, p.clock, fields, p.buoyancy) + # C, F, F → C, C, C
448+
Azᶜᶜᶜ_δwᶜᶜᶜ_F₃₃ᶜᶜᶜ(i, j, k, grid, p.closure, closure_fields, p.clock, fields, p.buoyancy) # C, C, C
449449
) / Vᶜᶜᶜ(i, j, k, grid) # This division by volume, coupled with the call to A*δuᵢ above, ensures a derivative operation
450450

451451
const KineticEnergyDissipationRate = CustomKFO{<:typeof(viscous_dissipation_rate_ccc)}
@@ -484,7 +484,7 @@ function DissipationRate(model; U=ZeroField(), V=ZeroField(), W=ZeroField(),
484484
model.buoyancy)
485485

486486
return KernelFunctionOperation{Center, Center, Center}(viscous_dissipation_rate_ccc, model.grid,
487-
model.diffusivity_fields, model_fields, parameters)
487+
model.closure_fields, model_fields, parameters)
488488
end
489489
#---
490490

@@ -499,7 +499,7 @@ end
499499
Σˣᶻ² = ℑxzᶜᵃᶜ(i, j, k, grid, fψ_plus_gφ², ∂zᶠᶜᶠ, u, ∂xᶠᶜᶠ, w) / 4
500500
Σʸᶻ² = ℑyzᵃᶜᶜ(i, j, k, grid, fψ_plus_gφ², ∂zᶜᶠᶠ, v, ∂yᶜᶠᶠ, w) / 4
501501

502-
ν = _νᶜᶜᶜ(i, j, k, grid, p.closure, p.diffusivity_fields, p.clock)
502+
ν = _νᶜᶜᶜ(i, j, k, grid, p.closure, p.closure_fields, p.clock, p.model_fields)
503503

504504
return 2ν * (Σˣˣ² + Σʸʸ² + Σᶻᶻ² + 2 * (Σˣʸ² + Σˣᶻ² + Σʸᶻ²))
505505
end
@@ -531,17 +531,17 @@ KernelFunctionOperation at (Center, Center, Center)
531531
└── arguments: ("Field", "Field", "Field", "NamedTuple")
532532
```
533533
"""
534-
function KineticEnergyIsotropicDissipationRate(u, v, w, closure, diffusivity_fields, clock; location = (Center, Center, Center))
534+
function KineticEnergyIsotropicDissipationRate(u, v, w, closure, closure_fields, model_fields, clock; location = (Center, Center, Center))
535535
validate_location(location, "KineticEnergyIsotropicDissipationRate")
536536
validate_dissipative_closure(closure)
537537

538-
parameters = (; closure, diffusivity_fields, clock)
538+
parameters = (; closure, closure_fields, clock, model_fields)
539539
return KernelFunctionOperation{Center, Center, Center}(isotropic_viscous_dissipation_rate_ccc, u.grid,
540540
u, v, w, parameters)
541541
end
542542

543543
@inline KineticEnergyIsotropicDissipationRate(model; location = (Center, Center, Center)) =
544-
KineticEnergyIsotropicDissipationRate(model.velocities..., model.closure, model.diffusivity_fields, model.clock; location = location)
544+
KineticEnergyIsotropicDissipationRate(model.velocities..., model.closure, model.closure_fields, fields(model), model.clock; location = location)
545545
#---
546546

547547
end # module

src/ProgressMessengers/cfl.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ tuple_to_op(::Nothing) = nothing
4141
tuple_to_op(ν_tuple::Tuple) = sum(ν_tuple)
4242

4343
@inline function (maxν::MaxViscosity)(simulation)
44-
ν = tuple_to_op(viscosity(simulation.model.closure, simulation.model.diffusivity_fields))
44+
ν = tuple_to_op(viscosity(simulation.model.closure, simulation.model.closure_fields))
4545
ν_max = maximum(abs, ν)
4646
message = @sprintf("%.2g", ν_max)
4747
maxν.with_prefix && (message = "νₘₐₓ = " * message)

src/TracerEquation.jl

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ export Advection, Diffusion, ImmersedDiffusion, TotalDiffusion, Forcing,
1111
TracerAdvection, TracerDiffusion, TracerImmersedDiffusion, TracerTotalDiffusion, TracerForcing
1212

1313
# Inline function for total diffusion
14-
@inline total_∇_dot_qᶜ(i, j, k, grid, c, c_immersed_bc, closure, diffusivity_fields, val_tracer_index, clock, model_fields, buoyancy) =
15-
∇_dot_qᶜ(i, j, k, grid, closure, diffusivity_fields, val_tracer_index, c, clock, model_fields, buoyancy) +
16-
immersed_∇_dot_qᶜ(i, j, k, grid, c, c_immersed_bc, closure, diffusivity_fields, val_tracer_index, clock, model_fields, buoyancy)
14+
@inline total_∇_dot_qᶜ(i, j, k, grid, c, c_immersed_bc, closure, closure_fields, val_tracer_index, clock, model_fields, buoyancy) =
15+
∇_dot_qᶜ(i, j, k, grid, closure, closure_fields, val_tracer_index, c, clock, model_fields, buoyancy) +
16+
immersed_∇_dot_qᶜ(i, j, k, grid, c, c_immersed_bc, closure, closure_fields, val_tracer_index, clock, model_fields, buoyancy)
1717

1818
# Type aliases for major functions
1919
const Advection = CustomKFO{<:typeof(div_Uc)}
@@ -93,15 +93,15 @@ KernelFunctionOperation at (Center, Center, Center)
9393
└── arguments: ("Nothing", "Nothing", "Val", "Field", "Clock", "NamedTuple", "Nothing")
9494
```
9595
"""
96-
function Diffusion(model, val_tracer_index, c, closure, diffusivity_fields, clock, model_fields, buoyancy; location = (Center, Center, Center))
96+
function Diffusion(model, val_tracer_index, c, closure, closure_fields, clock, model_fields, buoyancy; location = (Center, Center, Center))
9797
validate_location(location, "Diffusion", (Center, Center, Center))
98-
return KernelFunctionOperation{Center, Center, Center}(∇_dot_qᶜ, model.grid, closure, diffusivity_fields, val_tracer_index, c, clock, model_fields, buoyancy)
98+
return KernelFunctionOperation{Center, Center, Center}(∇_dot_qᶜ, model.grid, closure, closure_fields, val_tracer_index, c, clock, model_fields, buoyancy)
9999
end
100100

101101
function Diffusion(model, tracer_name; kwargs...)
102102
tracer_index = findfirst(x -> x == tracer_name, keys(model.tracers))
103103
@inbounds c = model.tracers[tracer_name]
104-
return Diffusion(model, Val(tracer_index), c, model.closure, model.diffusivity_fields, model.clock, fields(model), model.buoyancy; kwargs...)
104+
return Diffusion(model, Val(tracer_index), c, model.closure, model.closure_fields, model.clock, fields(model), model.buoyancy; kwargs...)
105105
end
106106

107107

@@ -129,16 +129,16 @@ KernelFunctionOperation at (Center, Center, Center)
129129
└── arguments: ("Field", "Nothing", "Nothing", "Nothing", "Val", "Clock", "NamedTuple")
130130
```
131131
"""
132-
function ImmersedDiffusion(model, c, c_immersed_bc, closure, diffusivity_fields, val_tracer_index, clock, model_fields; location = (Center, Center, Center))
132+
function ImmersedDiffusion(model, c, c_immersed_bc, closure, closure_fields, val_tracer_index, clock, model_fields; location = (Center, Center, Center))
133133
validate_location(location, "ImmersedDiffusion", (Center, Center, Center))
134-
return KernelFunctionOperation{Center, Center, Center}(immersed_∇_dot_qᶜ, model.grid, c, c_immersed_bc, closure, diffusivity_fields, val_tracer_index, clock, model_fields)
134+
return KernelFunctionOperation{Center, Center, Center}(immersed_∇_dot_qᶜ, model.grid, c, c_immersed_bc, closure, closure_fields, val_tracer_index, clock, model_fields)
135135
end
136136

137137
function ImmersedDiffusion(model, tracer_name; kwargs...)
138138
tracer_index = findfirst(x -> x == tracer_name, keys(model.tracers))
139139
tracer = model.tracers[tracer_name]
140140
immersed_bc = tracer.boundary_conditions.immersed
141-
return ImmersedDiffusion(model, tracer, immersed_bc, model.closure, model.diffusivity_fields, Val(tracer_index), model.clock, fields(model); kwargs...)
141+
return ImmersedDiffusion(model, tracer, immersed_bc, model.closure, model.closure_fields, Val(tracer_index), model.clock, fields(model); kwargs...)
142142
end
143143

144144
"""
@@ -165,16 +165,16 @@ KernelFunctionOperation at (Center, Center, Center)
165165
└── arguments: ("Field", "Nothing", "Nothing", "Nothing", "Val", "Clock", "NamedTuple", "Nothing")
166166
```
167167
"""
168-
function TotalDiffusion(model, c, c_immersed_bc, closure, diffusivity_fields, val_tracer_index, clock, model_fields, buoyancy; location = (Center, Center, Center))
168+
function TotalDiffusion(model, c, c_immersed_bc, closure, closure_fields, val_tracer_index, clock, model_fields, buoyancy; location = (Center, Center, Center))
169169
validate_location(location, "TotalDiffusion", (Center, Center, Center))
170-
return KernelFunctionOperation{Center, Center, Center}(total_∇_dot_qᶜ, model.grid, c, c_immersed_bc, closure, diffusivity_fields, val_tracer_index, clock, model_fields, buoyancy)
170+
return KernelFunctionOperation{Center, Center, Center}(total_∇_dot_qᶜ, model.grid, c, c_immersed_bc, closure, closure_fields, val_tracer_index, clock, model_fields, buoyancy)
171171
end
172172

173173
function TotalDiffusion(model, tracer_name; kwargs...)
174174
tracer_index = findfirst(x -> x == tracer_name, keys(model.tracers))
175175
tracer = model.tracers[tracer_index]
176176
immersed_bc = tracer.boundary_conditions.immersed
177-
return TotalDiffusion(model, tracer, immersed_bc, model.closure, model.diffusivity_fields, Val(tracer_index), model.clock, fields(model), model.buoyancy; kwargs...)
177+
return TotalDiffusion(model, tracer, immersed_bc, model.closure, model.closure_fields, Val(tracer_index), model.clock, fields(model), model.buoyancy; kwargs...)
178178
end
179179
#---
180180

0 commit comments

Comments
 (0)