BISICLES AMR ice sheet model  0.9
IceVelocitySolver.H
Go to the documentation of this file.
1 #ifdef CH_LANG_CC
2 /*
3 * _______ __
4 * / ___/ / ___ __ _ / / ___
5 * / /__/ _ \/ _ \/ V \/ _ \/ _ \
6 * \___/_//_/\___/_/_/_/_.__/\___/
7 * Please refer to Copyright.txt, in Chombo's root directory.
8 */
9 #endif
10 
11 #ifndef _ICEVELOCITYSOLVER_H_
12 #define _ICEVELOCITYSOLVER_H_
13 
14 #include "ConstitutiveRelation.H"
15 #include "BasalFrictionRelation.H"
16 #include "RealVect.H"
17 #include "AMRMultiGrid.H"
18 #include "Vector.H"
19 #include "RefCountedPtr.H"
20 #include "LevelData.H"
21 #include "FArrayBox.H"
22 #include "LevelSigmaCS.H"
23 #include "IceThicknessIBC.H"
24 
25 
26 #include "NamespaceHeader.H"
27 
29 
33 {
34 public:
35 
37 
38  virtual ~IceVelocitySolver() {;}
39 
41 
51  virtual void define(const ProblemDomain& a_coarseDomain,
52  ConstitutiveRelation* a_constRel,
53  BasalFrictionRelation* a_FrictionRel,
54  const Vector<DisjointBoxLayout>& a_vectGrids,
55  const Vector<int>& a_vectRefRatio,
56  const RealVect& a_dxCrse,
57  IceThicknessIBC* a_bc,
58  int a_numLevels) = 0;
59 
60 
62 
78  virtual int solve(Vector<LevelData<FArrayBox>* >& a_horizontalVel,
79  Vector<LevelData<FArrayBox>* >& a_calvedIce,
80  Vector<LevelData<FArrayBox>* >& a_addedIce,
81  Vector<LevelData<FArrayBox>* >& a_removedIce,
82  Real& a_initialResidualNorm, Real& a_finalResidualNorm,
83  const Real a_convergenceMetric,
84  const Vector<LevelData<FArrayBox>* >& a_rhs,
85  const Vector<LevelData<FArrayBox>* >& a_C,
86  const Vector<LevelData<FArrayBox>* >& a_C0,
87  const Vector<LevelData<FArrayBox>* >& a_A,
88  const Vector<LevelData<FArrayBox>* >& a_muCoef,
89  Vector<RefCountedPtr<LevelSigmaCS > >& a_coordSys,
90  Real a_time,
91  int a_lbase, int a_maxLevel) = 0;
92 
93  virtual void setVerbosity(int a_verbosity) {m_verbosity = a_verbosity;}
94 
96 
99  virtual void setMaxIterations(int a_max_iter) {;}
100 
102 
105  virtual void setTolerance(Real a_tolerance) {;}
106 
107  virtual bool isDefined() {return m_isDefined;}
108 
109 
110 protected:
111 
114 
115 };
116 
117 #include "NamespaceFooter.H"
118 
119 #endif
Abstract class to manage the nonlinear solve for the ice-sheet momentum.
Definition: IceVelocitySolver.H:32
Abstract class around the englacial constitutive relations for ice.
Definition: ConstitutiveRelation.H:34
IceVelocitySolver()
Definition: IceVelocitySolver.H:36
Physical/domain initial and boundary conditions for ice-sheet problems.
Definition: IceThicknessIBC.H:84
int m_verbosity
Definition: IceVelocitySolver.H:113
virtual void setMaxIterations(int a_max_iter)
if relevant, set max number of solver iterations
Definition: IceVelocitySolver.H:99
virtual void setVerbosity(int a_verbosity)
Definition: IceVelocitySolver.H:93
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
virtual ~IceVelocitySolver()
Definition: IceVelocitySolver.H:38
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!]...
Virtual base class for basal friction relations.
Definition: BasalFrictionRelation.H:27
virtual bool isDefined()
Definition: IceVelocitySolver.H:107
bool m_isDefined
Definition: IceVelocitySolver.H:112
virtual void setTolerance(Real a_tolerance)
if relevant, set solver tolerance
Definition: IceVelocitySolver.H:105