11 #ifndef _VCAMRPOISSONOP2_H_ 12 #define _VCAMRPOISSONOP2_H_ 17 #include "NamespaceHeader.H" 51 bool a_homogeneous =
false);
60 bool a_homogeneous =
false);
111 int a_coarseningFactor);
121 bool a_kappaWeighted)
126 a_rhs[dit()].mult((*
m_aCoef)[dit()]);
135 a_rhs[dit()].divide((*
m_aCoef)[dit()]);
184 const FluxBox& bCoef = (*m_bCoef)[a_dit];
185 getFlux(a_flux,a_data,bCoef,a_grid,a_dit,a_scale);
198 for (
int idir=0; idir<
SpaceDim; idir++)
200 getFlux(a_flux[idir], data, a_bCoef, a_flux[idir].
box(), idir, 1);
201 a_flux[idir] *= a_scale;
241 const Box& a_facebox,
243 int a_ref = 1)
const ;
281 const Real& a_coarsedx,
300 const Real& a_coarsedx,
307 bool a_homoOnly =
true);
318 void setDefaultValues();
340 #include "NamespaceFooter.H" RefCountedPtr< LevelData< FArrayBox > > m_aCoef
Identity operator spatially varying coefficient storage (cell-centered) — if you change this call re...
Definition: VCAMRPoissonOp2.H:167
LevelData< FArrayBox > & identityCoef()
Returns identity coefficient data.
Definition: VCAMRPoissonOp2.H:114
virtual void preCond(LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_residual)
Vector< CFRegion > m_cfregion
Definition: VCAMRPoissonOp2.H:337
Real m_time
Definition: VCAMRPoissonOp2.H:214
virtual void getFlux(FluxBox &a_flux, const LevelData< FArrayBox > &a_data, const FluxBox &a_bCoef, const Box &a_grid, const DataIndex &a_dit, Real a_scale)
Definition: VCAMRPoissonOp2.H:189
void define(const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_gridsFiner, const DisjointBoxLayout &a_gridsCoarser, const Real &a_dxLevel, int a_refRatio, int a_refRatioFiner, const ProblemDomain &a_domain, BCHolder a_bc, const Copier &a_exchange, const CFRegion &a_cfregion, const int a_nComp=1)
virtual ~VCAMRPoissonOp2Factory()
Definition: VCAMRPoissonOp2.H:260
A reference-counting handle class.
Definition: RefCountedPtr.H:173
Vector< RefCountedPtr< LevelData< FArrayBox > > > m_aCoef
Definition: VCAMRPoissonOp2.H:331
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:141
RefCountedPtr< CoefficientInterpolator< LevelData< FluxBox >, LevelData< FArrayBox > > > m_bCoefInterpolator
Definition: VCAMRPoissonOp2.H:211
virtual void overlapGSRB(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
void finerOperatorChanged(const MGLevelOp< LevelData< FArrayBox > > &a_operator, int a_coarseningFactor)
virtual void levelJacobi(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
virtual bool ok() const
return true if this iterator is still in its Layout
Definition: LayoutIterator.H:117
Definition: DataIterator.H:190
Real m_beta
Definition: VCAMRPoissonOp2.H:329
VCAMRPoissonOp2()
Definition: VCAMRPoissonOp2.H:35
const int SpaceDim
Definition: SPACE.H:38
Definition: AMRMultiGrid.H:39
Vector< Copier > m_exchangeCopiers
Definition: VCAMRPoissonOp2.H:336
Definition: EBInterface.H:45
Definition: AMRPoissonOp.H:35
A FArrayBox-like container for face-centered fluxes.
Definition: FluxBox.H:22
Real m_alpha
Definition: VCAMRPoissonOp2.H:328
LevelData< FArrayBox > m_lambda
Reciprocal of the diagonal entry of the operator matrix.
Definition: VCAMRPoissonOp2.H:173
Definition: CoefficientInterpolator.H:29
virtual ~VCAMRPoissonOp2()
Definition: VCAMRPoissonOp2.H:43
Vector< ProblemDomain > m_domains
Definition: VCAMRPoissonOp2.H:320
double Real
Definition: REAL.H:33
virtual void residualI(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false)
despite what you might think, the "I" here means "Ignore the coarse-fine boundary" ...
Definition: VCAMRPoissonOp2.H:255
Definition: MultiGrid.H:30
Definition: VCAMRPoissonOp2.H:25
Vector< Real > m_dx
Definition: VCAMRPoissonOp2.H:323
virtual void diagonalScale(LevelData< FArrayBox > &a_rhs, bool a_kappaWeighted)
For TGA.
Definition: VCAMRPoissonOp2.H:120
BCHolder m_bc
Definition: VCAMRPoissonOp2.H:326
A BoxLayout that has a concept of disjointedness.
Definition: DisjointBoxLayout.H:30
bool m_lambdaNeedsResetting
Definition: VCAMRPoissonOp2.H:217
virtual void looseGSRB(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
int m_coefficient_average_type
Definition: VCAMRPoissonOp2.H:315
virtual void applyOpI(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, bool a_homogeneous=false)
despite what you might think, the "I" here means "Ignore the coarse-fine boundary" ...
virtual void divideByIdentityCoef(LevelData< FArrayBox > &a_rhs)
For TGA.
Definition: VCAMRPoissonOp2.H:130
LayoutData< CFIVS > m_hiCFIVS[SpaceDim]
Definition: VCAMRPoissonOp2.H:208
virtual void levelGSRBLazy(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
Vector< RefCountedPtr< LevelData< FArrayBox > > > m_lambda
Definition: VCAMRPoissonOp2.H:334
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:469
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.
virtual void getFlux(FluxBox &a_flux, const LevelData< FArrayBox > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale)
Definition: VCAMRPoissonOp2.H:178
Vector< RefCountedPtr< LevelData< FluxBox > > > m_bCoef
Definition: VCAMRPoissonOp2.H:332
int nComp() const
Definition: BoxLayoutData.H:306
Definition: DataIndex.H:114
const DisjointBoxLayout & disjointBoxLayout() const
Definition: LevelData.H:225
virtual void reflux(const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > &a_residual, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
virtual void levelGSRB(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
RefCountedPtr< LevelData< FluxBox > > m_bCoef
Laplacian operator spatially varying coefficient storage (face-centered) — if you change this call r...
Definition: VCAMRPoissonOp2.H:170
void setBCoefInterpolator(RefCountedPtr< CoefficientInterpolator< LevelData< FluxBox >, LevelData< FArrayBox > > > &a_bCoefInterpolator)
Definition: VCAMRPoissonOp2.H:145
An integer Vector in SpaceDim-dimensional space.
Definition: CHArray.H:42
Definition: FArrayBox.H:45
virtual void setAlphaAndBeta(const Real &a_alpha, const Real &a_beta)
For tga stuff.
LayoutData< CFIVS > m_loCFIVS[SpaceDim]
Definition: VCAMRPoissonOp2.H:207
void setTime(Real a_time)
Vector< int > m_refRatios
Definition: VCAMRPoissonOp2.H:324
void define(const Box &bx, int n=1)
Resize FluxBox similar to BaseFab::resize()
virtual void restrictResidual(LevelData< FArrayBox > &a_resCoarse, LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_rhsFine)
virtual void applyOpNoBoundary(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi)
Definition: AMRMultiGrid.H:233
DataIterator dataIterator() const
Parallel iterator.
virtual void levelMultiColor(LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
LevelData< FluxBox > & BCoef()
Returns the B coefficient.
Definition: VCAMRPoissonOp2.H:151
virtual void computeLambda()
Compute lambda once alpha, aCoef, beta, bCoef are defined.
virtual void resetLambda()
Should be called before the relaxation parameter is needed.
Vector< DisjointBoxLayout > m_boxes
Definition: VCAMRPoissonOp2.H:321
RefCountedPtr< CoefficientInterpolator< LevelData< FluxBox >, LevelData< FArrayBox > > > BCoefInterpolator()
Definition: VCAMRPoissonOp2.H:157