PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800

◆ make_nonnegative_preserving()

void pism::make_nonnegative_preserving ( double  dt,
const array::Scalar1 x,
const array::Staggered1 flux,
array::Staggered result 
)

Limit fluxes to preserve non-negativity of a transported quantity.

This method is described in [Smolarkiewicz1989].

It is based on the [Zalesak1979] flux corrected transport limiter, but for the "regular" flux instead of the "anti-diffusive" flux and with a different limiting criterion (non-negativity instead of monotonicity).

Limit fluxes to preserve non-negativity of a transported quantity.

Definition at line 75 of file flux_limiter.cc.

References pism::details::flux_out(), GlobalSum(), pism::array::Array::grid(), pism::array::max(), pism::array::min(), pism::details::np(), pism::details::pp(), and pism::array::Staggered1::star().

Referenced by pism::GeometryEvolution::flow_step(), and pism::UNO::update().