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.
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 Oct 5 14:01:03 2005 for Chombo&AMRSelfGravity by  doxygen 1.4.1