https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
RankThreeTensor.h File Reference

Go to the source code of this file.

Classes

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

Namespaces

namespace  libMesh
 The following methods are specializations for using the libMesh::Parallel::packed_range_* routines for std::strings.
 
namespace  MathUtils
 
namespace  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.
 
template<>
void MathUtils::mooseSetToZero< RankThreeTensorTempl< Real > > (RankThreeTensorTempl< Real > &v)
 Helper function template specialization to set an object to zero.
 
template<>
void MathUtils::mooseSetToZero< RankThreeTensorTempl< ADReal > > (RankThreeTensorTempl< ADReal > &v)
 
template<typename T >
RankThreeTensorTempl< T > operator* (T a, const RankThreeTensorTempl< T > &b)
 
template<typename T >
RankTwoTensorTempl< T > operator* (const libMesh::VectorValue< T > &p, const RankThreeTensorTempl< T > &b)
 r=v*A where r is rank 2, v is vector and A is rank 3
 

Function Documentation

◆ operator*() [1/2]

template<typename T >
RankTwoTensorTempl< T > operator* ( const libMesh::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 301 of file RankThreeTensor.h.

302{
304 "RankTwoTensor and RankThreeTensor have to have the same dimension N.");
306
307 for (const auto i : libMesh::make_range(RankThreeTensorTempl<T>::N))
308 for (const auto j : libMesh::make_range(RankThreeTensorTempl<T>::N))
309 for (const auto k : libMesh::make_range(RankThreeTensorTempl<T>::N))
310 result(i, j) += p(k) * b(k, i, j);
311
312 return result;
313}
for(PetscInt i=0;i< nvars;++i)
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...
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
IntRange< T > make_range(T beg, T end)

◆ operator*() [2/2]

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

Definition at line 293 of file RankThreeTensor.h.

294{
295 return b * a;
296}