|
Serac
0.1
Serac is an implicit thermal strucural mechanics simulation code.
|
Implementation of isotropic tensor classes. More...
#include <iostream>#include <type_traits>

Go to the source code of this file.
Classes | |
| struct | serac::isotropic_tensor< T, n > |
| there is no such thing as a rank-1 isotropic tensor, but we include this specialization to help explain that to users, rather than just producing an "incomplete type" compilation error More... | |
| struct | serac::isotropic_tensor< T, m, m > |
| a rank-2 isotropic tensor is essentially just the Identity matrix, with a constant of proportionality More... | |
| struct | serac::isotropic_tensor< T, 3, 3, 3 > |
| the only rank-3 isotropic tensor we suport is the alternating tensor (levi-civita symbol) More... | |
| struct | serac::isotropic_tensor< T, m, m, m, m > |
| there are 3 independent rank-4 isotropic tensors (dilatational, symmetric, antisymmetric), so this object represents a linear combination of them More... | |
Namespaces | |
| serac | |
| Accelerator functionality. | |
Functions | |
| template<int m> | |
| constexpr SERAC_HOST_DEVICE isotropic_tensor< double, m, m > | serac::Identity () |
| return the identity matrix of the specified size More... | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator* (S scale, isotropic_tensor< T, m, m > I) |
| scalar multiplication More... | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator* (isotropic_tensor< T, m, m > I, S scale) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator+ (isotropic_tensor< S, m, m > I1, isotropic_tensor< T, m, m > I2) |
| addition of isotropic tensors More... | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator- (isotropic_tensor< S, m, m > I1, isotropic_tensor< T, m, m > I2) |
| difference of isotropic tensors More... | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator+ (const isotropic_tensor< S, m, m > &I, const tensor< T, m, m > &A) |
| sum of isotropic and (nonisotropic) tensor More... | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator+ (const tensor< S, m, m > &A, const isotropic_tensor< T, m, m > &I) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator- (const isotropic_tensor< S, m, m > &I, const tensor< T, m, m > &A) |
| difference of isotropic and (nonisotropic) tensor More... | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator- (const tensor< S, m, m > &A, const isotropic_tensor< T, m, m > &I) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| template<typename S , typename T , int m, int... n> | |
| constexpr SERAC_HOST_DEVICE auto | serac::dot (const isotropic_tensor< S, m, m > &I, const tensor< T, m, n... > &A) |
| dot product between an isotropic and (nonisotropic) tensor More... | |
| template<typename S , typename T , int m, int... n> | |
| constexpr SERAC_HOST_DEVICE auto | serac::dot (const tensor< S, n... > &A, isotropic_tensor< T, m, m > I) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::double_dot (const isotropic_tensor< S, m, m > &I, const tensor< T, m, m > &A) |
| double-dot product between an isotropic and (nonisotropic) tensor More... | |
| template<typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::sym (const isotropic_tensor< T, m, m > &I) |
| return the symmetric part of an isotropic tensor More... | |
| template<typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::antisym (const isotropic_tensor< T, m, m > &) |
| return the antisymmetric part of an isotropic tensor More... | |
| template<typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::tr (const isotropic_tensor< T, m, m > &I) |
| calculate the trace of an isotropic tensor More... | |
| template<typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::transpose (const isotropic_tensor< T, m, m > &I) |
| return the transpose of an isotropic tensor More... | |
| template<typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::inv (const isotropic_tensor< T, m, m > &I) |
| return the inverse of an isotropic tensor More... | |
| template<typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::det (const isotropic_tensor< T, m, m > &I) |
| compute the determinant of an isotropic tensor More... | |
| template<typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::norm (const isotropic_tensor< T, m, m > &I) |
| compute the Frobenius norm (sqrt(tr(dot(transpose(I), I)))) of an isotropic tensor More... | |
| template<typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::squared_norm (const isotropic_tensor< T, m, m > &I) |
| compute the squared Frobenius norm (tr(dot(transpose(I), I))) of an isotropic tensor More... | |
| template<int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::SymmetricIdentity () |
| a helper function for creating the rank-4 isotropic tensor defined by: d(sym(A)_{ij}) / d(A_{kl}) More... | |
| template<int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::AntisymmetricIdentity () |
| a helper function for creating the rank-4 isotropic tensor defined by: d(antisym(A)_{ij}) / d(A_{kl}) More... | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator* (S scale, isotropic_tensor< T, m, m, m, m > I) |
| scalar multiplication More... | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator* (isotropic_tensor< S, m, m, m, m > I, T scale) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator+ (isotropic_tensor< S, m, m, m, m > I1, isotropic_tensor< T, m, m, m, m > I2) |
| addition of isotropic tensors More... | |
| template<typename S , typename T , int m> | |
| constexpr SERAC_HOST_DEVICE auto | serac::operator- (isotropic_tensor< S, m, m, m, m > I1, isotropic_tensor< T, m, m, m, m > I2) |
| difference of isotropic tensors More... | |
| template<typename S , typename T , int m, int... n> | |
| constexpr SERAC_HOST_DEVICE auto | serac::double_dot (const isotropic_tensor< S, m, m, m, m > &I, const tensor< T, m, m, n... > &A) |
| double-dot product between an isotropic and (nonisotropic) tensor More... | |
Implementation of isotropic tensor classes.
Definition in file isotropic_tensor.hpp.