11 #ifndef _AVCAMRPOISSONOP_H_ 12 #define _AVCAMRPOISSONOP_H_ 14 #include "AMRPoissonOp.H" 15 #include "CoefficientInterpolator.H" 17 #include "NamespaceHeader.H" 50 virtual void residualI(LevelData<FArrayBox>& a_lhs,
51 const LevelData<FArrayBox>& a_phi,
52 const LevelData<FArrayBox>& a_rhs,
53 bool a_homogeneous =
false);
56 virtual void preCond(LevelData<FArrayBox>& a_correction,
57 const LevelData<FArrayBox>& a_residual);
60 virtual void applyOpI(LevelData<FArrayBox>& a_lhs,
61 const LevelData<FArrayBox>& a_phi,
62 bool a_homogeneous =
false);
65 const LevelData<FArrayBox>& a_phi);
74 LevelData<FArrayBox>& a_phiFine,
75 const LevelData<FArrayBox>& a_rhsFine);
88 virtual void setCoefs(
const RefCountedPtr<LevelData<FArrayBox> >& a_aCoef,
89 const RefCountedPtr<LevelData<FluxBox> >& a_bCoef,
99 virtual void reflux(
const LevelData<FArrayBox>& a_phiFine,
100 const LevelData<FArrayBox>& a_phi,
101 LevelData<FArrayBox>& a_residual,
102 AMRLevelOp<LevelData<FArrayBox> >* a_finerOp);
109 int a_coarseningFactor);
122 void setBCoefInterpolator(RefCountedPtr<CoefficientInterpolator<LevelData<FluxBox>, LevelData<FArrayBox> > >& a_bCoefInterpolator)
134 RefCountedPtr<CoefficientInterpolator<LevelData<FluxBox>, LevelData<FArrayBox> > >
BCoefInterpolator()
165 virtual void levelGSRB(LevelData<FArrayBox>& a_phi,
166 const LevelData<FArrayBox>& a_rhs);
169 const LevelData<FArrayBox>& a_rhs);
171 virtual void looseGSRB(LevelData<FArrayBox>& a_phi,
172 const LevelData<FArrayBox>& a_rhs);
174 virtual void overlapGSRB(LevelData<FArrayBox>& a_phi,
175 const LevelData<FArrayBox>& a_rhs);
178 const LevelData<FArrayBox>& a_rhs);
180 virtual void levelJacobi(LevelData<FArrayBox>& a_phi,
181 const LevelData<FArrayBox>& a_rhs);
184 virtual void getFlux(FArrayBox& a_flux,
185 const FArrayBox& a_data,
186 const FluxBox& a_bCoef,
187 const Box& a_facebox,
189 int a_ref = 1)
const ;
193 const LevelData<FArrayBox>& a_phi);
224 void define(
const ProblemDomain& a_coarseDomain,
225 const Vector<DisjointBoxLayout>& a_grids,
226 const Vector<int>& a_refRatios,
227 const Real& a_coarsedx,
230 Vector<RefCountedPtr<LevelData<FArrayBox> > >& a_aCoef,
232 Vector<RefCountedPtr<LevelData<FluxBox> > >& a_bCoef);
243 void define(
const ProblemDomain& a_coarseDomain,
244 const Vector<DisjointBoxLayout>& a_grids,
245 const Vector<int>& a_refRatios,
246 const Real& a_coarsedx,
248 const IntVect& a_ghostVect);
251 virtual MGLevelOp<LevelData<FArrayBox> >* MGnewOp(
const ProblemDomain& a_FineindexSpace,
253 bool a_homoOnly =
true);
256 virtual AMRLevelOp<LevelData<FArrayBox> >* AMRnewOp(
const ProblemDomain& a_indexSpace);
259 virtual int refToFiner(
const ProblemDomain& a_domain)
const;
264 void setDefaultValues();
266 Vector<ProblemDomain> m_domains;
267 Vector<DisjointBoxLayout> m_boxes;
270 Vector<int> m_refRatios;
277 Vector<RefCountedPtr<LevelData<FArrayBox> > >
m_aCoef;
278 Vector<RefCountedPtr<LevelData<FluxBox> > >
m_bCoef;
280 Vector<RefCountedPtr<LevelData<FArrayBox> > >
m_lambda;
282 Vector<Copier> m_exchangeCopiers;
283 Vector<CFRegion> m_cfregion;
286 #include "NamespaceFooter.H" virtual void levelGSRBLazy(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
Definition: AVCAMRPoissonOp.cpp:684
virtual void levelJacobi(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
Definition: AVCAMRPoissonOp.cpp:691
virtual void applyOpI(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, bool a_homogeneous=false)
Definition: AVCAMRPoissonOp.cpp:135
virtual void levelMultiColor(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
Definition: AVCAMRPoissonOp.cpp:554
virtual void restrictResidual(LevelData< FArrayBox > &a_resCoarse, LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_rhsFine)
Definition: AVCAMRPoissonOp.cpp:201
bool m_lambdaNeedsResetting
Definition: AVCAMRPoissonOp.H:163
virtual void setAlphaAndBeta(const Real &a_alpha, const Real &a_beta)
For tga stuff.
Definition: AVCAMRPoissonOp.cpp:267
virtual void setCoefs(const RefCountedPtr< LevelData< FArrayBox > > &a_aCoef, const RefCountedPtr< LevelData< FluxBox > > &a_bCoef, const Real &a_alpha, const Real &a_beta)
Also calls reset lambda.
Definition: AVCAMRPoissonOp.cpp:277
RefCountedPtr< LevelData< FArrayBox > > m_aCoef
Identity operator spatially varying coefficient storage (cell-centered) — if you change this call re...
Definition: AVCAMRPoissonOp.H:144
RefCountedPtr< CoefficientInterpolator< LevelData< FluxBox >, LevelData< FArrayBox > > > BCoefInterpolator()
Definition: AVCAMRPoissonOp.H:134
virtual void looseGSRB(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
Definition: AVCAMRPoissonOp.cpp:561
RefCountedPtr< CoefficientInterpolator< LevelData< FluxBox >, LevelData< FArrayBox > > > m_bCoefInterpolator
Definition: AVCAMRPoissonOp.H:157
virtual void computeLambda()
Compute lambda once alpha, aCoef, beta, bCoef are defined.
Definition: AVCAMRPoissonOp.cpp:331
void setTime(Real a_time)
Definition: AVCAMRPoissonOp.cpp:787
LevelData< FluxBox > & BCoef()
Returns the B coefficient.
Definition: AVCAMRPoissonOp.H:128
Definition: AVCAMRPoissonOp.H:201
virtual void overlapGSRB(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
Definition: AVCAMRPoissonOp.cpp:677
LayoutData< CFIVS > m_loCFIVS[SpaceDim]
Definition: AVCAMRPoissonOp.H:153
virtual ~AVCAMRPoissonOp()
Definition: AVCAMRPoissonOp.H:45
virtual void reflux(const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > &a_residual, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
Definition: AVCAMRPoissonOp.cpp:343
virtual ~AVCAMRPoissonOpFactory()
Definition: AVCAMRPoissonOp.H:206
virtual void preCond(LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_residual)
Definition: AVCAMRPoissonOp.cpp:99
virtual void levelGSRB(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
Definition: AVCAMRPoissonOp.cpp:449
RefCountedPtr< LevelData< FluxBox > > m_bCoef
Laplacian operator spatially varying coefficient storage (face-centered) — if you change this call r...
Definition: AVCAMRPoissonOp.H:147
AVCAMRPoissonOp()
Definition: AVCAMRPoissonOp.H:37
void computeOperatorNoBCs(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi)
utility function which computes operator after all bc's have been set
virtual void residualI(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false)
Definition: AVCAMRPoissonOp.cpp:30
virtual void getFlux(FArrayBox &a_flux, const FArrayBox &a_data, const FluxBox &a_bCoef, const Box &a_facebox, int a_dir, int a_ref=1) const
computes flux over face-centered a_facebox.
Definition: AVCAMRPoissonOp.cpp:716
Real m_time
Definition: AVCAMRPoissonOp.H:160
LevelData< FArrayBox > m_lambda
Reciprocal of the diagonal entry of the operator matrix.
Definition: AVCAMRPoissonOp.H:150
virtual void applyOpNoBoundary(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi)
Definition: AVCAMRPoissonOp.cpp:153
LevelData< FArrayBox > & identityCoef()
Returns identity coefficient data.
Definition: AVCAMRPoissonOp.H:112
int m_coefficient_average_type
Definition: AVCAMRPoissonOp.H:261
LayoutData< CFIVS > m_hiCFIVS[SpaceDim]
Definition: AVCAMRPoissonOp.H:154
void setBCoefInterpolator(RefCountedPtr< CoefficientInterpolator< LevelData< FluxBox >, LevelData< FArrayBox > > > &a_bCoefInterpolator)
Definition: AVCAMRPoissonOp.H:122
void finerOperatorChanged(const MGLevelOp< LevelData< FArrayBox > > &a_operator, int a_coarseningFactor)
Definition: AVCAMRPoissonOp.cpp:1133
virtual void resetLambda()
Should be called before the relaxation parameter is needed.
Definition: AVCAMRPoissonOp.cpp:292
Definition: AVCAMRPoissonOp.H:27