OGS
NumLib::ShapeMatrixCache Class Reference

Detailed Description

Definition at line 44 of file ShapeMatrixCache.h.

#include <ShapeMatrixCache.h>

Public Types

template<typename MeshElement>
using ShapeFunctionHigherOrder
template<typename MeshElement>
using ShapeFunctionLowerOrder

Public Member Functions

 ShapeMatrixCache (unsigned const integration_order)
template<typename MeshElement>
auto const & NsHigherOrder () const
template<typename MeshElement>
auto const & NsLowerOrder () const

Static Public Member Functions

static constexpr std::size_t size ()

Private Types

using ETLs = NumLib::AllElementTraitsLagrange
using MeshElements
using ShapeFunctionsHigherOrder
using ShapeMatrixPoliciesHigherOrder
using ShapeMatricesHigherOrder_N
using ShapeMatrixVectorsHigherOrder_N
using ShapeFunctionsLowerOrder
using ShapeMatrixPoliciesLowerOrder
using ShapeMatricesLowerOrder_N
using ShapeMatrixVectorsLowerOrder_N

Private Attributes

ShapeMatrixVectorsHigherOrder_N Nss_higher_order_
ShapeMatrixVectorsLowerOrder_N Nss_lower_order_

Member Typedef Documentation

◆ ETLs

◆ MeshElements

Initial value:
boost::mp11::mp_transform<detail::GetMeshElement, ETLs>

Definition at line 48 of file ShapeMatrixCache.h.

◆ ShapeFunctionHigherOrder

template<typename MeshElement>
using NumLib::ShapeMatrixCache::ShapeFunctionHigherOrder
Initial value:
boost::mp11::mp_at<ShapeFunctionsHigherOrder,
boost::mp11::mp_find<MeshElements, MeshElement>>
boost::mp11::mp_transform< detail::GetShapeFunctionHigherOrder, ETLs > ShapeFunctionsHigherOrder

Definition at line 120 of file ShapeMatrixCache.h.

◆ ShapeFunctionLowerOrder

template<typename MeshElement>
using NumLib::ShapeMatrixCache::ShapeFunctionLowerOrder
Initial value:
boost::mp11::mp_at<ShapeFunctionsLowerOrder,
boost::mp11::mp_find<MeshElements, MeshElement>>
boost::mp11::mp_transform< detail::GetShapeFunctionLowerOrder, ETLs > ShapeFunctionsLowerOrder

Definition at line 125 of file ShapeMatrixCache.h.

◆ ShapeFunctionsHigherOrder

Initial value:
boost::mp11::mp_transform<detail::GetShapeFunctionHigherOrder, ETLs>

Definition at line 53 of file ShapeMatrixCache.h.

◆ ShapeFunctionsLowerOrder

Initial value:
boost::mp11::mp_transform<detail::GetShapeFunctionLowerOrder, ETLs>

Definition at line 75 of file ShapeMatrixCache.h.

◆ ShapeMatricesHigherOrder_N

Initial value:
boost::mp11::mp_transform<detail::GetShapeMatrix_N,
boost::mp11::mp_transform< detail::GetShapeMatrixPolicy, ShapeFunctionsHigherOrder > ShapeMatrixPoliciesHigherOrder
typename ShapeMatrixPolicy::ShapeMatrices::ShapeType GetShapeMatrix_N

Definition at line 58 of file ShapeMatrixCache.h.

◆ ShapeMatricesLowerOrder_N

Initial value:
boost::mp11::mp_transform<detail::GetShapeMatrix_N,
boost::mp11::mp_transform< detail::GetShapeMatrixPolicy, ShapeFunctionsLowerOrder > ShapeMatrixPoliciesLowerOrder

Definition at line 80 of file ShapeMatrixCache.h.

◆ ShapeMatrixPoliciesHigherOrder

Initial value:
boost::mp11::mp_transform<detail::GetShapeMatrixPolicy,
ShapeMatrixPolicyType< ShapeFunction, 3 > GetShapeMatrixPolicy

Definition at line 55 of file ShapeMatrixCache.h.

◆ ShapeMatrixPoliciesLowerOrder

Initial value:

Definition at line 77 of file ShapeMatrixCache.h.

◆ ShapeMatrixVectorsHigherOrder_N

Initial value:
boost::mp11::mp_transform<std::vector, ShapeMatricesHigherOrder_N>

Definition at line 63 of file ShapeMatrixCache.h.

◆ ShapeMatrixVectorsLowerOrder_N

Initial value:
boost::mp11::mp_transform<std::vector, ShapeMatricesLowerOrder_N>

Definition at line 85 of file ShapeMatrixCache.h.

Constructor & Destructor Documentation

◆ ShapeMatrixCache()

NumLib::ShapeMatrixCache::ShapeMatrixCache ( unsigned const integration_order)
explicit

Definition at line 57 of file ShapeMatrixCache.cpp.

58{
59 using namespace boost::mp11;
60 using Indices = mp_iota<mp_size<ETLs>>;
61
62 mp_for_each<Indices>(
63 [this, integration_order](auto index)
64 {
65 using ETL = mp_at_c<ETLs, index>;
68
69 std::get<index.value>(Nss_higher_order_) = ::initShapeMatrices(
70 integration_order, mp_identity<ShapeFunctionHigherOrder>{});
71
74
75 std::get<index.value>(Nss_lower_order_) = ::initShapeMatrices(
76 integration_order, mp_identity<ShapeFunctionLowerOrder>{});
77 });
78}
boost::mp11::mp_at< ShapeFunctionsLowerOrder, boost::mp11::mp_find< MeshElements, MeshElement > > ShapeFunctionLowerOrder
boost::mp11::mp_at< ShapeFunctionsHigherOrder, boost::mp11::mp_find< MeshElements, MeshElement > > ShapeFunctionHigherOrder
ShapeMatrixVectorsLowerOrder_N Nss_lower_order_
ShapeMatrixVectorsHigherOrder_N Nss_higher_order_
typename ElementTraitsLagrange::ShapeFunction GetShapeFunctionHigherOrder
typename ElementTraitsLagrange::LowerOrderShapeFunction GetShapeFunctionLowerOrder
std::vector< typename ShapeMatricesType::ShapeMatrices, Eigen::aligned_allocator< typename ShapeMatricesType::ShapeMatrices > > initShapeMatrices(MeshLib::Element const &e, bool const is_axially_symmetric, IntegrationMethod const &integration_method)

References NumLib::initShapeMatrices(), Nss_higher_order_, and Nss_lower_order_.

Member Function Documentation

◆ NsHigherOrder()

template<typename MeshElement>
auto const & NumLib::ShapeMatrixCache::NsHigherOrder ( ) const
inline

Definition at line 99 of file ShapeMatrixCache.h.

100 {
101 using Index = boost::mp11::mp_find<MeshElements, MeshElement>;
102 return std::get<Index::value>(Nss_higher_order_);
103 }

References Nss_higher_order_.

Referenced by NumLib::detail::assembleAdvectionMatrix(), and interpolateElementCoords().

◆ NsLowerOrder()

template<typename MeshElement>
auto const & NumLib::ShapeMatrixCache::NsLowerOrder ( ) const
inline

Definition at line 106 of file ShapeMatrixCache.h.

107 {
108 using Index = boost::mp11::mp_find<MeshElements, MeshElement>;
109 return std::get<Index::value>(Nss_lower_order_);
110 }

References Nss_lower_order_.

◆ size()

constexpr std::size_t NumLib::ShapeMatrixCache::size ( )
inlinestaticconstexpr

Returns the number of elements in the ShapeMatrixVectorsHigherOrder_N tuple.

Definition at line 114 of file ShapeMatrixCache.h.

115 {
116 return boost::mp11::mp_size<ETLs>::value;
117 }

Member Data Documentation

◆ Nss_higher_order_

ShapeMatrixVectorsHigherOrder_N NumLib::ShapeMatrixCache::Nss_higher_order_
private

Definition at line 130 of file ShapeMatrixCache.h.

Referenced by ShapeMatrixCache(), and NsHigherOrder().

◆ Nss_lower_order_

ShapeMatrixVectorsLowerOrder_N NumLib::ShapeMatrixCache::Nss_lower_order_
private

Definition at line 131 of file ShapeMatrixCache.h.

Referenced by ShapeMatrixCache(), and NsLowerOrder().


The documentation for this class was generated from the following files: