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

HelmholtzOp Class Reference

#include <HelmholtzOp.H>

Inheritance diagram for HelmholtzOp:

Inheritance graph
[legend]
Collaboration diagram for HelmholtzOp:

Collaboration graph
[legend]
List of all members.

Detailed Description

Helmholtz operator class.

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.

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

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 ()


Constructor & Destructor Documentation

HelmholtzOp::HelmholtzOp  ) 
 

Default constructor.

HelmholtzOp::~HelmholtzOp  ) 
 

Destructor.


Member Function Documentation

void HelmholtzOp::setHelmCoeff Real  a_helmcoeff  ) 
 

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

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::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.

LevelOp* HelmholtzOp::new_levelop  )  const [virtual]
 

Virtual constructor workaround.

Coefficient and bcs must be defined before called.

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::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 LevelOp a_opfine,
int  a_refToFine
[virtual]
 

Define from finer levelop.

Implements LevelOp.

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.

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.

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::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::CFInterp LevelData< FArrayBox > &  phi,
const LevelData< FArrayBox > &  phiCoarse
[virtual]
 

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

Implements LevelOp.

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

homogeneous coarse/fine interpolation operator

Implements LevelOp.

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

Sets the physical boundary conditions for the operator.

Implements BaseHelmholtzOp.

void HelmholtzOp::setBottomSmoother const BaseBottomSmoother a_bottomSmoother  ) 
 

Sets the bottom smoother which will be used.

Default is BiCGStabSmoother

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

does homogeneous coarse/fine interpolation

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

This sends the problem to the bottom smoother.

Implements LevelOp.

bool HelmholtzOp::isDefined  )  const [virtual]
 

Has full define function been called?

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.

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

pass-through to bottom smoother

Implements LevelOp.

void HelmholtzOp::levelGSRB LevelData< FArrayBox > &  a_phi,
const LevelData< FArrayBox > &  a_rhs
[private]
 

Internally useful -- performs a GSRB smoothing

void HelmholtzOp::interpOnIVSHomo LevelData< FArrayBox > &  a_phif,
const DataIndex a_datInd,
const int  a_idir,
const Side::LoHiSide  a_hiorlo,
const IntVectSet a_interpIVS
[private]
 

Does the homoegeneous CF interpolation

void HelmholtzOp::clearMemory  )  [private]
 

void HelmholtzOp::setDefaultValues  )  [private]
 


Member Data Documentation

DomainGhostBC HelmholtzOp::m_domghostbc [protected]
 

Boundary conditons

ProblemDomain HelmholtzOp::m_domain [protected]
 

Domain of fine grid

DisjointBoxLayout HelmholtzOp::m_grids [protected]
 

The grids at the current 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_baseBA [protected]
 

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

int HelmholtzOp::m_refRatio [protected]
 

Refinement ratio between this and the next coarser level

Real HelmholtzOp::m_dxLevel [protected]
 

Mesh spacing at this level

Real HelmholtzOp::m_dxCrse [protected]
 

Mesh spacing at the next coarser level

int HelmholtzOp::m_ncomp [protected]
 

Number of components

QuadCFInterp HelmholtzOp::m_quadCFI [protected]
 

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

BaseBottomSmoother* HelmholtzOp::m_bottomSmootherPtr [protected]
 

Bottom smoother object

bool HelmholtzOp::m_isDefined [protected]
 

Has full define function been called?

bool HelmholtzOp::m_isBCDefined [protected]
 

Has the boundary condition been set?

bool HelmholtzOp::m_ihcfiEnabled [protected]
 

Is inhomogeneous CF interpolation possible?

bool HelmholtzOp::m_hcoeffDefined [protected]
 

Is the helmholtz coefficient defined?

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

Intvectset for coarse-fine interpolation

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

Intvectset for coarse-fine interpolation

Real HelmholtzOp::m_helmCoeff [protected]
 

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

Real HelmholtzOp::m_alphaCoeff [protected]
 

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


The documentation for this class was generated from the following file:
Generated on Fri Jul 2 17:55:49 2004 for Chombo by doxygen 1.3.2