@@ -23,6 +23,7 @@ import ..Grids: ColumnIndex, local_geometry_type
2323import .. Spaces: Spaces, AbstractSpace, AbstractPointSpace, cuda_synchronize
2424import .. Spaces: nlevels, ncolumns
2525import .. Spaces: get_mask, set_mask!
26+ import .. DataLayouts: AbstractMask
2627import .. Geometry: Geometry, Cartesian12Vector
2728import .. Utilities: PlusHalf, half
2829
@@ -285,20 +286,25 @@ Base.deepcopy_internal(field::Field, stackdict::IdDict) =
285286function Base. copyto! (
286287 dest:: Field{V, M} ,
287288 src:: Field{V, M} ,
288- mask = DataLayouts. NoMask,
289+ mask = DataLayouts. NoMask () ,
289290) where {V, M}
290291 @assert axes (dest) == axes (src)
291292 copyto! (field_values (dest), field_values (src), mask)
292293 return dest
293294end
294295
295296"""
296- fill!(field::Field, value)
297+ fill!(field::Field, value, mask = get_mask(axes(field)) )
297298
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.
299301"""
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)
302308 return field
303309end
304310"""
0 commit comments