#include <HelmholtzOp.H>
Inheritance diagram for HelmholtzOp:
Operator to solve Helmholtz equation (ie (alpha*I+beta*laplacian)phi = rho)
Public Member Functions | |
void | setHelmCoeff (Real a_helmcoeff) |
Set helmholtz coefficient beta in (alpha*I +beta*laplacian)phi = rho. | |
void | scaleHelmCoeff (Real a_scale) |
Scale the helmholtz coefficient beta in (alpha*I + beta*laplacian)phi. | |
void | setAlpha (Real a_alpha) |
Set helmholtz coefficient alpha in (alpha*I +beta*laplacian)phi = rho. | |
void | scaleAlpha (Real a_scale) |
Function to scale the coefficient alpha. | |
void | scaleBeta (Real a_scale) |
Scale the helmholtz coefficient beta in (alpha*I + beta*laplacian)phi. | |
LevelOp * | new_levelop () const |
Virtual constructor workaround. | |
void | define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_baseBAPtr, Real a_dxLevel, int a_refRatio, const Box &a_domain, bool a_homogeneousOnly=false, int a_ncomp=1) |
Full define function (Deprecated -- use ProblemDomain). | |
void | define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_baseBAPtr, Real a_dxLevel, int a_refRatio, const ProblemDomain &a_domain, bool a_homogeneousOnly=false, int a_ncomp=1) |
Full define function. | |
void | define (const LevelOp *a_opfine, int a_refToFine) |
Define from finer levelop. | |
HelmholtzOp () | |
Default constructor. | |
~HelmholtzOp () | |
Destructor. | |
void | smooth (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs) |
Smoother. | |
virtual void | levelPreconditioner (LevelData< FArrayBox > &a_phihat, const LevelData< FArrayBox > &a_rhshat) |
Apply preconditioning to the solution on this level. | |
void | applyOpI (LevelData< FArrayBox > &phi, const LevelData< FArrayBox > *phiCoarse, LevelData< FArrayBox > &LOfPhi) |
Evaluate Operator with inhomogeneous BCs. | |
void | applyOpIcfHphys (LevelData< FArrayBox > &phi, const LevelData< FArrayBox > *phiCoarse, LevelData< FArrayBox > &LOfPhi) |
Evaluate operator. | |
void | applyOpH (LevelData< FArrayBox > &phi, LevelData< FArrayBox > &LOfPhi) |
Evaluate operator with homogeneous boundary conditions. | |
void | applyOpHcfIphys (LevelData< FArrayBox > &phi, LevelData< FArrayBox > &LOfPhi) |
Evaluate Operator. | |
void | CFInterp (LevelData< FArrayBox > &phi, const LevelData< FArrayBox > &phiCoarse) |
Coarse / Fine interpolation operator. fills ghost cells of phi. | |
void | homogeneousCFInterp (LevelData< FArrayBox > &phi) |
homogeneous coarse/fine interpolation operator | |
void | setDomainGhostBC (const DomainGhostBC &a_dombcin) |
Sets the physical boundary conditions for the operator. | |
void | setBottomSmoother (const BaseBottomSmoother &a_bottomSmoother) |
Sets the bottom smoother which will be used. | |
void | homogeneousCFInterp (LevelData< FArrayBox > &phif, const DataIndex &a_datIndex, int idir, Side::LoHiSide hiorlo) |
does homogeneous coarse/fine interpolation | |
void | bottomSmoother (LevelData< FArrayBox > &phi, const LevelData< FArrayBox > &rhs) |
This sends the problem to the bottom smoother. | |
bool | isDefined () const |
Has full define function been called? | |
void | getFlux (FArrayBox &flux, const FArrayBox &data, const DataIndex &a_datInd, int dir) |
Fills flux with the flux at this level. | |
virtual void | setConvergenceMetric (Real a_metric, int a_comp) |
pass-through to bottom smoother | |
Protected Attributes | |
DomainGhostBC | m_domghostbc |
ProblemDomain | m_domain |
DisjointBoxLayout | m_grids |
Copier | m_exchangeCopier |
DisjointBoxLayout | m_baseBA |
int | m_refRatio |
Real | m_dxLevel |
Real | m_dxCrse |
int | m_ncomp |
QuadCFInterp | m_quadCFI |
BaseBottomSmoother * | m_bottomSmootherPtr |
bool | m_isDefined |
bool | m_isBCDefined |
bool | m_ihcfiEnabled |
bool | m_hcoeffDefined |
LayoutData< CFIVS > | m_loCFIVS [SpaceDim] |
LayoutData< CFIVS > | m_hiCFIVS [SpaceDim] |
Real | m_helmCoeff |
Real | m_alphaCoeff |
Private Member Functions | |
void | levelGSRB (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs) |
void | interpOnIVSHomo (LevelData< FArrayBox > &a_phif, const DataIndex &a_datInd, const int a_idir, const Side::LoHiSide a_hiorlo, const IntVectSet &a_interpIVS) |
void | clearMemory () |
void | setDefaultValues () |
|
Default constructor.
|
|
Destructor.
|
|
Set helmholtz coefficient beta in (alpha*I +beta*laplacian)phi = rho.
|
|
Scale the helmholtz coefficient beta in (alpha*I + beta*laplacian)phi. beta := a_scale*beta. This function exists for backward compatibility with the old helmholtzOp. in reality, this just calls scaleBeta |
|
Set helmholtz coefficient alpha in (alpha*I +beta*laplacian)phi = rho.
|
|
Function to scale the coefficient alpha. Scale the helmholtz coefficient alpha in (alpha*I + beta*laplacian)phi. Implements BaseHelmholtzOp. |
|
Scale the helmholtz coefficient beta in (alpha*I + beta*laplacian)phi.
Implements BaseHelmholtzOp. |
|
Virtual constructor workaround. Coefficient and bcs must be defined before called. Implements LevelOp. |
|
Full define function (Deprecated -- use ProblemDomain). Makes all coarse-fine information and sets internal variables Implements LevelOp. |
|
Full define function. Makes all coarse-fine information and sets internal variables
Implements LevelOp. |
|
Define from finer levelop.
Implements LevelOp. |
|
Smoother. Assumes that problem has already been put in residual correction form, so that C/F boundary conditions are homogeneous. Implements LevelOp. |
|
Apply preconditioning to the solution on this level. Given rhshat, returns phihat from M(phihat) = rhshat Implements LevelOp. |
|
Evaluate Operator with inhomogeneous BCs. Uses inhomogeneous form of both C/F boundary conditions and phys boundary conditions. Implements LevelOp. |
|
Evaluate operator. Uses inhomogeneous C/F boundary conditions. homogeneous domain boundary conditions. Implements LevelOp. |
|
Evaluate operator with homogeneous boundary conditions. Uses homogeneous form of both C/F boundary conditions and phys boundary conditions. Implements LevelOp. |
|
Evaluate Operator. Uses homogeneous C/F boundary conditions. inhomogeneous domain boundary conditions Implements LevelOp. |
|
Coarse / Fine interpolation operator. fills ghost cells of phi.
Implements LevelOp. |
|
homogeneous coarse/fine interpolation operator
Implements LevelOp. |
|
Sets the physical boundary conditions for the operator.
Implements BaseHelmholtzOp. |
|
Sets the bottom smoother which will be used. Default is BiCGStabSmoother |
|
does homogeneous coarse/fine interpolation
|
|
This sends the problem to the bottom smoother.
Implements LevelOp. |
|
Has full define function been called?
Implements LevelOp. |
|
Fills flux with the flux at this level. The fluxes live on the cell faces with direction dir. Fluxes are computed for all interior edges of data. The flux fab is resized inside the routine. Implements LevelOp. |
|
pass-through to bottom smoother
Implements LevelOp. |
|
Internally useful -- performs a GSRB smoothing |
|
Does the homoegeneous CF interpolation |
|
|
|
|
|
Boundary conditons |
|
Domain of fine grid |
|
The grids at the current level |
|
Copier object that knows how to perform exchange operations on LevelData objects defined on m_grids |
|
DisjointBoxLayout for next coarser level this is == NULL if there is no coarser level |
|
Refinement ratio between this and the next coarser level |
|
Mesh spacing at this level |
|
Mesh spacing at the next coarser level |
|
Number of components |
|
Coarse-fine information between this level and the next coarser level |
|
Bottom smoother object |
|
Has full define function been called? |
|
Has the boundary condition been set? |
|
Is inhomogeneous CF interpolation possible? |
|
Is the helmholtz coefficient defined? |
|
Intvectset for coarse-fine interpolation |
|
Intvectset for coarse-fine interpolation |
|
The beta in (alpha*I+beta*laplacian)phi = rho |
|
The alpha in (alpha*I +beta*laplacian)phi = rho |