www.mooseframework.org
Classes | Namespaces | Functions
RankThreeTensor.h File Reference

Go to the source code of this file.

Classes

class  libMesh::TensorValue< T >
 
class  libMesh::TypeTensor< T >
 
class  libMesh::VectorValue< T >
 
class  RankThreeTensorTempl< T >
 RankThreeTensor is designed to handle any N-dimensional third order tensor, r. More...
 
struct  MetaPhysicL::RawType< RankThreeTensorTempl< T > >
 

Namespaces

 libMesh
 The following methods are specializations for using the libMesh::Parallel::packed_range_* routines for std::strings.
 
 MathUtils
 
 MetaPhysicL
 We need to instantiate the following CompareTypes to tell the compiler that ADReal is a subtype of ChainedADReal.
 

Functions

template<typename T >
void MathUtils::mooseSetToZero (T &v)
 Helper function templates to set a variable to zero. More...
 
template<>
void MathUtils::mooseSetToZero< RankThreeTensorTempl< Real > > (RankThreeTensorTempl< Real > &v)
 Helper function template specialization to set an object to zero. More...
 
template<>
void MathUtils::mooseSetToZero< RankThreeTensorTempl< DualReal > > (RankThreeTensorTempl< DualReal > &v)
 
template<typename T >
RankThreeTensorTempl< T > operator* (T a, const RankThreeTensorTempl< T > &b)
 
template<typename T >
RankTwoTensorTempl< T > operator* (const VectorValue< T > &p, const RankThreeTensorTempl< T > &b)
 r=v*A where r is rank 2, v is vector and A is rank 3 More...
 

Function Documentation

◆ operator*() [1/2]

template<typename T >
RankThreeTensorTempl<T> operator* ( a,
const RankThreeTensorTempl< T > &  b 
)

Definition at line 285 of file RankThreeTensor.h.

286 {
287  return b * a;
288 }

◆ operator*() [2/2]

template<typename T >
RankTwoTensorTempl<T> operator* ( const VectorValue< T > &  p,
const RankThreeTensorTempl< T > &  b 
)

r=v*A where r is rank 2, v is vector and A is rank 3

Definition at line 293 of file RankThreeTensor.h.

294 {
296  "RankTwoTensor and RankThreeTensor have to have the same dimension N.");
297  RankTwoTensorTempl<T> result;
298 
299  for (const auto i : make_range(RankThreeTensorTempl<T>::N))
300  for (const auto j : make_range(RankThreeTensorTempl<T>::N))
301  for (const auto k : make_range(RankThreeTensorTempl<T>::N))
302  result(i, j) += p(k) * b(k, i, j);
303 
304  return result;
305 }
RankThreeTensor is designed to handle any N-dimensional third order tensor, r.
RankTwoTensorTempl is designed to handle the Stress or Strain Tensor for a fully anisotropic material...
Definition: RankTwoTensor.h:79
IntRange< T > make_range(T beg, T end)