PISM, A Parallel Ice Sheet Model stable 0.4.1779
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes

IceFlowLaw Class Reference

#include <flowlaws.hh>

Inheritance diagram for IceFlowLaw:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 IceFlowLaw (MPI_Comm c, const char pre[], const NCConfigVariable &config)
virtual ~IceFlowLaw ()
virtual PetscErrorCode setFromOptions ()
virtual PetscReal effectiveViscosity (PetscReal hardness, PetscReal u_x, PetscReal u_y, PetscReal v_x, PetscReal v_y) const
 Returns viscosity and not the nu * H product.
virtual void effectiveViscosity_with_derivative (PetscReal hardness, const PetscReal Du[], PetscReal *nu, PetscReal *dnu) const
 Computes effective viscosity and its derivative with respect to the second invariant.
virtual PetscReal averagedHardness_from_enth (PetscReal thickness, PetscInt kbelowH, const PetscReal *zlevels, const PetscReal *enthalpy) const
virtual PetscReal exponent () const
virtual PetscReal hardnessParameter_from_enth (PetscReal E, PetscReal p) const
virtual PetscReal softnessParameter_from_enth (PetscReal E, PetscReal p) const =0
virtual PetscReal flow_from_enth (PetscReal stress, PetscReal E, PetscReal pressure, PetscReal grainsize) const
 The flow law itself.

Public Attributes

PetscReal rho
 ice density
PetscReal beta_CC_grad
 Clausius-Clapeyron gradient.
PetscReal k
 thermal conductivity
PetscReal c_p
 specific heat capacity
PetscReal latentHeat
 latent heat capacity
PetscReal melting_point_temp
 for water, 273.15 K

Protected Member Functions

PetscReal softnessParameter_paterson_budd (PetscReal T_pa) const
 Return the softness parameter A(T) for a given temperature T.

Protected Attributes

PetscReal schoofLen
PetscReal schoofVel
PetscReal schoofReg
PetscReal A_cold
PetscReal A_warm
PetscReal Q_cold
PetscReal Q_warm
PetscReal crit_temp
PetscReal standard_gravity
PetscReal ideal_gas_constant
PetscReal n
MPI_Comm comm
char prefix [256]
EnthalpyConverterEC

Detailed Description

Abstract class containing the constitutive relation for the flow of ice (of the Paterson-Budd type).

This is the interface which most of PISM uses for rheology.

The current implementation of stress-balance computations in PISM restrict possible choices of rheologies to ones that

Note:
IceFlowLaw derived classes should implement hardnessParameter... in terms of softnessParameter... That way in many cases we only need to re-implement softnessParameter... to turn one flow law into another.

Definition at line 56 of file flowlaws.hh.


Constructor & Destructor Documentation

IceFlowLaw ( MPI_Comm  c,
const char  pre[],
const NCConfigVariable &  config 
)
~IceFlowLaw ( ) [virtual]

Definition at line 79 of file flowlaws.cc.

References EC.


Member Function Documentation

PetscReal averagedHardness_from_enth ( PetscReal  thickness,
PetscInt  kbelowH,
const PetscReal zlevels,
const PetscReal enthalpy 
) const [virtual]

Computes vertical average of B(E,pressure) ice hardness, namely $\bar B(E,p)$. See comment for hardnessParameter(). /*! Note E[0],...,E[kbelowH] must be valid.

Reimplemented in CustomGlenIce.

Definition at line 170 of file flowlaws.cc.

References EC, EnthalpyConverter::getPressureFromDepth(), and hardnessParameter_from_enth().

Referenced by SSAFD::compute_hardav_staggered(), and SSAFEM::setup().

PetscReal effectiveViscosity ( PetscReal  hardness,
PetscReal  u_x,
PetscReal  u_y,
PetscReal  v_x,
PetscReal  v_y 
) const [virtual]

Returns viscosity and not the nu * H product.

Definition at line 127 of file flowlaws.cc.

References n, schoofReg, and secondInvariant().

Referenced by SSAFD::compute_nuH_staggered().

void effectiveViscosity_with_derivative ( PetscReal  hardness,
const PetscReal  Du[],
PetscReal nu,
PetscReal dnu 
) const [virtual]

Computes effective viscosity and its derivative with respect to the second invariant.

Definition at line 136 of file flowlaws.cc.

References n, schoofReg, and secondInvariantDu().

Referenced by SSAFEM::PointwiseNuHAndBeta().

virtual PetscReal exponent ( ) const [inline, virtual]
PetscReal flow_from_enth ( PetscReal  stress,
PetscReal  E,
PetscReal  pressure,
PetscReal  grainsize 
) const [virtual]

The flow law itself.

Reimplemented in ThermoGlenIce, and CustomGlenIce.

Definition at line 158 of file flowlaws.cc.

References n, and softnessParameter_from_enth().

Referenced by SIAFD::compute_diffusive_flux(), IceFlowLawIsPatersonBuddCold(), IceFlowLawUsesGrainSize(), and main().

PetscReal hardnessParameter_from_enth ( PetscReal  E,
PetscReal  p 
) const [virtual]
PetscErrorCode setFromOptions ( ) [virtual]

Reimplemented in GPBLDIce.

Definition at line 83 of file flowlaws.cc.

References A_cold, A_warm, comm, crit_temp, prefix, Q_cold, Q_warm, schoofLen, schoofReg, schoofVel, and secpera.

Referenced by IceMISMIPModel::allocate_flowlaw(), and IceModel::allocate_flowlaw().

virtual PetscReal softnessParameter_from_enth ( PetscReal  E,
PetscReal  p 
) const [pure virtual]
PetscReal softnessParameter_paterson_budd ( PetscReal  T_pa) const [protected]

Return the softness parameter A(T) for a given temperature T.

This is not a natural part of all IceFlowLaw instances.

Definition at line 150 of file flowlaws.cc.

References A_cold, A_warm, crit_temp, ideal_gas_constant, Q_cold, and Q_warm.

Referenced by ThermoGlenIce::softnessParameter_from_temp().


Member Data Documentation

PetscReal A_cold [protected]
PetscReal A_warm [protected]

Clausius-Clapeyron gradient.

Definition at line 82 of file flowlaws.hh.

Referenced by SIA_Sliding::basalVelocitySIA(), IceFlowLaw(), IceModel::putTempAtDepth(), and IceModel::temperatureStep().

MPI_Comm comm [protected]

Definition at line 99 of file flowlaws.hh.

Referenced by GPBLDIce::setFromOptions(), and setFromOptions().

PetscReal crit_temp [protected]

Definition at line 91 of file flowlaws.hh.

Referenced by IceFlowLaw(), setFromOptions(), and softnessParameter_paterson_budd().

EnthalpyConverter* EC [protected]

Definition at line 101 of file flowlaws.hh.

Referenced by averagedHardness_from_enth(), IceFlowLaw(), and ~IceFlowLaw().

latent heat capacity

Definition at line 82 of file flowlaws.hh.

Referenced by IceModel::excessToFromBasalMeltLayer(), and IceFlowLaw().

PetscReal n [protected]
char prefix[256] [protected]

Definition at line 100 of file flowlaws.hh.

Referenced by IceFlowLaw(), GPBLDIce::setFromOptions(), and setFromOptions().

PetscReal Q_cold [protected]
PetscReal Q_warm [protected]
PetscReal schoofLen [protected]

Definition at line 91 of file flowlaws.hh.

Referenced by IceFlowLaw(), and setFromOptions().

PetscReal schoofReg [protected]
PetscReal schoofVel [protected]

Definition at line 91 of file flowlaws.hh.

Referenced by IceFlowLaw(), and setFromOptions().

Definition at line 95 of file flowlaws.hh.

Referenced by IceFlowLaw().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines