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

Abstract class around the englacial constitutive relations for ice. More...

#include <ConstitutiveRelation.H>

Inheritance diagram for ConstitutiveRelation:
Inheritance graph
[legend]

Public Member Functions

 ConstitutiveRelation ()
 
virtual ~ConstitutiveRelation ()
 
virtual void computeMu (LevelData< FArrayBox > &a_mu, const LevelData< FArrayBox > &a_vel, const Real &a_scale, const LevelData< FArrayBox > *a_crseVel, int a_nRefCrse, const LevelData< FArrayBox > &a_A, const LevelSigmaCS &a_coordSys, const ProblemDomain &a_domain, const IntVect &a_ghostVect=IntVect::Zero) const =0
 Compute cell-centered $\mu$ based on the cell-centered velocity. More...
 
virtual void computeDissipation (LevelData< FArrayBox > &a_dissipation, const LevelData< FArrayBox > &a_cellVel, const LevelData< FArrayBox > *a_crseVel, int nRefCrse, const LevelData< FArrayBox > &a_A, const LevelSigmaCS &a_coordSys, const ProblemDomain &a_domain, const IntVect &a_ghostVect=IntVect::Zero) const =0
 Compute a cell centred bulk dissipation $\Phi/(\rho _i c _i) = \tau_{ij} \epsilon _{ji} /(\rho _i c _i) $ (heat source) at the cell centres. This ought to have the same dependencies as cell centred mu. More...
 
virtual void computeFaceMu (LevelData< FluxBox > &a_mu, LevelData< FArrayBox > &a_vel, const Real &a_scale, const LevelData< FArrayBox > *a_crseVel, int a_nRefCrse, const LevelData< FluxBox > &a_A, const LevelSigmaCS &a_coordSys, const ProblemDomain &a_domain, const IntVect &a_ghostVect=IntVect::Zero) const =0
 compute face-centered effective viscosity $\mu$ based on cell-centered velocity More...
 
virtual ConstitutiveRelationgetNewConstitutiveRelation () const =0
 creates a new copy of this ConstitutiveRelation object. More...
 
void computeStrainRateInvariant (LevelData< FArrayBox > &a_epsilonSquared, const LevelData< FArrayBox > &a_velocity, const LevelData< FArrayBox > *a_crseVel, int nRefCrse, const LevelSigmaCS &a_coordSys, const IntVect &a_ghostVect=IntVect::Zero) const
 compute cell-centered strainrate invariant epsilon^2 More...
 
void computeStrainRateInvariantFace (LevelData< FluxBox > &a_epsilonSquared, LevelData< FArrayBox > &a_velocity, const LevelData< FArrayBox > *a_crseVel, int a_nRefCrse, const LevelSigmaCS &a_coordSys, const IntVect &a_ghostVect=IntVect::Zero) const
 compute face-centered strainrate invariant epsilon^2 based on cell-centered velocity More...
 
void computeStrainRateInvariant (LevelData< FArrayBox > &a_epsilonSquared, LevelData< FArrayBox > &a_gradVelocity, const LevelData< FArrayBox > &a_velocity, const LevelData< FArrayBox > *a_crseVel, int a_nRefCrse, const LevelSigmaCS &a_coordSys, const IntVect &a_ghostVect=IntVect::Zero) const
 compute cell-centered strainrate invariant epsilon^2 and velocity gradients. No more costly than just computing epsilon^2 More...
 
void computeStrainRateInvariantFace (LevelData< FluxBox > &a_epsilonSquared, LevelData< FluxBox > &a_gradVelocity, LevelData< FArrayBox > &a_velocity, const LevelData< FArrayBox > *a_crseVel, int a_nRefCrse, const LevelSigmaCS &a_coordSys, const IntVect &a_ghostVect=IntVect::Zero) const
 compute face-centered strainrate invariant epsilon^2 and velocity gradients based on cell-centered velocity. No more costly than just computing epsilon^2 More...
 

Static Public Member Functions

static ConstitutiveRelationparse (const char *a_prefix)
 

Detailed Description

Abstract class around the englacial constitutive relations for ice.

Specifies an interface for the calculation of the effecive viscosity $\mu$ such that (stress = $\mu$*strainrate ) assuming that $\mu = \mu(\nabla(\vec{u}),A(T)) $.

Also specifies (and provides a default implementation) for the default rate of strain heating (mu * stress * strainrate)

Run-time configuration is carried out in ConstitutiveRelation::parse.

Constructor & Destructor Documentation

◆ ConstitutiveRelation()

ConstitutiveRelation::ConstitutiveRelation ( )
inline

◆ ~ConstitutiveRelation()

virtual ConstitutiveRelation::~ConstitutiveRelation ( )
inlinevirtual

Member Function Documentation

◆ computeDissipation()

virtual void ConstitutiveRelation::computeDissipation ( LevelData< FArrayBox > &  a_dissipation,
const LevelData< FArrayBox > &  a_cellVel,
const LevelData< FArrayBox > *  a_crseVel,
int  nRefCrse,
const LevelData< FArrayBox > &  a_A,
const LevelSigmaCS a_coordSys,
const ProblemDomain &  a_domain,
const IntVect &  a_ghostVect = IntVect::Zero 
) const
pure virtual

Compute a cell centred bulk dissipation $\Phi/(\rho _i c _i) = \tau_{ij} \epsilon _{ji} /(\rho _i c _i) $ (heat source) at the cell centres. This ought to have the same dependencies as cell centred mu.

Parameters
a_dissipation$\Phi$ based on the local velocity field.
a_velCell-centered velocity field.
a_crseVelNext coarser level velocity field for coarse-fine bc's (NULL if no coarser level)
a_nRefCrserefinement ratio to next coarser level
a_ACell- and layer-centered flow law coefficient (Glenn's $ A $ ) field
a_coordSysLevelSigmaCS object containing the geometry of this level.
a_boxcell-centered box over which to do this computation

Implemented in L1L2ConstitutiveRelation, and DamageConstitutiveRelation.

Referenced by AmrIce::updateInternalEnergy(), and ~ConstitutiveRelation().

◆ computeFaceMu()

virtual void ConstitutiveRelation::computeFaceMu ( LevelData< FluxBox > &  a_mu,
LevelData< FArrayBox > &  a_vel,
const Real &  a_scale,
const LevelData< FArrayBox > *  a_crseVel,
int  a_nRefCrse,
const LevelData< FluxBox > &  a_A,
const LevelSigmaCS a_coordSys,
const ProblemDomain &  a_domain,
const IntVect &  a_ghostVect = IntVect::Zero 
) const
pure virtual

compute face-centered effective viscosity $\mu$ based on cell-centered velocity

Parameters
a_muface-centered $\mu$ based on the local velocity field.
a_velCell-centered velocity field.
a_scalecompute mu given input a_vel = m_scale * true_vel
a_ACell- and layer-centered flow law coefficient (Glenn's $ A $ ) field
a_crseVelNext coarser level velocity field for coarse-fine bc's (NULL if no coarser level)
a_nRefCrserefinement ratio to next coarser level
a_coordSysLevelSigmaCS object containing the geometry of this level
a_ghostVecthow the boxes on which we want to compute mu compare with the DisjointBoxLayout. (can be negative)

Implemented in L1L2ConstitutiveRelation, and DamageConstitutiveRelation.

Referenced by DamageConstitutiveRelation::computeFaceMu(), FASIceViscouseTensorOp::computeMu(), PetscIceSolver::computeMu(), and ~ConstitutiveRelation().

◆ computeMu()

virtual void ConstitutiveRelation::computeMu ( LevelData< FArrayBox > &  a_mu,
const LevelData< FArrayBox > &  a_vel,
const Real &  a_scale,
const LevelData< FArrayBox > *  a_crseVel,
int  a_nRefCrse,
const LevelData< FArrayBox > &  a_A,
const LevelSigmaCS a_coordSys,
const ProblemDomain &  a_domain,
const IntVect &  a_ghostVect = IntVect::Zero 
) const
pure virtual

Compute cell-centered $\mu$ based on the cell-centered velocity.

Parameters
a_mu$\mu$ based on the local velocity field.
a_velCell-centered velocity field.
a_crseVelNext coarser level velocity field (for coarse-fine bc's). (NULL if no coarser level)
a_nRefCrserefinement ratio to next coarser level
a_ACell- and layer-centered flow law coefficient (Glenn's $ A $ ) field
a_coordSysLevelSigmaCS object containing the ice-sheet geometry
a_ghostVecthow the boxes on which we want to compute mu compare with the DisjointBoxLayout. (can be negative)

Implemented in L1L2ConstitutiveRelation, and DamageConstitutiveRelation.

Referenced by computeStrainRateInvariantFace(), and ~ConstitutiveRelation().

◆ computeStrainRateInvariant() [1/2]

void ConstitutiveRelation::computeStrainRateInvariant ( LevelData< FArrayBox > &  a_epsilonSquared,
const LevelData< FArrayBox > &  a_velocity,
const LevelData< FArrayBox > *  a_crseVel,
int  nRefCrse,
const LevelSigmaCS a_coordSys,
const IntVect &  a_ghostVect = IntVect::Zero 
) const

◆ computeStrainRateInvariant() [2/2]

void ConstitutiveRelation::computeStrainRateInvariant ( LevelData< FArrayBox > &  a_epsilonSquared,
LevelData< FArrayBox > &  a_gradVelocity,
const LevelData< FArrayBox > &  a_velocity,
const LevelData< FArrayBox > *  a_crseVel,
int  a_nRefCrse,
const LevelSigmaCS a_coordSys,
const IntVect &  a_ghostVect = IntVect::Zero 
) const

compute cell-centered strainrate invariant epsilon^2 and velocity gradients. No more costly than just computing epsilon^2

References computeCCDerivatives(), and derivComponent().

◆ computeStrainRateInvariantFace() [1/2]

void ConstitutiveRelation::computeStrainRateInvariantFace ( LevelData< FluxBox > &  a_epsilonSquared,
LevelData< FArrayBox > &  a_velocity,
const LevelData< FArrayBox > *  a_crseVel,
int  a_nRefCrse,
const LevelSigmaCS a_coordSys,
const IntVect &  a_ghostVect = IntVect::Zero 
) const

compute face-centered strainrate invariant epsilon^2 based on cell-centered velocity

Referenced by DamageConstitutiveRelation::computeFaceMu(), L1L2ConstitutiveRelation::computeFaceMu(), computeStrainRateInvariantFace(), and ~ConstitutiveRelation().

◆ computeStrainRateInvariantFace() [2/2]

void ConstitutiveRelation::computeStrainRateInvariantFace ( LevelData< FluxBox > &  a_epsilonSquared,
LevelData< FluxBox > &  a_gradVelocity,
LevelData< FArrayBox > &  a_velocity,
const LevelData< FArrayBox > *  a_crseVel,
int  a_nRefCrse,
const LevelSigmaCS a_coordSys,
const IntVect &  a_ghostVect = IntVect::Zero 
) const

compute face-centered strainrate invariant epsilon^2 and velocity gradients based on cell-centered velocity. No more costly than just computing epsilon^2

compute face-centered epsilon^2 and grda(u) based on cell-centered velocity

References computeFCDerivatives(), computeMu(), computeStrainRateInvariant(), computeStrainRateInvariantFace(), derivComponent(), and LevelSigmaCS::dx().

◆ getNewConstitutiveRelation()

virtual ConstitutiveRelation* ConstitutiveRelation::getNewConstitutiveRelation ( ) const
pure virtual

◆ parse()

ConstitutiveRelation * ConstitutiveRelation::parse ( const char *  a_prefix)
static

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