@@ -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.
459462function 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
499504end
500505
0 commit comments