Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

HelmholtzOp Class Reference

Helmholtz operator class. More...

#include <HelmholtzOp.H>

Inheritance diagram for HelmholtzOp:

Inheritance graph
[legend]
Collaboration diagram for HelmholtzOp:

Collaboration graph
[legend]
List of all members.

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

Detailed Description

Helmholtz operator class.

Operator to solve Helmholtz equation (ie (alpha*I+beta*laplacian)phi = rho)


Constructor & Destructor Documentation

HelmholtzOp::HelmholtzOp (   ) 
 

Default constructor.

HelmholtzOp::~HelmholtzOp (   ) 
 

Destructor.


Member Function Documentation

void HelmholtzOp::applyOpH (  LevelData< FArrayBox > &  phi,
LevelData< FArrayBox > &  LOfPhi
)  [virtual]
 

Evaluate operator with homogeneous boundary conditions.

Uses homogeneous form of both C/F boundary conditions and phys boundary conditions.

Implements LevelOp.

void HelmholtzOp::applyOpHcfIphys (  LevelData< FArrayBox > &  phi,
LevelData< FArrayBox > &  LOfPhi
)  [virtual]
 

Evaluate Operator.

Uses homogeneous C/F boundary conditions. inhomogeneous domain boundary conditions

Implements LevelOp.

void HelmholtzOp::applyOpI (  LevelData< FArrayBox > &  phi,
const LevelData< FArrayBox > *  phiCoarse,
LevelData< FArrayBox > &  LOfPhi
)  [virtual]
 

Evaluate Operator with inhomogeneous BCs.

Uses inhomogeneous form of both C/F boundary conditions and phys boundary conditions.

Implements LevelOp.

void HelmholtzOp::applyOpIcfHphys (  LevelData< FArrayBox > &  phi,
const LevelData< FArrayBox > *  phiCoarse,
LevelData< FArrayBox > &  LOfPhi
)  [virtual]
 

Evaluate operator.

Uses inhomogeneous C/F boundary conditions. homogeneous domain boundary conditions.

Implements LevelOp.

void HelmholtzOp::bottomSmoother (  LevelData< FArrayBox > &  phi,
const LevelData< FArrayBox > &  rhs
)  [virtual]
 

This sends the problem to the bottom smoother.

Implements LevelOp.

void HelmholtzOp::CFInterp (  LevelData< FArrayBox > &  phi,
const LevelData< FArrayBox > &  phiCoarse
)  [virtual]
 

Coarse / Fine interpolation operator. fills ghost cells of phi.

Implements LevelOp.

void HelmholtzOp::define (  const LevelOp *  a_opfine,
int  a_refToFine
)  [virtual]
 

Define from finer levelop.

Implements LevelOp.

void HelmholtzOp::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
)  [virtual]
 

Full define function.

Makes all coarse-fine information and sets internal variables

Parameters:
a_grids  Grids at this level
a_baseBAPtr  Coarser-level grids
a_dxLevel  Cell spacing at this level
a_refRatio  Refinement ratio between this level and coarser
a_domain  Problem domain at this level
a_homogeneousOnly  Only need homogeneous BCs?
a_ncomp  number of components

Implements LevelOp.

void HelmholtzOp::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
)  [virtual]
 

Full define function (Deprecated -- use ProblemDomain).

Makes all coarse-fine information and sets internal variables

Implements LevelOp.

void HelmholtzOp::getFlux (  FArrayBox &  flux,
const FArrayBox &  data,
const DataIndex &  a_datInd,
int  dir
)  [virtual]
 

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.

void HelmholtzOp::homogeneousCFInterp (  LevelData< FArrayBox > &  phif,
const DataIndex &  a_datIndex,
int  idir,
Side::LoHiSide  hiorlo
) 
 

does homogeneous coarse/fine interpolation

void HelmholtzOp::homogeneousCFInterp (  LevelData< FArrayBox > &  phi  )  [virtual]
 

homogeneous coarse/fine interpolation operator

Implements LevelOp.

bool HelmholtzOp::isDefined (   )  const [virtual]
 

Has full define function been called?

Implements LevelOp.

virtual void HelmholtzOp::levelPreconditioner (  LevelData< FArrayBox > &  a_phihat,
const LevelData< FArrayBox > &  a_rhshat
)  [virtual]
 

Apply preconditioning to the solution on this level.

Given rhshat, returns phihat from M(phihat) = rhshat

Implements LevelOp.

LevelOp* HelmholtzOp::new_levelop (   )  const [virtual]
 

Virtual constructor workaround.

Coefficient and bcs must be defined before called.

Implements LevelOp.

void HelmholtzOp::scaleAlpha (  Real  a_scale  )  [virtual]
 

Function to scale the coefficient alpha.

Scale the helmholtz coefficient alpha in (alpha*I + beta*laplacian)phi.

Implements BaseHelmholtzOp.

void HelmholtzOp::scaleBeta (  Real  a_scale  )  [virtual]
 

Scale the helmholtz coefficient beta in (alpha*I + beta*laplacian)phi.

Implements BaseHelmholtzOp.

void HelmholtzOp::scaleHelmCoeff (  Real  a_scale  ) 
 

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

void HelmholtzOp::setAlpha (  Real  a_alpha  ) 
 

Set helmholtz coefficient alpha in (alpha*I +beta*laplacian)phi = rho.

void HelmholtzOp::setBottomSmoother (  const BaseBottomSmoother &  a_bottomSmoother  ) 
 

Sets the bottom smoother which will be used.

Default is BiCGStabSmoother

virtual void HelmholtzOp::setConvergenceMetric (  Real  a_metric,
int  a_comp
)  [virtual]
 

pass-through to bottom smoother

Implements LevelOp.

void HelmholtzOp::setDomainGhostBC (  const DomainGhostBC &  a_dombcin  )  [virtual]
 

Sets the physical boundary conditions for the operator.

Implements BaseHelmholtzOp.

void HelmholtzOp::setHelmCoeff (  Real  a_helmcoeff  ) 
 

Set helmholtz coefficient beta in (alpha*I +beta*laplacian)phi = rho.

void HelmholtzOp::smooth (  LevelData< FArrayBox > &  a_phi,
const LevelData< FArrayBox > &  a_rhs
)  [virtual]
 

Smoother.

Assumes that problem has already been put in residual correction form, so that C/F boundary conditions are homogeneous.

Implements LevelOp.


Member Data Documentation

Real HelmholtzOp::m_alphaCoeff [protected]
 

The alpha in (alpha*I +beta*laplacian)phi = rho

DisjointBoxLayout HelmholtzOp::m_baseBA [protected]
 

DisjointBoxLayout for next coarser level this is == NULL if there is no coarser level

BaseBottomSmoother* HelmholtzOp::m_bottomSmootherPtr [protected]
 

Bottom smoother object

ProblemDomain HelmholtzOp::m_domain [protected]
 

Domain of fine grid

DomainGhostBC HelmholtzOp::m_domghostbc [protected]
 

Boundary conditons

Real HelmholtzOp::m_dxCrse [protected]
 

Mesh spacing at the next coarser level

Real HelmholtzOp::m_dxLevel [protected]
 

Mesh spacing at this level

Copier HelmholtzOp::m_exchangeCopier [protected]
 

Copier object that knows how to perform exchange operations on LevelData objects defined on m_grids

DisjointBoxLayout HelmholtzOp::m_grids [protected]
 

The grids at the current level

bool HelmholtzOp::m_hcoeffDefined [protected]
 

Is the helmholtz coefficient defined?

Real HelmholtzOp::m_helmCoeff [protected]
 

The beta in (alpha*I+beta*laplacian)phi = rho

LayoutData<CFIVS> HelmholtzOp::m_hiCFIVS[SpaceDim] [protected]
 

Intvectset for coarse-fine interpolation

bool HelmholtzOp::m_ihcfiEnabled [protected]
 

Is inhomogeneous CF interpolation possible?

bool HelmholtzOp::m_isBCDefined [protected]
 

Has the boundary condition been set?

bool HelmholtzOp::m_isDefined [protected]
 

Has full define function been called?

LayoutData<CFIVS> HelmholtzOp::m_loCFIVS[SpaceDim] [protected]
 

Intvectset for coarse-fine interpolation

int HelmholtzOp::m_ncomp [protected]
 

Number of components

QuadCFInterp HelmholtzOp::m_quadCFI [protected]
 

Coarse-fine information between this level and the next coarser level

int HelmholtzOp::m_refRatio [protected]
 

Refinement ratio between this and the next coarser level


The documentation for this class was generated from the following file:
Generated on Wed Oct 5 14:01:03 2005 for Chombo&AMRSelfGravity by  doxygen 1.4.1