iceenthOnlySystemCtx Class Reference

Tridiagonal linear system for conservation of energy in vertical column of ice enthalpy. More...

#include <iceenthOnlySystem.hh>

Inheritance diagram for iceenthOnlySystemCtx:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 iceenthOnlySystemCtx (const NCConfigVariable &config, IceModelVec3 &my_Enth3, int my_Mz)
 ~iceenthOnlySystemCtx ()
PetscErrorCode initAllColumns (const PetscScalar my_dx, const PetscScalar my_dy, const PetscScalar my_dtTemp, const PetscScalar my_dzEQ)
PetscErrorCode setSchemeParamsThisColumn (const bool my_ismarginal, const PetscScalar my_lambda)
PetscErrorCode setBoundaryValuesThisColumn (const PetscScalar my_Enth_surface)
PetscErrorCode setLevel0EqnThisColumn (const PetscScalar my_a0, const PetscScalar my_a1, const PetscScalar my_b)
 Set coefficients in equation $a_0 E_0^{n+1} + a_1 E_1^{n+1} = b$ at base of ice.
PetscErrorCode viewConstants (PetscViewer viewer, bool show_col_dependent)
PetscErrorCode solveThisColumn (PetscScalar **x)
 Solve the tridiagonal system, in a single column, which determines the new values of the ice enthalpy.

Public Attributes

PetscScalar * Enth
PetscScalar * Enth_s
PetscScalar * u
PetscScalar * v
PetscScalar * w
PetscScalar * Sigma

Private Attributes

PetscInt Mz
PetscScalar ice_rho
PetscScalar ice_c
PetscScalar ice_k
PetscScalar ice_nu
PetscScalar dx
PetscScalar dy
PetscScalar dtTemp
PetscScalar dzEQ
PetscScalar nuEQ
PetscScalar iceK
PetscScalar iceRcold
PetscScalar iceRtemp
IceModelVec3Enth3
PetscScalar lambda
PetscScalar Enth_ks
PetscScalar a0
PetscScalar a1
PetscScalar b
bool ismarginal

Detailed Description

Tridiagonal linear system for conservation of energy in vertical column of ice enthalpy.

See the page documenting BOMBPROOF, PISM's numerical scheme for conservation of energy. This class is used either when the ice base is at the pressure melting temperature or when there is no bedrock thermal layer of positive thickness (i.e. because Mbz==1). The top of the ice has a Dirichlet condition. The boundary condition at the bottom of the ice depends on various cases, and these cases are not decided here. Instead, the user of this class sets the lowest-level (z=0) equation.

Definition at line 33 of file iceenthOnlySystem.hh.


Constructor & Destructor Documentation

iceenthOnlySystemCtx ( const NCConfigVariable config,
IceModelVec3 my_Enth3,
int  my_Mz 
)

Definition at line 24 of file iceenthOnlySystem.cc.

References a0, a1, b, Enth, Enth3, Enth_ks, Enth_s, NCConfigVariable.get(), ice_c, ice_k, ice_nu, ice_rho, iceK, iceRcold, iceRtemp, lambda, Mz, nuEQ, Sigma, u, v, and w.

Definition at line 65 of file iceenthOnlySystem.cc.

References Enth, Enth_s, Sigma, u, v, and w.


Member Function Documentation

PetscErrorCode initAllColumns ( const PetscScalar  my_dx,
const PetscScalar  my_dy,
const PetscScalar  my_dtTemp,
const PetscScalar  my_dzEQ 
)

Definition at line 75 of file iceenthOnlySystem.cc.

References dtTemp, dx, dy, dzEQ, ice_nu, iceK, iceRcold, iceRtemp, and nuEQ.

Referenced by IceModel.enthalpyAndDrainageStep().

PetscErrorCode setBoundaryValuesThisColumn ( const PetscScalar  my_Enth_surface  ) 

Definition at line 104 of file iceenthOnlySystem.cc.

References Enth_ks, iceRcold, iceRtemp, and nuEQ.

Referenced by IceModel.enthalpyAndDrainageStep().

PetscErrorCode setLevel0EqnThisColumn ( const PetscScalar  my_a0,
const PetscScalar  my_a1,
const PetscScalar  my_b 
)

Set coefficients in equation $a_0 E_0^{n+1} + a_1 E_1^{n+1} = b$ at base of ice.

Definition at line 119 of file iceenthOnlySystem.cc.

References a0, a1, b, iceRcold, iceRtemp, and nuEQ.

Referenced by IceModel.enthalpyAndDrainageStep().

PetscErrorCode setSchemeParamsThisColumn ( const bool  my_ismarginal,
const PetscScalar  my_lambda 
)

Definition at line 89 of file iceenthOnlySystem.cc.

References iceRcold, iceRtemp, ismarginal, lambda, and nuEQ.

Referenced by IceModel.enthalpyAndDrainageStep().

PetscErrorCode solveThisColumn ( PetscScalar **  x  ) 
PetscErrorCode viewConstants ( PetscViewer  viewer,
bool  show_col_dependent 
)

Member Data Documentation

PetscScalar a0 [private]
PetscScalar a1 [private]
PetscScalar b [private]
PetscScalar dtTemp [private]

Definition at line 66 of file iceenthOnlySystem.hh.

Referenced by initAllColumns(), solveThisColumn(), and viewConstants().

PetscScalar dx [private]

Definition at line 66 of file iceenthOnlySystem.hh.

Referenced by initAllColumns(), solveThisColumn(), and viewConstants().

PetscScalar dy [private]

Definition at line 66 of file iceenthOnlySystem.hh.

Referenced by initAllColumns(), solveThisColumn(), and viewConstants().

PetscScalar dzEQ [private]

Definition at line 66 of file iceenthOnlySystem.hh.

Referenced by initAllColumns(), and viewConstants().

PetscScalar* Enth
IceModelVec3* Enth3 [private]

Definition at line 68 of file iceenthOnlySystem.hh.

Referenced by iceenthOnlySystemCtx(), and solveThisColumn().

PetscScalar Enth_ks [private]
PetscScalar * Enth_s
PetscScalar ice_c [private]

Definition at line 66 of file iceenthOnlySystem.hh.

Referenced by iceenthOnlySystemCtx(), and viewConstants().

PetscScalar ice_k [private]

Definition at line 66 of file iceenthOnlySystem.hh.

Referenced by iceenthOnlySystemCtx(), and viewConstants().

PetscScalar ice_nu [private]

Definition at line 66 of file iceenthOnlySystem.hh.

Referenced by iceenthOnlySystemCtx(), initAllColumns(), and viewConstants().

PetscScalar ice_rho [private]

Definition at line 66 of file iceenthOnlySystem.hh.

Referenced by iceenthOnlySystemCtx(), solveThisColumn(), and viewConstants().

PetscScalar iceK [private]

Definition at line 66 of file iceenthOnlySystem.hh.

Referenced by iceenthOnlySystemCtx(), initAllColumns(), and viewConstants().

PetscScalar iceRcold [private]
PetscScalar iceRtemp [private]
bool ismarginal [private]

Definition at line 70 of file iceenthOnlySystem.hh.

Referenced by setSchemeParamsThisColumn(), solveThisColumn(), and viewConstants().

PetscScalar lambda [private]
PetscInt Mz [private]

Definition at line 65 of file iceenthOnlySystem.hh.

Referenced by iceenthOnlySystemCtx(), and solveThisColumn().

PetscScalar nuEQ [private]
PetscScalar * Sigma
PetscScalar * u
PetscScalar * v
PetscScalar * w

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Defines
Generated by  doxygen 1.6.2-20100124