11 #ifndef _FASICESOLVER_H_ 12 #define _FASICESOLVER_H_ 15 #include "ViscousTensorOp.H" 18 #include "NamespaceHeader.H" 40 virtual void define(
const ProblemDomain& a_coarseDomain,
41 const RealVect& a_crsDx,
42 const Vector<DisjointBoxLayout>& a_grids,
43 const Vector<int>& a_refRatios,
48 virtual RefCountedPtr<AMRFASOp<LevelData<FArrayBox> > >
50 const DisjointBoxLayout& a_grid,
51 bool a_isSR =
false );
72 const DisjointBoxLayout &a_grid,
80 if(m_VTO)
delete m_VTO;
83 virtual void restrictState( RefCountedPtr<AMRFASOp<LevelData<FArrayBox> > >,
86 virtual bool computeState( RefCountedPtr<LevelData<FArrayBox> > a_phi,
87 const RefCountedPtr<LevelData<FArrayBox> > a_CrsPhi,
88 const RefCountedPtr<LevelData<FArrayBox> > a_FinePhi
92 virtual void applyLevel( LevelData<FArrayBox>& a_LofPhi,
93 const LevelData<FArrayBox>& a_phi
96 virtual void reflux(
const LevelData<FArrayBox>& a_phiFine,
97 const LevelData<FArrayBox>& a_phi,
98 LevelData<FArrayBox>& a_residual,
99 AMRFASOp<LevelData<FArrayBox> >* a_finerOp );
101 virtual void levelGSRB( RefCountedPtr<LevelData<FArrayBox> > a_phi,
102 const RefCountedPtr<LevelData<FArrayBox> > a_rhs
105 virtual void levelRich( RefCountedPtr<LevelData<FArrayBox> > a_phi,
106 const RefCountedPtr<LevelData<FArrayBox> > a_rhs
111 void computeMu( LevelData<FArrayBox> &a_vel,
112 const LevelData<FArrayBox>* a_crseVel,
113 const LevelData<FArrayBox>*
130 RefCountedPtr<LevelData<FArrayBox> >
m_Beta;
137 virtual void CFInterp( LevelData<FArrayBox>& a_phi,
138 const LevelData<FArrayBox>& a_phiCoarse);
157 virtual void define(
const ProblemDomain& a_coarseDomain,
160 const Vector<DisjointBoxLayout>& a_vectGrids,
161 const Vector<int>& a_vectRefRatio,
162 const RealVect& a_dxCrse,
166 virtual void setTolerance( Real a_tolerance ) { m_rtol = a_tolerance; }
180 AMRFAS<LevelData<FArrayBox> >::m_verbosity = a_verbosity;
184 virtual int solve( Vector<LevelData<FArrayBox>* >& a_horizontalVel,
185 Vector<LevelData<FArrayBox>* >& a_calvedIce,
186 Vector<LevelData<FArrayBox>* >& a_addedIce,
187 Vector<LevelData<FArrayBox>* >& a_removedIce,
188 Real& a_initialResidualNorm,
189 Real& a_finalResidualNorm,
190 const Real a_convergenceMetric,
191 const Vector<LevelData<FArrayBox>* >& a_rhs,
192 const Vector<LevelData<FArrayBox>* >& a_C,
193 const Vector<LevelData<FArrayBox>* >& a_C0,
194 const Vector<LevelData<FArrayBox>* >& a_A,
195 const Vector<LevelData<FluxBox>* >& a_muCoef,
196 Vector<RefCountedPtr<LevelSigmaCS > >& a_coordSys,
208 #include "NamespaceFooter.H" RefCountedPtr< LevelData< FluxBox > > m_faceA
Definition: FASIceSolver.H:132
virtual ~FASIceViscouseTensorOp()
Definition: FASIceSolver.H:78
const Real m_vtopSafety
Definition: FASIceSolver.H:119
Definition: FASIceSolver.H:66
virtual void setTolerance(Real a_tolerance)
if relevant, set solver tolerance
Definition: FASIceSolver.H:166
Abstract class to manage the nonlinear solve for the ice-sheet momentum.
Definition: IceVelocitySolver.H:32
virtual ~FASIceSolver()
Definition: FASIceSolver.H:153
RefCountedPtr< LevelData< FArrayBox > > m_Beta0
Definition: FASIceSolver.H:131
Abstract class around the englacial constitutive relations for ice.
Definition: ConstitutiveRelation.H:34
ViscousTensorOp * m_VTO
Definition: FASIceSolver.H:134
IceThicknessIBC * m_bc
Definition: FASIceSolver.H:58
const ConstitutiveRelation * m_constRelPtr
Definition: FASIceSolver.H:54
Physical/domain initial and boundary conditions for ice-sheet problems.
Definition: IceThicknessIBC.H:84
FASIceSolver()
Definition: FASIceSolver.H:148
const ConstitutiveRelation * m_constRelPtr
Definition: FASIceSolver.H:122
int m_verbosity
Definition: IceVelocitySolver.H:113
RefCountedPtr< LevelData< FArrayBox > > m_Beta
Definition: FASIceSolver.H:130
Real m_time
Definition: FASIceSolver.H:126
virtual void setMaxIterations(int a_max_iter)
set "absolute tolerance"
Definition: FASIceSolver.H:176
virtual ~FASIceViscouseTensorOpFactory()
Definition: FASIceSolver.H:34
virtual void define(const ProblemDomain &a_coarseDomain, const RealVect &a_crsDx, const Vector< DisjointBoxLayout > &a_grids, const Vector< int > &a_refRatios, int a_nSRGrids=0)
Definition: FASIceSolverI.H:319
RefCountedPtr< LevelSigmaCS > m_coordSys
Definition: FASIceSolver.H:127
virtual RefCountedPtr< AMRFASOp< LevelData< FArrayBox > > > AMRNewOp(int a_ilev, const DisjointBoxLayout &a_grid, bool a_isSR=false)
override base
Definition: FASIceSolverI.H:256
Definition: FASIceSolver.H:24
virtual void setVerbosity(int a_verbosity)
Definition: FASIceSolver.H:178
const Real m_constThetaVal
Definition: FASIceSolver.H:118
RefCountedPtr< FASIceViscouseTensorOpFactory > m_opFactoryPtr
Definition: FASIceSolver.H:203
ViscousTensorOpFactory * m_VTOFactory
Definition: FASIceSolver.H:57
Virtual base class for basal friction relations.
Definition: BasalFrictionRelation.H:27
bool m_writeResidToPlotFile
Definition: FASIceSolver.H:204
const BasalFrictionRelation * m_basalFrictionRelPtr
Definition: FASIceSolver.H:123
IceThicknessIBC * m_bc
Definition: FASIceSolver.H:135
Definition: FASIceSolver.H:143
const BasalFrictionRelation * m_basalFrictionRelPtr
Definition: FASIceSolver.H:55
FASIceViscouseTensorOpFactory(ConstitutiveRelation *a_constRelPtr, BasalFrictionRelation *a_basalFrictionRelPtr, IceThicknessIBC *a_bc)
Constructor.
Definition: FASIceSolverI.H:238