v0.14.0
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Functions
Templates.hpp File Reference

Templates declarations. More...

Go to the source code of this file.

Classes

struct  MoFEM::KeyFromKey< KeyExtractor1, KeyExtractor2 >
 
struct  MoFEM::LtBit< id_type >
 
struct  MoFEM::EqBit< id_type >
 
struct  MoFEM::HashBit< id_type >
 
struct  MoFEM::GetFTensor0FromVecImpl< S, T, A >
 
struct  MoFEM::GetFTensor1FromMatImpl< Tensor_Dim, S, T, L, A >
 
struct  MoFEM::GetFTensor1FromMatImpl< 3, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor1FromMatImpl< 4, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor1FromMatImpl< 6, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor1FromMatImpl< 9, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor1FromMatImpl< 2, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor1FromMatImpl< 1, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor2FromMatImpl< Tensor_Dim1, Tensor_Dim2, S, T, L, A >
 
struct  MoFEM::GetFTensor2SymmetricFromMatImpl< Tensor_Dim, S, T, L, A >
 
struct  MoFEM::GetFTensor2SymmetricFromMatImpl< 3, S, T, L, A >
 
struct  MoFEM::GetFTensor2SymmetricFromMatImpl< 2, S, T, L, A >
 
struct  MoFEM::GetFTensor4DdgFromMatImpl< Tensor_Dim01, Tensor_Dim23, S, T, L, A >
 
struct  MoFEM::GetFTensor4DdgFromMatImpl< 1, 1, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor4DdgFromMatImpl< 2, 2, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor4DdgFromMatImpl< 3, 3, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor3DgFromMatImpl< Tensor_Dim01, Tensor_Dim2, S, T, L, A >
 
struct  MoFEM::GetFTensor3DgFromMatImpl< 1, 1, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor3DgFromMatImpl< 2, 2, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor3DgFromMatImpl< 3, 3, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor4FromMatImpl< Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3, S, T, L, A >
 
struct  MoFEM::GetFTensor4FromMatImpl< 1, 1, 1, 1, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor4FromMatImpl< 2, 2, 2, 2, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor4FromMatImpl< 3, 3, 3, 3, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor3FromMatImpl< Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, S, T, L, A >
 
struct  MoFEM::GetFTensor3FromMatImpl< 1, 1, 1, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor3FromMatImpl< 2, 2, 2, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor3FromMatImpl< 3, 2, 2, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor3FromMatImpl< 2, 2, 3, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor3FromMatImpl< 3, 3, 3, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor3FromMatImpl< 6, 3, 3, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor3FromMatImpl< 3, 3, 6, S, T, ublas::row_major, A >
 
struct  MoFEM::GetFTensor1FromPtrImpl< 2, S, T >
 
struct  MoFEM::GetFTensor1FromPtrImpl< 3, S, T >
 
struct  MoFEM::GetFTensor1FromPtrImpl< 6, S, T >
 
struct  MoFEM::GetFTensor2FromPtr< 3, 2, S, T >
 
struct  MoFEM::GetFTensor2FromPtr< 6, 6, S, T >
 
struct  MoFEM::GetFTensor2FromPtr< 3, 3, S, T >
 
struct  MoFEM::GetFTensor2FromPtr< 2, 2, S, T >
 
struct  MoFEM::GetFTensor2FromPtr< 1, 3, S, T >
 
struct  MoFEM::GetFTensor2FromPtr< 1, 2, S, T >
 
struct  MoFEM::GetFTensor2FromPtr< 1, 1, S, T >
 
struct  MoFEM::GetFTensor1FromArray< 1, S >
 
struct  MoFEM::GetFTensor1FromArray< 2, S >
 
struct  MoFEM::GetFTensor1FromArray< 3, S >
 
struct  MoFEM::GetFTensor1FromArray< 4, S >
 
struct  MoFEM::GetFTensor1FromArray< 6, S >
 
struct  MoFEM::GetFTensor1FromArray< 9, S >
 
struct  MoFEM::GetFTensor2FromArrayImpl< 2, 2, S, T, L, A >
 
struct  MoFEM::GetFTensor2FromArrayImpl< 3, 3, S, T, L, A >
 
struct  MoFEM::GetFTensor2FromArrayRawPtrImpl< 2, 2, T, L, A >
 
struct  MoFEM::GetFTensor2FromArrayRawPtrImpl< 3, 3, T, L, A >
 
struct  MoFEM::DeterminantTensorImpl< T, 3 >
 
struct  MoFEM::DeterminantTensorImpl< T, 2 >
 
struct  MoFEM::InvertTensorImpl< T1, T2, T3, 3 >
 
struct  MoFEM::InvertTensorImpl< T1, T2, T3, 2 >
 
struct  MoFEM::RefEntExtractor
 Extract entity handle form multi-index container. More...
 
struct  MoFEM::Modify_change_nothing
 Do nothing, used to rebuild database. More...
 
struct  MoFEM::TempMeshset
 

Namespaces

namespace  MoFEM
 implementation of Data Operators for Forces and Sources
 

Typedefs

template<typename T >
using MoFEM::ShardVec = boost::shared_ptr< std::vector< T > >
 

Functions

template<typename T1 >
auto MoFEM::getVectorAdaptor (T1 ptr, const size_t n)
 Get Vector adaptor. More...
 
template<typename T1 >
auto MoFEM::getMatrixAdaptor (T1 ptr, const size_t n, const size_t m)
 Get Matrix adaptor. More...
 
template<class X >
std::string MoFEM::toString (X x)
 
template<int S = 1, class T , class A >
static auto MoFEM::getFTensor0FromVec (ublas::vector< T, A > &data)
 Get tensor rank 0 (scalar) form data vector. More...
 
template<int Tensor_Dim, int S = 1, class T , class L , class A >
FTensor::Tensor1< FTensor::PackPtr< T *, S >, Tensor_Dim > MoFEM::getFTensor1FromMat (ublas::matrix< T, L, A > &data)
 Get tensor rank 1 (vector) form data matrix. More...
 
template<int Tensor_Dim, int S = 1>
auto MoFEM::getFTensor1FromMat (MatrixDouble &data)
 Get tensor rank 1 (vector) form data matrix (specialization) More...
 
template<int Tensor_Dim1, int Tensor_Dim2>
FTensor::Tensor2< FTensor::PackPtr< double *, 1 >, Tensor_Dim1, Tensor_Dim2 > MoFEM::getFTensor2FromMat (MatrixDouble &data)
 Get tensor rank 2 (matrix) form data matrix. More...
 
template<int Tensor_Dim1, int Tensor_Dim2>
FTensor::Tensor2< FTensor::PackPtr< double *, 1 >, Tensor_Dim1, Tensor_Dim2 > MoFEM::getFTensor2FromVec (VectorDouble &data)
 
template<>
FTensor::Tensor2< FTensor::PackPtr< double *, 1 >, 1, 1 > MoFEM::getFTensor2FromVec (VectorDouble &data)
 
template<int Tensor_Dim, int S, class T , class L , class A >
static auto MoFEM::getFTensor2SymmetricFromMat (ublas::matrix< T, L, A > &data)
 Get symmetric tensor rank 2 (matrix) form data matrix. More...
 
template<int Tensor_Dim, int S = 1>
static auto MoFEM::getFTensor2SymmetricFromMat (MatrixDouble &data)
 
template<int Tensor_Dim01, int Tensor_Dim23, int S = 1, class T , class L , class A >
static FTensor::Ddg< FTensor::PackPtr< T *, 1 >, Tensor_Dim01, Tensor_Dim23 > MoFEM::getFTensor4DdgFromMat (ublas::matrix< T, L, A > &data)
 Get symmetric tensor rank 4 on first two and last indices from form data matrix. More...
 
template<int Tensor_Dim01, int Tensor_Dim23, int S = 1>
static auto MoFEM::getFTensor4DdgFromMat (MatrixDouble &data)
 
template<int Tensor_Dim01, int Tensor_Dim2, int S = 1, class T , class L , class A >
static FTensor::Dg< FTensor::PackPtr< T *, 1 >, Tensor_Dim01, Tensor_Dim2 > MoFEM::getFTensor3DgFromMat (ublas::matrix< T, L, A > &data)
 Get symmetric tensor rank 3 on the first two indices from form data matrix. More...
 
template<int Tensor_Dim01, int Tensor_Dim2, int S = 1>
static auto MoFEM::getFTensor3DgFromMat (MatrixDouble &data)
 
template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int S = 1, class T , class L , class A >
static FTensor::Tensor4< FTensor::PackPtr< T *, 1 >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 > MoFEM::getFTensor4FromMat (ublas::matrix< T, L, A > &data)
 Get tensor rank 4 (non symmetric) form data matrix. More...
 
template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int S = 1>
static auto MoFEM::getFTensor4FromMat (MatrixDouble &data)
 
template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int S = 1, class T , class L , class A >
static FTensor::Tensor3< FTensor::PackPtr< T *, 1 >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 > MoFEM::getFTensor3FromMat (ublas::matrix< T, L, A > &data)
 Get tensor rank 3 (non symmetries) form data matrix. More...
 
template<int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int S = 1>
static auto MoFEM::getFTensor3FromMat (MatrixDouble &data)
 
template<int DIM, int S = DIM>
FTensor::Tensor1< FTensor::PackPtr< double *, S >, DIM > MoFEM::getFTensor1FromPtr (double *ptr)
 Make Tensor1 from pointer. More...
 
template<int DIM, int S = DIM>
FTensor::Tensor1< FTensor::PackPtr< adouble *, S >, DIM > MoFEM::getFTensor1FromPtr (adouble *ptr)
 
template<int DIM, int S = DIM>
FTensor::Tensor1< FTensor::PackPtr< std::complex< double > *, S >, DIM > MoFEM::getFTensor1FromPtr (std::complex< double > *ptr)
 
template<int DIM1, int DIM2, int S = DIM1 * DIM2>
auto MoFEM::getFTensor2FromPtr (double *ptr)
 Make Tensor2 from pointer. More...
 
template<int DIM1, int DIM2, int S = DIM1 * DIM2>
auto MoFEM::getFTensor2FromPtr (std::complex< double > *ptr)
 Make Tensor2 from pointer. More...
 
template<int DIM1, int DIM2>
FTensor::Tensor2< FTensor::PackPtr< double *, DIM1 *DIM2 >, DIM1, DIM2MoFEM::getFTensor2HVecFromPtr (double *ptr)
 Make Tensor2 for HVec base from pointer. More...
 
template<>
FTensor::Tensor2< FTensor::PackPtr< double *, 6 >, 3, 2 > MoFEM::getFTensor2HVecFromPtr< 3, 2 > (double *ptr)
 
template<>
FTensor::Tensor2< FTensor::PackPtr< double *, 9 >, 3, 3 > MoFEM::getFTensor2HVecFromPtr< 3, 3 > (double *ptr)
 
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)
 
template<int DIM>
FTensor::Tensor2_symmetric< FTensor::PackPtr< double *,(DIM *(DIM+1))/2 >, DIM > MoFEM::getFTensor2SymmetricFromPtr (double *ptr)
 Make symmetric Tensor2 from pointer. More...
 
template<>
FTensor::Tensor2_symmetric< FTensor::PackPtr< double *, 6 >, 3 > MoFEM::getFTensor2SymmetricFromPtr< 3 > (double *ptr)
 
template<>
FTensor::Tensor2_symmetric< FTensor::PackPtr< double *, 3 >, 2 > MoFEM::getFTensor2SymmetricFromPtr< 2 > (double *ptr)
 
template<int DIM>
FTensor::Tensor2_symmetric< FTensor::PackPtr< adouble *,(DIM *(DIM+1))/2 >, DIM > MoFEM::getFTensor2SymmetricFromPtr (adouble *ptr)
 Make symmetric Tensor2 from pointer. More...
 
template<>
FTensor::Tensor2_symmetric< FTensor::PackPtr< adouble *, 6 >, 3 > MoFEM::getFTensor2SymmetricFromPtr< 3 > (adouble *ptr)
 
template<>
FTensor::Tensor2_symmetric< FTensor::PackPtr< adouble *, 3 >, 2 > MoFEM::getFTensor2SymmetricFromPtr< 2 > (adouble *ptr)
 
template<int DIM>
FTensor::Tensor2_symmetric< FTensor::PackPtr< double *, DIM *DIM >, DIM > MoFEM::getFTensor2SymmetricLowerFromPtr (double *ptr)
 Make symmetric Tensor2 from pointer, taking lower triangle of matrix. More...
 
template<>
FTensor::Tensor2_symmetric< FTensor::PackPtr< double *, 9 >, 3 > MoFEM::getFTensor2SymmetricLowerFromPtr< 3 > (double *ptr)
 
template<>
FTensor::Tensor2_symmetric< FTensor::PackPtr< double *, 4 >, 2 > MoFEM::getFTensor2SymmetricLowerFromPtr< 2 > (double *ptr)
 
template<int DIM, int S>
auto MoFEM::getFTensor1FromArray (VectorDouble &data)
 Get FTensor1 from array. More...
 
template<int DIM, int S = 0>
auto MoFEM::getFTensor1FromArray (VectorDouble3 &data)
 Get FTensor1 from array. More...
 
template<>
auto MoFEM::getFTensor1FromArray< 3, 0 > (VectorDouble3 &data)
 
template<int DIM, int S>
FTensor::Tensor1< FTensor::PackPtr< double *, S >, DIM > MoFEM::getFTensor1FromMat (MatrixDouble &data, const size_t rr)
 
template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 1 >, 2 > MoFEM::getFTensor1FromMat (MatrixDouble &data, const size_t rr)
 
template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 1 >, 3 > MoFEM::getFTensor1FromMat (MatrixDouble &data, const size_t rr)
 
template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 1 >, 4 > MoFEM::getFTensor1FromMat (MatrixDouble &data, const size_t rr)
 
template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 1 >, 9 > MoFEM::getFTensor1FromMat (MatrixDouble &data, const size_t rr)
 
template<int DIM, int S>
FTensor::Tensor1< FTensor::PackPtr< double *, S >, DIM > MoFEM::getFTensor1FromArrayDiag (MatrixDouble &data, const size_t rr)
 Get FTensor1 from array. More...
 
template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 2 >, 2 > MoFEM::getFTensor1FromArrayDiag (MatrixDouble &data, const size_t rr)
 
template<>
FTensor::Tensor1< FTensor::PackPtr< double *, 3 >, 3 > MoFEM::getFTensor1FromArrayDiag (MatrixDouble &data, const size_t rr)
 
template<int DIM1, int DIM2, int S>
FTensor::Tensor2< FTensor::PackPtr< double *, S >, DIM1, DIM2MoFEM::getFTensor2FromArray (MatrixDouble &data, const size_t rr, const size_t cc=0)
 
template<int DIM1, int DIM2>
FTensor::Tensor2< double *, DIM1, DIM2MoFEM::getFTensor2FromArray (MatrixDouble &data, const size_t rr, const size_t cc, const int ss)
 
template<int S, typename T , typename L , typename A >
auto MoFEM::getFTensor2FromArray2by2 (ublas::matrix< T, L, A > &data, const FTensor::Number< S > &, const size_t rr, const size_t cc=0)
 
template<int S, typename T , typename L , typename A >
auto MoFEM::getFTensor2FromArray3by3 (ublas::matrix< T, L, A > &data, const FTensor::Number< S > &, const size_t rr, const size_t cc=0)
 
template<int DIM1, int DIM2, int S>
auto MoFEM::getFTensor2FromArray (MatrixADouble &data, const size_t rr)
 
MoFEMErrorCode MoFEM::computeMatrixInverse (MatrixDouble &mat)
 compute matrix inverse with lapack dgetri More...
 
MoFEMErrorCode MoFEM::solveLinearSystem (MatrixDouble &mat, VectorDouble &f)
 solve linear system with lapack dgesv More...
 
MoFEMErrorCode MoFEM::solveLinearSystem (const MatrixDouble &mat, VectorDouble &f)
 Solve linear system of equations using Lapack. More...
 
MoFEMErrorCode MoFEM::computeEigenValuesSymmetric (const MatrixDouble &mat, VectorDouble &eig, MatrixDouble &eigen_vec)
 compute eigenvalues of a symmetric matrix using lapack dsyev More...
 
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 More...
 
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 More...
 
template<typename T >
static auto MoFEM::determinantTensor3by3 (T &t)
 Calculate the determinant of a 3x3 matrix or a tensor of rank 2. More...
 
template<typename T >
static auto MoFEM::determinantTensor2by2 (T &t)
 Calculate the determinant of a 2x2 matrix or a tensor of rank 2. More...
 
template<typename T , int DIM>
static auto MoFEM::determinantTensor (FTensor::Tensor2< T, DIM, DIM > &t)
 Calculate the determinant of a tensor of rank DIM. More...
 
template<typename T , int DIM>
static auto MoFEM::determinantTensor (FTensor::Tensor2_symmetric< T, DIM > &t)
 Calculate the determinant of a tensor of rank DIM. More...
 
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. More...
 
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. More...
 
template<class T1 , class T2 >
MoFEMErrorCode MoFEM::determinantTensor2by2 (T1 &t, T2 &det)
 Calculate determinant 2 by 2. More...
 
template<class T1 , class T2 , class T3 >
MoFEMErrorCode MoFEM::invertTensor3by3 (T1 &t, T2 &det, T3 &inv_t)
 Calculate matrix inverse 3 by 3. More...
 
template<class T1 , class T2 , class T3 >
MoFEMErrorCode MoFEM::invertTensor2by2 (T1 &t, T2 &det, T3 &inv_t)
 Calculate matrix inverse 2 by 2. More...
 
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)
 
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. More...
 
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. More...
 
auto MoFEM::get_temp_meshset_ptr (moab::Interface &moab)
 Create smart pointer to temporary meshset. More...
 
auto MoFEM::id_from_handle (const EntityHandle h)
 
auto MoFEM::type_from_handle (const EntityHandle h)
 get type from entity handle More...
 
auto MoFEM::ent_form_type_and_id (const EntityType type, const EntityID id)
 get entity handle from type and id More...
 
auto MoFEM::dimension_from_handle (const EntityHandle h)
 get entity dimension form handle More...
 
auto MoFEM::type_name_from_handle (const EntityHandle h)
 get entity type name from handle More...
 
auto MoFEM::field_bit_from_bit_number (const int bit_number)
 get field bit id from bit number More...
 
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. More...
 
template<typename Dest = void, typename... Arg>
constexpr auto MoFEM::make_array (Arg &&...arg)
 Create Array. More...
 

Detailed Description

Templates declarations.

Definition in file Templates.hpp.