implicitScheme.hpp
1 #ifndef MARIAN_IMPLICITSCHEME_HPP
2 #define MARIAN_IMPLICITSCHEME_HPP
3 
4 #include <FDM/schemes/fdScheme.hpp>
5 #include <FDM/tridiagonalSolver.hpp>
6 
7 namespace marian {
23  class ImplicitScheme : public DCFDScheme<ImplicitScheme> {
24  public:
28 
32  void setSolver(const SmartPointer<TridiagonalSolver>& solver) override {
33  solver_ = solver;
34  }
35  std::vector<double> solve(std::vector<double> f,
36  const std::vector<SmartPointer<BoundaryCondition> >& bcs,
37  const std::vector<double>& time_grid,
38  const TridiagonalOperator& L) override;
39  std::vector<double> solveAndSave(std::vector<double> f,
40  const std::vector<SmartPointer<BoundaryCondition> >& bcs,
41  const std::vector<double>& spatial_grid,
42  const std::vector<double>& time_grid,
43  const TridiagonalOperator& L,
44  const std::string file_name) override;
45  std::string info() const override {
46  return "implicit";
47  }
48  private:
50  };
51 
52 } // namespace marian
53 
54 #endif /* MARIAN_IMPLICITSCHEME_HPP */
SmartPointer< TridiagonalSolver > solver_
Sovler used in implicit step.
Definition: implicitScheme.hpp:49
Deeply copyable BoundaryCondition.
Definition: fdScheme.hpp:94
Template of deep-coping smart pointer.
Definition: smartPointer.hpp:9
ImplicitScheme(SmartPointer< TridiagonalSolver > solver)
constructor
Definition: implicitScheme.hpp:31
Definition: backwardKolmogorovEq.cpp:5
std::vector< double > solve(std::vector< double > f, const std::vector< SmartPointer< BoundaryCondition > > &bcs, const std::vector< double > &time_grid, const TridiagonalOperator &L) override
Solves PDE defined by provided linear operator L and initial and boundary conditions.
Definition: implicitScheme.cpp:13
ImplicitScheme()
defualt constructor
Definition: implicitScheme.hpp:27
std::string info() const override
Returns scheme name.
Definition: implicitScheme.hpp:45
std::vector< double > solveAndSave(std::vector< double > f, const std::vector< SmartPointer< BoundaryCondition > > &bcs, const std::vector< double > &spatial_grid, const std::vector< double > &time_grid, const TridiagonalOperator &L, const std::string file_name) override
Solves PDE defined by provided linear operator L and initial and boundary conditions. Additionally saves solution to CSV file.
Definition: implicitScheme.cpp:42
TridiagonalOperator is used to define differentiating operator for PDE being solved.
Definition: tridiagonalOperator.hpp:35
Class implements implicit schemes.
Definition: implicitScheme.hpp:23
void setSolver(const SmartPointer< TridiagonalSolver > &solver) override
Provides a solver used in implicit scheme.
Definition: implicitScheme.hpp:32