PISM, A Parallel Ice Sheet Model 2.3.0-79cae578d committed by Constantine Khrulev on 2026-03-22
Loading...
Searching...
No Matches

◆ flux_limiter() [1/2]

std::array< double, 2 > pism::flux_limiter ( const stencils::Star< double > &  Q_c,
const stencils::Star< double > &  Q_e,
const stencils::Star< double > &  Q_n,
double  x_c,
double  x_e,
double  x_n,
double  dx,
double  dy,
double  dt,
double  eps 
)

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).

Parameters
[in]Q_cfluxes through sides of the current ("c") cell
[in]Q_efluxes through sides of the eastern ("e") neighbor of the current cell
[in]Q_nfluxes through sides of the northern ("n") neighbor of the current cell
[in]x_cvalue at the current cell
[in]x_evalue at the eastern neighbor
[in]x_nvalue at the northern neighbor
[in]dxgrid spacing in the X direction
[in]dygrid spacing in the Y direction
[in]dttime step length
[in]epslower bound of the transported quantity (a small positive constant)

Returns {Q_e, Q_n} - limited fluxed through eastern and northern sides of the current grid cell.

Definition at line 143 of file flux_limiter.cc.

References pism::stencils::Star< T >::e, flux_limiter(), pism::details::flux_out(), pism::stencils::Star< T >::n, pism::details::np(), and pism::details::pp().