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

◆ compute_nuH_staggered()

void pism::stressbalance::SSAFD::compute_nuH_staggered ( const array::Scalar1 ice_thickness,
const array::Vector1 velocity,
const array::Staggered hardness,
double  nuH_regularization,
array::Staggered result 
)
protectedvirtual

Compute the product of ice thickness and effective viscosity (on the staggered grid).

In PISM the product \(\nu H\) can be

  • constant, or
  • can be computed with a constant ice hardness \(\bar B\) (temperature-independent) but with dependence of the viscosity on the strain rates, or
  • it can depend on the strain rates and have a vertically-averaged ice hardness depending on temperature or enthalpy.

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