DGtal  1.1.0
DiscreteExteriorCalculusSolver.h
1
17 #pragma once
18
31 #if defined(DiscreteExteriorCalculusSolver_RECURSES)
32 #error Recursive header files inclusion detected in DiscreteExteriorCalculusSolver.h
33 #else // defined(DiscreteExteriorCalculusSolver_RECURSES)
34
35 #define DiscreteExteriorCalculusSolver_RECURSES
36
37 #if !defined DiscreteExteriorCalculusSolver_h
38
39 #define DiscreteExteriorCalculusSolver_h
40
42 // Inclusions
43 #include <iostream>
44 #include "DGtal/base/Common.h"
45 #include "DGtal/base/ConstAlias.h"
46 #include "DGtal/base/Clone.h"
47 #include "DGtal/dec/KForm.h"
48 #include "DGtal/dec/LinearOperator.h"
50
51 namespace DGtal
52 {
53
55  // template class DiscreteExteriorCalculusSolver
68  template <typename TCalculus, typename TLinearAlgebraSolver, Order order_in, Duality duality_in, Order order_out, Duality duality_out>
70  {
71  // ----------------------- Standard services ------------------------------
72  public:
73  BOOST_STATIC_ASSERT(( order_in >= 0 ));
74  BOOST_STATIC_ASSERT(( order_in <= TCalculus::dimensionEmbedded ));
75  BOOST_STATIC_ASSERT(( order_out >= 0 ));
76  BOOST_STATIC_ASSERT(( order_out <= TCalculus::dimensionEmbedded ));
77
78  typedef TCalculus Calculus;
79  typedef TLinearAlgebraSolver LinearAlgebraSolver;
80
84
89
90  // ----------------------- Interface --------------------------------------
91  public:
96
101
106  void selfDisplay(std::ostream& out) const;
107
114
120  SolutionKForm solve(const InputKForm& input_kform) const;
121
126  bool isValid() const;
127
128  // ------------------------- Private Datas --------------------------------
129  private:
130
131  // ------------------------- Hidden services ------------------------------
132  protected:
133
134  // ------------------------- Internals ------------------------------------
135  private:
136
137  }; // end of class DiscreteExteriorCalculusSolver
138
139
146  template <typename C, typename S, Order order_in, Duality duality_in, Order order_out, Duality duality_out>
147  std::ostream&
149
150 } // namespace DGtal
151
152
154 // Includes inline functions.
155 #include "DGtal/dec/DiscreteExteriorCalculusSolver.ih"
156
157 // //
159
160 #endif // !defined DiscreteExteriorCalculusSolver_h
161
162 #undef DiscreteExteriorCalculusSolver_RECURSES
163 #endif // else defined(DiscreteExteriorCalculusSolver_RECURSES)
DGtal::DiscreteExteriorCalculusSolver::BOOST_STATIC_ASSERT
BOOST_STATIC_ASSERT((order_in<=TCalculus::dimensionEmbedded))
DGtal::DiscreteExteriorCalculusSolver::LinearAlgebraSolver
TLinearAlgebraSolver LinearAlgebraSolver
Definition: DiscreteExteriorCalculusSolver.h:79
DGtal::DiscreteExteriorCalculusSolver::compute
DiscreteExteriorCalculusSolver & compute(const Operator &linear_operator)
DGtal::DiscreteExteriorCalculusSolver::myLinearAlgebraSolver
LinearAlgebraSolver myLinearAlgebraSolver
Definition: DiscreteExteriorCalculusSolver.h:100
DGtal::DiscreteExteriorCalculusSolver::DiscreteExteriorCalculusSolver
DiscreteExteriorCalculusSolver()
DGtal::DiscreteExteriorCalculusSolver::SolutionKForm
KForm< Calculus, order_in, duality_in > SolutionKForm
Definition: DiscreteExteriorCalculusSolver.h:82
DGtal::LinearOperator
Aim: LinearOperator represents discrete linear operator between discrete kforms in the DEC package.
Definition: LinearOperator.h:69
DGtal::DiscreteExteriorCalculusSolver::isValid
bool isValid() const
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition: ClosedIntegerHalfPlane.h:49
DGtal::DiscreteExteriorCalculusSolver::Operator
LinearOperator< Calculus, order_in, duality_in, order_out, duality_out > Operator
Definition: DiscreteExteriorCalculusSolver.h:81
DGtal::DiscreteExteriorCalculusSolver::BOOST_STATIC_ASSERT
BOOST_STATIC_ASSERT((order_out<=TCalculus::dimensionEmbedded))
DGtal::DiscreteExteriorCalculusSolver::InputKForm
KForm< Calculus, order_out, duality_out > InputKForm
Definition: DiscreteExteriorCalculusSolver.h:83
DGtal::DiscreteExteriorCalculusSolver::Calculus
TCalculus Calculus
Definition: DiscreteExteriorCalculusSolver.h:78
DGtal::DiscreteExteriorCalculusSolver::solve
SolutionKForm solve(const InputKForm &input_kform) const
DGtal::operator<<
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
DGtal::DiscreteExteriorCalculusSolver::BOOST_STATIC_ASSERT
BOOST_STATIC_ASSERT((order_out >=0))
DGtal::DiscreteExteriorCalculusSolver::myCalculus
const Calculus * myCalculus
Definition: DiscreteExteriorCalculusSolver.h:95
DGtal::DiscreteExteriorCalculusSolver
Aim: This wraps a linear algebra solver around a discrete exterior calculus.
Definition: DiscreteExteriorCalculusSolver.h:70
DGtal::KForm
Aim: KForm represents discrete kforms in the dec package.
Definition: KForm.h:66
DGtal::DiscreteExteriorCalculusSolver::selfDisplay
void selfDisplay(std::ostream &out) const
DGtal::DiscreteExteriorCalculusSolver::BOOST_STATIC_ASSERT
BOOST_STATIC_ASSERT((order_in >=0))