diff --git a/examples/freely_decaying_mediterraneum.jl b/examples/freely_decaying_mediterraneum.jl index a32f7479..ac068612 100644 --- a/examples/freely_decaying_mediterraneum.jl +++ b/examples/freely_decaying_mediterraneum.jl @@ -13,7 +13,7 @@ using Oceananigans.Coriolis: ActiveCellEnstrophyConserving ##### Regional Mediterranean grid ##### -function regrid_ecco_tracers_to_grid(grid) +function regrid_ecco_tracers(grid) Tecco = ecco2_field(:temperature) Secco = ecco2_field(:salinity) @@ -25,6 +25,7 @@ function regrid_ecco_tracers_to_grid(grid) T = CenterField(grid) S = CenterField(grid) + # Regrid to our grid! three_dimensional_regrid!(T, Tecco) three_dimensional_regrid!(S, Secco) @@ -52,7 +53,7 @@ h = regrid_bathymetry(grid, height_above_water=1) grid = ImmersedBoundaryGrid(grid, GridFittedBottom(h)) -T, S = regrid_ecco_tracers_to_grid(grid) +T, S = regrid_ecco_tracers(grid) mask_immersed_field!(T) mask_immersed_field!(S) diff --git a/src/DataWrangling/ECCO2.jl b/src/DataWrangling/ECCO2.jl index 0b03deeb..186f72d2 100644 --- a/src/DataWrangling/ECCO2.jl +++ b/src/DataWrangling/ECCO2.jl @@ -112,12 +112,17 @@ function ecco2_field(variable_name; return field end +@kernel function _set_ecco2_mask!(mask, Tᵢ, minimum_value) + i, j, k = @index(Global, NTuple) + @inbounds mask[i, j, k] = ifelse(Tᵢ[i, j, k] < minimum_value, 0, 1) +end + function ecco2_center_mask(architecture = CPU(); minimum_value = Float32(-1e5)) Tᵢ = ecco2_field(:temperature; architecture) mask = CenterField(Tᵢ.grid) # Set the mask with ones where T is defined - set!(mask, (!).(Tᵢ .< minimum_value)) + launch!(architecture, Tᵢ.grid, _set_ecco2_mask!, mask, Tᵢ, minimum_value) return mask end