Skip to content

Commit 20db923

Browse files
authored
Merge branch 'main' into ss-nc/fix-climatoloy-experiment
2 parents c8f27ad + 6852b05 commit 20db923

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

src/Bathymetry.jl

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,11 +189,7 @@ function regrid_bathymetry(target_grid;
189189
passes = interpolation_passes)
190190

191191
if minimum_depth > 0
192-
zi = interior(target_z, :, :, 1)
193-
194-
# Set the height of cells with z > -mininum_depth to z=0.
195-
# (In-place + GPU-friendly)
196-
zi .*= zi .<= - minimum_depth
192+
launch!(arch, target_grid, :xy, _enforce_minimum_depth!, target_z, minimum_depth)
197193
end
198194

199195
if major_basins < Inf
@@ -205,6 +201,17 @@ function regrid_bathymetry(target_grid;
205201
return target_z
206202
end
207203

204+
@kernel function _enforce_minimum_depth!(target_z, minimum_depth)
205+
i, j = @index(Global, NTuple)
206+
z = @inbounds target_z[i, j, 1]
207+
208+
# Fix active cells to be at least `-minimum_depth`.
209+
active = z < 0 # it's a wet cell
210+
z = ifelse(active, min(z, -minimum_depth), z)
211+
212+
@inbounds target_z[i, j, 1] = z
213+
end
214+
208215
# Here we can either use `regrid!` (three dimensional version) or `interpolate!`.
209216
function interpolate_bathymetry_in_passes(native_z, target_grid;
210217
passes = 10)
@@ -462,4 +469,4 @@ end
462469
retrieve_bathymetry(grid, ::Nothing; kw...) = regrid_bathymetry(grid; kw...)
463470
retrieve_bathymetry(grid; kw...) = regrid_bathymetry(grid; kw...)
464471

465-
end # module
472+
end # module

0 commit comments

Comments
 (0)