00001 #ifdef CH_LANG_CC 00002 /* 00003 * _______ __ 00004 * / ___/ / ___ __ _ / / ___ 00005 * / /__/ _ \/ _ \/ V \/ _ \/ _ \ 00006 * \___/_//_/\___/_/_/_/_.__/\___/ 00007 * Please refer to Copyright.txt, in Chombo's root directory. 00008 */ 00009 #endif 00010 00011 // NodeBiCGStabSmoother.H 00012 // adapted from BiCGStabSmoother by DFMartin, Sun, May 5, 2002 00013 // petermc, 5 June 2002 00014 00015 #ifndef NODEBICGSTABSMOOTHER_H 00016 #define NODEBICGSTABSMOOTHER_H 00017 00018 #include <iostream> 00019 #include <math.h> 00020 #include "SPACE.H" 00021 #include <stdlib.h> 00022 #include "REAL.H" 00023 #include "IntVect.H" 00024 #include "Box.H" 00025 #include "DisjointBoxLayout.H" 00026 #include "LevelData.H" 00027 #include "NodeFArrayBox.H" 00028 #include "ProblemDomain.H" 00029 #include "NodeBaseBottomSmoother.H" 00030 00031 #include "UsingNamespace.H" 00032 00034 00037 class NodeBiCGStabSmoother : public NodeBaseBottomSmoother 00038 { 00039 00040 public: 00041 00046 00048 00050 NodeBiCGStabSmoother(); 00051 00053 00055 virtual ~NodeBiCGStabSmoother(); 00056 00058 00060 virtual NodeBaseBottomSmoother* new_bottomSmoother() const; 00061 00068 00070 00072 void setMaxIter(int a_max_iter); 00073 00075 00077 void setSolverTol(Real a_solverTol); 00078 00085 00087 00092 virtual void doBottomSmooth( 00093 LevelData<NodeFArrayBox>& a_phi, 00095 const LevelData<NodeFArrayBox>& a_rhs, 00097 NodeLevelOp* a_levelop_ptr 00098 ); 00101 protected: 00102 00105 int m_maxIter; 00106 00109 Real m_solverTol; 00110 00113 Real m_small; 00114 00117 Real m_converge_small; 00118 }; 00119 00120 #endif