AMDiS  2.10
The Adaptive Multi-Dimensional Simulation Toolbox
Constraints.hpp
1 #pragma once
2 
3 #include <amdis/Output.hpp>
4 
5 namespace AMDiS
6 {
7  // forward declaration
8  template <class RB, class CB, class T, class Traits>
9  class BiLinearForm;
10 
11 
12  template <class Matrix>
13  struct Constraints
14  {
15  template <class Mat, class Sol, class Rhs, class BitVec, class Assoc>
16  static void periodicBC(Mat& /*matrix*/, Sol& /*solution*/, Rhs& /*rhs*/, BitVec const& /*left*/, Assoc const& /*association*/, bool /*setDiagonal*/ = true)
17  {
18  /* do nothing */
19  warning("periodicBC not implemented for this matrix type.");
20  }
21  };
22 
23  template <class Mat, class Sol, class Rhs, class BitVec, class Assoc>
24  void periodicBC(Mat& matrix, Sol& solution, Rhs& rhs, BitVec const& left, Assoc const& association, bool setDiagonal = true)
25  {
26  Constraints<Mat>::periodicBC(matrix, solution, rhs, left, association, setDiagonal);
27  }
28 
29 
30  template <class RB, class CB, class T, class Traits>
31  struct Constraints<BiLinearForm<RB,CB,T,Traits>>
32  {
34 
35  template <class Sol, class Rhs, class BitVec, class Assoc>
36  static void periodicBC(Matrix& matrix, Sol& solution, Rhs& rhs, BitVec const& left, Assoc const& association, bool setDiagonal = true)
37  {
38  AMDiS::periodicBC(matrix.impl(), solution.impl(), rhs.impl(), left, association, setDiagonal);
39  }
40  };
41 
42 } // end namespace AMDiS
Definition: AdaptBase.hpp:6
Definition: BiLinearForm.hpp:28
Definition: Constraints.hpp:13
Impl const & impl() const
Return the underlying matrix backend.
Definition: MatrixFacade.hpp:38