![]() |
v0.16.0 |
Templates declarations. More...
Go to the source code of this file.
Namespaces | |
| namespace | MoFEM |
| implementation of Data Operators for Forces and Sources | |
Enumerations | |
Data layout helpers | |
Traits describing tensor storage layout conventions. | |
| enum class | MoFEM::DataLayout { MoFEM::GaussByCoeffs , MoFEM::CoeffsByGauss } |
Functions | |
Adaptor functions | |
Views that wrap raw storage as vector or matrix adaptors. | |
| template<typename T1 > | |
| auto | MoFEM::getVectorAdaptor (T1 ptr, const size_t n) |
| Get Vector adaptor. | |
| template<typename T1 > | |
| auto | MoFEM::getMatrixAdaptor (T1 ptr, const size_t n, const size_t m) |
| Get Matrix adaptor. | |
Generic utility helpers | |
Shared template utilities used across the header. | |
| template<class X > | |
| std::string | MoFEM::toString (X x) |
Tensor0 functions | |
Scalar tensor access helpers. | |
| template<int S = 1, class V > | |
| static auto | MoFEM::getFTensor0FromVec (V &data) |
| Get tensor rank 0 (scalar) form data vector. | |
| template<int S = 1, class M > | |
| auto | MoFEM::getFTensor0FromMat (M &data) |
| Get tensor rank 0 (scalar) form data vector. | |
| template<int S = 1, class T , class A > | |
| auto | MoFEM::getFTensor0FromMat (boost::weak_ptr< MatrixDouble > data_ptr) |
| template<int S = 1> | |
| auto | MoFEM::getFTensor0FromMat (boost::shared_ptr< MatrixDouble > data_ptr) |
| template<int S = 1, class T > | |
| static auto | MoFEM::getFTensor0FromPtr (T *ptr) |
| Get tensor rank 0 (scalar) from pointer. | |
Voigt notation helpers | |
Conversions between tensor views and Voigt-like storage. | |
| template<int DIM, typename T > | |
| auto | MoFEM::getVoigtVec (T &t_mat) |
| template<int DIM, typename T > | |
| auto | MoFEM::getVoigtVecSymm (T &t_mat) |
| template<typename T > | |
| auto | MoFEM::getVoigtVecAxisymm (T &t_mat, const double hoop_term) |
| template<typename T > | |
| auto | MoFEM::getVoigtVecSymmAxisymm (T &t_mat, const double hoop_term) |
Linear algebra helpers | |
LAPACK-backed matrix and eigenvalue utilities. | |
| MoFEMErrorCode | MoFEM::computeMatrixInverse (MatrixDouble &mat) |
| compute matrix inverse with lapack dgetri | |
| MoFEMErrorCode | MoFEM::solveLinearSystem (MatrixDouble &mat, VectorDouble &f) |
| solve linear system with lapack dgesv | |
| MoFEMErrorCode | MoFEM::solveLinearSystem (const MatrixDouble &mat, VectorDouble &f) |
| Solve linear system of equations using Lapack. | |
| MoFEMErrorCode | MoFEM::computeEigenValuesSymmetric (const MatrixDouble &mat, VectorDouble &eig, MatrixDouble &eigen_vec) |
| compute eigenvalues of a symmetric matrix using lapack dsyev | |
| template<int DIM, typename T1 , typename T2 > | |
| MoFEMErrorCode | MoFEM::computeEigenValuesSymmetric (FTensor::Tensor2< T1, DIM, DIM > &eigen_vec, FTensor::Tensor1< T2, DIM > &eig) |
| compute eigenvalues of a symmetric matrix using lapack dsyev | |
| template<int DIM, typename T1 , typename T2 , typename T3 > | |
| MoFEMErrorCode | MoFEM::computeEigenValuesSymmetric (const FTensor::Tensor2_symmetric< T1, DIM > &mat, FTensor::Tensor1< T2, DIM > &eig, FTensor::Tensor2< T3, DIM, DIM > &eigen_vec) |
| compute eigenvalues of a symmetric tensor using lapack dsyev | |
Tensor algebra helpers | |
Determinant and inverse routines for tensor-valued objects. | |
| template<typename T > | |
| static auto | MoFEM::determinantTensor3by3 (T &t) |
| Calculate the determinant of a 3x3 matrix or a tensor of rank 2. | |
| template<typename T > | |
| static auto | MoFEM::determinantTensor2by2 (T &t) |
| Calculate the determinant of a 2x2 matrix or a tensor of rank 2. | |
| template<typename T , int DIM> | |
| static auto | MoFEM::determinantTensor (FTensor::Tensor2< T, DIM, DIM > &t) |
| Calculate the determinant of a tensor of rank DIM. | |
| template<typename T , int DIM> | |
| static auto | MoFEM::determinantTensor (FTensor::Tensor2_symmetric< T, DIM > &t) |
| Calculate the determinant of a tensor of rank DIM. | |
| template<int Tensor_Dim, class T , class L , class A > | |
| MoFEMErrorCode | MoFEM::invertTensor3by3 (ublas::matrix< T, L, A > &jac_data, ublas::vector< T, A > &det_data, ublas::matrix< T, L, A > &inv_jac_data) |
| Calculate inverse of tensor rank 2 at integration points. | |
| template<> | |
| MoFEMErrorCode | MoFEM::invertTensor3by3< 3, double, ublas::row_major, DoubleAllocator > (MatrixDouble &jac_data, VectorDouble &det_data, MatrixDouble &inv_jac_data) |
| template<class T1 , class T2 > | |
| MoFEMErrorCode | MoFEM::determinantTensor3by3 (T1 &t, T2 &det) |
| Calculate determinant 3 by 3. | |
| template<class T1 , class T2 > | |
| MoFEMErrorCode | MoFEM::determinantTensor2by2 (T1 &t, T2 &det) |
| Calculate determinant 2 by 2. | |
| template<class T1 , class T2 , class T3 > | |
| MoFEMErrorCode | MoFEM::invertTensor3by3 (T1 &t, T2 &det, T3 &inv_t) |
| Calculate matrix inverse 3 by 3. | |
| template<class T1 , class T2 , class T3 > | |
| MoFEMErrorCode | MoFEM::invertTensor2by2 (T1 &t, T2 &det, T3 &inv_t) |
| Calculate matrix inverse 2 by 2. | |
| template<typename T1 , typename T2 , typename T3 > | |
| MoFEMErrorCode | MoFEM::invertTensor3by3 (FTensor::Tensor2_symmetric< T1, 3 > &t, T2 &det, FTensor::Tensor2_symmetric< T3, 3 > &inv_t) |
| Calculate matrix inverse, overload for symmetric tensor. | |
| template<typename T1 , typename T2 , typename T3 > | |
| MoFEMErrorCode | MoFEM::invertTensor2by2 (FTensor::Tensor2_symmetric< T1, 2 > &t, T2 &det, FTensor::Tensor2_symmetric< T3, 2 > &inv_t) |
| Calculate matrix inverse, overload for symmetric tensor. | |
| template<typename T1 , typename T2 , typename T3 , int DIM> | |
| static MoFEMErrorCode | MoFEM::invertTensor (FTensor::Tensor2< T1, DIM, DIM > &t, T2 &det, FTensor::Tensor2< T3, DIM, DIM > &inv_t) |
| template<typename T1 , typename T2 , typename T3 , int DIM> | |
| static MoFEMErrorCode | MoFEM::invertTensor (FTensor::Tensor2_symmetric< T1, DIM > &t, T2 &det, FTensor::Tensor2_symmetric< T3, DIM > &inv_t) |
Mesh and range helpers | |
Utility types and helpers for mesh entities, ranges, and handles. | |
| template<typename Extractor , typename Iterator > | |
| moab::Range::iterator | MoFEM::insertOrdered (Range &r, Extractor, Iterator begin_iter, Iterator end_iter) |
| Insert ordered mofem multi-index into range. | |
| template<typename MI , typename MO = Modify_change_nothing> | |
| MoFEMErrorCode | MoFEM::reconstructMultiIndex (const MI &mi, MO &&mo=Modify_change_nothing()) |
| Template used to reconstruct multi-index. | |
| auto | MoFEM::get_temp_meshset_ptr (moab::Interface &moab) |
| Create smart pointer to temporary meshset. | |
| auto | MoFEM::id_from_handle (const EntityHandle h) |
| auto | MoFEM::type_from_handle (const EntityHandle h) |
| get type from entity handle | |
| auto | MoFEM::ent_form_type_and_id (const EntityType type, const EntityID id) |
| get entity handle from type and id | |
| auto | MoFEM::dimension_from_handle (const EntityHandle h) |
| get entity dimension form handle | |
| auto | MoFEM::type_name_from_handle (const EntityHandle h) |
| get entity type name from handle | |
| auto | MoFEM::field_bit_from_bit_number (const int bit_number) |
| get field bit id from bit number | |
| template<typename I > | |
| auto | MoFEM::rangeInserter (const I f, const I s, boost::function< bool(I it)> tester, boost::function< MoFEMErrorCode(I f, I s)> inserter) |
| Insert ranges. | |
| template<typename Dest = void, typename... Arg> | |
| constexpr auto | MoFEM::make_array (Arg &&...arg) |
| Create Array. | |
FTensor index aliases | |
Convenient aliases for commonly used FTensor indices. | |
| #define | FTENSOR_INDEX(DIM, I) I##_FTIndex<DIM> I; |
| #define | FTENSOR_INDEX_DECL(r, DIM, I) FTENSOR_INDEX(DIM, I) |
| #define | FTENSOR_INDEXES(DIM, ...) |
| template<int DIM> | |
| using | MoFEM::i_FTIndex = FTensor::Index< 'i', DIM > |
| template<int DIM> | |
| using | MoFEM::j_FTIndex = FTensor::Index< 'j', DIM > |
| template<int DIM> | |
| using | MoFEM::k_FTIndex = FTensor::Index< 'k', DIM > |
| template<int DIM> | |
| using | MoFEM::l_FTIndex = FTensor::Index< 'l', DIM > |
| template<int DIM> | |
| using | MoFEM::m_FTIndex = FTensor::Index< 'm', DIM > |
| template<int DIM> | |
| using | MoFEM::n_FTIndex = FTensor::Index< 'n', DIM > |
| template<int DIM> | |
| using | MoFEM::o_FTIndex = FTensor::Index< 'o', DIM > |
| template<int DIM> | |
| using | MoFEM::p_FTIndex = FTensor::Index< 'p', DIM > |
| template<int DIM> | |
| using | MoFEM::x_FTIndex = FTensor::Index< 'x', DIM > |
| template<int DIM> | |
| using | MoFEM::y_FTIndex = FTensor::Index< 'y', DIM > |
| template<int DIM> | |
| using | MoFEM::I_FTIndex = FTensor::Index< 'I', DIM > |
| template<int DIM> | |
| using | MoFEM::J_FTIndex = FTensor::Index< 'J', DIM > |
| template<int DIM> | |
| using | MoFEM::K_FTIndex = FTensor::Index< 'K', DIM > |
| template<int DIM> | |
| using | MoFEM::L_FTIndex = FTensor::Index< 'L', DIM > |
| template<int DIM> | |
| using | MoFEM::M_FTIndex = FTensor::Index< 'M', DIM > |
| template<int DIM> | |
| using | MoFEM::N_FTIndex = FTensor::Index< 'N', DIM > |
| template<int DIM> | |
| using | MoFEM::O_FTIndex = FTensor::Index< 'O', DIM > |
| template<int DIM> | |
| using | MoFEM::Z_FTIndex = FTensor::Index< 'Z', DIM > |
| template<int DIM> | |
| using | MoFEM::Y_FTIndex = FTensor::Index< 'Y', DIM > |
Tensor1 functions | |
Rank-1 tensor construction helpers. | |
| template<int Tensor_Dim, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| using | MoFEM::GetFTensor1FromMatType = decltype(GetFTensor1FromMatImpl< Tensor_Dim, S, DL, M >::get(std::declval< M & >(), 0, 0)) |
| template<int Tensor_Dim, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| auto | MoFEM::getFTensor1FromMat (M &data, int rr=0, int cc=0) |
| Get tensor rank 1 (vector) form data matrix. | |
| template<int Tensor_Dim, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| auto | MoFEM::getFTensor1FromMat (boost::weak_ptr< MatrixDouble > data, int rr=0, int cc=0) |
| template<int Tensor_Dim, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| auto | MoFEM::getFTensor1FromMat (boost::shared_ptr< MatrixDouble > data, int rr=0, int cc=0) |
| template<int Tensor_Dim, int S = Tensor_Dim, typename T = double> | |
| auto | MoFEM::getFTensor1FromPtr (T *ptr) |
| template<int Tensor_Dim, int S = Tensor_Dim> | |
| auto | MoFEM::getFTensor1FromPtr (std::complex< double > *ptr) |
| template<int Tensor_Dim, int S = Tensor_Dim> | |
| auto | MoFEM::getFTensor1FromPtr (adouble *ptr) |
| template<int Tensor_Dim, int S = Tensor_Dim, typename T = VectorDouble> | |
| auto | MoFEM::getFTensor1FromArray (T &data) |
| template<int DIM, int S> | |
| auto | MoFEM::getFTensor1FromArrayDiag (MatrixDouble &data, const size_t rr) |
| Get FTensor1 from array. | |
| template<> | |
| auto | MoFEM::getFTensor1FromArrayDiag< 2, 2 > (MatrixDouble &data, const size_t rr) |
| template<> | |
| auto | MoFEM::getFTensor1FromArrayDiag< 3, 3 > (MatrixDouble &data, const size_t rr) |
Tensor2 functions | |
Rank-2 tensor construction and array helper routines. | |
| template<int Tensor_Dim0, int Tensor_Dim1, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| using | MoFEM::GetFTensor2FromMatType = decltype(GetFTensor2FromMatImpl< Tensor_Dim0, Tensor_Dim1, S, DL, M >::get(std::declval< M & >(), 0, 0)) |
| template<int Tensor_Dim1, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| auto | MoFEM::getFTensor2FromMat (M &data) |
| Get tensor rank 2 (matrix) form data matrix. | |
| template<int Tensor_Dim1, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| auto | MoFEM::getFTensor2FromMat (boost::weak_ptr< MatrixDouble > data_ptr) |
| Get tensor rank 2 (matrix) form data matrix. | |
| template<int Tensor_Dim1, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| auto | MoFEM::getFTensor2FromMat (boost::shared_ptr< MatrixDouble > data_ptr) |
| Get tensor rank 2 (matrix) form data matrix. | |
| template<int Tensor_Dim1, int Tensor_Dim2, int S = -1> | |
| auto | MoFEM::getFTensor2FromVec (VectorDouble &data) |
| template<int Tensor_Dim1, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| auto | MoFEM::getFTensor2FromPtr (double *ptr) |
| template<int Tensor_Dim1, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| auto | MoFEM::getFTensor2FromPtr (std::complex< double > *ptr) |
| template<int DIM1, int DIM2> | |
| auto | MoFEM::getFTensor2HVecFromPtr (double *ptr) |
| Make Tensor2 for HVec base from pointer. | |
| template<> | |
| auto | MoFEM::getFTensor2HVecFromPtr< 3, 2 > (double *ptr) |
| template<> | |
| auto | MoFEM::getFTensor2HVecFromPtr< 3, 3 > (double *ptr) |
| template<int DIM1, int DIM2, int S> | |
| auto | MoFEM::getFTensor2FromArray (MatrixDouble &data, const size_t rr, const size_t cc=0) |
| template<int DIM1, int DIM2> | |
| auto | MoFEM::getFTensor2FromArray (MatrixDouble &data, const size_t rr, const size_t cc, const int ss) |
| template<int DIM1, int DIM2, int S> | |
| auto | MoFEM::getFTensor2FromArray (MatrixADouble &data, const size_t rr) |
Tensor2_symmetric functions | |
Symmetric rank-2 tensor construction and conversion helpers. | |
| template<int Tensor_Dim, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| using | MoFEM::GetFTensor2SymmetricFromMatType = decltype(GetFTensor2SymmetricFromMatImpl< Tensor_Dim, S, DL, M >::get(std::declval< M & >(), 0, 0)) |
| template<int Tensor_Dim, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| static auto | MoFEM::getFTensor2SymmetricFromMat (M &data) |
| Get symmetric tensor rank 2 (matrix) form data matrix. | |
| template<int Tensor_Dim, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| static auto | MoFEM::getFTensor2SymmetricFromMat (boost::weak_ptr< MatrixDouble > data_ptr) |
| template<int Tensor_Dim, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| static auto | MoFEM::getFTensor2SymmetricFromMat (boost::shared_ptr< MatrixDouble > data_ptr) |
| template<int Tensor_Dim> | |
| auto | MoFEM::getFTensor2SymmetricFromPtr (double *ptr) |
| template<int Tensor_Dim> | |
| auto | MoFEM::getFTensor2SymmetricFromPtr (adouble *ptr) |
| template<int DIM> | |
| auto | MoFEM::getFTensor2SymmetricLowerFromPtr (double *ptr) |
| Make symmetric Tensor2 from pointer, taking lower triangle of matrix. | |
| template<> | |
| auto | MoFEM::getFTensor2SymmetricLowerFromPtr< 3 > (double *ptr) |
| template<> | |
| auto | MoFEM::getFTensor2SymmetricLowerFromPtr< 2 > (double *ptr) |
| template<int DIM, class T > | |
| auto | MoFEM::to_non_symm (const FTensor::Tensor2_symmetric< T, DIM > &symm) |
Tensor3 functions | |
Rank-3 tensor construction helpers. | |
| template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| using | MoFEM::GetFTensor3FromMatType = decltype(GetFTensor3FromMatImpl< Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, S, DL, M >::get(std::declval< M & >(), 0, 0)) |
| template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| static auto | MoFEM::getFTensor3FromMat (M &data, int rr=0, int cc=0) |
| Get tensor rank 3 (non symmetries) form data matrix. | |
| template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| static auto | MoFEM::getFTensor3FromMat (boost::weak_ptr< MatrixDouble > data_ptr, int rr=0, int cc=0) |
| template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| static auto | MoFEM::getFTensor3FromMat (boost::shared_ptr< MatrixDouble > data_ptr, int rr=0, int cc=0) |
| template<int DIM1, int DIM2, int DIM3> | |
| FTensor::Tensor3< FTensor::PackPtr< double *, DIM1 *DIM2 *DIM3 >, DIM1, DIM2, DIM3 > | MoFEM::getFTensor3FromPtr (double *ptr) |
| template<> | |
| FTensor::Tensor3< FTensor::PackPtr< double *, 12 >, 3, 2, 2 > | MoFEM::getFTensor3FromPtr< 3, 2, 2 > (double *ptr) |
| template<> | |
| FTensor::Tensor3< FTensor::PackPtr< double *, 27 >, 3, 3, 3 > | MoFEM::getFTensor3FromPtr< 3, 3, 3 > (double *ptr) |
Dg functions | |
Helpers for third-order tensors symmetric in the first two indices. | |
| template<int Tensor_Dim01, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| using | MoFEM::GetFTensor3DgFromMatType = decltype(GetFTensor3DgFromMatImpl< Tensor_Dim01, Tensor_Dim2, S, DL, M >::get(std::declval< M & >(), 0, 0)) |
| template<int Tensor_Dim01, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| static auto | MoFEM::getFTensor3DgFromMat (M &data) |
| Get symmetric tensor rank 3 on the first two indices from form data matrix. | |
| template<int Tensor_Dim01, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| static auto | MoFEM::getFTensor3DgFromMat (boost::weak_ptr< MatrixDouble > data_ptr) |
| template<int Tensor_Dim01, int Tensor_Dim2, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| static auto | MoFEM::getFTensor3DgFromMat (boost::shared_ptr< MatrixDouble > data_ptr) |
| template<int Tensor_Dim01, int Tensor_Dim2, int S, class T = double> | |
| static auto | MoFEM::getFTensor3DgFromPtr (T *ptr) |
Tensor4 functions | |
Rank-4 tensor construction helpers. | |
| template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| using | MoFEM::GetFTensor4FromMatType = decltype(GetFTensor4FromMatImpl< Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3, S, DL, M >::get(std::declval< M & >(), 0, 0)) |
| template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int S, std::size_t... Is> | |
| static auto | MoFEM::makeFTensor4FromPtrArray (const std::array< T *, Tensor_Dim0 *Tensor_Dim1 *Tensor_Dim2 *Tensor_Dim3 > &ptrs, std::index_sequence< Is... >) |
| template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| static auto | MoFEM::getFTensor4FromMat (M &data) |
| Get tensor rank 4 (non symmetric) form data matrix. | |
| template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| static auto | MoFEM::getFTensor4FromMat (boost::weak_ptr< MatrixDouble > data_ptr) |
| template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| static auto | MoFEM::getFTensor4FromMat (boost::shared_ptr< MatrixDouble > data_ptr) |
| template<int DIM1, int DIM2, int DIM3, int DIM4, int S = -1, class T = double> | |
| auto | MoFEM::getFTensor4FromPtr (T *ptr) |
Ddg functions | |
Helpers for fourth-order tensors symmetric in index pairs. | |
| template<int Tensor_Dim01, int Tensor_Dim23, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| using | MoFEM::GetFTensor4DdgFromMatType = decltype(GetFTensor4DdgFromMatImpl< Tensor_Dim01, Tensor_Dim23, S, DL, M >::get(std::declval< M & >(), 0, 0)) |
| template<int Tensor_Dim01, int Tensor_Dim23, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>, class M = MatrixDouble> | |
| static auto | MoFEM::getFTensor4DdgFromMat (M &data) |
| Get symmetric tensor rank 4 on first two and last indices from form data matrix. | |
| template<int Tensor_Dim01, int Tensor_Dim23, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| static auto | MoFEM::getFTensor4DdgFromMat (boost::weak_ptr< MatrixDouble > data) |
| template<int Tensor_Dim01, int Tensor_Dim23, int S = -1, class DL = DataLayoutTraits<DataLayout::GaussByCoeffs>> | |
| static auto | MoFEM::getFTensor4DdgFromMat (boost::shared_ptr< MatrixDouble > data_ptr) |
| template<int Tensor_Dim01, int Tensor_Dim23, int S, class T = double> | |
| static auto | MoFEM::getFTensor4DdgFromPtr (T *ptr) |
Templates declarations.
Definition in file Templates.hpp.
Definition at line 2561 of file Templates.hpp.
| #define FTENSOR_INDEX_DECL | ( | r, | |
| DIM, | |||
| I | |||
| ) | FTENSOR_INDEX(DIM, I) |
Definition at line 2563 of file Templates.hpp.
| #define FTENSOR_INDEXES | ( | DIM, | |
| ... | |||
| ) |
Definition at line 2565 of file Templates.hpp.