diff --git a/src/AbstractOperations/conditional_operations.jl b/src/AbstractOperations/conditional_operations.jl index 513dd97c282..bd6bb5f6bf1 100644 --- a/src/AbstractOperations/conditional_operations.jl +++ b/src/AbstractOperations/conditional_operations.jl @@ -151,6 +151,11 @@ end return ifelse(conditioned, value, co.mask) end +# Fallbacks for reductions +for reduction! in (:sum!, :maximum!, :minimum!, :all!, :any!, :prod!) + @eval Base.$(reduction!)(f, int_r, co::NoConditionCO, kwargs...) = Base.$(reduction!)(f, int_r, co.operand; kwargs...) +end + # Conditions: general, nothing, array @inline evaluate_condition(condition, i, j, k, grid, args...) = condition(i, j, k, grid, args...) @inline evaluate_condition(::Nothing, i, j, k, grid, args...) = true @@ -202,6 +207,7 @@ end @inline conditional_length(c::ConditionalOperation, ::Colon) = conditional_length(c) @inline conditional_length(c::ConditionalOperation, ::NTuple{3}) = conditional_length(c) @inline conditional_length(c::ConditionalOperation, dims) = sum(conditional_one(c, 0); dims) +@inline conditional_length(c::NoConditionCO, args...) = conditional_length(c.operand, args...) # Disambiguations @inline conditional_length(c::ConditionalOperation, dims::Int) = sum(conditional_one(c, 0); dims) diff --git a/src/AbstractOperations/metric_field_reductions.jl b/src/AbstractOperations/metric_field_reductions.jl index 88f3cab81c8..ce422baa930 100644 --- a/src/AbstractOperations/metric_field_reductions.jl +++ b/src/AbstractOperations/metric_field_reductions.jl @@ -1,4 +1,4 @@ -using Statistics: mean!, sum! +using Statistics: sum! using Oceananigans.Utils: tupleit using Oceananigans.Grids: regular_dimensions diff --git a/test/test_field_scans.jl b/test/test_field_scans.jl index 88a69b05c23..90379d27182 100644 --- a/test/test_field_scans.jl +++ b/test/test_field_scans.jl @@ -2,7 +2,7 @@ include("dependencies_for_runtests.jl") using Statistics using Oceananigans.Architectures: on_architecture -using Oceananigans.AbstractOperations: BinaryOperation +using Oceananigans.AbstractOperations: BinaryOperation, GridMetricOperation using Oceananigans.Fields: ReducedField, CenterField, ZFaceField, compute_at!, @compute, reverse_cumsum! using Oceananigans.BoundaryConditions: fill_halo_regions! using Oceananigans.Grids: halo_size