AMRNodeSolverAlt Class Reference

#include <AMRNodeSolverAlt.H>

Collaboration diagram for AMRNodeSolverAlt:

Collaboration graph
[legend]

List of all members.


Detailed Description

Class which manages grid hierarchy and composite elliptic solution, solving level-by-level.

AMRNodeSolverAlt manages the AMR/multigrid solution to the elliptic equation on a set of grids on multiple levels satisfying certain proper-nesting conditions.

It can be used either as a solver, or to apply the AMR / multigrid V-cycle as a preconditioner for some other iterative method, such as a Krylov method.

Public Member Functions

Constructors, destructor and defines
 AMRNodeSolverAlt ()
 AMRNodeSolverAlt (const Vector< DisjointBoxLayout > &a_gridsLevel, const Vector< ProblemDomain > &a_domainLevel, const Vector< Real > &a_dxLevel, const Vector< int > &a_refRatio, int a_numLevels, int a_lBase, const NodeLevelOp *const a_opin, int a_minLength=1)
 AMRNodeSolverAlt (const Vector< DisjointBoxLayout > &a_gridsLevel, const Vector< Box > &a_domainLevel, const Vector< Real > &a_dxLevel, const Vector< int > &a_refRatio, int a_numLevels, int a_lBase, const NodeLevelOp *const a_opin, int a_minLength=1)
 ~AMRNodeSolverAlt ()
void define (const Vector< DisjointBoxLayout > &a_gridsLevel, const Vector< ProblemDomain > &a_domainLevel, const Vector< Real > &a_dxLevel, const Vector< int > &a_refRatio, int a_numLevels, int a_lBase, const NodeLevelOp *const a_opin, int a_minLength=1)
void define (const Vector< DisjointBoxLayout > &a_gridsLevel, const Vector< Box > &a_domainLevel, const Vector< Real > &a_dxLevel, const Vector< int > &a_refRatio, int a_numLevels, int a_lBase, const NodeLevelOp *const a_opin, int a_minLength=1)
Access functions
bool isDefined () const
Parameter-setting functions
void setNumSmoothUp (int a_numSmoothUp)
void setNumSmoothDown (int a_numSmoothDown)
void setTolerance (Real a_tolerance)
void setBottomSmoothing (bool a_doBottomSmooth)
void setMaxIter (int a_maxIter)
void setVerbose (bool a_verbose)
Data modification functions
void solveAMR (Vector< LevelData< NodeFArrayBox > * > &a_phiLevel, const Vector< LevelData< NodeFArrayBox > * > &a_rhsLevel)

Protected Member Functions

void setDefaultValues ()
void clear ()

Protected Attributes

Real m_tolerance
int m_lBase
int m_numLevels
int m_finestLevel
Vector< int > m_refRatio
Vector< Realm_dxLevel
Vector< DisjointBoxLayoutm_gridsLevel
Vector< ProblemDomainm_domainLevel
int m_numSmoothUp
int m_numSmoothDown
bool m_isDefined
Vector< LevelNodeSolver * > m_levelSolver
bool m_verbose

Private Member Functions

 AMRNodeSolverAlt (const AMRNodeSolverAlt &)
AMRNodeSolverAltoperator= (const AMRNodeSolverAlt &)


Constructor & Destructor Documentation

AMRNodeSolverAlt::AMRNodeSolverAlt (  ) 

Creates a AMRNodeSolverAlt whose internal state is undefined. Need to call define() function to use any of the functionality of the class.

AMRNodeSolverAlt::AMRNodeSolverAlt ( const Vector< DisjointBoxLayout > &  a_gridsLevel,
const Vector< ProblemDomain > &  a_domainLevel,
const Vector< Real > &  a_dxLevel,
const Vector< int > &  a_refRatio,
int  a_numLevels,
int  a_lBase,
const NodeLevelOp *const   a_opin,
int  a_minLength = 1 
)

Creates a fully-defined AMRNodeSolverAlt. Calls define() function with identical arguments.

AMRNodeSolverAlt::AMRNodeSolverAlt ( const Vector< DisjointBoxLayout > &  a_gridsLevel,
const Vector< Box > &  a_domainLevel,
const Vector< Real > &  a_dxLevel,
const Vector< int > &  a_refRatio,
int  a_numLevels,
int  a_lBase,
const NodeLevelOp *const   a_opin,
int  a_minLength = 1 
)

Creates a fully-defined AMRNodeSolverAlt. Calls define() function with identical arguments.

AMRNodeSolverAlt::~AMRNodeSolverAlt (  ) 

Destructor.

AMRNodeSolverAlt::AMRNodeSolverAlt ( const AMRNodeSolverAlt  )  [private]


Member Function Documentation

void AMRNodeSolverAlt::define ( const Vector< DisjointBoxLayout > &  a_gridsLevel,
const Vector< ProblemDomain > &  a_domainLevel,
const Vector< Real > &  a_dxLevel,
const Vector< int > &  a_refRatio,
int  a_numLevels,
int  a_lBase,
const NodeLevelOp *const   a_opin,
int  a_minLength = 1 
)

Defines AMRNodeSolverAlt's internal state.

Except for a_refRatio, each Vector argument contains a component for each level, and Vector index corresponds to level number.

Parameters:
a_gridsLevel  the grids (CELL-centered) at all levels; Vector length at least a_numLevels
a_domainLevel  the CELL-centered physical domains at all levels; Vector length at least a_numLevels
a_dxLevel  the grid spacing at all levels; Vector length at least a_numLevels
a_refRatio  refinement ratios between adjacent levels, starting with a_refRatio[0], the refinement ratio between levels 0 and 1; Vector length at least a_numLevels-1
a_numLevels  the number of AMR levels in the calculation
a_lBase  index of coarsest level on which solution is to be computed; must be set at time of definition in order to build the bottom LevelNodeSolver
a_opin  pointer to the NodeLevelOp to use in the solution
a_minLength  minimum length of maximally coarsened box in LevelNodeSolver, or 0 for no coarsening

void AMRNodeSolverAlt::define ( const Vector< DisjointBoxLayout > &  a_gridsLevel,
const Vector< Box > &  a_domainLevel,
const Vector< Real > &  a_dxLevel,
const Vector< int > &  a_refRatio,
int  a_numLevels,
int  a_lBase,
const NodeLevelOp *const   a_opin,
int  a_minLength = 1 
)

Defines AMRNodeSolverAlt's internal state.

Except for a_refRatio, each Vector argument contains a component for each level, and Vector index corresponds to level number.

Parameters:
a_gridsLevel  the grids (CELL-centered) at all levels; Vector length at least a_numLevels
a_domainLevel  the CELL-centered physical domains at all levels; Vector length at least a_numLevels
a_dxLevel  the grid spacing at all levels; Vector length at least a_numLevels
a_refRatio  refinement ratios between adjacent levels, starting with a_refRatio[0], the refinement ratio between levels 0 and 1; Vector length at least a_numLevels-1
a_numLevels  the number of AMR levels in the calculation
a_lBase  index of coarsest level on which solution is to be computed; must be set at time of definition in order to build the bottom LevelNodeSolver
a_opin  pointer to the NodeLevelOp to use in the solution
a_minLength  minimum length of maximally coarsened box in LevelNodeSolver, or 0 for no coarsening

bool AMRNodeSolverAlt::isDefined (  )  const

Returns true if full define() function has been called.

void AMRNodeSolverAlt::setNumSmoothUp ( int  a_numSmoothUp  ) 

Set number of multigrid smoothings on way up V-cycle; Default is 4.

void AMRNodeSolverAlt::setNumSmoothDown ( int  a_numSmoothDown  ) 

Set number of multigrid smoothings on way down V-cycle; Default is 4.

void AMRNodeSolverAlt::setTolerance ( Real  a_tolerance  ) 

Set tolerance of solvers. Default is set in LevelNodeSolver.

void AMRNodeSolverAlt::setBottomSmoothing ( bool  a_doBottomSmooth  ) 

Set whether solver does smoothing at bottom level. Default is set in LevelNodeSolver.

void AMRNodeSolverAlt::setMaxIter ( int  a_maxIter  ) 

Set max number of iterations for solvers at every level. Default is set in LevelNodeSolver.

void AMRNodeSolverAlt::setVerbose ( bool  a_verbose  ) 

Set whether the solver gives output while solving. Default is true.

void AMRNodeSolverAlt::solveAMR ( Vector< LevelData< NodeFArrayBox > * > &  a_phiLevel,
const Vector< LevelData< NodeFArrayBox > * > &  a_rhsLevel 
)

Solves the elliptic equation over the hierarchy of levels m_lBase ... m_finestLevel where m_finestLevel = m_numLevels-1.

If m_lBase > 0, then the data at level m_lBase - 1 is used to interpolate boundary conditions at boundary nodes that are not adjacent to the domain boundary.

Solves to tolerance m_tolerance.

Parameters:
a_phiLevel  pointers to current guess at the solution values for levels (lMin = max(m_lBase-1,0)) ... m_finestLevel. Vector index corresponds to level number. These values are updated in place.
a_rhsLevel  pointers to right-hand side for levels lMin ... m_finestLevel. Not modified.

void AMRNodeSolverAlt::setDefaultValues (  )  [protected]

Set data to default values. Not for external use.

void AMRNodeSolverAlt::clear (  )  [protected]

Delete m_levelSolver Vector.

AMRNodeSolverAlt& AMRNodeSolverAlt::operator= ( const AMRNodeSolverAlt  )  [private]


Member Data Documentation

solver tolerance

int AMRNodeSolverAlt::m_lBase [protected]

index of coarsest level on which solution is to be computed.

number of levels allowed

index of finest level used, equal to m_numLevels-1

refinement ratio between levels; m_refRatio[ilev] is refinement ratio between levels ilev and ilev+1

grid spacing at each level

grids, CELL-centered (disjoint) at each level

CELL-centered physical domain at each level

number of smoother iterations on sweep up

number of smoother iterations on sweep down

whether the full define() function has been called

multigrid solver for each level

bool AMRNodeSolverAlt::m_verbose [protected]

whether to write verbose output; default is true


The documentation for this class was generated from the following file:

Generated on Tue Apr 14 14:22:50 2009 for Chombo + EB by  doxygen 1.5.5