Geomi
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE > Class Template Reference

#include <LieAlgebraBase.hpp>

Inheritance diagram for LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >:
Inheritance graph
[legend]
Collaboration diagram for LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >:
Collaboration graph
[legend]

Public Member Functions

T_DERIVED inverse () const
 
void inverted ()
 
void operator+= (const T_DERIVED &g)
 
T_DERIVED operator+ (const T_DERIVED &g) const
 
T_DERIVED operator- (const T_DERIVED &g) const
 
void operator*= (T_SCALAR_TYPE s)
 
T_DERIVED operator* (const T_SCALAR_TYPE &s) const
 
T_DERIVED bracket (const T_DERIVED &g) const
 
T_DERIVED Ad (const T_GROUP &g) const
 
T_DERIVED Ad_star (const T_GROUP &g) const
 
T_SCALAR_TYPE norm () const
 
T_GROUP exp () const
 
NOXVector< T_DOF > toNOXVector () const
 
- Public Member Functions inherited from CRTP< T_DERIVED >
T_DERIVED & underlying ()
 
T_DERIVED const & underlying () const
 

Static Public Member Functions

static T_DERIVED Zero ()
 
static T_DERIVED static_bracket (const T_DERIVED &g1, const T_DERIVED &g2)
 
static T_DERIVED static_Ad (const T_DERIVED &a, const T_GROUP &g)
 
static T_DERIVED static_Ad_star (const T_GROUP &g, const T_DERIVED &a)
 
static T_GROUP exp (const T_DERIVED &g)
 
static const unsigned int dof ()
 

Static Public Attributes

static const unsigned int DOF = T_DOF
 

Detailed Description

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
class LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >

This class defines a Lie algebra \((\mathfrak g,[\cdot,\cdot])\) where \((\mathfrak g,\mathbb F,+,\cdot)\) is a vector space over the field \(\mathbb F\), with the vector space addition \( +:\mathfrak g\times\mathfrak g\rightarrow\mathfrak g\). and the scalar multiplication \(\cdot:\mathbb F\times\mathfrak g\rightarrow\mathfrak g\). Here the field \(\mathbb F\) is represented by the templated type T_SCALAR_TYPE.

The design of the class is based on the Curious Recurring Template Pattern. The class is intended to be inherited. The function members to be implemented by the user are the following:

Member Function Documentation

◆ bracket()

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
T_DERIVED LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >::bracket ( const T_DERIVED &  g) const

This function has to be implemented by the user. It should perform the Lie bracket operation \([a,b]\) where \(a\) is *this and \(b\) is g.

◆ exp()

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
T_GROUP LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >::exp ( ) const

Implements the exponential map \(\exp:\mathfrak{so}(3)\rightarrow SO(3)\) evalutated at *this.

◆ inverse()

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
T_DERIVED LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >::inverse ( ) const

This function has to be implemented by the user. It should return the mathematical inverse of *this with respect to the vector space addition.

◆ inverted()

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
void LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >::inverted ( )
inline

Inverts *this in place.

See also
inverse()

◆ operator*()

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
T_DERIVED LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >::operator* ( const T_SCALAR_TYPE &  s) const
inline

Performs the scalar multiplication of g and *this.

See also
operator*=(T_SCALAR_TYPE s)

◆ operator*=()

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
void LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >::operator*= ( T_SCALAR_TYPE  s)

This function has to be implemented by the user. It should perform the scalar multiplication of the argument s and *this. The operation must be done in place.

◆ operator+()

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
T_DERIVED LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >::operator+ ( const T_DERIVED &  g) const
inline

Performs the vector space addition of *this and g.

See also
operator+=(const T_DRIVED& g)

◆ operator+=()

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
void LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >::operator+= ( const T_DERIVED &  g)

This function has to be implemented by the user. It should perform the vector space addition of the argument g and *this. The operation must be done in place.

◆ operator-()

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
T_DERIVED LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >::operator- ( const T_DERIVED &  g) const
inline

Adds *this to the vector space addition inverse of g.

◆ static_bracket()

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
static T_DERIVED LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >::static_bracket ( const T_DERIVED &  g1,
const T_DERIVED &  g2 
)
inlinestatic

Static version of bracket(const T_DERIVED&).

See also
bracket(const T_DERIVED&)

◆ Zero()

template<typename T_DERIVED, typename T_GROUP, unsigned int T_DOF, typename T_SCALAR_TYPE>
static T_DERIVED LieAlgebraBase< T_DERIVED, T_GROUP, T_DOF, T_SCALAR_TYPE >::Zero ( )
static

This function has to be implemented by the user. It should return the Lie algebra representing the identity element for the vector space addition.


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