BISICLES AMR ice sheet model  0.9
Public Member Functions | Protected Attributes | List of all members
FASIceSolver Class Reference

#include <FASIceSolver.H>

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

Public Member Functions

 FASIceSolver ()
 
virtual ~FASIceSolver ()
 
virtual void define (const ProblemDomain &a_coarseDomain, ConstitutiveRelation *a_constRel, BasalFrictionRelation *a_basalFrictionRel, const Vector< DisjointBoxLayout > &a_vectGrids, const Vector< int > &a_vectRefRatio, const RealVect &a_dxCrse, IceThicknessIBC *a_bc, int a_numLevels)
 
virtual void setTolerance (Real a_tolerance)
 if relevant, set solver tolerance More...
 
virtual void setMaxIterations (int a_max_iter)
 set "absolute tolerance" More...
 
virtual void setVerbosity (int a_verbosity)
 
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< FluxBox > * > &a_muCoef, Vector< RefCountedPtr< LevelSigmaCS > > &a_coordSys, Real a_time, int a_lbase, int a_maxLevel)
 full solve for non-isothermal ice More...
 
- Public Member Functions inherited from IceVelocitySolver
 IceVelocitySolver ()
 
virtual ~IceVelocitySolver ()
 
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 bool isDefined ()
 

Protected Attributes

RefCountedPtr< FASIceViscouseTensorOpFactorym_opFactoryPtr
 
bool m_writeResidToPlotFile
 
- Protected Attributes inherited from IceVelocitySolver
bool m_isDefined
 
int m_verbosity
 

Detailed Description

virtual class to manage the nonlinear solve for the ice-sheet momentum

Constructor & Destructor Documentation

◆ FASIceSolver()

FASIceSolver::FASIceSolver ( )
inline

◆ ~FASIceSolver()

virtual FASIceSolver::~FASIceSolver ( )
inlinevirtual

Member Function Documentation

◆ define()

void FASIceSolver::define ( const ProblemDomain &  a_coarseDomain,
ConstitutiveRelation a_constRelPtr,
BasalFrictionRelation a_basalFrictionRelPtr,
const Vector< DisjointBoxLayout > &  a_vectGrids,
const Vector< int > &  a_vectRefRatio,
const RealVect &  a_dxCrse,
IceThicknessIBC a_bc,
int  a_numLevels 
)
virtual

◆ setMaxIterations()

virtual void FASIceSolver::setMaxIterations ( int  a_max_iter)
inlinevirtual

set "absolute tolerance"

If norm(residual) drops below the absolute tolerance (regardless of the initial residual), we declare ourselves "done" – this is a simple way to avoid solver hangs.sets maximum number of FAS iterations

Reimplemented from IceVelocitySolver.

Referenced by AmrIce::defineSolver().

◆ setTolerance()

virtual void FASIceSolver::setTolerance ( Real  a_tolerance)
inlinevirtual

if relevant, set solver tolerance

default implementation does nothing – it's assumed that derived classes will implement this in a meaningful way

Reimplemented from IceVelocitySolver.

Referenced by AmrIce::defineSolver().

◆ setVerbosity()

virtual void FASIceSolver::setVerbosity ( int  a_verbosity)
inlinevirtual

Reimplemented from IceVelocitySolver.

References IceVelocitySolver::m_verbosity.

◆ solve()

int FASIceSolver::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_beta,
const Vector< LevelData< FArrayBox > * > &  a_beta0,
const Vector< LevelData< FArrayBox > * > &  a_A,
const Vector< LevelData< FluxBox > * > &  a_muCoef,
Vector< RefCountedPtr< LevelSigmaCS > > &  a_coordSys,
Real  a_time,
int  a_lbase,
int  a_maxLevel 
)
virtual

full solve for non-isothermal ice

solve for isothermal ice

beta scales sliding coefficient C == acoef in terms of the ViscousTensorOp

Member Data Documentation

◆ m_opFactoryPtr

RefCountedPtr<FASIceViscouseTensorOpFactory> FASIceSolver::m_opFactoryPtr
protected

◆ m_writeResidToPlotFile

bool FASIceSolver::m_writeResidToPlotFile
protected

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