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... | |
| template<typename T2 > | |
| RankFourTensorTempl (const SymmetricRankFourTensorTempl< T2 > &t) | |
The conversion operator from a SymmetricRankFourTensorTempl 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)=default |
| copies values from a into this tensor More... | |
| template<typename Scalar > | |
| libMesh::boostcopy::enable_if_c< libMesh::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< libMesh::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< libMesh::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 libMesh::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... | |
| libMesh::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 |
| std::ostream & | operator<< (std::ostream &os, const RankFourTensorTempl< T > &t) |
| 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 52 of file RankFourTensorImplementation.h.
| RankFourTensorTempl< T >::RankFourTensorTempl | ( | const InitMethod | init | ) |
Select specific initialization pattern.
Definition at line 61 of file RankFourTensorImplementation.h.
| RankFourTensorTempl< T >::RankFourTensorTempl | ( | const std::vector< T > & | input, |
| FillMethod | fill_method | ||
| ) |
Fill from vector.
Definition at line 110 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 571 of file RankFourTensor.h.
|
inline |
The conversion operator from a SymmetricRankFourTensorTempl
Definition at line 151 of file RankFourTensor.h.
| RankThreeTensorTempl< T > RankFourTensorTempl< T >::contraction | ( | const libMesh::VectorValue< T > & | b | ) | const |
single contraction of a RankFourTensor with a vector over index m
Definition at line 790 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 886 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 900 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 590 of file RankFourTensorImplementation.h.
| void RankFourTensorTempl< T >::fillAntisymmetricIsotropic | ( | const T & | i0 | ) |
Definition at line 677 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 665 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 732 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 545 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 756 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 648 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 636 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 789 of file RankFourTensorImplementation.h.
|
static |
Static method for use in validParams for getting the "fill_method".
Definition at line 44 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 768 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 646 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 609 of file RankFourTensor.h.
| void RankFourTensorTempl< T >::fillSymmetricIsotropic | ( | const T & | i0, |
| const T & | i1 | ||
| ) |
Definition at line 693 of file RankFourTensorImplementation.h.
| void RankFourTensorTempl< T >::fillSymmetricIsotropicEandNu | ( | const T & | E, |
| const T & | nu | ||
| ) |
Definition at line 721 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 708 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 684 of file RankFourTensorImplementation.h.
|
inlinestatic |
Definition at line 171 of file RankFourTensor.h.
|
inlinestatic |
Identity of type {ik} {jl} - {ij} {kl} / 3.
Definition at line 174 of file RankFourTensor.h.
|
inlinestatic |
Definition at line 172 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 869 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 754 of file RankFourTensor.h.
| RankFourTensorTempl< Real > RankFourTensorTempl< Real >::invSymm | ( | ) | const |
Definition at line 257 of file RankFourTensorImplementation.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 250 of file RankFourTensorImplementation.h.
| bool RankFourTensorTempl< T >::isIsotropic | ( | ) | const |
checks if the tensor is isotropic
Definition at line 1099 of file RankFourTensorImplementation.h.
| bool RankFourTensorTempl< T >::isSymmetric | ( | ) | const |
checks if the tensor is symmetric
Definition at line 1078 of file RankFourTensorImplementation.h.
| T RankFourTensorTempl< T >::L2norm | ( | ) | const |
sqrt(C_ijkl*C_ijkl)
Definition at line 237 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 180 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 189 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 126 of file RankFourTensorImplementation.h.
| auto RankFourTensorTempl< T >::operator* | ( | const T2 & | a | ) | const -> typename std::enable_if<libMesh::ScalarTraits<T2>::value, RankFourTensorTempl<decltype(T() * T2())>>::type |
C_ijkl*a.
Definition at line 580 of file RankFourTensor.h.
| auto RankFourTensorTempl< T >::operator* | ( | const RankFourTensorTempl< T2 > & | a | ) | const -> RankFourTensorTempl<decltype(T() * T2())> |
C_ijpq*a_pqkl.
Definition at line 218 of file RankFourTensorImplementation.h.
| RankFourTensorTempl< T > & RankFourTensorTempl< T >::operator*= | ( | const T & | a | ) |
C_ijkl *= a.
Definition at line 147 of file RankFourTensorImplementation.h.
| auto RankFourTensorTempl< T >::operator+ | ( | const RankFourTensorTempl< T2 > & | a | ) | const -> RankFourTensorTempl<decltype(T() + T2())> |
C_ijkl + a_ijkl.
Definition at line 175 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 165 of file RankFourTensorImplementation.h.
| auto RankFourTensorTempl< T >::operator- | ( | const RankFourTensorTempl< T2 > & | a | ) | const -> RankFourTensorTempl<decltype(T() - T2())> |
C_ijkl - a_ijkl.
Definition at line 196 of file RankFourTensorImplementation.h.
| RankFourTensorTempl< T > RankFourTensorTempl< T >::operator- | ( | ) | const |
-C_ijkl
Definition at line 207 of file RankFourTensorImplementation.h.
| RankFourTensorTempl< T > & RankFourTensorTempl< T >::operator-= | ( | const RankFourTensorTempl< T > & | a | ) |
C_ijkl -= a_ijkl.
Definition at line 186 of file RankFourTensorImplementation.h.
| auto RankFourTensorTempl< T >::operator/ | ( | const T2 & | a | ) | const -> typename std::enable_if<libMesh::ScalarTraits<T2>::value, RankFourTensorTempl<decltype(T() / T2())>>::type |
C_ijkl/a.
Definition at line 596 of file RankFourTensor.h.
| RankFourTensorTempl< T > & RankFourTensorTempl< T >::operator/= | ( | const T & | a | ) |
C_ijkl /= a for all i, j, k, l.
Definition at line 156 of file RankFourTensorImplementation.h.
|
default |
copies values from a into this tensor
|
inline |
Assignment-from-scalar operator.
Used only to zero out the tensor.
Definition at line 220 of file RankFourTensor.h.
| void RankFourTensorTempl< T >::print | ( | std::ostream & | stm = Moose::out | ) | const |
Print the rank four tensor.
Definition at line 413 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 433 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 381 of file RankFourTensorImplementation.h.
| RankFourTensorTempl< T > RankFourTensorTempl< T >::singleProductI | ( | const RankTwoTensorTempl< T > & | A | ) | const |
Calculates C_mjkl A_im.
Definition at line 1014 of file RankFourTensorImplementation.h.
| RankFourTensorTempl< T > RankFourTensorTempl< T >::singleProductJ | ( | const RankTwoTensorTempl< T > & | A | ) | const |
Calculates C_imkl A_jm.
Definition at line 1030 of file RankFourTensorImplementation.h.
| RankFourTensorTempl< T > RankFourTensorTempl< T >::singleProductK | ( | const RankTwoTensorTempl< T > & | A | ) | const |
Calculates C_ijml A_km.
Definition at line 1046 of file RankFourTensorImplementation.h.
| RankFourTensorTempl< T > RankFourTensorTempl< T >::singleProductL | ( | const RankTwoTensorTempl< T > & | A | ) | const |
Calculates C_ijkm A_lm.
Definition at line 1062 of file RankFourTensorImplementation.h.
| libMesh::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 926 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 914 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 499 of file RankFourTensorImplementation.h.
| RankFourTensorTempl< T > RankFourTensorTempl< T >::transposeIj | ( | ) | const |
Transpose the tensor by swapping the first two indeces.
Definition at line 469 of file RankFourTensorImplementation.h.
| RankFourTensorTempl< T > RankFourTensorTempl< T >::transposeKl | ( | ) | const |
Transpose the tensor by swapping the last two indeces.
Definition at line 484 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 453 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 995 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 976 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 957 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 938 of file RankFourTensorImplementation.h.
| void RankFourTensorTempl< T >::zero | ( | ) |
Zeros out the tensor.
Definition at line 117 of file RankFourTensorImplementation.h.
Referenced by RankFourTensorTempl< T >::operator=().
|
friend |
|
friend |
|
friend |
Definition at line 200 of file RankFourTensor.h.
Definition at line 533 of file RankFourTensor.h.
Definition at line 535 of file RankFourTensor.h.
Definition at line 531 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 436 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 >::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.
1.8.14