RankFourTensorTempl is designed to handle any N-dimensional fourth order tensor, C. More...
#include <RankFourTensor.h>
Classes | |
struct | TwoTensorMultTraits |
struct | TwoTensorMultTraits< RankTwoTensorTempl, Scalar > |
struct | TwoTensorMultTraits< TensorValue, Scalar > |
struct | TwoTensorMultTraits< TypeTensor, Scalar > |
Public Types | |
enum | InitMethod { initNone, initIdentity, initIdentityFour, initIdentitySymmetricFour, initIdentityDeviatoric } |
Initialization method. More... | |
enum | FillMethod { antisymmetric, symmetric9, symmetric21, general_isotropic, symmetric_isotropic, symmetric_isotropic_E_nu, antisymmetric_isotropic, axisymmetric_rz, general, principal, orthotropic } |
To fill up the 81 entries in the 4th-order tensor, fillFromInputVector is called with one of the following fill_methods. More... | |
typedef tuple_of< 4, unsigned int > | index_type |
typedef T | value_type |
Public Member Functions | |
RankFourTensorTempl () | |
Default constructor; fills to zero. More... | |
RankFourTensorTempl (const InitMethod) | |
Select specific initialization pattern. More... | |
RankFourTensorTempl (const std::vector< T > &, FillMethod) | |
Fill from vector. More... | |
RankFourTensorTempl (const RankFourTensorTempl< T > &a)=default | |
Copy assignment operator must be defined if used. More... | |
template<typename T2 > | |
RankFourTensorTempl (const RankFourTensorTempl< T2 > ©) | |
Copy constructor. More... | |
T & | operator() (unsigned int i, unsigned int j, unsigned int k, unsigned int l) |
Gets the value for the indices specified. Takes indices ranging from 0-2 for i, j, k, and l. More... | |
const T & | operator() (unsigned int i, unsigned int j, unsigned int k, unsigned int l) const |
Gets the value for the indices specified. More... | |
void | zero () |
Zeros out the tensor. More... | |
void | print (std::ostream &stm=Moose::out) const |
Print the rank four tensor. More... | |
void | printReal (std::ostream &stm=Moose::out) const |
Print the values of the rank four tensor. More... | |
RankFourTensorTempl< T > & | operator= (const RankFourTensorTempl< T > &a) |
copies values from a into this tensor More... | |
template<typename Scalar > | |
boostcopy::enable_if_c< ScalarTraits< Scalar >::value, RankFourTensorTempl & >::type | operator= (const Scalar &libmesh_dbg_var(p)) |
Assignment-from-scalar operator. More... | |
template<template< typename > class Tensor, typename T2 > | |
auto | operator* (const Tensor< T2 > &a) const -> typename std::enable_if< TwoTensorMultTraits< Tensor, T2 >::value, RankTwoTensorTempl< decltype(T() *T2())>>::type |
C_ijkl*a_kl. More... | |
template<typename T2 > | |
auto | operator* (const T2 &a) const -> typename std::enable_if< ScalarTraits< T2 >::value, RankFourTensorTempl< decltype(T() *T2())>>::type |
C_ijkl*a. More... | |
RankFourTensorTempl< T > & | operator*= (const T &a) |
C_ijkl *= a. More... | |
template<typename T2 > | |
auto | operator/ (const T2 &a) const -> typename std::enable_if< ScalarTraits< T2 >::value, RankFourTensorTempl< decltype(T()/T2())>>::type |
C_ijkl/a. More... | |
RankFourTensorTempl< T > & | operator/= (const T &a) |
C_ijkl /= a for all i, j, k, l. More... | |
RankFourTensorTempl< T > & | operator+= (const RankFourTensorTempl< T > &a) |
C_ijkl += a_ijkl for all i, j, k, l. More... | |
template<typename T2 > | |
auto | operator+ (const RankFourTensorTempl< T2 > &a) const -> RankFourTensorTempl< decltype(T()+T2())> |
C_ijkl + a_ijkl. More... | |
RankFourTensorTempl< T > & | operator-= (const RankFourTensorTempl< T > &a) |
C_ijkl -= a_ijkl. More... | |
template<typename T2 > | |
auto | operator- (const RankFourTensorTempl< T2 > &a) const -> RankFourTensorTempl< decltype(T() - T2())> |
C_ijkl - a_ijkl. More... | |
RankFourTensorTempl< T > | operator- () const |
-C_ijkl More... | |
template<typename T2 > | |
auto | operator* (const RankFourTensorTempl< T2 > &a) const -> RankFourTensorTempl< decltype(T() *T2())> |
C_ijpq*a_pqkl. More... | |
T | L2norm () const |
sqrt(C_ijkl*C_ijkl) More... | |
RankFourTensorTempl< T > | invSymm () const |
This returns A_ijkl such that C_ijkl*A_klmn = 0.5*(de_im de_jn + de_in de_jm) This routine assumes that C_ijkl = C_jikl = C_ijlk. More... | |
RankFourTensorTempl< T > | inverse () const |
This returns A_ijkl such that C_ijkl*A_klmn = de_im de_jn i.e. More... | |
void | rotate (const TypeTensor< T > &R) |
Rotate the tensor using C_ijkl = R_im R_jn R_ko R_lp C_mnop. More... | |
RankFourTensorTempl< T > | transposeMajor () const |
Transpose the tensor by swapping the first pair with the second pair of indices. More... | |
RankFourTensorTempl< T > | transposeIj () const |
Transpose the tensor by swapping the first two indeces. More... | |
RankFourTensorTempl< T > | transposeKl () const |
Transpose the tensor by swapping the last two indeces. More... | |
template<int m> | |
RankThreeTensorTempl< T > | contraction (const VectorValue< T > &b) const |
single contraction of a RankFourTensor with a vector over index m More... | |
void | surfaceFillFromInputVector (const std::vector< T > &input) |
Fills the tensor entries ignoring the last dimension (ie, C_ijkl=0 if any of i, j, k, or l = 3). More... | |
void | fillFromInputVector (const std::vector< T > &input, FillMethod fill_method) |
fillFromInputVector takes some number of inputs to fill the Rank-4 tensor. More... | |
template<typename T2 > | |
void | fillSymmetric9FromInputVector (const T2 &input) |
fillSymmetric9FromInputVector takes 9 inputs to fill in the Rank-4 tensor with the appropriate crystal symmetries maintained. More... | |
template<typename T2 > | |
void | fillSymmetric21FromInputVector (const T2 &input) |
fillSymmetric21FromInputVector takes either 21 inputs to fill in the Rank-4 tensor with the appropriate crystal symmetries maintained. More... | |
RankTwoTensorTempl< T > | innerProductTranspose (const RankTwoTensorTempl< T > &) const |
Inner product of the major transposed tensor with a rank two tensor. More... | |
T | contractionIj (unsigned int, unsigned int, const RankTwoTensorTempl< T > &) const |
Sum C_ijkl M_kl for a given i,j. More... | |
T | contractionKl (unsigned int, unsigned int, const RankTwoTensorTempl< T > &) const |
Sum M_ij C_ijkl for a given k,l. More... | |
T | sum3x3 () const |
Calculates the sum of Ciijj for i and j varying from 0 to 2. More... | |
VectorValue< T > | sum3x1 () const |
Calculates the vector a[i] = sum over j Ciijj for i and j varying from 0 to 2. More... | |
RankFourTensorTempl< T > | tripleProductJkl (const RankTwoTensorTempl< T > &, const RankTwoTensorTempl< T > &, const RankTwoTensorTempl< T > &) const |
Calculates C_imnt A_jm B_kn C_lt. More... | |
RankFourTensorTempl< T > | tripleProductIkl (const RankTwoTensorTempl< T > &, const RankTwoTensorTempl< T > &, const RankTwoTensorTempl< T > &) const |
Calculates C_mjnt A_im B_kn C_lt. More... | |
RankFourTensorTempl< T > | tripleProductIjl (const RankTwoTensorTempl< T > &, const RankTwoTensorTempl< T > &, const RankTwoTensorTempl< T > &) const |
Calculates C_mnkt A_im B_jn C_lt. More... | |
RankFourTensorTempl< T > | tripleProductIjk (const RankTwoTensorTempl< T > &, const RankTwoTensorTempl< T > &, const RankTwoTensorTempl< T > &) const |
Calculates C_mntl A_im B_jn C_kt. More... | |
RankFourTensorTempl< T > | singleProductI (const RankTwoTensorTempl< T > &) const |
Calculates C_mjkl A_im. More... | |
RankFourTensorTempl< T > | singleProductJ (const RankTwoTensorTempl< T > &) const |
Calculates C_imkl A_jm. More... | |
RankFourTensorTempl< T > | singleProductK (const RankTwoTensorTempl< T > &) const |
Calculates C_ijml A_km. More... | |
RankFourTensorTempl< T > | singleProductL (const RankTwoTensorTempl< T > &) const |
Calculates C_ijkm A_lm. More... | |
bool | isSymmetric () const |
checks if the tensor is symmetric More... | |
bool | isIsotropic () const |
checks if the tensor is isotropic More... | |
template<> | |
RankFourTensorTempl< Real > | invSymm () const |
void | fillGeneralIsotropic (const T &i0, const T &i1, const T &i2) |
Vector-less fill API functions. See docs of the corresponding ...FromInputVector methods. More... | |
void | fillAntisymmetricIsotropic (const T &i0) |
void | fillSymmetricIsotropic (const T &i0, const T &i1) |
void | fillSymmetricIsotropicEandNu (const T &E, const T &nu) |
Static Public Member Functions | |
static RankFourTensorTempl< T > | Identity () |
static RankFourTensorTempl< T > | IdentityFour () |
static RankFourTensorTempl< T > | IdentityDeviatoric () |
Identity of type {ik} {jl} - {ij} {kl} / 3. More... | |
static MooseEnum | fillMethodEnum () |
Static method for use in validParams for getting the "fill_method". More... | |
Static Public Attributes | |
static constexpr unsigned int | N = Moose::dim |
tensor dimension and powers of the dimension More... | |
static constexpr unsigned int | N2 = N * N |
static constexpr unsigned int | N3 = N * N * N |
static constexpr unsigned int | N4 = N * N * N * N |
Protected Member Functions | |
void | fillAntisymmetricFromInputVector (const std::vector< T > &input) |
fillAntisymmetricFromInputVector takes 6 inputs to fill the the antisymmetric Rank-4 tensor with the appropriate symmetries maintained. More... | |
void | fillGeneralIsotropicFromInputVector (const std::vector< T > &input) |
fillGeneralIsotropicFromInputVector takes 3 inputs to fill the Rank-4 tensor with symmetries C_ijkl = C_klij, and isotropy, ie C_ijkl = la*de_ij*de_kl + mu*(de_ik*de_jl + de_il*de_jk) + a*ep_ijm*ep_klm where la is the first Lame modulus, mu is the second (shear) Lame modulus, and a is the antisymmetric shear modulus, and ep is the permutation tensor More... | |
void | fillAntisymmetricIsotropicFromInputVector (const std::vector< T > &input) |
fillAntisymmetricIsotropicFromInputVector takes 1 input to fill the the antisymmetric Rank-4 tensor with the appropriate symmetries maintained. More... | |
void | fillSymmetricIsotropicFromInputVector (const std::vector< T > &input) |
fillSymmetricIsotropicFromInputVector takes 2 inputs to fill the the symmetric Rank-4 tensor with the appropriate symmetries maintained. More... | |
void | fillSymmetricIsotropicEandNuFromInputVector (const std::vector< T > &input) |
fillSymmetricIsotropicEandNuFromInputVector is a variation of the fillSymmetricIsotropicFromInputVector which takes as inputs the more commonly used Young's modulus (E) and Poisson's ratio (nu) constants to fill the isotropic elasticity tensor. More... | |
void | fillAxisymmetricRZFromInputVector (const std::vector< T > &input) |
fillAxisymmetricRZFromInputVector takes 5 inputs to fill the axisymmetric Rank-4 tensor with the appropriate symmetries maintatined for use with axisymmetric problems using coord_type = RZ. More... | |
void | fillGeneralFromInputVector (const std::vector< T > &input) |
fillGeneralFromInputVector takes 81 inputs to fill the Rank-4 tensor No symmetries are explicitly maintained More... | |
void | fillPrincipalFromInputVector (const std::vector< T > &input) |
fillPrincipalFromInputVector takes 9 inputs to fill a Rank-4 tensor C1111 = input0 C1122 = input1 C1133 = input2 C2211 = input3 C2222 = input4 C2233 = input5 C3311 = input6 C3322 = input7 C3333 = input8 with all other components being zero More... | |
void | fillGeneralOrthotropicFromInputVector (const std::vector< T > &input) |
fillGeneralOrhotropicFromInputVector takes 10 inputs to fill the Rank-4 tensor It defines a general orthotropic tensor for which some constraints among elastic parameters exist More... | |
Protected Attributes | |
T | _vals [N4] |
The values of the rank-four tensor stored by index=(((i * LIBMESH_DIM + j) * LIBMESH_DIM + k) * LIBMESH_DIM + l) More... | |
Friends | |
template<typename T2 > | |
class | RankTwoTensorTempl |
template<typename T2 > | |
class | RankFourTensorTempl |
template<typename T2 > | |
class | RankThreeTensorTempl |
template<class T2 > | |
void | dataStore (std::ostream &, RankFourTensorTempl< T2 > &, void *) |
template<class T2 > | |
void | dataLoad (std::istream &, RankFourTensorTempl< T2 > &, void *) |
RankFourTensorTempl is designed to handle any N-dimensional fourth order tensor, C.
Since N is hard-coded to 3, RankFourTensorTempl holds 81 separate C_ijkl entries, with i,j,k,l = 0, 1, 2.
Definition at line 65 of file RankFourTensor.h.
typedef tuple_of<4, unsigned int> RankFourTensorTempl< T >::index_type |
Definition at line 75 of file RankFourTensor.h.
typedef T RankFourTensorTempl< T >::value_type |
Definition at line 76 of file RankFourTensor.h.
enum RankFourTensorTempl::FillMethod |
To fill up the 81 entries in the 4th-order tensor, fillFromInputVector is called with one of the following fill_methods.
See the fill*FromInputVector functions for more details
Enumerator | |
---|---|
antisymmetric | |
symmetric9 | |
symmetric21 | |
general_isotropic | |
symmetric_isotropic | |
symmetric_isotropic_E_nu | |
antisymmetric_isotropic | |
axisymmetric_rz | |
general | |
principal | |
orthotropic |
Definition at line 93 of file RankFourTensor.h.
enum RankFourTensorTempl::InitMethod |
Initialization method.
Enumerator | |
---|---|
initNone | |
initIdentity | |
initIdentityFour | |
initIdentitySymmetricFour | |
initIdentityDeviatoric |
Definition at line 79 of file RankFourTensor.h.
RankFourTensorTempl< T >::RankFourTensorTempl | ( | ) |
Default constructor; fills to zero.
Definition at line 50 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T >::RankFourTensorTempl | ( | const InitMethod | init | ) |
Select specific initialization pattern.
Definition at line 59 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T >::RankFourTensorTempl | ( | const std::vector< T > & | input, |
FillMethod | fill_method | ||
) |
Fill from vector.
Definition at line 108 of file RankFourTensorImplementation.h.
|
default |
Copy assignment operator must be defined if used.
RankFourTensorTempl< T >::RankFourTensorTempl | ( | const RankFourTensorTempl< T2 > & | copy | ) |
Copy constructor.
Definition at line 541 of file RankFourTensor.h.
RankThreeTensorTempl< T > RankFourTensorTempl< T >::contraction | ( | const VectorValue< T > & | b | ) | const |
single contraction of a RankFourTensor with a vector over index m
Definition at line 760 of file RankFourTensor.h.
T RankFourTensorTempl< T >::contractionIj | ( | unsigned int | i, |
unsigned int | j, | ||
const RankTwoTensorTempl< T > & | M | ||
) | const |
Sum C_ijkl M_kl for a given i,j.
Definition at line 892 of file RankFourTensorImplementation.h.
T RankFourTensorTempl< T >::contractionKl | ( | unsigned int | k, |
unsigned int | l, | ||
const RankTwoTensorTempl< T > & | M | ||
) | const |
Sum M_ij C_ijkl for a given k,l.
Definition at line 906 of file RankFourTensorImplementation.h.
|
protected |
fillAntisymmetricFromInputVector takes 6 inputs to fill the the antisymmetric Rank-4 tensor with the appropriate symmetries maintained.
I.e., B_ijkl = -B_jikl = -B_ijlk = B_klij
input | this is B1212, B1213, B1223, B1313, B1323, B2323. |
Definition at line 596 of file RankFourTensorImplementation.h.
void RankFourTensorTempl< T >::fillAntisymmetricIsotropic | ( | const T & | i0 | ) |
Definition at line 683 of file RankFourTensorImplementation.h.
|
protected |
fillAntisymmetricIsotropicFromInputVector takes 1 input to fill the the antisymmetric Rank-4 tensor with the appropriate symmetries maintained.
I.e., C_ijkl = a * ep_ijm * ep_klm, where epsilon is the permutation tensor (and sum on m)
input | this is a in the above formula |
Definition at line 671 of file RankFourTensorImplementation.h.
|
protected |
fillAxisymmetricRZFromInputVector takes 5 inputs to fill the axisymmetric Rank-4 tensor with the appropriate symmetries maintatined for use with axisymmetric problems using coord_type = RZ.
I.e. C1111 = C2222, C1133 = C2233, C2323 = C3131 and C1212 = 0.5*(C1111-C1122)
input | this is C1111, C1122, C1133, C3333, C2323. |
Definition at line 738 of file RankFourTensorImplementation.h.
void RankFourTensorTempl< T >::fillFromInputVector | ( | const std::vector< T > & | input, |
FillMethod | fill_method | ||
) |
fillFromInputVector takes some number of inputs to fill the Rank-4 tensor.
input | the numbers that will be placed in the tensor |
fill_method | this can be: antisymmetric (use fillAntisymmetricFromInputVector) symmetric9 (use fillSymmetric9FromInputVector) symmetric21 (use fillSymmetric21FromInputVector) general_isotropic (use fillGeneralIsotropicFrominputVector) symmetric_isotropic (use fillSymmetricIsotropicFromInputVector) antisymmetric_isotropic (use fillAntisymmetricIsotropicFromInputVector) axisymmetric_rz (use fillAxisymmetricRZFromInputVector) general (use fillGeneralFromInputVector) principal (use fillPrincipalFromInputVector) |
Definition at line 551 of file RankFourTensorImplementation.h.
|
protected |
fillGeneralFromInputVector takes 81 inputs to fill the Rank-4 tensor No symmetries are explicitly maintained
input | C(i,j,k,l) = input[i*N*N*N + j*N*N + k*N + l] |
Definition at line 762 of file RankFourTensorImplementation.h.
void RankFourTensorTempl< T >::fillGeneralIsotropic | ( | const T & | i0, |
const T & | i1, | ||
const T & | i2 | ||
) |
Vector-less fill API functions. See docs of the corresponding ...FromInputVector methods.
Definition at line 654 of file RankFourTensorImplementation.h.
|
protected |
fillGeneralIsotropicFromInputVector takes 3 inputs to fill the Rank-4 tensor with symmetries C_ijkl = C_klij, and isotropy, ie C_ijkl = la*de_ij*de_kl + mu*(de_ik*de_jl + de_il*de_jk) + a*ep_ijm*ep_klm where la is the first Lame modulus, mu is the second (shear) Lame modulus, and a is the antisymmetric shear modulus, and ep is the permutation tensor
input | this is la, mu, a in the above formula |
Definition at line 642 of file RankFourTensorImplementation.h.
|
protected |
fillGeneralOrhotropicFromInputVector takes 10 inputs to fill the Rank-4 tensor It defines a general orthotropic tensor for which some constraints among elastic parameters exist
input | Ea, Eb, Ec, Gab, Gbc, Gca, nuba, nuca, nucb, nuab, nuac, nubc |
Definition at line 795 of file RankFourTensorImplementation.h.
|
static |
Static method for use in validParams for getting the "fill_method".
Definition at line 42 of file RankFourTensorImplementation.h.
|
protected |
fillPrincipalFromInputVector takes 9 inputs to fill a Rank-4 tensor C1111 = input0 C1122 = input1 C1133 = input2 C2211 = input3 C2222 = input4 C2233 = input5 C3311 = input6 C3322 = input7 C3333 = input8 with all other components being zero
Definition at line 774 of file RankFourTensorImplementation.h.
void RankFourTensorTempl< T >::fillSymmetric21FromInputVector | ( | const T2 & | input | ) |
fillSymmetric21FromInputVector takes either 21 inputs to fill in the Rank-4 tensor with the appropriate crystal symmetries maintained.
I.e., C_ijkl = C_klij, C_ijkl = C_ijlk, C_ijkl = C_jikl
input | is C1111 C1122 C1133 C1123 C1113 C1112 C2222 C2233 C2223 C2213 C2212 C3333 C3323 C3313 C3312 C2323 C2313 C2312 C1313 C1312 C1212 |
Definition at line 616 of file RankFourTensor.h.
void RankFourTensorTempl< T >::fillSymmetric9FromInputVector | ( | const T2 & | input | ) |
fillSymmetric9FromInputVector takes 9 inputs to fill in the Rank-4 tensor with the appropriate crystal symmetries maintained.
I.e., C_ijkl = C_klij, C_ijkl = C_ijlk, C_ijkl = C_jikl
input | is: C1111 C1122 C1133 C2222 C2233 C3333 C2323 C1313 C1212 In the isotropic case this is (la is first Lame constant, mu is second (shear) Lame constant) la+2mu la la la+2mu la la+2mu mu mu mu |
Definition at line 579 of file RankFourTensor.h.
void RankFourTensorTempl< T >::fillSymmetricIsotropic | ( | const T & | i0, |
const T & | i1 | ||
) |
Definition at line 699 of file RankFourTensorImplementation.h.
void RankFourTensorTempl< T >::fillSymmetricIsotropicEandNu | ( | const T & | E, |
const T & | nu | ||
) |
Definition at line 727 of file RankFourTensorImplementation.h.
|
protected |
fillSymmetricIsotropicEandNuFromInputVector is a variation of the fillSymmetricIsotropicFromInputVector which takes as inputs the more commonly used Young's modulus (E) and Poisson's ratio (nu) constants to fill the isotropic elasticity tensor.
Using well-known formulas, E and nu are used to calculate lambda and mu and then the vector is passed to fillSymmetricIsotropicFromInputVector.
input | Young's modulus (E) and Poisson's ratio (nu) |
Definition at line 714 of file RankFourTensorImplementation.h.
|
protected |
fillSymmetricIsotropicFromInputVector takes 2 inputs to fill the the symmetric Rank-4 tensor with the appropriate symmetries maintained.
C_ijkl = lambda*de_ij*de_kl + mu*(de_ik*de_jl + de_il*de_jk) where lambda is the first Lame modulus, mu is the second (shear) Lame modulus,
input | this is lambda and mu in the above formula |
Definition at line 690 of file RankFourTensorImplementation.h.
|
inlinestatic |
Definition at line 148 of file RankFourTensor.h.
|
inlinestatic |
Identity of type {ik} {jl} - {ij} {kl} / 3.
Definition at line 151 of file RankFourTensor.h.
|
inlinestatic |
Definition at line 149 of file RankFourTensor.h.
RankTwoTensorTempl< T > RankFourTensorTempl< T >::innerProductTranspose | ( | const RankTwoTensorTempl< T > & | b | ) | const |
Inner product of the major transposed tensor with a rank two tensor.
Definition at line 875 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::inverse | ( | ) | const |
This returns A_ijkl such that C_ijkl*A_klmn = de_im de_jn i.e.
the general rank four inverse
Definition at line 724 of file RankFourTensor.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::invSymm | ( | ) | const |
This returns A_ijkl such that C_ijkl*A_klmn = 0.5*(de_im de_jn + de_in de_jm) This routine assumes that C_ijkl = C_jikl = C_ijlk.
Definition at line 256 of file RankFourTensorImplementation.h.
RankFourTensorTempl< Real > RankFourTensorTempl< Real >::invSymm | ( | ) | const |
Definition at line 263 of file RankFourTensorImplementation.h.
bool RankFourTensorTempl< T >::isIsotropic | ( | ) | const |
checks if the tensor is isotropic
Definition at line 1105 of file RankFourTensorImplementation.h.
bool RankFourTensorTempl< T >::isSymmetric | ( | ) | const |
checks if the tensor is symmetric
Definition at line 1084 of file RankFourTensorImplementation.h.
T RankFourTensorTempl< T >::L2norm | ( | ) | const |
sqrt(C_ijkl*C_ijkl)
Definition at line 244 of file RankFourTensorImplementation.h.
|
inline |
Gets the value for the indices specified. Takes indices ranging from 0-2 for i, j, k, and l.
Definition at line 157 of file RankFourTensor.h.
|
inline |
Gets the value for the indices specified.
Takes indices ranging from 0-2 for i, j, k, and l. used for const
Definition at line 166 of file RankFourTensor.h.
auto RankFourTensorTempl< T >::operator* | ( | const Tensor< T2 > & | a | ) | const -> typename std::enable_if<TwoTensorMultTraits<Tensor, T2>::value, RankTwoTensorTempl<decltype(T() * T2())>>::type |
C_ijkl*a_kl.
Definition at line 133 of file RankFourTensorImplementation.h.
auto RankFourTensorTempl< T >::operator* | ( | const T2 & | a | ) | const -> typename std::enable_if<ScalarTraits<T2>::value, RankFourTensorTempl<decltype(T() * T2())>>::type |
C_ijkl*a.
Definition at line 550 of file RankFourTensor.h.
auto RankFourTensorTempl< T >::operator* | ( | const RankFourTensorTempl< T2 > & | a | ) | const -> RankFourTensorTempl<decltype(T() * T2())> |
C_ijpq*a_pqkl.
Definition at line 225 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > & RankFourTensorTempl< T >::operator*= | ( | const T & | a | ) |
C_ijkl *= a.
Definition at line 154 of file RankFourTensorImplementation.h.
auto RankFourTensorTempl< T >::operator+ | ( | const RankFourTensorTempl< T2 > & | a | ) | const -> RankFourTensorTempl<decltype(T() + T2())> |
C_ijkl + a_ijkl.
Definition at line 182 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > & RankFourTensorTempl< T >::operator+= | ( | const RankFourTensorTempl< T > & | a | ) |
C_ijkl += a_ijkl for all i, j, k, l.
Definition at line 172 of file RankFourTensorImplementation.h.
auto RankFourTensorTempl< T >::operator- | ( | const RankFourTensorTempl< T2 > & | a | ) | const -> RankFourTensorTempl<decltype(T() - T2())> |
C_ijkl - a_ijkl.
Definition at line 203 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::operator- | ( | ) | const |
-C_ijkl
Definition at line 214 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > & RankFourTensorTempl< T >::operator-= | ( | const RankFourTensorTempl< T > & | a | ) |
C_ijkl -= a_ijkl.
Definition at line 193 of file RankFourTensorImplementation.h.
auto RankFourTensorTempl< T >::operator/ | ( | const T2 & | a | ) | const -> typename std::enable_if<ScalarTraits<T2>::value, RankFourTensorTempl<decltype(T() / T2())>>::type |
C_ijkl/a.
Definition at line 566 of file RankFourTensor.h.
RankFourTensorTempl< T > & RankFourTensorTempl< T >::operator/= | ( | const T & | a | ) |
C_ijkl /= a for all i, j, k, l.
Definition at line 163 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > & RankFourTensorTempl< T >::operator= | ( | const RankFourTensorTempl< T > & | a | ) |
copies values from a into this tensor
Definition at line 123 of file RankFourTensorImplementation.h.
|
inline |
Assignment-from-scalar operator.
Used only to zero out the tensor.
Definition at line 190 of file RankFourTensor.h.
void RankFourTensorTempl< T >::print | ( | std::ostream & | stm = Moose::out | ) | const |
Print the rank four tensor.
Definition at line 419 of file RankFourTensorImplementation.h.
void RankFourTensorTempl< T >::printReal | ( | std::ostream & | stm = Moose::out | ) | const |
Print the values of the rank four tensor.
Definition at line 439 of file RankFourTensorImplementation.h.
void RankFourTensorTempl< T >::rotate | ( | const TypeTensor< T > & | R | ) |
Rotate the tensor using C_ijkl = R_im R_jn R_ko R_lp C_mnop.
Definition at line 387 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::singleProductI | ( | const RankTwoTensorTempl< T > & | A | ) | const |
Calculates C_mjkl A_im.
Definition at line 1020 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::singleProductJ | ( | const RankTwoTensorTempl< T > & | A | ) | const |
Calculates C_imkl A_jm.
Definition at line 1036 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::singleProductK | ( | const RankTwoTensorTempl< T > & | A | ) | const |
Calculates C_ijml A_km.
Definition at line 1052 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::singleProductL | ( | const RankTwoTensorTempl< T > & | A | ) | const |
Calculates C_ijkm A_lm.
Definition at line 1068 of file RankFourTensorImplementation.h.
VectorValue< T > RankFourTensorTempl< T >::sum3x1 | ( | ) | const |
Calculates the vector a[i] = sum over j Ciijj for i and j varying from 0 to 2.
Definition at line 932 of file RankFourTensorImplementation.h.
T RankFourTensorTempl< T >::sum3x3 | ( | ) | const |
Calculates the sum of Ciijj for i and j varying from 0 to 2.
Definition at line 920 of file RankFourTensorImplementation.h.
void RankFourTensorTempl< T >::surfaceFillFromInputVector | ( | const std::vector< T > & | input | ) |
Fills the tensor entries ignoring the last dimension (ie, C_ijkl=0 if any of i, j, k, or l = 3).
Fill method depends on size of input Input size = 2. Then C_1111 = C_2222 = input[0], and C_1122 = input[1], and C_1212 = (input[0]
Definition at line 505 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::transposeIj | ( | ) | const |
Transpose the tensor by swapping the first two indeces.
Definition at line 475 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::transposeKl | ( | ) | const |
Transpose the tensor by swapping the last two indeces.
Definition at line 490 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::transposeMajor | ( | ) | const |
Transpose the tensor by swapping the first pair with the second pair of indices.
Definition at line 459 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::tripleProductIjk | ( | const RankTwoTensorTempl< T > & | A, |
const RankTwoTensorTempl< T > & | B, | ||
const RankTwoTensorTempl< T > & | C | ||
) | const |
Calculates C_mntl A_im B_jn C_kt.
Definition at line 1001 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::tripleProductIjl | ( | const RankTwoTensorTempl< T > & | A, |
const RankTwoTensorTempl< T > & | B, | ||
const RankTwoTensorTempl< T > & | C | ||
) | const |
Calculates C_mnkt A_im B_jn C_lt.
Definition at line 982 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::tripleProductIkl | ( | const RankTwoTensorTempl< T > & | A, |
const RankTwoTensorTempl< T > & | B, | ||
const RankTwoTensorTempl< T > & | C | ||
) | const |
Calculates C_mjnt A_im B_kn C_lt.
Definition at line 963 of file RankFourTensorImplementation.h.
RankFourTensorTempl< T > RankFourTensorTempl< T >::tripleProductJkl | ( | const RankTwoTensorTempl< T > & | A, |
const RankTwoTensorTempl< T > & | B, | ||
const RankTwoTensorTempl< T > & | C | ||
) | const |
Calculates C_imnt A_jm B_kn C_lt.
Definition at line 944 of file RankFourTensorImplementation.h.
void RankFourTensorTempl< T >::zero | ( | ) |
Zeros out the tensor.
Definition at line 115 of file RankFourTensorImplementation.h.
Referenced by RankFourTensorTempl< T >::operator=().
|
friend |
|
friend |
Definition at line 503 of file RankFourTensor.h.
Definition at line 505 of file RankFourTensor.h.
Definition at line 501 of file RankFourTensor.h.
|
protected |
The values of the rank-four tensor stored by index=(((i * LIBMESH_DIM + j) * LIBMESH_DIM + k) * LIBMESH_DIM + l)
Definition at line 406 of file RankFourTensor.h.
Referenced by dataLoad(), dataStore(), RankFourTensorTempl< T >::inverse(), RankFourTensorTempl< T >::invSymm(), RankThreeTensorTempl< T >::mixedProductRankFour(), RankFourTensorTempl< T >::operator()(), RankFourTensorTempl< T >::operator*(), RankFourTensorTempl< T >::operator+(), RankFourTensorTempl< T >::operator+=(), RankFourTensorTempl< T >::operator-(), RankFourTensorTempl< T >::operator-=(), RankFourTensorTempl< T >::operator/(), RankFourTensorTempl< T >::operator=(), RankFourTensorTempl< T >::RankFourTensorTempl(), RankFourTensorTempl< T >::rotate(), and RankFourTensorTempl< T >::transposeMajor().
|
static |
tensor dimension and powers of the dimension
Definition at line 69 of file RankFourTensor.h.
Referenced by RankFourTensorTempl< T >::operator()().
|
static |
Definition at line 70 of file RankFourTensor.h.
Referenced by RankFourTensorTempl< T >::operator()().
|
static |
Definition at line 71 of file RankFourTensor.h.
Referenced by RankFourTensorTempl< T >::operator()().
Definition at line 72 of file RankFourTensor.h.