|
PISM, A Parallel Ice Sheet Model stable 0.4.1779
|
Gives an extension coefficient to maintain ellipticity of SSA where ice is thin. More...
#include <SSA.hh>
Public Member Functions | |
| SSAStrengthExtension (const NCConfigVariable &c) | |
| virtual | ~SSAStrengthExtension () |
| virtual PetscErrorCode | set_notional_strength (PetscReal my_nuH) |
| Set strength = (viscosity times thickness). | |
| virtual PetscErrorCode | set_min_thickness (PetscReal my_min_thickness) |
| Set minimum thickness to trigger use of extension. | |
| virtual PetscReal | get_notional_strength () const |
| Returns strength = (viscosity times thickness). | |
| virtual PetscReal | get_min_thickness () const |
| Returns minimum thickness to trigger use of extension. | |
Private Attributes | |
| const NCConfigVariable & | config |
| PetscReal | min_thickness |
| PetscReal | constant_nu |
Gives an extension coefficient to maintain ellipticity of SSA where ice is thin.
The SSA is basically a nonlinear elliptic, but vector-valued, equation which determines the ice velocity field from the driving stress, the basal shear stress, the ice hardness, and some boundary conditions. The problem loses ellipticity (coercivity) if the thickness actually goes to zero. This class provides an extension coefficient to maintain ellipticity.
More specifically, the SSA equations are
and another similar equation for the
-component. Schoof SchoofStream shows that these PDEs are the variational equations for a coercive functional, thus (morally) elliptic.
The quantity
is the nonlinear coefficient, and conceptually it is a membrane strength. This class extends
to have a minimum value at all points. It is a class, and not just a configuration constant, because setting both the thickness
and the value
are allowed, and setting each of these does not affect the value of the other.
| SSAStrengthExtension | ( | const NCConfigVariable & | c | ) | [inline] |
Definition at line 53 of file SSA.hh.
References config, constant_nu, and min_thickness.
| virtual ~SSAStrengthExtension | ( | ) | [inline, virtual] |
| virtual PetscReal get_min_thickness | ( | ) | const [inline, virtual] |
Returns minimum thickness to trigger use of extension.
Definition at line 84 of file SSA.hh.
References min_thickness.
Referenced by SSAFEM::PointwiseNuHAndBeta().
| virtual PetscReal get_notional_strength | ( | ) | const [inline, virtual] |
Returns strength = (viscosity times thickness).
Definition at line 79 of file SSA.hh.
References constant_nu, and min_thickness.
Referenced by SSAFD::compute_nuH_staggered(), and SSAFEM::PointwiseNuHAndBeta().
| virtual PetscErrorCode set_min_thickness | ( | PetscReal | my_min_thickness | ) | [inline, virtual] |
Set minimum thickness to trigger use of extension.
Preserves strength (nuH) by also updating using current nu.
Definition at line 70 of file SSA.hh.
References constant_nu, and min_thickness.
Referenced by IceMISMIPModel::allocate_stressbalance(), and main().
| virtual PetscErrorCode set_notional_strength | ( | PetscReal | my_nuH | ) | [inline, virtual] |
Set strength = (viscosity times thickness).
Determines nu by input strength and current min_thickness.
Definition at line 62 of file SSA.hh.
References constant_nu, and min_thickness.
Referenced by IceMISMIPModel::allocate_stressbalance(), IcePSTexModel::allocate_stressbalance(), and main().
const NCConfigVariable& config [private] |
Definition at line 87 of file SSA.hh.
Referenced by SSAStrengthExtension().
PetscReal constant_nu [private] |
Definition at line 88 of file SSA.hh.
Referenced by get_notional_strength(), set_min_thickness(), set_notional_strength(), and SSAStrengthExtension().
PetscReal min_thickness [private] |
Definition at line 88 of file SSA.hh.
Referenced by get_min_thickness(), get_notional_strength(), set_min_thickness(), set_notional_strength(), and SSAStrengthExtension().
1.7.3