DGtal  1.2.0
Data Structures | Public Types | Public Member Functions | Data Fields | Private Member Functions | Private Attributes | Friends
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger > Class Template Reference

Aim: DiscreteExteriorCalculus represents a calculus in the dec package. This is the main structure in the dec package. This is used to describe the space on which the dec is build and to compute various operators. Once operators or kforms are created, this structure should not be modified. More...

#include <DGtal/dec/DiscreteExteriorCalculus.h>

Data Structures

struct  Property
 Holds size 'primal_size', 'dual_size', 'index' and 'flipped' for each cell of the DEC object. To avoid inserting both positive and negative cells in a DEC object, only non signed cells are stored internally. More...
 

Public Types

typedef DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger > Self
 
typedef TLinearAlgebraBackend LinearAlgebraBackend
 
typedef LinearAlgebraBackend::DenseVector::Index Index
 
typedef LinearAlgebraBackend::DenseVector::Scalar Scalar
 
typedef LinearAlgebraBackend::DenseVector DenseVector
 
typedef LinearAlgebraBackend::DenseMatrix DenseMatrix
 
typedef LinearAlgebraBackend::SparseMatrix SparseMatrix
 
typedef DGtal::KhalimskySpaceND< dimAmbient, TInteger > KSpace
 
typedef KSpace::Cell Cell
 
typedef KSpace::SCell SCell
 
typedef KSpace::Point Point
 
typedef boost::unordered_map< Cell, PropertyProperties
 
typedef std::vector< SCellSCells
 
typedef boost::array< SCells, dimEmbedded+1 > IndexedSCells
 
typedef VectorField< Self, PRIMALPrimalVectorField
 
typedef VectorField< Self, DUALDualVectorField
 
typedef KForm< Self, 0, PRIMALPrimalForm0
 
typedef KForm< Self, 1, PRIMALPrimalForm1
 
typedef KForm< Self, 2, PRIMALPrimalForm2
 
typedef KForm< Self, 3, PRIMALPrimalForm3
 
typedef KForm< Self, 0, DUALDualForm0
 
typedef KForm< Self, 1, DUALDualForm1
 
typedef KForm< Self, 2, DUALDualForm2
 
typedef KForm< Self, 3, DUALDualForm3
 
typedef LinearOperator< Self, 0, PRIMAL, 1, PRIMALPrimalDerivative0
 
typedef LinearOperator< Self, 1, PRIMAL, 2, PRIMALPrimalDerivative1
 
typedef LinearOperator< Self, 2, PRIMAL, 3, PRIMALPrimalDerivative2
 
typedef LinearOperator< Self, 0, DUAL, 1, DUALDualDerivative0
 
typedef LinearOperator< Self, 1, DUAL, 2, DUALDualDerivative1
 
typedef LinearOperator< Self, 2, DUAL, 3, DUALDualDerivative2
 
typedef LinearOperator< Self, 1, PRIMAL, 0, PRIMALPrimalAntiderivative1
 
typedef LinearOperator< Self, 2, PRIMAL, 1, PRIMALPrimalAntiderivative2
 
typedef LinearOperator< Self, 3, PRIMAL, 2, PRIMALPrimalAntiderivative3
 
typedef LinearOperator< Self, 1, DUAL, 0, DUALDualAntiderivative1
 
typedef LinearOperator< Self, 2, DUAL, 1, DUALDualAntiderivative2
 
typedef LinearOperator< Self, 3, DUAL, 2, DUALDualAntiderivative3
 
typedef LinearOperator< Self, 0, PRIMAL, dimEmbedded-0, DUALPrimalHodge0
 
typedef LinearOperator< Self, 1, PRIMAL, dimEmbedded-1, DUALPrimalHodge1
 
typedef LinearOperator< Self, 2, PRIMAL, dimEmbedded-2, DUALPrimalHodge2
 
typedef LinearOperator< Self, 3, PRIMAL, dimEmbedded-3, DUALPrimalHodge3
 
typedef LinearOperator< Self, 0, DUAL, dimEmbedded-0, PRIMALDualHodge0
 
typedef LinearOperator< Self, 1, DUAL, dimEmbedded-1, PRIMALDualHodge1
 
typedef LinearOperator< Self, 2, DUAL, dimEmbedded-2, PRIMALDualHodge2
 
typedef LinearOperator< Self, 3, DUAL, dimEmbedded-3, PRIMALDualHodge3
 
typedef LinearOperator< Self, 0, PRIMAL, 0, PRIMALPrimalIdentity0
 
typedef LinearOperator< Self, 1, PRIMAL, 1, PRIMALPrimalIdentity1
 
typedef LinearOperator< Self, 2, PRIMAL, 2, PRIMALPrimalIdentity2
 
typedef LinearOperator< Self, 3, PRIMAL, 3, PRIMALPrimalIdentity3
 
typedef LinearOperator< Self, 0, DUAL, 0, DUALDualIdentity0
 
typedef LinearOperator< Self, 1, DUAL, 1, DUALDualIdentity1
 
typedef LinearOperator< Self, 2, DUAL, 2, DUALDualIdentity2
 
typedef LinearOperator< Self, 3, DUAL, 3, DUALDualIdentity3
 
typedef Properties::const_iterator ConstIterator
 
typedef Properties::iterator Iterator
 

Public Member Functions

 BOOST_CONCEPT_ASSERT ((concepts::CInteger< TInteger >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CDynamicVector< DenseVector >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CDynamicMatrix< DenseMatrix >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CDynamicMatrix< SparseMatrix >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CLinearAlgebra< DenseVector, SparseMatrix >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CLinearAlgebra< DenseVector, DenseMatrix >))
 
 BOOST_STATIC_ASSERT ((boost::is_same< Dimension, Order >::value))
 
 BOOST_STATIC_ASSERT ((dimAmbient >=dimEmbedded))
 
 BOOST_STATIC_CONSTANT (Dimension, dimensionEmbedded=dimEmbedded)
 
 BOOST_STATIC_CONSTANT (Dimension, dimensionAmbient=dimAmbient)
 
 DiscreteExteriorCalculus ()
 
template<typename TDomain >
void initKSpace (ConstAlias< TDomain > domain)
 
ConstIterator begin () const
 
ConstIterator end () const
 
Iterator begin ()
 
Iterator end ()
 
void selfDisplay (std::ostream &out) const
 
std::string className () const
 
bool insertSCell (const SCell &signed_cell)
 
bool insertSCell (const SCell &signed_cell, const Scalar &primal_size, const Scalar &dual_size)
 
bool eraseCell (const Cell &cell)
 
void updateIndexes ()
 
const PropertiesgetProperties () const
 
template<Order order, Duality duality>
const SCellsgetIndexedSCells () const
 
template<Order order, Duality duality, typename TConstIterator >
LinearOperator< Self, order, duality, order, duality > reorder (const TConstIterator &begin_range, const TConstIterator &end_range) const
 
template<Order order, Duality duality>
LinearOperator< Self, order, duality, order, duality > identity () const
 
template<Order order, Duality duality>
LinearOperator< Self, order, duality, order+1, duality > derivative () const
 
template<Order order, Duality duality>
LinearOperator< Self, order, duality, order-1, duality > antiderivative () const
 
template<Duality duality>
LinearOperator< Self, 0, duality, 0, duality > laplace () const
 
template<Duality duality>
LinearOperator< Self, 0, duality, 0, duality > heatLaplace (const typename DenseVector::Scalar &h, const typename DenseVector::Scalar &t, const typename DenseVector::Scalar &K) const
 
template<Order order, Duality duality>
LinearOperator< Self, order, duality, dimEmbedded-order, OppositeDuality< duality >::duality > hodge () const
 
template<Duality duality>
KForm< Self, 1, duality > flat (const VectorField< Self, duality > &vector_field) const
 
template<Duality duality>
LinearOperator< Self, 0, duality, 1, duality > flatDirectional (const Dimension &dir) const
 
template<Duality duality>
VectorField< Self, duality > sharp (const KForm< Self, 1, duality > &one_form) const
 
template<Duality duality>
LinearOperator< Self, 1, duality, 0, duality > sharpDirectional (const Dimension &dir) const
 
SCell getSCell (const Order &order, const Duality &duality, const Index &index) const
 
bool isCellFlipped (const Cell &cell) const
 
bool containsCell (const Cell &cell) const
 
Index getCellIndex (const Cell &cell) const
 
Index kFormLength (const Order &order, const Duality &duality) const
 
Order actualOrder (const Order &order, const Duality &duality) const
 
Scalar hodgeSign (const Cell &cell, const Duality &duality) const
 
Dimension edgeDirection (const Cell &cell, const Duality &duality) const
 
void resetSizes ()
 
bool isValid () const
 

Data Fields

KSpace myKSpace
 

Private Member Functions

void updateCachedOperators ()
 
template<Duality duality>
void updateFlatOperator ()
 
template<Duality duality>
void updateSharpOperator ()
 

Private Attributes

Properties myCellProperties
 
IndexedSCells myIndexSignedCells
 
boost::array< boost::array< SparseMatrix, dimAmbient >, 2 > myFlatOperatorMatrixes
 
boost::array< boost::array< SparseMatrix, dimAmbient >, 2 > mySharpOperatorMatrixes
 
bool myCachedOperatorsNeedUpdate
 
bool myIndexesNeedUpdate
 

Friends

class DiscreteExteriorCalculusFactory< TLinearAlgebraBackend, TInteger >
 

Detailed Description

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend, typename TInteger = DGtal::int32_t>
class DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >

Aim: DiscreteExteriorCalculus represents a calculus in the dec package. This is the main structure in the dec package. This is used to describe the space on which the dec is build and to compute various operators. Once operators or kforms are created, this structure should not be modified.

Description of template class 'DiscreteExteriorCalculus'

Template Parameters
dimEmbeddeddimension of emmbedded manifold.
dimAmbientdimension of ambient manifold.
TLinearAlgebraBackendlinear algebra backend used (i.e. EigenSparseLinearAlgebraBackend).
TIntegerinteger type forwarded to khalimsky space.
Examples
dec/exampleDECSurface.cpp.

Definition at line 97 of file DiscreteExteriorCalculus.h.

Member Typedef Documentation

◆ Cell

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef KSpace::Cell DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::Cell

Definition at line 132 of file DiscreteExteriorCalculus.h.

◆ ConstIterator

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef Properties::const_iterator DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::ConstIterator

Const iterator typedef.

Definition at line 253 of file DiscreteExteriorCalculus.h.

◆ DenseMatrix

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearAlgebraBackend::DenseMatrix DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DenseMatrix

Definition at line 110 of file DiscreteExteriorCalculus.h.

◆ DenseVector

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearAlgebraBackend::DenseVector DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DenseVector

Definition at line 109 of file DiscreteExteriorCalculus.h.

◆ DualAntiderivative1

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 1, DUAL, 0, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualAntiderivative1

Definition at line 205 of file DiscreteExteriorCalculus.h.

◆ DualAntiderivative2

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 2, DUAL, 1, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualAntiderivative2

Definition at line 206 of file DiscreteExteriorCalculus.h.

◆ DualAntiderivative3

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 3, DUAL, 2, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualAntiderivative3

Definition at line 207 of file DiscreteExteriorCalculus.h.

◆ DualDerivative0

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 0, DUAL, 1, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualDerivative0

Definition at line 195 of file DiscreteExteriorCalculus.h.

◆ DualDerivative1

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 1, DUAL, 2, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualDerivative1

Definition at line 196 of file DiscreteExteriorCalculus.h.

◆ DualDerivative2

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 2, DUAL, 3, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualDerivative2

Definition at line 197 of file DiscreteExteriorCalculus.h.

◆ DualForm0

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef KForm<Self, 0, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualForm0

Definition at line 184 of file DiscreteExteriorCalculus.h.

◆ DualForm1

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef KForm<Self, 1, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualForm1

Definition at line 185 of file DiscreteExteriorCalculus.h.

◆ DualForm2

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef KForm<Self, 2, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualForm2

Definition at line 186 of file DiscreteExteriorCalculus.h.

◆ DualForm3

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef KForm<Self, 3, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualForm3

Definition at line 187 of file DiscreteExteriorCalculus.h.

◆ DualHodge0

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 0, DUAL, dimEmbedded-0, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualHodge0

Definition at line 216 of file DiscreteExteriorCalculus.h.

◆ DualHodge1

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 1, DUAL, dimEmbedded-1, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualHodge1

Definition at line 217 of file DiscreteExteriorCalculus.h.

◆ DualHodge2

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 2, DUAL, dimEmbedded-2, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualHodge2

Definition at line 218 of file DiscreteExteriorCalculus.h.

◆ DualHodge3

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 3, DUAL, dimEmbedded-3, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualHodge3

Definition at line 219 of file DiscreteExteriorCalculus.h.

◆ DualIdentity0

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 0, DUAL, 0, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualIdentity0

Definition at line 228 of file DiscreteExteriorCalculus.h.

◆ DualIdentity1

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 1, DUAL, 1, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualIdentity1

Definition at line 229 of file DiscreteExteriorCalculus.h.

◆ DualIdentity2

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 2, DUAL, 2, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualIdentity2

Definition at line 230 of file DiscreteExteriorCalculus.h.

◆ DualIdentity3

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 3, DUAL, 3, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualIdentity3

Definition at line 231 of file DiscreteExteriorCalculus.h.

◆ DualVectorField

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef VectorField<Self, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DualVectorField

Definition at line 175 of file DiscreteExteriorCalculus.h.

◆ Index

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearAlgebraBackend::DenseVector::Index DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::Index

Definition at line 107 of file DiscreteExteriorCalculus.h.

◆ IndexedSCells

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef boost::array<SCells, dimEmbedded+1> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::IndexedSCells

Definition at line 169 of file DiscreteExteriorCalculus.h.

◆ Iterator

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef Properties::iterator DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::Iterator

Iterator typedef.

Definition at line 268 of file DiscreteExteriorCalculus.h.

◆ KSpace

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef DGtal::KhalimskySpaceND<dimAmbient, TInteger> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::KSpace

Definition at line 131 of file DiscreteExteriorCalculus.h.

◆ LinearAlgebraBackend

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef TLinearAlgebraBackend DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::LinearAlgebraBackend

Definition at line 106 of file DiscreteExteriorCalculus.h.

◆ Point

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef KSpace::Point DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::Point

Definition at line 134 of file DiscreteExteriorCalculus.h.

◆ PrimalAntiderivative1

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 1, PRIMAL, 0, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalAntiderivative1

Antiderivative linear operator typedefs.

Definition at line 202 of file DiscreteExteriorCalculus.h.

◆ PrimalAntiderivative2

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 2, PRIMAL, 1, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalAntiderivative2

Definition at line 203 of file DiscreteExteriorCalculus.h.

◆ PrimalAntiderivative3

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 3, PRIMAL, 2, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalAntiderivative3

Definition at line 204 of file DiscreteExteriorCalculus.h.

◆ PrimalDerivative0

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 0, PRIMAL, 1, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalDerivative0

Derivative linear operator typedefs.

Definition at line 192 of file DiscreteExteriorCalculus.h.

◆ PrimalDerivative1

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 1, PRIMAL, 2, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalDerivative1

Definition at line 193 of file DiscreteExteriorCalculus.h.

◆ PrimalDerivative2

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 2, PRIMAL, 3, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalDerivative2

Definition at line 194 of file DiscreteExteriorCalculus.h.

◆ PrimalForm0

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef KForm<Self, 0, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalForm0

KForms typedefs.

Definition at line 180 of file DiscreteExteriorCalculus.h.

◆ PrimalForm1

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef KForm<Self, 1, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalForm1

Definition at line 181 of file DiscreteExteriorCalculus.h.

◆ PrimalForm2

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef KForm<Self, 2, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalForm2

Definition at line 182 of file DiscreteExteriorCalculus.h.

◆ PrimalForm3

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef KForm<Self, 3, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalForm3

Definition at line 183 of file DiscreteExteriorCalculus.h.

◆ PrimalHodge0

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 0, PRIMAL, dimEmbedded-0, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalHodge0

Hodge duality linear operator typedefs.

Definition at line 212 of file DiscreteExteriorCalculus.h.

◆ PrimalHodge1

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 1, PRIMAL, dimEmbedded-1, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalHodge1

Definition at line 213 of file DiscreteExteriorCalculus.h.

◆ PrimalHodge2

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 2, PRIMAL, dimEmbedded-2, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalHodge2

Definition at line 214 of file DiscreteExteriorCalculus.h.

◆ PrimalHodge3

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 3, PRIMAL, dimEmbedded-3, DUAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalHodge3

Definition at line 215 of file DiscreteExteriorCalculus.h.

◆ PrimalIdentity0

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 0, PRIMAL, 0, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalIdentity0

Identity linear operator typedefs.

Definition at line 224 of file DiscreteExteriorCalculus.h.

◆ PrimalIdentity1

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 1, PRIMAL, 1, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalIdentity1

Definition at line 225 of file DiscreteExteriorCalculus.h.

◆ PrimalIdentity2

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 2, PRIMAL, 2, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalIdentity2

Definition at line 226 of file DiscreteExteriorCalculus.h.

◆ PrimalIdentity3

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearOperator<Self, 3, PRIMAL, 3, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalIdentity3

Definition at line 227 of file DiscreteExteriorCalculus.h.

◆ PrimalVectorField

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef VectorField<Self, PRIMAL> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::PrimalVectorField

Vector field typedefs.

Definition at line 174 of file DiscreteExteriorCalculus.h.

◆ Properties

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef boost::unordered_map<Cell, Property> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::Properties

Cells properties map typedef.

Definition at line 163 of file DiscreteExteriorCalculus.h.

◆ Scalar

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearAlgebraBackend::DenseVector::Scalar DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::Scalar

Definition at line 108 of file DiscreteExteriorCalculus.h.

◆ SCell

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef KSpace::SCell DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::SCell

Definition at line 133 of file DiscreteExteriorCalculus.h.

◆ SCells

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef std::vector<SCell> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::SCells

Indices to cells map typedefs.

Definition at line 168 of file DiscreteExteriorCalculus.h.

◆ Self

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef DiscreteExteriorCalculus<dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::Self

Definition at line 104 of file DiscreteExteriorCalculus.h.

◆ SparseMatrix

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
typedef LinearAlgebraBackend::SparseMatrix DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::SparseMatrix

Definition at line 111 of file DiscreteExteriorCalculus.h.

Constructor & Destructor Documentation

◆ DiscreteExteriorCalculus()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::DiscreteExteriorCalculus ( )

Constructor. Initialize empty discrete exterior calculus.

Member Function Documentation

◆ actualOrder()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
Order DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::actualOrder ( const Order order,
const Duality duality 
) const

Return actual order of k-forms in the dec package representation. Used internally mostly.

Parameters
orderorder.
dualityduality.
Returns
order if primal, dimEmbedded-order if dual.

◆ antiderivative()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Order order, Duality duality>
LinearOperator<Self, order, duality, order-1, duality> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::antiderivative ( ) const

Antiderivative operator from order-forms to _(order-1)_-forms.

Template Parameters
orderorder of input k-form.
dualityduality of input k-form.
Returns
antiderivative operator.

◆ begin() [1/2]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
Iterator DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::begin ( )

Begin iterator.

◆ begin() [2/2]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
ConstIterator DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::begin ( ) const

Begin const iterator.

◆ BOOST_CONCEPT_ASSERT() [1/6]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::BOOST_CONCEPT_ASSERT ( (concepts::CDynamicMatrix< DenseMatrix >)  )

◆ BOOST_CONCEPT_ASSERT() [2/6]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::BOOST_CONCEPT_ASSERT ( (concepts::CDynamicMatrix< SparseMatrix >)  )

◆ BOOST_CONCEPT_ASSERT() [3/6]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::BOOST_CONCEPT_ASSERT ( (concepts::CDynamicVector< DenseVector >)  )

◆ BOOST_CONCEPT_ASSERT() [4/6]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::BOOST_CONCEPT_ASSERT ( (concepts::CInteger< TInteger >)  )

◆ BOOST_CONCEPT_ASSERT() [5/6]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::BOOST_CONCEPT_ASSERT ( (concepts::CLinearAlgebra< DenseVector, DenseMatrix >)  )

◆ BOOST_CONCEPT_ASSERT() [6/6]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::BOOST_CONCEPT_ASSERT ( (concepts::CLinearAlgebra< DenseVector, SparseMatrix >)  )

◆ BOOST_STATIC_ASSERT() [1/2]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::BOOST_STATIC_ASSERT ( (boost::is_same< Dimension, Order >::value)  )

◆ BOOST_STATIC_ASSERT() [2/2]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::BOOST_STATIC_ASSERT ( (dimAmbient >=dimEmbedded)  )

Static dimensions.

◆ BOOST_STATIC_CONSTANT() [1/2]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::BOOST_STATIC_CONSTANT ( Dimension  ,
dimensionAmbient  = dimAmbient 
)

◆ BOOST_STATIC_CONSTANT() [2/2]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::BOOST_STATIC_CONSTANT ( Dimension  ,
dimensionEmbedded  = dimEmbedded 
)

◆ className()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
std::string DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::className ( ) const

Get class name string "Calculus".

◆ containsCell()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
bool DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::containsCell ( const Cell cell) const

Check is structure contains cell.

Parameters
cellthe tested cell.

◆ derivative()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Order order, Duality duality>
LinearOperator<Self, order, duality, order+1, duality> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::derivative ( ) const

Derivative operator from order-forms to _(order+1)_-forms.

Template Parameters
orderorder of input k-form.
dualityduality of input k-form.
Returns
derivative operator.

◆ edgeDirection()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
Dimension DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::edgeDirection ( const Cell cell,
const Duality duality 
) const

Return edge direction relative to primal.

Parameters
cellKhalimsky cell.
dualityduality.

◆ end() [1/2]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
Iterator DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::end ( )

End iterator.

◆ end() [2/2]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
ConstIterator DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::end ( ) const

End const iterator.

◆ eraseCell()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
bool DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::eraseCell ( const Cell cell)

Manually erase cell from calculus. Should call updateIndexes() when structure modification is finished.

Parameters
cellthe cell to be removed.
Returns
true if cell was removed, false if cell was not in calculus.

◆ flat()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Duality duality>
KForm<Self, 1, duality> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::flat ( const VectorField< Self, duality > &  vector_field) const

Construct 1-form from vector field.

Template Parameters
dualityinput vector field and output 1-form duality.
Parameters
vector_fieldvector field.
Returns
1-form.

◆ flatDirectional()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Duality duality>
LinearOperator<Self, 0, duality, 1, duality> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::flatDirectional ( const Dimension dir) const

Get directional flat operator that transforms 0-form containing vector field coordinates along direction dir into 1-form. Invert of sharp(1-form).coordAlongDirection(dir).

Template Parameters
dualityinput 0-form and output 1-form duality.
Parameters
dirdirection of projection.
Returns
linear operator.

◆ getCellIndex()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
Index DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::getCellIndex ( const Cell cell) const

Get k-form index from cell.

Parameters
cellKhalimsky cell.
Returns
associated k-form index.

◆ getIndexedSCells()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Order order, Duality duality>
const SCells& DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::getIndexedSCells ( ) const

Get all signed cells with specific order and duality in index order.

Template Parameters
orderorder of signed cells.
dualityduality of signed cells.
Returns
index ordered signed cells.

◆ getProperties()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
const Properties& DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::getProperties ( ) const

Get all cells properties.

Returns
associative container from Cell to Property.

◆ getSCell()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
SCell DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::getSCell ( const Order order,
const Duality duality,
const Index index 
) const

Get signed cell from k-form index.

Parameters
orderk-form order.
dualityk-form duality.
indexindex valid on a k-form container.
Returns
associated Khalimsky cell.

◆ heatLaplace()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Duality duality>
LinearOperator<Self, 0, duality, 0, duality> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::heatLaplace ( const typename DenseVector::Scalar &  h,
const typename DenseVector::Scalar &  t,
const typename DenseVector::Scalar &  K 
) const

Convolutional Laplace operator from duality 0-forms to duality 0-forms. See Hands on the Operator in DGtal.

Parameters
hthe grid step
tthe time parameter for the convolution
Kthe multiplier for the integration. Must be at least 2.
Returns
Heat Laplace operator.

◆ hodge()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Order order, Duality duality>
LinearOperator<Self, order, duality, dimEmbedded-order, OppositeDuality<duality>::duality> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::hodge ( ) const

Hodge operator from duality order-form to opposite duality _(dimEmbedded-order)_-forms.

Template Parameters
orderorder of input k-form.
dualityduality of input k-form.
Returns
hodge operator.

◆ hodgeSign()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
Scalar DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::hodgeSign ( const Cell cell,
const Duality duality 
) const

Return sign of hodge operator. Used internally mostly.

Parameters
cellKhalimsky cell.
dualityduality.

◆ identity()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Order order, Duality duality>
LinearOperator<Self, order, duality, order, duality> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::identity ( ) const

Identity operator from order-forms to order-forms.

Template Parameters
orderinput and output order of identity operator.
dualityinput and output duality of identity operator.
Returns
identity operator.

◆ initKSpace()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<typename TDomain >
void DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::initKSpace ( ConstAlias< TDomain >  domain)

Init Khalimsky space boundaries.

Template Parameters
TDomaintype of digital domain.
Parameters
domaindomain used to initialize Khalimsky space.

Referenced by test_linear_ring(), test_manual_operators_2d(), and test_manual_operators_3d().

◆ insertSCell() [1/2]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
bool DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::insertSCell ( const SCell signed_cell)

Manually insert signed cell into calculus with unit primal and dual size. Should call updateIndexes() when structure modification is finished. Be sure to insert all adjacent lower order primal cells.

Parameters
signed_cellthe signed cell to be inserted.
Returns
true if cell was not already inserted, false if only cell was already inserted (cell properties are always updated).

◆ insertSCell() [2/2]

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
bool DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::insertSCell ( const SCell signed_cell,
const Scalar primal_size,
const Scalar dual_size 
)

Manually insert signed cell into calculus. Should call updateIndexes() when structure modification is finished. Be sure to insert all adjacent lower order primal cells.

Parameters
signed_cellthe signed cell to be inserted.
primal_sizesize (length, area, volume, ...) of primal cell. Primal size of 0-cell should be equal to 1.
dual_sizesize (length, area, volume, ...) of dual cell. Dual size of n-cell should be equal to 1.
Returns
true if cell was not already inserted, false if only cell was already inserted (cell properties are always updated).

◆ isCellFlipped()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
bool DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::isCellFlipped ( const Cell cell) const

Check if cell is flipped in display.

Parameters
cellthe tested cell.

◆ isValid()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
bool DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::isValid ( ) const

Checks the validity/consistency of the object.

Returns
'true' if the object is valid, 'false' otherwise.

◆ kFormLength()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
Index DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::kFormLength ( const Order order,
const Duality duality 
) const

Return number of elements in discrete k-form.

Parameters
orderk-form order.
dualityk-form duality.

◆ laplace()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Duality duality>
LinearOperator<Self, 0, duality, 0, duality> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::laplace ( ) const

Laplace operator from duality 0-forms to duality 0-forms.

Returns
Laplace operator.

◆ reorder()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Order order, Duality duality, typename TConstIterator >
LinearOperator<Self, order, duality, order, duality> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::reorder ( const TConstIterator &  begin_range,
const TConstIterator &  end_range 
) const

Reorder operator from order-forms to order-forms. Reorder indexes from internal index order to iterator range traversal induced order.

Template Parameters
orderinput and output order of reorder operator.
dualityinput and output duality of reorder operator.
TConstIteratorconst iterator to signed cell type.
Returns
identity operator.

◆ resetSizes()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
void DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::resetSizes ( )

Reset all primal to dual cell sizes to 1.

◆ selfDisplay()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
void DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::selfDisplay ( std::ostream &  out) const

Writes/Displays the object on an output stream.

Parameters
outthe output stream where the object is written.

◆ sharp()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Duality duality>
VectorField<Self, duality> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::sharp ( const KForm< Self, 1, duality > &  one_form) const

Construct vector field from 1-form.

Template Parameters
dualityinput 1-form and output vector field duality.
Parameters
one_form1-form.
Returns
vector field.

◆ sharpDirectional()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Duality duality>
LinearOperator<Self, 1, duality, 0, duality> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::sharpDirectional ( const Dimension dir) const

Get directional sharp operator that transforms 1-form into 0-form containing vector field coordinates along direction dir. Equivalent to sharp(1-form).coordAlongDirection(dir).

Template Parameters
dualityinput 1-form and output 0-form duality.
Parameters
dirdirection of projection.
Returns
linear operator.

◆ updateCachedOperators()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
void DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::updateCachedOperators ( )
private

Update sharp and flat operators cache.

◆ updateFlatOperator()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Duality duality>
void DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::updateFlatOperator ( )
private

Update flat operator cache.

Template Parameters
dualityduality of updated flat operator.

◆ updateIndexes()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
void DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::updateIndexes ( )

Update indexes for all cells. Cell insertion order == index may not be preserved.

◆ updateSharpOperator()

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
template<Duality duality>
void DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::updateSharpOperator ( )
private

Update sharp operator cache.

Template Parameters
dualityduality of updated sharp operator.

Friends And Related Function Documentation

◆ DiscreteExteriorCalculusFactory< TLinearAlgebraBackend, TInteger >

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
friend class DiscreteExteriorCalculusFactory< TLinearAlgebraBackend, TInteger >
friend

Definition at line 620 of file DiscreteExteriorCalculus.h.

Field Documentation

◆ myCachedOperatorsNeedUpdate

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
bool DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::myCachedOperatorsNeedUpdate
private

Cached flat and sharp operators generation flag.

Definition at line 574 of file DiscreteExteriorCalculus.h.

◆ myCellProperties

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
Properties DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::myCellProperties
private

Cells properties.

Definition at line 553 of file DiscreteExteriorCalculus.h.

◆ myFlatOperatorMatrixes

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
boost::array<boost::array<SparseMatrix, dimAmbient>, 2> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::myFlatOperatorMatrixes
private

Cached flat operator matrix.

Definition at line 564 of file DiscreteExteriorCalculus.h.

◆ myIndexesNeedUpdate

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
bool DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::myIndexesNeedUpdate
private

Indexes generation flag.

Definition at line 579 of file DiscreteExteriorCalculus.h.

◆ myIndexSignedCells

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
IndexedSCells DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::myIndexSignedCells
private

Cells indexed by their order. Usefull for finding cell from index and order.

Definition at line 559 of file DiscreteExteriorCalculus.h.

◆ myKSpace

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
KSpace DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::myKSpace

Associated Khalimsky space.

Definition at line 286 of file DiscreteExteriorCalculus.h.

◆ mySharpOperatorMatrixes

template<Dimension dimEmbedded, Dimension dimAmbient, typename TLinearAlgebraBackend , typename TInteger = DGtal::int32_t>
boost::array<boost::array<SparseMatrix, dimAmbient>, 2> DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger >::mySharpOperatorMatrixes
private

Cached sharp operator matrix.

Definition at line 569 of file DiscreteExteriorCalculus.h.


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