20 #ifndef LIBMESH_TYPE_N_TENSOR_H 21 #define LIBMESH_TYPE_N_TENSOR_H 47 template <
unsigned int N,
typename T>
64 operator TypeVector<T> ()
const { libmesh_not_implemented();
return 0; }
67 operator TypeTensor<T> ()
const { libmesh_not_implemented();
return 0; }
105 template<
typename T2>
113 template<
typename T2>
126 template <
typename Scalar>
136 template <
typename Scalar>
142 template <
typename Scalar>
162 template <
typename T2>
172 #ifdef LIBMESH_ENABLE_DEPRECATED 193 bool operator < (const TypeNTensor<N,T> & )
const 206 void print(std::ostream & )
const {}
224 template<
typename T2>
235 return (e == 0) ? 1 : b *
int_pow(b, e - 1);
240 template<
unsigned int N,
typename T>
241 template<
typename T2>
245 unsigned int size = int_pow(LIBMESH_DIM, N);
246 for (
unsigned int i = 0; i < size ; i++)
247 _coords[i] += factor*p._coords[i];
250 template <
unsigned int N,
typename T,
typename Scalar>
256 libmesh_not_implemented();
260 template <
unsigned int N,
typename T,
typename Scalar>
261 typename boostcopy::enable_if_c<
263 TypeNTensor<N,typename CompareTypes<Scalar, T>::supertype>>::type
266 libmesh_not_implemented();
274 #endif // LIBMESH_TYPE_N_TENSOR_H
static constexpr int int_pow(int b, int e)
boostcopy::enable_if_c< ScalarTraits< Scalar >::value, TypeNTensor< N, typename CompareTypes< Scalar, T >::supertype > >::type operator/(const Scalar &, const TypeNTensor< N, T > &)
boostcopy::enable_if_c< ScalarTraits< Scalar >::value, TypeNTensor< N, typename CompareTypes< T, Scalar >::supertype > >::type operator/(const Scalar) const
void print(std::ostream &) const
TypeNTensor< N, T > operator-() const
boostcopy::enable_if_c< ScalarTraits< Scalar >::value, TypeNTensor< N, typename CompareTypes< T, Scalar >::supertype > >::type operator*(const Scalar) const
void add_scaled(const TypeNTensor< N, T2 > &, const T &)
const TypeNTensor< N, T > & operator+=(const TypeNTensor< N, T2 > &)
const TypeNTensor< N, T > & operator-=(const TypeNTensor< N, T2 > &)
const TypeNTensor< N-1, T > slice(const unsigned int) const
TypeNTensor(const TypeTensor< T > &)
boostcopy::enable_if_c< ScalarTraits< Scalar >::value, TypeNTensor< N, typename CompareTypes< Scalar, T >::supertype > >::type operator*(const Scalar &, const TypeNTensor< N, T > &)
const TypeNTensor< N, T > & operator/=(const T)
bool operator==(const TypeNTensor< N, T > &) const
tuple_of< N, unsigned int > index_type
const TypeNTensor< N, T > & operator*=(const Scalar)
typename tuple_n< I, T >::template type<> tuple_of
TypeNTensor< N, typename CompareTypes< T, T2 >::supertype > operator+(const TypeNTensor< N, T2 > &) const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
friend std::ostream & operator<<(std::ostream &os, const TypeNTensor< N, T > &t)
TypeNTensor< N-1, T > slice(const unsigned int)
bool operator>(const TypeNTensor< N, T > &) const
TypeNTensor(const TypeVector< T > &)
CompareTypes< T, T2 >::supertype contract(const TypeNTensor< N, T2 > &) const