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

GenAMRLevelMG< T > Class Template Reference

class which manages data and operations on a level for GenAMRSolver More...

#include <GenAMRLevelMG.H>

Collaboration diagram for GenAMRLevelMG< T >:

Collaboration graph
[legend]
List of all members.

Public Methods

 GenAMRLevelMG ()
 constructor

 GenAMRLevelMG (const GenAMRSolver< T > *const a_parent, int a_level, const GenAMRLevelMGOp< T > *const a_opin, int a_ncomp=1)
 define level

 ~GenAMRLevelMG ()
 destructor

bool isDefined () const
 has define function been called? if not, most fcns won't work

void define (const GenAMRSolver< T > *const a_parent, int a_level, const GenAMRLevelMGOp< T > *const a_opin, int a_ncomp=1)
 define level

void setnumSmoothUp (int a_numSmoothUp)
void setnumSmoothDown (int a_numSmoothDown)
void applyAMROperator (Vector< T * > &a_phiLevel, T &a_LOfPhi)
 complete, 3-level operator

void applyAMROperatorHphys (Vector< T * > &a_phiLevel, T &a_LOfPhi)
 complete, 3-level operator with homogeneous physical boundary conditions

void computeAMRResidual (Vector< T * > &a_phiLevel, const Vector< T * > &a_rhsLevel)
void computeAMRResidual (T &a_resid, Vector< T * > &a_phiLevel, const Vector< T * > &a_rhsLevel)
void computeAMRResidualHphys (Vector< T * > &a_phiLevel, const Vector< T * > &a_rhsLevel)
void upSweep (Vector< T * > &a_phiLevel, const Vector< T * > &a_rhsLevel)
void downSweep (Vector< T * > &a_phiLevel, const Vector< T * > &a_rhsLevel)
Vector< RealcomputeResidualNorm (int a_normType) const
GenAMRLevelMGOp< T > * levelOpPtr () const
Vector< RealcomputeNorm (const T &a_mfinput, int a_normType) const

Protected Methods

void smooth (T &a_soln, const T &a_rhs)
void clearMemory ()
void setDefaultValues ()
void reflux (Vector< T * > &a_phiLevel, T &a_LOfPhi)
void initFRCoarse (Vector< T * > &a_phiLevel)
 internally useful functions

void incrementFRFine (Vector< T * > &a_phiLevel)

Protected Attributes

const GenAMRSolver< T > * m_parent
GenLevelMG< T > m_levelMG
GenMGInterp< T > m_mginterp
LevelFluxRegister m_levfluxreg
bool m_isDefined
DisjointBoxLayout m_coarsenedGrids
m_resid
m_corr
m_dcorr
m_lofPhi
m_phiSave
m_resC
Copier m_residualCopier
Copier m_fineExchangeCopier
int m_level
GenAMRLevelMGOp< T > * m_levelopPtr
CoarseAverage m_averageOp
bool m_arrayViewVerbose

Private Methods

void setArrayViewVerbose (bool a_verbosity)
 GenAMRLevelMG (const GenAMRLevelMG< T > &)
void operator= (const GenAMRLevelMG< T > &)

Friends

class GenAMRSolver< T >

Detailed Description

template<class T>
class GenAMRLevelMG< T >

class which manages data and operations on a level for GenAMRSolver

GenAMRLevelMG manages the operations on a level for GenAMRSolver. GenAMRSolver contains a vector of GenAMRLevelMG's (one for each level). This class should be considered internal to GenAMRSolver and should not be considered part of the Chombo API.


Constructor & Destructor Documentation

template<class T>
GenAMRLevelMG< T >::GenAMRLevelMG  
 

constructor

template<class T>
GenAMRLevelMG< T >::GenAMRLevelMG const GenAMRSolver< T > *const    a_parent,
int    a_level,
const GenAMRLevelMGOp< T > *const    a_opin,
int    a_ncomp = 1
 

define level

Define GenAMRLevelMG from the inputs.

template<class T>
GenAMRLevelMG< T >::~GenAMRLevelMG  
 

destructor

template<class T>
GenAMRLevelMG< T >::GenAMRLevelMG const GenAMRLevelMG< T > &    [inline, private]
 


Member Function Documentation

template<class T>
void GenAMRLevelMG< T >::applyAMROperator Vector< T * > &    a_phiLevel,
T &    a_LOfPhi
 

complete, 3-level operator

Complete, 3-level operator. Applies operator with inhomogeneous coarse-fine boundary conditions (and inhomogeneous domain boundary conditions. Refluxing is used to compute the operator at coarse-fine boundaries.

template<class T>
void GenAMRLevelMG< T >::applyAMROperatorHphys Vector< T * > &    a_phiLevel,
T &    a_LOfPhi
 

complete, 3-level operator with homogeneous physical boundary conditions

Complete, 3-level operator with homogeneous physical boundary conditions. Applies operator with inhomogeneous physical boundary conditions. Refluxing is used to compute the operator at coarse-fine boundaries.

template<class T>
void GenAMRLevelMG< T >::clearMemory   [protected]
 

template<class T>
void GenAMRLevelMG< T >::computeAMRResidual T &    a_resid,
Vector< T * > &    a_phiLevel,
const Vector< T * > &    a_rhsLevel
 

Compute complete, 3-level residual and return it in the argument a_resid

template<class T>
void GenAMRLevelMG< T >::computeAMRResidual Vector< T * > &    a_phiLevel,
const Vector< T * > &    a_rhsLevel
 

Compute complete, 3-level residual and put it into local data m_resid

template<class T>
void GenAMRLevelMG< T >::computeAMRResidualHphys Vector< T * > &    a_phiLevel,
const Vector< T * > &    a_rhsLevel
 

Compute complete, 3-level residual with homogeneous physical BCs and inhomogeneous C/F BCs and put it into local data m_resid

template<class T>
Vector< Real > GenAMRLevelMG< T >::computeNorm const T &    a_mfinput,
int    a_normType
const
 

template<class T>
Vector< Real > GenAMRLevelMG< T >::computeResidualNorm int    a_normType const
 

compute and return norm of internal data m_resid.

template<class T>
void GenAMRLevelMG< T >::define const GenAMRSolver< T > *const    a_parent,
int    a_level,
const GenAMRLevelMGOp< T > *const    a_opin,
int    a_ncomp = 1
 

define level

Define GenAMRLevelMG from the inputs. The GenAMRLevelMG will only work for the input GenAMRSolver. A LevelMG is created.

template<class T>
void GenAMRLevelMG< T >::downSweep Vector< T * > &    a_phiLevel,
const Vector< T * > &    a_rhsLevel
 

Sweep down multigrid v-cycle

template<class T>
void GenAMRLevelMG< T >::incrementFRFine Vector< T * > &    a_phiLevel [protected]
 

increment fluxregisters with fine flux

template<class T>
void GenAMRLevelMG< T >::initFRCoarse Vector< T * > &    a_phiLevel [protected]
 

internally useful functions

Fill fluxregisters with coarse flux

template<class T>
bool GenAMRLevelMG< T >::isDefined   const
 

has define function been called? if not, most fcns won't work

template<class T>
GenAMRLevelMGOp< T > * GenAMRLevelMG< T >::levelOpPtr   const
 

template<class T>
void GenAMRLevelMG< T >::operator= const GenAMRLevelMG< T > &    [inline, private]
 

template<class T>
void GenAMRLevelMG< T >::reflux Vector< T * > &    a_phiLevel,
T &    a_LOfPhi
[protected]
 

reflux enforces flux-matching from finer levels. Steps involved: a)initialize flux register with coarse flux b)increment flux register with sum of fine fluxes b)modify solution with flux difference

template<class T>
void GenAMRLevelMG< T >::setArrayViewVerbose bool    a_verbosity [private]
 

template<class T>
void GenAMRLevelMG< T >::setDefaultValues   [protected]
 

template<class T>
void GenAMRLevelMG< T >::setnumSmoothDown int    a_numSmoothDown
 

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

template<class T>
void GenAMRLevelMG< T >::setnumSmoothUp int    a_numSmoothUp
 

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

template<class T>
void GenAMRLevelMG< T >::smooth T &    a_soln,
const T &    a_rhs
[protected]
 

smooth a_soln

template<class T>
void GenAMRLevelMG< T >::upSweep Vector< T * > &    a_phiLevel,
const Vector< T * > &    a_rhsLevel
 

Sweep up multigrid v-cycle


Friends And Related Function Documentation

template<class T>
friend class GenAMRSolver< T > [friend]
 


Member Data Documentation

template<class T>
bool GenAMRLevelMG< T >::m_arrayViewVerbose [protected]
 

template<class T>
CoarseAverage GenAMRLevelMG< T >::m_averageOp [protected]
 

template<class T>
DisjointBoxLayout GenAMRLevelMG< T >::m_coarsenedGrids [protected]
 

template<class T>
T GenAMRLevelMG< T >::m_corr [protected]
 

template<class T>
T GenAMRLevelMG< T >::m_dcorr [protected]
 

template<class T>
Copier GenAMRLevelMG< T >::m_fineExchangeCopier [protected]
 

template<class T>
bool GenAMRLevelMG< T >::m_isDefined [protected]
 

template<class T>
int GenAMRLevelMG< T >::m_level [protected]
 

template<class T>
GenLevelMG<T> GenAMRLevelMG< T >::m_levelMG [protected]
 

template<class T>
GenAMRLevelMGOp<T>* GenAMRLevelMG< T >::m_levelopPtr [protected]
 

template<class T>
LevelFluxRegister GenAMRLevelMG< T >::m_levfluxreg [protected]
 

template<class T>
T GenAMRLevelMG< T >::m_lofPhi [protected]
 

template<class T>
GenMGInterp<T> GenAMRLevelMG< T >::m_mginterp [protected]
 

template<class T>
const GenAMRSolver<T>* GenAMRLevelMG< T >::m_parent [protected]
 

template<class T>
T GenAMRLevelMG< T >::m_phiSave [protected]
 

template<class T>
T GenAMRLevelMG< T >::m_resC [protected]
 

template<class T>
T GenAMRLevelMG< T >::m_resid [protected]
 

template<class T>
Copier GenAMRLevelMG< T >::m_residualCopier [protected]
 


The documentation for this class was generated from the following files:
Generated on Wed Apr 16 14:35:18 2003 for EBChombo by doxygen1.2.16