@@ -23,6 +23,7 @@ import ..Grids: ColumnIndex, local_geometry_type
23
23
import .. Spaces: Spaces, AbstractSpace, AbstractPointSpace, cuda_synchronize
24
24
import .. Spaces: nlevels, ncolumns
25
25
import .. Spaces: get_mask, set_mask!
26
+ import .. DataLayouts: AbstractMask
26
27
import .. Geometry: Geometry, Cartesian12Vector
27
28
import .. Utilities: PlusHalf, half
28
29
@@ -285,20 +286,25 @@ Base.deepcopy_internal(field::Field, stackdict::IdDict) =
285
286
function Base. copyto! (
286
287
dest:: Field{V, M} ,
287
288
src:: Field{V, M} ,
288
- mask = DataLayouts. NoMask,
289
+ mask = DataLayouts. NoMask () ,
289
290
) where {V, M}
290
291
@assert axes (dest) == axes (src)
291
292
copyto! (field_values (dest), field_values (src), mask)
292
293
return dest
293
294
end
294
295
295
296
"""
296
- fill!(field::Field, value)
297
+ fill!(field::Field, value, mask = get_mask(axes(field)) )
297
298
298
- Fill `field` with `value`.
299
+ Fill `field` with `value`. The mask is extracted from the field's space,
300
+ and `fill!` is only applied where the `mask` is true.
299
301
"""
300
- function Base. fill! (field:: Field , value)
301
- fill! (field_values (field), value)
302
+ function Base. fill! (
303
+ field:: Field ,
304
+ value,
305
+ mask:: AbstractMask = get_mask (axes (field)),
306
+ )
307
+ fill! (field_values (field), value, mask)
302
308
return field
303
309
end
304
310
"""
0 commit comments