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

◆ mass_change()

double pism::diagnostics::scalar::mass_change ( const IceModel model,
TermType  term,
AreaType  area 
)

Return total mass change due to one of the terms in the mass continuity equation.

Possible terms are

  • SMB: surface mass balance
  • BMB: basal mass balance
  • FLOW: ice flow
  • ERROR: numerical flux needed to preserve non-negativity of thickness

This computation can be restricted to grounded and floating areas using the area argument.

  • BOTH: include all contributions
  • GROUNDED: include grounded areas only
  • SHELF: include floating areas only

When computing mass changes due to flow it is important to remember that ice mass in a cell can be represented by its thickness or an "area specific volume". Transferring mass from one representation to the other does not change the mass in a cell. This explains the special case used when term == FLOW. (Note that surface and basal mass balances do not affect the area specific volume field.)

Definition at line 2077 of file diagnostics.cc.

References pism::array::Array2D< T >::add(), pism::GeometryEvolution::area_specific_volume_change_due_to_flow(), pism::diagnostics::BMB, pism::diagnostics::BOTH, pism::GeometryEvolution::bottom_surface_mass_balance(), pism::Grid::cell_area(), pism::Geometry::cell_type, pism::Grid::com, pism::GeometryEvolution::conservation_error(), pism::Grid::ctx(), pism::diagnostics::ERROR, pism::diagnostics::FLOW, pism::RuntimeError::formatted(), pism::IceModel::geometry(), pism::IceModel::geometry_evolution(), pism::Config::get_number(), pism::GlobalSum(), pism::IceModel::grid(), pism::diagnostics::GROUNDED, pism::PointsWithGhosts::next(), PISM_ERROR_LOCATION, pism::Grid::points(), pism::diagnostics::SHELF, pism::diagnostics::SMB, pism::GeometryEvolution::thickness_change_due_to_flow(), and pism::GeometryEvolution::top_surface_mass_balance().

Referenced by pism::diagnostics::scalar::IceMassFluxBasal::compute(), pism::diagnostics::scalar::IceMassFluxSurface::compute(), pism::diagnostics::scalar::IceMassFluxBasalGrounded::compute(), pism::diagnostics::scalar::IceMassFluxBasalFloating::compute(), and pism::diagnostics::scalar::IceMassFluxConservationError::compute().