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))