NAME
tensor4 - d-dimensional physical fourth-order tensor (rheolef-7.2)DESCRIPTION
The tensor4 class defines a d^4 array with floating coefficients. This class is suitable for defining fourth-order tensors, i.e. field(2) with d^4 matrix values at each physical position. It is represented as a fourth-dimensional array of coordinates. The coordinate indexes start at zero and finishes at d-1, e.g. a(0,0,0,0), a(0,0,0,1), ..., a(2,2,2,2). The default constructor set all components to zero:tensor4 a;
The standard linear algebra is supported.
IMPLEMENTATION
This documentation has been generated from file fem/geo_element/tensor4.h The tensor4 class is simply an alias to the tensor4_basic classtypedef tensor4_basic<Float> tensor4;The tensor4_basic class is a template class with the floating type as parameter:
template<class T> class tensor4_basic { public: typedef size_t size_type; typedef T element_type; typedef T float_type; // allocators: tensor4_basic (); explicit tensor4_basic (const T& init_val); tensor4_basic (const tensor4_basic<T>& a); static tensor4_basic<T> eye (size_type d = 3); tensor4_basic (const std::initializer_list<std::initializer_list< std::initializer_list<std::initializer_list<T> > > >& il); // affectation: tensor4_basic<T>& operator= (const tensor4_basic<T>& a); tensor4_basic<T>& operator= (const T& val); // accessors: T& operator()(size_type i, size_type j, size_type k, size_type l); const T& operator()(size_type i, size_type j, size_type k, size_type l) const; tensor_basic<T>& operator()(size_type i, size_type j); const tensor_basic<T>& operator()(size_type i, size_type j) const; // algebra: tensor4_basic<T> operator* (const T& k) const; tensor4_basic<T> operator/ (const T& k) const; tensor4_basic<T> operator+ (const tensor4_basic<T>& b) const; tensor4_basic<T> operator- (const tensor4_basic<T>& b) const; tensor4_basic<T>& operator+= (const tensor4_basic<T>&); tensor4_basic<T>& operator-= (const tensor4_basic<T>&); tensor4_basic<T>& operator*= (const T& k); tensor4_basic<T>& operator/= (const T& k) { return operator*= (1./k); } // io: std::ostream& put (std::ostream& out, size_type d=3) const;
};
template <class T> T norm (const tensor4_basic<T>& a) { return sqrt(norm2(a)); } template <class T> T norm2 (const tensor4_basic<T>&); template <class T> tensor_basic<T> ddot (const tensor4_basic<T>&, const tensor_basic<T>&); template <class T> tensor_basic<T> ddot (const tensor_basic<T>&, const tensor4_basic<T>&); template <class T> tensor4_basic<T> dexp (const tensor_basic<T>& a, size_t d = 3);
AUTHOR
Pierre Saramito <[email protected]>COPYRIGHT
Copyright (C) 2000-2018 Pierre Saramito <[email protected]> GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.Mon Sep 19 2022 | Version 7.2 |