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

Abstract subclass of IceVelocitySolver that supports inverse velocity problems. More...

#include <InverseVerticallyIntegratedVelocitySolver.H>

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

Public Member Functions

virtual void setPreviousTime (Real a_time)=0
 
virtual BasalFrictionbasalFriction ()=0
 Create a BasalFriction object containing the solution $C$. More...
 
virtual MuCoefficientmuCoefficient ()=0
 is the basal friction an improvement on the initial guess? More...
 
- Public Member Functions inherited from IceVelocitySolver
 IceVelocitySolver ()
 
virtual ~IceVelocitySolver ()
 
virtual void define (const ProblemDomain &a_coarseDomain, ConstitutiveRelation *a_constRel, BasalFrictionRelation *a_FrictionRel, const Vector< DisjointBoxLayout > &a_vectGrids, const Vector< int > &a_vectRefRatio, const RealVect &a_dxCrse, IceThicknessIBC *a_bc, int a_numLevels)=0
 (Re-)define IceVelocitySolver object for a given mesh and set of physics rules More...
 
virtual int solve (Vector< LevelData< FArrayBox > * > &a_horizontalVel, Vector< LevelData< FArrayBox > * > &a_calvedIce, Vector< LevelData< FArrayBox > * > &a_addedIce, Vector< LevelData< FArrayBox > * > &a_removedIce, Real &a_initialResidualNorm, Real &a_finalResidualNorm, const Real a_convergenceMetric, const Vector< LevelData< FArrayBox > * > &a_rhs, const Vector< LevelData< FArrayBox > * > &a_C, const Vector< LevelData< FArrayBox > * > &a_C0, const Vector< LevelData< FArrayBox > * > &a_A, const Vector< LevelData< FArrayBox > * > &a_muCoef, Vector< RefCountedPtr< LevelSigmaCS > > &a_coordSys, Real a_time, int a_lbase, int a_maxLevel)=0
 Compute the horizontal, cell centered ice velocity ( u(x,y), v(x,y) ) [VERTICALLY INTEGRATED MODELS!]. More...
 
virtual void setVerbosity (int a_verbosity)
 
virtual void setMaxIterations (int a_max_iter)
 if relevant, set max number of solver iterations More...
 
virtual void setTolerance (Real a_tolerance)
 if relevant, set solver tolerance More...
 
virtual bool isDefined ()
 

Static Public Member Functions

static BasalFrictionbasalFriction (const Vector< LevelData< FArrayBox > *> &a_C, const Vector< int > &a_ratio, const RealVect &a_dxCrse)
 
static MuCoefficientmuCoefficient (const Vector< LevelData< FArrayBox > *> &a_mu, const Vector< int > &a_ratio, const RealVect &a_dxCrse)
 

Additional Inherited Members

- Protected Attributes inherited from IceVelocitySolver
bool m_isDefined
 
int m_verbosity
 

Detailed Description

Abstract subclass of IceVelocitySolver that supports inverse velocity problems.

In this context, inverse velocity problems compute basal friction ( $C$) and stiffness ( $\phi$) parameters for a stress balance problem such that its solution ( $u$) is a fit to the a known (observed) velocity ( $u_o$). Just as any IceVelocitySolver, they must compute a velocity given geometry etc, but must also expose BasalFriction and MuCoefficient data to any user that understands the idea of the inverse velocity problem

Includes static members that could be useful to both implementors and users

Member Function Documentation

◆ basalFriction() [1/2]

static BasalFriction* InverseIceVelocitySolver::basalFriction ( const Vector< LevelData< FArrayBox > *> &  a_C,
const Vector< int > &  a_ratio,
const RealVect &  a_dxCrse 
)
inlinestatic

Create a BasalFriction object given an AMR hierarchy of data

Parameters
a_CAMR hierarchy of friction coefficient $C$
a_ratiorefinement ratios
a_dxCrsemesh spacing in coarsest level
Returns
a pointer to a MultiLevelDataBasalFriction object

References muCoefficient().

Referenced by AmrIce::solveVelocityField().

◆ basalFriction() [2/2]

virtual BasalFriction* InverseIceVelocitySolver::basalFriction ( )
pure virtual

◆ muCoefficient() [1/2]

static MuCoefficient* InverseIceVelocitySolver::muCoefficient ( const Vector< LevelData< FArrayBox > *> &  a_mu,
const Vector< int > &  a_ratio,
const RealVect &  a_dxCrse 
)
inlinestatic

Create a MuCoefficient object given an AMR hierarchy of data

Parameters
a_muAMR hierarchy of stiffness coefficient $\phi$
a_ratiorefinement ratios
a_dxCrsemesh spacing in coarsest level
Returns
a pointer to a MultiLevelDataMuCoefficient object

References basalFriction(), and muCoefficient().

Referenced by AmrIce::solveVelocityField().

◆ muCoefficient() [2/2]

virtual MuCoefficient* InverseIceVelocitySolver::muCoefficient ( )
pure virtual

is the basal friction an improvement on the initial guess?

Create a MuCoefficient object containing the solution $\phi$

Implemented in InverseVerticallyIntegratedVelocitySolver.

Referenced by basalFriction(), muCoefficient(), InverseVerticallyIntegratedVelocitySolver::muCoefficient(), and AmrIce::readCheckpointFile().

◆ setPreviousTime()

virtual void InverseIceVelocitySolver::setPreviousTime ( Real  a_time)
pure virtual

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