|
| AMRFASMultiGrid () |
|
virtual | ~AMRFASMultiGrid () |
|
virtual void | define (const ProblemDomain &a_coarseDomain, AMRLevelOpFactory< T > &a_factory, LinearSolver< T > *a_bottomSolver, int a_numLevels) |
|
virtual void | solveNoInit (Vector< T * > &a_phi, const Vector< T * > &a_rhs, int l_max, int l_base, bool a_zeroPhi=true, bool forceHomogeneous=false) |
|
void | setCycleType (OLD_FASMG_type a_type) |
|
void | setAvoidNorms (bool b=true) |
|
void | setNumVcycles (int n) |
|
| AMRMultiGrid () |
|
virtual | ~AMRMultiGrid () |
|
void | outputAMR (Vector< T * > &a_data, string &a_name, int a_lmax, int a_lbase) |
|
void | addInspector (RefCountedPtr< AMRMultiGridInspector< T > > &a_inspector) |
|
virtual void | solve (Vector< T * > &a_phi, const Vector< T * > &a_rhs, int l_max, int l_base, bool a_zeroPhi=true, bool forceHomogeneous=false) |
|
virtual void | solveNoInitResid (Vector< T * > &a_phi, Vector< T * > &a_finalResid, const Vector< T * > &a_rhs, int l_max, int l_base, bool a_zeroPhi=true, bool forceHomogeneous=false) |
| use if you want final residual More...
|
|
void | relaxOnlyHomogeneous (Vector< T * > &a_phi, const Vector< T * > &a_rhs, int l_max, int l_base) |
|
virtual void | AMRVCycle (Vector< T * > &a_correction, Vector< T * > &a_residual, int l, int l_max, int l_base) |
|
void | setMGCycle (int a_numMG) |
|
void | revert (const Vector< T * > &a_phi, const Vector< T * > &a_rhs, int l_max, int l_base) |
|
AMRLevelOp< T > & | levelOp (int level) |
|
Real | computeAMRResidual (Vector< T * > &a_resid, Vector< T * > &a_phi, const Vector< T * > &a_rhs, int l_max, int l_base, bool a_homogeneousBC=false, bool a_computeNorm=true) |
|
Real | computeAMRResidual (Vector< T * > &a_phi, const Vector< T * > &a_rhs, int l_max, int l_min) |
|
void | computeAMROperator (Vector< T * > &a_lph, Vector< T * > &a_phi, int l_max, int l_base, bool a_homogeneousBC=false) |
|
Vector< MGLevelOp< T > * > | getAllOperators () |
|
Vector< MGLevelOp< T > * > | getOperatorsOp () |
|
Vector< Vector< MGLevelOp< T > * > > | getOperatorsMG () |
|
Vector< AMRLevelOp< T > * > & | getAMROperators () |
|
void | setSolverParameters (const int &a_pre, const int &a_post, const int &a_bottom, const int &a_numMG, const int &a_iterMax, const Real &a_eps, const Real &a_hang, const Real &a_normThresh) |
|
void | setBottomSolver (int l_max, int l_base) |
| set up bottom solver for internal MG solver More...
|
|
void | setBottomSolverEpsCushion (Real a_bottomSolverEpsCushion) |
|
void | getInfo () const |
| Dump out the state of the solver. AMR levels, MG levels, bottom solver, box counts, etc. More...
|
|
template<class T>
class AMRFASMultiGrid< T >
Class to solve elliptic equations using the FAS multigrid
template<class T >
void AMRFASMultiGrid< T >::solveNoInit |
( |
Vector< T * > & |
a_phi, |
|
|
const Vector< T * > & |
a_rhs, |
|
|
int |
l_max, |
|
|
int |
l_base, |
|
|
bool |
a_zeroPhi = true , |
|
|
bool |
forceHomogeneous = false |
|
) |
| |
|
virtual |
same as "solve" except user has taken the reponsibility of having previously called "init" so solver can allocate temporary holders.
Reimplemented from AMRMultiGrid< T >.
References CH_assert, CH_START, CH_STOP, CH_TIME, CH_TIMER, CH_TIMERS, MayDay::Error(), FULL, pout(), Vector< T >::size(), and VCYCLE.