d-dimensional physical fourth-order tensor
Description
The tensor4
class defines a d^4
array with floating coefficients. This class is suitable for defining fourth-order tensors, i.e. field
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
class
typedef tensor4_basic<Float>
tensor4;
see the tensor4 page for the full documentation
The tensor4_basic
class is a template class with the floating type as parameter:
template<class T>
class tensor4_basic {
public:
tensor4_basic (
const std::initializer_list<std::initializer_list<
std::initializer_list<std::initializer_list<T> > > >& il);
tensor4_basic<T>&
operator= (
const tensor4_basic<T>& a);
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>&);
field::size_type size_type
std::ostream & put(std::ostream &out, size_type d=3) 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 T &k)
tensor4_basic< T > & operator+=(const tensor4_basic< T > &)
tensor4_basic< T > operator*(const T &k) const
tensor4_basic< T > & operator*=(const T &k)
tensor4_basic< T > & operator=(const tensor4_basic< T > &a)
tensor4_basic< T > operator/(const T &k) const
T & operator()(size_type i, size_type j, size_type k, size_type l)
solver_basic< Float > eye()
see the eye page for the full documentation
The norm and contracted product with a second-order tensor is provided, together with the dexp
fuinction, that represents the derivative of the tensor matrix function.
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);
T ddot(const tensor_basic< T > &a, const tensor_basic< T > &b)
ddot(x,y): see the expression page for the full documentation
T norm2(const vec< T, M > &x)
norm2(x): see the expression page for the full documentation
tensor4_basic< T > dexp(const tensor_basic< T > &chi, size_t dim)
T norm(const vec< T, M > &x)
norm(x): see the expression page for the full documentation