Skip to content

Commit e79a04e

Browse files
committed
index into 3D fields with Nz for surface
1 parent 8a34bed commit e79a04e

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

experiments/ClimaEarth/components/ocean/oceananigans.jl

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,11 @@ function Interfacer.remap!(dst_field::OC.Field, src_field::CC.Fields.Field, rema
214214
src_field,
215215
remapping.field_ones_cc,
216216
)
217+
218+
# Get the index of the top level (surface); 1 for 2D fields, Nz for 3D fields
219+
z = size(dst_field, 3)
217220
CR.regrid!(
218-
vec(OC.interior(dst_field, :, :, 1)),
221+
vec(OC.interior(dst_field, :, :, z)),
219222
transpose(remapping.remapper_oc_to_cc),
220223
remapping.value_per_element_cc,
221224
)
@@ -425,7 +428,7 @@ function FluxCalculator.update_turbulent_fluxes!(sim::OceananigansSimulation, fi
425428
moisture_fresh_water_flux =
426429
OC.interior(sim.remapping.scratch_field_oc1, :, :, 1) ./ fresh_water_density
427430
oc_flux_S = surface_flux(sim.ocean.model.tracers.S)
428-
surface_salinity = OC.interior(sim.ocean.model.tracers.S, :, :, 1)
431+
surface_salinity = OC.interior(sim.ocean.model.tracers.S, :, :, grid.Nz)
429432
OC.interior(oc_flux_S, :, :, 1) .=
430433
OC.interior(oc_flux_S, :, :, 1) .-
431434
(1.0 .- ice_concentration) .* surface_salinity .* moisture_fresh_water_flux
@@ -459,6 +462,7 @@ so a sign change is needed when we convert from precipitation to salinity flux.
459462
function FieldExchanger.update_sim!(sim::OceananigansSimulation, csf)
460463
(; reference_density, heat_capacity, fresh_water_density) = sim.ocean_properties
461464
ice_concentration = sim.ice_concentration
465+
grid = sim.ocean.model.grid
462466

463467
# Remap radiative flux onto scratch fields; rename for clarity
464468
Interfacer.remap!(sim.remapping.scratch_field_oc1, csf.SW_d, sim.remapping) # shortwave radiation
@@ -478,7 +482,7 @@ function FieldExchanger.update_sim!(sim::OceananigansSimulation, csf)
478482
-(1 - α) .* remapped_SW_d .-
479483
ϵ * (
480484
remapped_LW_d .-
481-
σ .* (C_to_K .+ OC.interior(sim.ocean.model.tracers.T, :, :, 1)) .^ 4
485+
σ .* (C_to_K .+ OC.interior(sim.ocean.model.tracers.T, :, :, grid.Nz)) .^ 4
482486
)
483487
) ./ (reference_density * heat_capacity)
484488

@@ -493,8 +497,9 @@ function FieldExchanger.update_sim!(sim::OceananigansSimulation, csf)
493497
oc_flux_S = surface_flux(sim.ocean.model.tracers.S)
494498
OC.interior(oc_flux_S, :, :, 1) .=
495499
OC.interior(oc_flux_S, :, :, 1) .-
496-
OC.interior(sim.ocean.model.tracers.S, :, :, 1) .* (1.0 .- ice_concentration) .*
497-
(remapped_P_liq .+ remapped_P_snow) ./ fresh_water_density
500+
OC.interior(sim.ocean.model.tracers.S, :, :, grid.Nz) .*
501+
(1.0 .- ice_concentration) .* (remapped_P_liq .+ remapped_P_snow) ./
502+
fresh_water_density
498503
return nothing
499504
end
500505

0 commit comments

Comments
 (0)