// ============================================================================ // == == // == AMDiS - Adaptive multidimensional simulations == // == == // ============================================================================ // == == // == crystal growth group == // == == // == Stiftung caesar == // == Ludwig-Erhard-Allee 2 == // == 53175 Bonn == // == germany == // == == // ============================================================================ // == == // == http://www.caesar.de/cg/AMDiS == // == == // ============================================================================ /** \file BiCGStab.h */ #ifndef AMDIS_BiCGStab_H #define AMDIS_BiCGStab_H #include "OEMSolver.h" #include "MemoryManager.h" #include "CreatorInterface.h" namespace AMDiS { // ============================================================================ // ===== class BiCGStab ======================================================= // ============================================================================ /** * \ingroup Solver * * \brief * Solves a linear system by the stabilized BiCG method. * Can be used for general system matrices. */ template<typename VectorType> class BiCGStab : public OEMSolver<VectorType> { public: MEMORY_MANAGED(BiCGStab<VectorType>); /** \brief * Creator class used in the OEMSolverMap. */ class Creator : public OEMSolverCreator<VectorType> { public: MEMORY_MANAGED(Creator); virtual ~Creator() {}; /** \brief * Returns a new BiCGStab object. */ OEMSolver<VectorType>* create() { return NEW BiCGStab<VectorType>(this->name); }; }; /** \brief * constructor */ BiCGStab(std::string name); /** \brief * destructor */ ~BiCGStab(); protected: /** \brief * realisation of OEMSolver::solveSystem */ int solveSystem(MatVecMultiplier<VectorType> *mv, VectorType *x, VectorType *b); /** \brief * realisation of OEMSolver::init */ void init(); /** \brief * realisation of OEMSolver::exit */ void exit(); private: // pointer to memory needed for solveSystem VectorType *r, *rstar, *p, *v, *t, *xmin; }; } #include "BiCGStab.hh" #endif // AMDIS_BiCGStab_H