PISM, A Parallel Ice Sheet Model
stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
|
◆ compute_surface_gradient()
Compute the ice surface gradient for the SIA. There are three methods for computing the surface gradient. Which method is controlled by configuration parameter The most traditional method is to directly differentiate the surface elevation \(h\) by the Mahaffy method [Mahaffy]. The The alternative method, when \[\eta = H^{(2n+2)/n}\] then \(\eta\) is more regular near the margin than \(H\). So we compute the surface gradient by \[\nabla h = \frac{n}{(2n+2)} \eta^{(-n-2)/(2n+2)} \nabla \eta + \nabla b,\] recalling that \(h = H + b\). This method is only applied when \(\eta > 0\) at a given point; otherwise \(\nabla h = \nabla b\). In all cases we are computing the gradient by finite differences onto a staggered grid. In the method with \(\eta\) we apply centered differences using (roughly) the same method for \(\eta\) and \(b\) that applies directly to the surface elevation \(h\) in the
Reimplemented in pism::stressbalance::SIAFD_Regional. Definition at line 188 of file SIAFD.cc. References pism::Geometry::bed_elevation, pism::Geometry::cell_type, pism::RuntimeError::formatted(), pism::stressbalance::Inputs::geometry, pism::Geometry::ice_surface_elevation, pism::Geometry::ice_thickness, pism::Component::m_config, PISM_ERROR_LOCATION, surface_gradient_eta(), surface_gradient_haseloff(), and surface_gradient_mahaffy(). Referenced by pism::stressbalance::SIAFD_Regional::compute_surface_gradient(), and update(). |