DGtal  1.0.0
HodgeTester< Calculus, order > Struct Template Reference

#include </Users/davidcoeurjolly/Sources/DGtal/tests/dec/DECCommon.h>

Public Member Functions

BOOST_STATIC_ASSERT ((order<=Calculus::dimensionEmbedded))

Static Public Member Functions

static bool test (const Calculus &calculus)

Detailed Description

template<typename Calculus, int order> struct HodgeTester< Calculus, order >

Definition at line 55 of file DECCommon.h.

◆ BOOST_STATIC_ASSERT()

template<typename Calculus , int order>
 HodgeTester< Calculus, order >::BOOST_STATIC_ASSERT ( (order<=Calculus::dimensionEmbedded) )

◆ test()

template<typename Calculus , int order>
 static bool HodgeTester< Calculus, order >::test ( const Calculus & calculus )
inlinestatic

Definition at line 59 of file DECCommon.h.

60  {
61  DGtal::trace.info() << "testing identity operators " << order << std::endl;
62
63  { // test identity operator
65  PrimalIdentity primal_identity = calculus.template identity<order, DGtal::PRIMAL>();
66  if (!is_identity(primal_identity.myContainer, 1)) return false;
67
69  SolveForm input(calculus);
70  SolveForm output = primal_identity * input;
71  typedef typename Calculus::LinearAlgebraBackend LinearAlgebraBackend;
74  Solver solver;
75  SolveForm input_solved = solver.compute(primal_identity).solve(output);
76  //if (input_solved != input) return false;
77
79  DualIdentity dual_identity = calculus.template identity<order, DGtal::DUAL>();
80  if (!is_identity(dual_identity.myContainer, 1)) return false;
81  }
82
83  typedef DGtal::LinearOperator<Calculus, order, DGtal::PRIMAL, Calculus::dimensionEmbedded-order, DGtal::DUAL> PrimalHodge;
84  typedef DGtal::LinearOperator<Calculus, Calculus::dimensionEmbedded-order, DGtal::DUAL, order, DGtal::PRIMAL> DualHodge;
85  const PrimalHodge primal_hodge = calculus.template hodge<order, DGtal::PRIMAL>();
86  const DualHodge dual_hodge= calculus.template hodge<Calculus::dimensionEmbedded-order, DGtal::DUAL>();
87
88  DGtal::trace.info() << "testing primal to primal hodge composition order " << order << std::endl;
89
90  { // test primal to primal composition
92  PrimalPrimal primal_primal = dual_hodge * primal_hodge;
93  if (!is_identity(primal_primal.myContainer, pow(-1, order*(Calculus::dimensionEmbedded-order)))) return false;
94  }
95
96  DGtal::trace.info() << "testing dual to dual hodge composition order " << order << std::endl;
97
98  { // test dual to dual composition
99  typedef DGtal::LinearOperator<Calculus, Calculus::dimensionEmbedded-order, DGtal::DUAL, Calculus::dimensionEmbedded-order, DGtal::DUAL> DualDual;
100  DualDual dual_dual = primal_hodge * dual_hodge;
101  if (!is_identity(dual_dual.myContainer, pow(-1, order*(Calculus::dimensionEmbedded-order)))) return false;
102  }
103
104  return HodgeTester<Calculus, order-1>::test(calculus);
105  }
Trace trace
Definition: Common.h:144
Aim: KForm represents discrete kforms in the dec package.
Definition: KForm.h:65
DiscreteExteriorCalculusSolver & compute(const Operator &linear_operator)
static bool test(const Calculus &calculus)
Definition: DECCommon.h:59
Aim: LinearOperator represents discrete linear operator between discrete kforms in the DEC package.
std::ostream & info()
Aim: This wraps a linear algebra solver around a discrete exterior calculus.
SolutionKForm solve(const InputKForm &input_kform) const

The documentation for this struct was generated from the following file: