BISICLES AMR ice sheet model  0.9
Public Types | Public Member Functions | List of all members
PressureLimitedBasalFrictionRelation Class Reference

Basal friction relation which satisfies Tb = min(|Tb'|, a*p) u/|u|. More...

#include <BasalFrictionRelation.H>

Inheritance diagram for PressureLimitedBasalFrictionRelation:
Inheritance graph
[legend]
Collaboration diagram for PressureLimitedBasalFrictionRelation:
Collaboration graph
[legend]

Public Types

enum  Model { Tsai, Leguy, MAX_MODEL }
 

Public Member Functions

virtual void computeDissipation (FArrayBox &a_dissipation, const FArrayBox &a_basalVel, const FArrayBox &a_C, const Real &a_scale, const LevelSigmaCS &a_coords, const DataIterator &a_dit, int a_level, const Box &a_box) const
 
void updateThermodynamics (Vector< LevelData< FArrayBox > * > *a_tillWaterDepth)
 
virtual void computeAlpha (FArrayBox &a_alpha, const FArrayBox &a_basalVel, const FArrayBox &a_C, const Real &a_scale, const LevelSigmaCS &a_coords, const DataIterator &a_dit, int a_level, const Box &a_box) const
 Computes cell-centered effective basal friction coeffcient $ \alpha $ such that $ \tau_b = \alpha (u_b, C) u_b $. More...
 
 PressureLimitedBasalFrictionRelation (Real a_a, Real a_p, Real a_maxTillWaterDepth, Real a_tillPressureFactor, Model a_model, BasalFrictionRelation *a_bfr)
 
virtual BasalFrictionRelationgetNewBasalFrictionRelation () const
 creates a new copy of subclass objects. More...
 
virtual Real power () const
 
- Public Member Functions inherited from BasalFrictionRelation
virtual ~BasalFrictionRelation ()
 

Additional Inherited Members

- Static Public Member Functions inherited from BasalFrictionRelation
static BasalFrictionRelationparse (const char *a_prefix, int a_recursion)
 Run-time configuration of BasalFrictionRelation objects. More...
 

Detailed Description

Basal friction relation which satisfies Tb = min(|Tb'|, a*p) u/|u|.

Tb' is any BasalFrictionRelation a is a constant (for now) coefficient, N is the local (hydrostatic) pressure For a ~ 1, Tb = Tb' is applied most places, with the Coulomb law Tb = a*p*u/|u| imposed at flotation

Three laws are supported, one due to Tsai 2015

$ \tau_b = \min(|\tau _b^{\prime}|, \alpha N^p) u/|u| $

the second due to Schoof 2005, Gagliardini 2007, and Leguy 2014, which is smoother but otherwise similar. We use the form from Leguy 2014

$ \tau _b = \tau _b^{\prime} ( N^p / (\alpha |u| + N^p ) )^{1/p}$

Run-time configuation is carried out in BasalFrictionRelation::parse. If the string A.B.basalFrictionRelation = pressureLimitedLaw is found, the expected form is

Member Enumeration Documentation

◆ Model

Enumerator
Tsai 
Leguy 
MAX_MODEL 

Constructor & Destructor Documentation

◆ PressureLimitedBasalFrictionRelation()

PressureLimitedBasalFrictionRelation::PressureLimitedBasalFrictionRelation ( Real  a_a,
Real  a_p,
Real  a_maxTillWaterDepth,
Real  a_tillPressureFactor,
Model  a_model,
BasalFrictionRelation a_bfr 
)
inline

Member Function Documentation

◆ computeAlpha()

void PressureLimitedBasalFrictionRelation::computeAlpha ( FArrayBox &  a_alpha,
const FArrayBox &  a_basalVel,
const FArrayBox &  a_C,
const Real &  a_scale,
const LevelSigmaCS a_coords,
const DataIterator &  a_dit,
int  a_level,
const Box &  a_box 
) const
virtual

Computes cell-centered effective basal friction coeffcient $ \alpha $ such that $ \tau_b = \alpha (u_b, C) u_b $.

Parameters
a_alphaeffective basal friction coefficient based on the local velocity field.
a_basalVelCell-centered basal velocity field.
a_CCell-centered coefficient field
a_coordswhole level geometry data
a_ditindex needed to retrieve data from a_coords
a_boxcell-centered box over which to do this computation

Implements BasalFrictionRelation.

References LevelSigmaCS::getH(), LevelSigmaCS::getThicknessOverFlotation(), LevelSigmaCS::gravity(), LevelSigmaCS::iceDensity(), and BasalFrictionRelation::power().

Referenced by computeDissipation().

◆ computeDissipation()

void PressureLimitedBasalFrictionRelation::computeDissipation ( FArrayBox &  a_dissipation,
const FArrayBox &  a_basalVel,
const FArrayBox &  a_C,
const Real &  a_scale,
const LevelSigmaCS a_coords,
const DataIterator &  a_dit,
int  a_level,
const Box &  a_box 
) const
virtual

computes cell-centered $ s = - T_b . u_b $ based on the cell-centered velocity and a coefficient field beta such that T_b = - (u, C) u_b

Parameters
a_C$C$ based on the local velocity field.
a_basalVel– Cell-centered basal velocity field.
a_boxcell-centered box over which to do this computation

Reimplemented from BasalFrictionRelation.

References BasalFrictionRelation::computeAlpha(), and computeAlpha().

◆ getNewBasalFrictionRelation()

virtual BasalFrictionRelation* PressureLimitedBasalFrictionRelation::getNewBasalFrictionRelation ( ) const
inlinevirtual

creates a new copy of subclass objects.

Implements BasalFrictionRelation.

◆ power()

virtual Real PressureLimitedBasalFrictionRelation::power ( ) const
inlinevirtual

◆ updateThermodynamics()

void PressureLimitedBasalFrictionRelation::updateThermodynamics ( Vector< LevelData< FArrayBox > * > *  a_tillWaterDepth)
inlinevirtual

The documentation for this class was generated from the following files: