BISICLES AMR ice sheet model  0.9
Public Member Functions | Static Public Member Functions | List of all members
BasalFrictionRelation Class Referenceabstract

Virtual base class for basal friction relations. More...

#include <BasalFrictionRelation.H>

Inheritance diagram for BasalFrictionRelation:
Inheritance graph
[legend]

Public Member Functions

virtual ~BasalFrictionRelation ()
 
virtual 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 =0
 Computes cell-centered effective basal friction coeffcient $ \alpha $ such that $ \tau_b = \alpha (u_b, C) u_b $. More...
 
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
 Compute cell-centered dissipation rate $ s = T_b . u_b / k_ice $. More...
 
virtual BasalFrictionRelationgetNewBasalFrictionRelation () const =0
 creates a new copy of subclass objects. More...
 
virtual Real power () const =0
 

Static Public Member Functions

static BasalFrictionRelationparse (const char *a_prefix, int a_recursion)
 Run-time configuration of BasalFrictionRelation objects. More...
 

Detailed Description

Virtual base class for basal friction relations.

Sublclasses must, at least, compute a positive $ \alpha $ given basal velocity $ u_b $ such that basal traction $ \tau _b = \alpha(u_b, ...) u_b $.

Constructor & Destructor Documentation

◆ ~BasalFrictionRelation()

virtual BasalFrictionRelation::~BasalFrictionRelation ( )
inlinevirtual

Member Function Documentation

◆ computeAlpha()

virtual void BasalFrictionRelation::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
pure 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

Implemented in PressureLimitedBasalFrictionRelation, and BasalFrictionPowerLaw.

Referenced by computeDissipation(), PressureLimitedBasalFrictionRelation::computeDissipation(), FASIceViscouseTensorOp::computeMu(), PetscIceSolver::computeMu(), IceNonlinearViscousTensor::setState(), updateThermodynamics(), PressureLimitedBasalFrictionRelation::updateThermodynamics(), and BasalFrictionPowerLaw::~BasalFrictionPowerLaw().

◆ computeDissipation()

void BasalFrictionRelation::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

Compute cell-centered dissipation rate $ s = T_b . u_b / k_ice $.

Parameters
a_dissipationdissipation rate based on the local velocity field.
a_basalVelCell-centered basal velocity field.
a_scaleassume basalVel is scaled by a factor a_scale
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

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_scale– true velocity is a_basalVel/a_scale
a_boxcell-centered box over which to do this computation

Reimplemented in PressureLimitedBasalFrictionRelation.

References computeAlpha().

Referenced by AmrIce::updateInternalEnergy(), and updateThermodynamics().

◆ getNewBasalFrictionRelation()

virtual BasalFrictionRelation* BasalFrictionRelation::getNewBasalFrictionRelation ( ) const
pure virtual

creates a new copy of subclass objects.

Implemented in PressureLimitedBasalFrictionRelation, and BasalFrictionPowerLaw.

Referenced by AmrIce::setBasalFrictionRelation(), and updateThermodynamics().

◆ parse()

BasalFrictionRelation * BasalFrictionRelation::parse ( const char *  a_prefix,
int  a_recursion 
)
static

◆ power()

virtual Real BasalFrictionRelation::power ( ) const
pure virtual

◆ updateThermodynamics()

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

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