boundaryCondition.hpp
1 #ifndef MARIAN_BOUNDARYCONDITION_HPP
2 #define MARIAN_BOUNDARYCONDITION_HPP
3 
4 #include <vector>
5 #include <FDM/tridiagonalOperator.hpp>
6 
7 namespace marian {
11  enum class BCSide {LOW,
12  UPP,
13  FREE
14  };
15 
24  public:
28 
35  virtual void beforeExplicitStep(TridiagonalOperator& L) = 0;
36 
44  virtual void afterExplicitStep(std::vector<double>& f, double t) = 0;
45 
54  virtual void beforeImplicitStep(TridiagonalOperator& L,
55  std::vector<double>& f,
56  double t) = 0;
57 
65  virtual void afterImplicitStep(std::vector<double>& f,double t) = 0;
66 
71  virtual std::string info() const = 0;
72 
75  virtual BoundaryCondition* clone() const = 0;
76 
79  virtual ~BoundaryCondition(){};
80 
81  private:
82 
83  };
84 
97  template<typename T>
99  public:
102  virtual BoundaryCondition* clone() const {
103  return new T(static_cast<const T&>(*this));
104  }
105  };
106 } // namespace marian
107 
108 
109 #endif /* MARIAN_BOUNDARYCONDITION_HPP */
virtual BoundaryCondition * clone() const
Virtual copy constructor.
Definition: boundaryCondition.hpp:102
Condition set on lower boundary of FDM grid.
Definition: backwardKolmogorovEq.cpp:5
virtual ~BoundaryCondition()
Destructor.
Definition: boundaryCondition.hpp:79
BoundaryCondition()
Constructor.
Definition: boundaryCondition.hpp:27
BCSide
Types of boundary conditions.
Definition: boundaryCondition.hpp:11
TridiagonalOperator is used to define differentiating operator for PDE being solved.
Definition: tridiagonalOperator.hpp:35
Deeply copyable BoundaryCondition.
Definition: boundaryCondition.hpp:98
Condition set on upper boundary of FDM grid.
Interface for boundary conditions.
Definition: boundaryCondition.hpp:23
Free-boundary condition.