Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound 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 Methods

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.

LevelOpnew_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
BaseBottomSmootherm_bottomSmootherPtr
bool m_isDefined
bool m_isBCDefined
bool m_ihcfiEnabled
bool m_hcoeffDefined
LayoutData< CFIVSm_loCFIVS [SpaceDim]
LayoutData< CFIVSm_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 Jan 19 17:56:03 2005 for Chombo&INSwithParticles by doxygen1.2.16