PISM, A Parallel Ice Sheet Model  stable v2.1.1 committed by Constantine Khrulev on 2024-12-04 13:36:58 -0900

◆ update_in_place()

void pism::GeometryEvolution::update_in_place ( double  dt,
const array::Scalar bed_topography,
const array::Scalar sea_level,
const array::Scalar flux_divergence,
array::Scalar ice_thickness,
array::Scalar area_specific_volume 
)
protected

Update ice thickness and area_specific_volume in place.

It would be better to compute the change in ice thickness and area_specific_volume and then apply them, but it would require re-writing all the part-grid code from scratch. So, I make copies of ice thickness and area_specific_volume, use this old code, then compute differences to get changes. Compute ice thickness changes due to the flow of the ice.

Parameters
[in]dttime step, seconds
[in]bed_elevationbed elevation, meters
[in]sea_levelsea level elevation
[in]ice_thicknessice thickness
[in]area_specific_volumearea-specific volume (m3/m2)
[in]flux_divergenceflux divergence
[out]thickness_changeice thickness change due to flow
[out]area_specific_volume_changearea specific volume change due to flow

Definition at line 698 of file GeometryEvolution.cc.

References pism::array::Array2D< T >::add(), pism::GeometryEvolution::Impl::cell_type, pism::ParallelSection::check(), pism::GeometryCalculator::compute(), pism::GeometryCalculator::compute_mask(), pism::array::Array2D< T >::copy_from(), pism::ParallelSection::failed(), flux_divergence(), pism::RuntimeError::formatted(), pism::GeometryEvolution::Impl::gc, pism::array::CellType::ice_free_ocean(), pism::Component::m_config, pism::Component::m_grid, m_impl, pism::Component::m_log, pism::array::max(), pism::array::CellType1::next_to_ice(), pism::part_grid_threshold_thickness(), PISM_ERROR_LOCATION, pism::GeometryEvolution::Impl::residual, residual_redistribution_iteration(), pism::array::Array::set(), pism::array::Array2D< T >::star(), pism::array::CellType1::star_int(), pism::array::sum(), pism::GeometryEvolution::Impl::surface_elevation, pism::GeometryEvolution::Impl::thickness, pism::array::Array::update_ghosts(), and pism::GeometryEvolution::Impl::use_part_grid.

Referenced by flow_step().