tridiagonalSolver.hpp
1 #ifndef MARIAN_TRIDIAGONALSOLVER_HPP
2 #define MARIAN_TRIDIAGONALSOLVER_HPP
3 
4 #include <FDM/tridiagonalOperator.hpp>
5 
6 namespace marian {
7 
21  public:
25  }
26 
36  virtual std::vector<double> solve(const TridiagonalOperator& A,
37  const std::vector<double>& w) const = 0;
38 
41  virtual TridiagonalSolver* clone() const = 0;
42 
45  virtual ~TridiagonalSolver() {
46  }
47  };
48 
61  template<typename T>
63  public:
66  virtual TridiagonalSolver* clone() const {
67  return new T(static_cast<const T&>(*this));
68  }
69  };
70 
71 } // namespace marian
72 
73 
74 #endif /* MARIAN_TRIDIAGONALSOLVER_HPP */
virtual ~TridiagonalSolver()
Destructor.
Definition: tridiagonalSolver.hpp:45
Interface of tridiagonal system solvers.
Definition: tridiagonalSolver.hpp:20
virtual TridiagonalSolver * clone() const =0
Virtual copy constructor.
TridiagonalSolver()
Constructor.
Definition: tridiagonalSolver.hpp:24
Definition: backwardKolmogorovEq.cpp:5
Deeply copyable TridiagonalSolver.
Definition: tridiagonalSolver.hpp:62
virtual std::vector< double > solve(const TridiagonalOperator &A, const std::vector< double > &w) const =0
Method solves tridiagonal system using algorithm implemented in derived classes.
TridiagonalOperator is used to define differentiating operator for PDE being solved.
Definition: tridiagonalOperator.hpp:35
virtual TridiagonalSolver * clone() const
Virtual copy constructor.
Definition: tridiagonalSolver.hpp:66