The Vish Visualization Shell 0.3
Vish
Public Member Functions | List of all members
Eagle::Christoffel< Dims, Value > Class Template Reference

Christoffel symbols. More...

#include <elementary/eagle/Christoffel.hpp>

Inheritance diagram for Eagle::Christoffel< Dims, Value >:
Eagle::LowerTriangular< Dims, Row< Dims, Value > > Eagle::Vector< T, n > Eagle::FixedArray< T, n >

Public Member Functions

TVector_t operator() (const TVector_t &v, const TVector_t &w) const
 Compute $  u^a = \Gamma^a_{bc} v^b w^c \$.
 It can be written using the curvature-1-forms:
 $ \Gamma^a_{bc} w^c \equiv \Gamma^a_b w $, thus $  u = (\Gamma^a_b |\_ w) v^b $.
 
Value & operator() (int a, int b, int C)
 Return $ \Gamma_{bc}^a $.
 
const Value & operator() (int a, int b, int C) const
 Return $ \Gamma_{ab}^c $.
 
- Public Member Functions inherited from Eagle::LowerTriangular< Dims, Row< Dims, Value > >
 LowerTriangular ()
 Constructor, does not initialize anything.
 
 LowerTriangular (const LowerTriangular &LT)
 Copy constructor.
 
 LowerTriangular (const LowerTriangular &LT, const LowerTriangular &RT, const Operator<'+'> &A)
 Computational constructor for adding two types.
 
 LowerTriangular (const LowerTriangular &LT, const LowerTriangular &RT, const Operator<'-'> &A)
 Computational constructor for adding two types.
 
 LowerTriangular (const LowerTriangular &LT, const Row< Dims, Value > &v, const Operator<' *'> &M)
 Computational constructor for scalar multiplication.
 
 LowerTriangular (const LowerTriangular< N, T > &LT)
 Construct from symmetric matrix of same size but different type.
 
constexpr LowerTriangular (const std::initializer_list< T > &Init)
 Initialize from initializer list.
 
 LowerTriangular (const Vector< T, N *(N+1)/2 > &V)
 Construct symmetric matrix from compatible vector of possibly different type.
 
Row< Dims, Value > & operator() (dimension_t row, dimension_t column)
 read/write Element access
 
const Row< Dims, Value > & operator() (dimension_t row, dimension_t column) const
 readonly Element access
 
LowerTriangular< N-1, Row< Dims, Value > > & submatrix ()
 Due to the special layout of the LowerTriangular matrix class, retrieving a writeable reference to the lower dimensional submatrix is a possible operation and without runtime costs.
 
const LowerTriangular< N-1, Row< Dims, Value > > & submatrix () const
 Due to the special layout of the LowerTriangular matrix class, retrieving a reference to the lower dimensional submatrix is a no-cost operation.
 
- Public Member Functions inherited from Eagle::Vector< T, n >
Base_tfixed_array ()
 Provide access to the base class, writable.
 
const Base_tfixed_array () const
 Provide access to the base class, read-only.
 
Vectoroperator*= (const T &value)
 Self-multiplication.
 
Vectoroperator+= (const Vector &v)
 Self-addition.
 
Vector operator- () const
 Unary minus.
 
Vectoroperator-= (const Vector &v)
 Self-subtraction.
 
Vectoroperator/= (const T &value)
 Self-division.
 
template<class scalar >
Assignment< Vector, 0 > operator= (const scalar &x)
 Assign first element with scalar and use consecutive comma expressions for assignment of further elements As such a Vector may be assigned as.
 
Vectoroperator= (const Vector &src)
 Assignment operator.
 
template<class V >
void set (const V &value)
 Assign all values to the same scalar.
 
constexpr Vector ()
 Default constructor.
 
template<class AType , class BType , int CompType>
 Vector (const FixedArray< AType, n > &l, const FixedArray< BType, n > &r, const Operator< CompType > &Op)
 Computational constructor for binary operations on two fixed arrays, calls the Operator's ternary() member function for each element.
 
template<class AType , class ScalarType , int CompType>
 Vector (const FixedArray< AType, n > &l, const Operator< CompType > &, const ScalarType &scalar)
 Computational constructor from vector with scalar, calls the Operator's ternary() member function for each element and the scalar as its 3rd argument.
 
template<typename InputType >
 Vector (const FixedArray< InputType, SIZE > &V)
 Type conversion constructor.
 
template<typename Indicable >
 Vector (const Indicable &I, const AnyType &)
 Construct from indicable object, i.e.
 
template<class AType , class ScalarType , int CompType>
 Vector (const Operator< CompType > &, const ScalarType &scalar, const FixedArray< AType, n > &v)
 Computational constructor from scalar with vector calls the Operator's ternary() member function for each element and the scalar as its 2nd argument.
 
template<typename InputType >
constexpr Vector (const std::initializer_list< InputType > &Init)
 Construct from a initialization array.
 
 Vector (const T &a)
 Convenience Constructor: initialize the first element.
 
 Vector (const T &a, const T &b)
 Convenience Constructor: initialize the first two elements.
 
 Vector (const T &a, const T &b, const T &c)
 Convenience Constructor: initialize the first three elements.
 
 Vector (const T &a, const T &b, const T &c, const T &d)
 Convenience Constructor: initialize the first four elements.
 
template<int CompType>
 Vector (const Vector &l, const Vector &r, const Operator< CompType > &)
 Computational constructor for binary operations on two vectors calls the Operator's ternary() member function for each element.
 
 Vector (const Vector &NV, const Sub &, const Sub &)
 Computational constructor for unary minus.
 
constexpr Vector (const Vector &v)
 Copy constructor.
 
 Vector (const Vector &v, const Operator<'-'> &)
 Unitary minus computational constructor Applies the unitary minus to each element.
 
template<typename InputType >
 Vector (const Vector< InputType, SIZE > &V)
 Type conversion constructor.
 
- Public Member Functions inherited from Eagle::FixedArray< T, n >
void expandMinMax (FixedArray &MinValues, FixedArray &MaxValues) const
 Expand a range given by MinValues,MaxValues to include the values of this array, done per component.
 
constexpr FixedArray () noexcept
 Default constructor.
 
constexpr FixedArray (const FixedArray< AType, N > &l, const FixedArray< BType, N > &r, const Operator< CompType > &)
 Computational constructor for binary operations on two fixed arrays, calls the Operator's ternary() member function for each element.
 
constexpr FixedArray (const FixedArray< T, M > &F, const T &DefaultValue)
 Construct array from another array type of variable length.
 
constexpr FixedArray (const FixedArray< T, N > &F)
 Automatic type conversion function.
 
constexpr FixedArray (const FixedArray< T, N > &F, const ConversionFunctor &CF, const FA_CONVERT &)
 Construct array from another array type of same length.
 
constexpr FixedArray (const std::initializer_list< InitType > &Init)
 Construct from a initialization array.
 
constexpr FixedArray (const T &a)
 Convenience Constructor: initialize the first element.
 
constexpr FixedArray (const T &a, const T &b)
 Convenience Constructor: initialize the first two elements.
 
 FixedArray (const T &a, const T &b, const T &c)
 Convenience Constructor: initialize the first three elements.
 
constexpr FixedArray (const T &a, const T &b, const T &c, const T &d)
 Convenience Constructor: initialize the first four elements.
 
constexpr FixedArray (const T &a, const T &b, const T &c, const T &d, const T &e)
 Convenience Constructor: initialize the first five elements.
 
constexpr T & get (int i)
 writable element access
 
constexpr const T & get (int i) const
 read-only element access
 
constexpr const FixedArray< T, subsize > * get_subarray () const
 Helper class for retrieve a subset of the current array.
 
constexpr const FixedArray< T, SIZE-1 > & get_subdim () const
 Mainly introduced because of Interpolate::operator[].
 
const FixedArray_tgetFixedArray () const noexcept
 convenience function for base classes
 
FixedArray_tgetFixedArray () noexcept
 convenience function for base classes
 
constexpr T getMax () const
 Compute the maximum element value of this array.
 
constexpr T getMin () const
 Compute the maximum element value of this array.
 
constexpr bool operator!= (const FixedArray< T, N > &F) const
 Compare two arrays.
 
constexpr bool operator== (const FixedArray< T, N > &F) const
 Compare two arrays.
 
constexpr T & operator[] (int i)
 writeable element access operator
 
constexpr const T & operator[] (int i) const
 read-only element access operator
 
constexpr T * ptr (int i=0) noexcept
 Return a pointer to the ith element, no range checking.
 
constexpr void set (const Value &x)
 Set all array elements to the same value.
 
void setFromArray (const T *x, int length=SIZE, int offset=0)
 Set all array elements to an array's element value.
 
void sort (FixedArray< int, N > &I) const
 Sort the elements of an array into the index array.
 

Additional Inherited Members

- Public Types inherited from Eagle::LowerTriangular< Dims, Row< Dims, Value > >
typedef Vector< Row< Dims, Value >, N *(N+1)/2 > Base_t
 The (vectorial) base class.
 
typedef Base_t::Vector_t Vector_t
 The compatible vector class.
 
- Public Types inherited from Eagle::Vector< T, n >
enum  
 The number of elements in this array.
 
- Public Types inherited from Eagle::FixedArray< T, n >
typedef FlattenedArray_t::value_type Element_t
 The maximally reduced type of elements stored here.
 
typedef GetFixedArrayType< T >::result_t ElementAsFixedArray_t
 Element type as fixed array, if it is convertible to a fixed array.
 
typedef FixedArray FixedArray_t
 Exporting the type definition of this array cass type.
 
typedef FixedArrayFlattener< FixedArrayOfElements_tFixedArrayFlattener_t
 Internal helper class.
 
typedef FixedArray< ElementAsFixedArray_t, N > FixedArrayOfElements_t
 If the value is derived from a fixed array type itself, then the FixedArrayOfElements_t is an FixedArray<FixedArray<>> type.
 
typedef FixedArrayFlattener_t::result_t FlattenedArray_t
 Reduction of this array type, if it is nested, to an flattened type which contains elementary types.
 
typedef T value_type
 Export the type of the respective element value type.
 
- Static Public Member Functions inherited from Eagle::LowerTriangular< Dims, Row< Dims, Value > >
static constexpr dimension_t mem_index (dimension_t row, dimension_t column)
 Retrieve the linear index from row/column indices.
 
- Static Public Member Functions inherited from Eagle::FixedArray< T, n >
static constexpr FixedArray convert (const FixedArray< T, N > &F, const ConversionFunctor &CF)
 Perform a type conversion on a given fixed array into another basis type:
 
static constexpr dimension_t size ()
 The number of elements here.
 
- Public Attributes inherited from Eagle::LowerTriangular< Dims, Row< Dims, Value > >
STATIC_CONSTEXPR_BEGIN columns
 number of columns
 
STATIC_CONSTEXPR_BEGIN rows
 number of rows
 
- Static Public Attributes inherited from Eagle::LowerTriangular< Dims, Row< Dims, Value > >
static constexpr auto MEMSIZE
 The number of value elements occupied in memory due to alignment.
 
static constexpr auto SIZE
 The number of value elements, i.e. N*(N+1)/2.
 
- Protected Attributes inherited from Eagle::FixedArray< T, n >
data [SIZE]
 The actual data values, intentional no-initialization for data member, which increases performance on vector creation.
 

Detailed Description

template<int Dims, class Value>
class Eagle::Christoffel< Dims, Value >

Christoffel symbols.

Member Function Documentation

◆ operator()()

template<int Dims, class Value >
TVector_t Eagle::Christoffel< Dims, Value >::operator() ( const TVector_t v,
const TVector_t w 
) const
inline

Compute $  u^a = \Gamma^a_{bc} v^b w^c \$.
 It can be written using the curvature-1-forms:
 $ \Gamma^a_{bc} w^c \equiv \Gamma^a_b w $, thus $  u = (\Gamma^a_b |\_ w) v^b $.

Todo:
Make use of symmetry $\Gamma^a_{bc} = \Gamma^a_{cb} $, add special case v==w.

References Eagle::Vector< T, n >::set().