13 #ifndef _MFPOISSONOP_H_ 14 #define _MFPOISSONOP_H_ 32 #include "NamespaceHeader.H" 56 const bool& a_hasMGObjects,
57 const bool& a_layoutChanged,
96 bool a_homogeneous =
false);
106 bool a_homogeneous =
false);
111 bool a_homogeneous =
false);
120 const int& a_refRat);
203 bool a_homogeneousBC,
211 bool a_homogeneousBC,
227 bool a_homogeneousBC,
234 bool a_homogeneousBC,
241 bool a_homogeneousBC);
307 bool a_divideByTotalArea =
true);
311 Real a_invalidVal = 1.2345678e90);
335 MayDay::Error(
"No weak construction of StencilIndex class.");
386 for (
int idir=0; idir<
SpaceDim; ++idir)
388 if (iv1[idir] != iv2[idir])
390 return (iv1[idir]<iv2[idir]);
393 int p1 = a_s1.
phase();
394 int p2 = a_s2.
phase();
476 #include "NamespaceFooter.H" virtual Real dotProduct(const LevelData< MFCellFAB > &a_1, const LevelData< MFCellFAB > &a_2)
StencilIndex()
Definition: MFPoissonOp.H:333
virtual void relax(LevelData< MFCellFAB > &a_e, const LevelData< MFCellFAB > &a_residual, int iterations)
Definition: MFIndexSpace.H:17
VolIndex m_vof
Definition: MFPoissonOp.H:354
int m_relax
Definition: MFPoissonOp.H:431
virtual Real AMRNorm(const LevelData< MFCellFAB > &a_coarseResid, const LevelData< MFCellFAB > &a_fineResid, const int &a_refRat, const int &a_ord)
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:141
virtual void setAlphaAndBeta(const Real &a_alpha, const Real &a_beta)
int m_ncomp
Definition: MFPoissonOp.H:472
void dumpReferenceStencilMatrix()
Vector< Real > m_bCoef
Definition: MFPoissonOp.H:437
virtual void prolongIncrement(LevelData< MFCellFAB > &a_phiThisLevel, const LevelData< MFCellFAB > &a_correctCoarse)
void getFlux(MFFluxFAB &a_flux, const LevelData< MFCellFAB > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale)
one dimensional dynamic array
Definition: Vector.H:53
virtual void applyOp(LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_phi, DataIterator &a_dit, bool a_homogeneous=false)
LevelData< BaseIVFAB< Real > > m_boundaryD[2]
Definition: MFPoissonOp.H:450
Vector< LevelData< EBCellFAB > *> m_alias
Definition: MFPoissonOp.H:445
Multifluid poisson operator – computes (alpha + div(Beta Grad))
Definition: MFPoissonOp.H:37
IntVect m_ghostRHS
Definition: MFPoissonOp.H:473
virtual void AMRProlong(LevelData< MFCellFAB > &a_correction, const LevelData< MFCellFAB > &a_coarseCorrection)
const IntVect & gridIndex() const
Definition: VolIndex.H:125
virtual void scale(LevelData< MFCellFAB > &a_lhs, const Real &a_scale)
VolIndex vof() const
Definition: MFPoissonOp.H:343
virtual int refToCoarser()
Definition: MFPoissonOp.H:191
void levelJacobi(LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_rhs)
virtual void create(LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_rhs)
create a clone of this MFPoissonOp
LevelDataOps< MFCellFAB > m_ops
Definition: MFPoissonOp.H:446
Definition: DataIterator.H:190
Vector< Real > m_aCoef
Definition: MFPoissonOp.H:439
void setVal(LevelData< MFCellFAB > &a_phi, const Vector< Real > a_values) const
void levelGSRB(LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_rhs)
virtual void createCoarsened(LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_rhs, const int &a_refRat)
int m_phase
Definition: MFPoissonOp.H:355
virtual void AMRRestrict(LevelData< MFCellFAB > &a_resCoarse, const LevelData< MFCellFAB > &a_residual, const LevelData< MFCellFAB > &a_correction, const LevelData< MFCellFAB > &a_coarseCorrection, bool a_skip_res)
virtual void diagonalScale(LevelData< MFCellFAB > &a_rhs)
(TGA) set diagonal scale of the operator
virtual void applyOpNoBoundary(LevelData< MFCellFAB > &a_opPhi, const LevelData< MFCellFAB > &a_phi)
const int SpaceDim
Definition: SPACE.H:38
int m_refToCoarser
Definition: MFPoissonOp.H:469
Definition: AMRMultiGrid.H:39
virtual Real norm(const LevelData< MFCellFAB > &a_x, int a_ord)
Definition: MFPoissonOp.H:358
virtual void AMROperatorNF(LevelData< MFCellFAB > &a_LofPhi, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_phiCoarse, bool a_homogeneousBC)
void setJump(const Real &gD, const Real &gN)
set the jump conditions at the multifluid interface
virtual void AMRResidual(LevelData< MFCellFAB > &a_residual, const LevelData< MFCellFAB > &a_phiFine, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_phiCoarse, const LevelData< MFCellFAB > &a_rhs, bool a_homogeneousBC, AMRLevelOp< LevelData< MFCellFAB > > *a_finerOp)
IntVect m_ghostPhi
Definition: MFPoissonOp.H:473
Definition: EBAMRPoissonOp.H:76
MFPoissonOp()
Default constructor.
Definition: MFPoissonOp.H:41
Vector< Real > m_beta
Definition: MFPoissonOp.H:436
virtual void AMRUpdateResidual(LevelData< MFCellFAB > &a_residual, const LevelData< MFCellFAB > &a_correction, const LevelData< MFCellFAB > &a_coarseCorrection)
LevelData< BaseIVFAB< Real > > m_boundaryN[2]
Definition: MFPoissonOp.H:451
ProblemDomain getDomain()
Definition: MFPoissonOp.H:415
virtual void divideByIdentityCoef(LevelData< MFCellFAB > &a_rhs)
TGA –no op in this case.
Definition: MFPoissonOp.H:81
int m_phases
Definition: MFPoissonOp.H:471
virtual void residual(LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_rhs, bool a_homogeneous=false)
virtual void AMRResidualNC(LevelData< MFCellFAB > &a_residual, const LevelData< MFCellFAB > &a_phiFine, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_rhs, bool a_homogeneousBC, AMRLevelOp< LevelData< MFCellFAB > > *a_finerOp)
double Real
Definition: REAL.H:33
virtual void preCond(LevelData< MFCellFAB > &a_correction, const LevelData< MFCellFAB > &a_residual)
Apply the preconditioner.
Container for face-centered fluxes for multifluid.
Definition: MFFluxFAB.H:23
A BoxLayout that has a concept of disjointedness.
Definition: DisjointBoxLayout.H:30
void getBoundaryValues(LevelData< MFCellFAB > &a_phi, LevelData< MFCellFAB > &a_dPhi_dN, Real a_invalidVal=1.2345678e90)
LevelData< MFCellFAB > m_tmp
Definition: MFPoissonOp.H:447
virtual ~MFPoissonOp()
destructor
void levelMulticolorGS(LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_rhs)
RealVect m_dx
Definition: MFPoissonOp.H:441
virtual void setToZero(LevelData< MFCellFAB > &a_x)
static void Error(const char *const a_msg=m_nullString, int m_exitCode=CH_DEFAULT_ERROR_CODE)
Print out message to cerr and exit with the specified exit code.
virtual void axby(LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_x, const LevelData< MFCellFAB > &a_y, Real a, Real b)
Vector< IntVect > m_colors
Definition: MFPoissonOp.H:433
virtual void assign(LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_rhs)
Vector< Real > m_alpha
Definition: MFPoissonOp.H:438
Definition: InterfaceJump.H:22
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:469
A Real vector in SpaceDim-dimensional space.
Definition: RealVect.H:41
Real kappaNorm(Real &a_volume, const LevelData< MFCellFAB > &a_data, int a_p) const
StencilIndex & operator=(const StencilIndex &a_sin)
Definition: MFPoissonOp.H:338
Definition: MFPoissonOp.H:323
void computeBoundaryN(const LevelData< MFCellFAB > &a_phi, bool a_homogeneous)
Definition: DataIndex.H:114
virtual void createCoarser(LevelData< MFCellFAB > &a_coarse, const LevelData< MFCellFAB > &a_fine, bool ghosted)
Real totalBoundaryFlux(int a_phase, const LevelData< MFCellFAB > &a_phi, Real a_factor=1.0, bool a_divideByTotalArea=true)
int cellIndex() const
Definition: VolIndex.H:133
ProblemDomain m_domain
Definition: MFPoissonOp.H:443
virtual void AMROperatorNC(LevelData< MFCellFAB > &a_LofPhi, const LevelData< MFCellFAB > &a_phiFine, const LevelData< MFCellFAB > &a_phi, bool a_homogeneousBC, AMRLevelOp< LevelData< MFCellFAB > > *a_finerOp)
virtual void AMRResidualNF(LevelData< MFCellFAB > &a_residual, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_phiCoarse, const LevelData< MFCellFAB > &a_rhs, bool a_homogeneousBC)
virtual void incr(LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_x, Real a_scale)
An integer Vector in SpaceDim-dimensional space.
Definition: CHArray.H:42
virtual void AMROperator(LevelData< MFCellFAB > &a_LofPhi, const LevelData< MFCellFAB > &a_phiFine, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_phiCoarse, bool a_homogeneousBC, AMRLevelOp< LevelData< MFCellFAB > > *a_finerOp)
int m_refToFiner
Definition: MFPoissonOp.H:470
virtual void restrictResidual(LevelData< MFCellFAB > &a_resCoarse, LevelData< MFCellFAB > &a_phiFine, const LevelData< MFCellFAB > &a_rhsFine)
StencilIndex(VolIndex &a_vof, int &a_phase)
Definition: MFPoissonOp.H:326
RealVect m_dxCrse
Definition: MFPoissonOp.H:442
Volume of Fluid Index.
Definition: VolIndex.H:31
void define(const MFIndexSpace &a_mfis, int a_ncomp, const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_gridsCoarMG, const bool &a_hasMGObjects, const bool &a_layoutChanged, const DisjointBoxLayout &a_gridsFiner, const DisjointBoxLayout &a_gridsCoarser, const RealVect &a_dxLevel, int a_refRatio, int a_refRatioFiner, const ProblemDomain &a_domain, const Vector< RefCountedPtr< BaseDomainBC > > &a_bc, const IntVect &a_ghostPhi, const IntVect &a_ghostRHS, bool hasCoarser, bool hasFiner, const Vector< Real > &a_alpha, const Vector< Real > &a_beta)
full define function for AMRLevelOp with both coarser and finer levels
virtual void setTime(Real a_time)
Vector< EBAMRPoissonOp * > m_ebops
Definition: MFPoissonOp.H:444
Real exactBoundaryFlux(int a_phase, RefCountedPtr< BaseBCValue > a_flxVal, RealVect &a_origin, const Real &a_time)
EBAMRPoissonOp * ebOp(int phase)
Definition: MFPoissonOp.H:295
LevelData< MFCellFAB > m_weights
Definition: MFPoissonOp.H:448
InterfaceJump m_jump
Definition: MFPoissonOp.H:452
int phase() const
Definition: MFPoissonOp.H:348