PISM, A Parallel Ice Sheet Model
stable v2.1.1 committed by Constantine Khrulev on 2024-12-04 13:36:58 -0900
|
◆ compute_nuH_staggered()
Compute the product of ice thickness and effective viscosity (on the staggered grid). In PISM the product \(\nu H\) can be
The flow law in ice stream and ice shelf regions must, for now, be a (temperature-dependent) Glen law. This is the only flow law we know how to invert to `‘viscosity form’'. More general forms like Goldsby-Kohlstedt are not yet inverted. The viscosity form of a Glen law is \[ \nu(T^*,D) = \frac{1}{2} B(T^*) D^{(1/n)-1}\, D_{ij} \] where \[ D_{ij} = \frac{1}{2} \left(\frac{\partial U_i}{\partial x_j} + \frac{\partial U_j}{\partial x_i}\right) \] is the strain rate tensor and \(B\) is an ice hardness related to the ice softness \(A(T^*)\) by \[ B(T^*)=A(T^*)^{-1/n} \] in the case of a temperature dependent Glen-type law. (Here \(T^*\) is the pressure-adjusted temperature.) The effective viscosity is then \[ \nu = \frac{\bar B}{2} \left[\left(\frac{\partial u}{\partial x}\right)^2 + \left(\frac{\partial v}{\partial y}\right)^2 + \frac{\partial u}{\partial x} \frac{\partial v}{\partial y} + \frac{1}{4} \left(\frac{\partial u}{\partial y} + \frac{\partial v}{\partial x}\right)^2 \right]^{(1-n)/(2n)} \] where in the temperature-dependent case \[ \bar B = \frac{1}{H}\,\int_b^h B(T^*)\,dz\] This integral is approximately computed by the trapezoid rule. The result of this procedure is \(\nu H\), not just \(\nu\), this it is a vertical integral, not average, of viscosity. The resulting effective viscosity times thickness is regularized by ensuring that its minimum is at least \(\epsilon\). This regularization constant is an argument. In this implementation we set \(\nu H\) to a constant anywhere the ice is thinner than a certain minimum. See SSAStrengthExtension and compare how this issue is handled when -cfbc is set. Definition at line 1437 of file SSAFD.cc. References pism::stressbalance::SSAStrengthExtension::get_notional_strength(), pism::stressbalance::ShallowStressBalance::m_e_factor, pism::stressbalance::ShallowStressBalance::m_flow_law, pism::Component::m_grid, pism::secondInvariant_2D(), pism::stressbalance::SSA::strength_extension, pism::array::Array::update_ghosts(), and pism::stressbalance::ShallowStressBalance::velocity(). Referenced by picard_manager(). |