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