OGS
NumLib::ShapeMatrixCache Class Reference

Detailed Description

Definition at line 37 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 41 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 113 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 118 of file ShapeMatrixCache.h.

◆ ShapeFunctionsHigherOrder

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

Definition at line 46 of file ShapeMatrixCache.h.

◆ ShapeFunctionsLowerOrder

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

Definition at line 68 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 51 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 73 of file ShapeMatrixCache.h.

◆ ShapeMatrixPoliciesHigherOrder

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

Definition at line 48 of file ShapeMatrixCache.h.

◆ ShapeMatrixPoliciesLowerOrder

Initial value:

Definition at line 70 of file ShapeMatrixCache.h.

◆ ShapeMatrixVectorsHigherOrder_N

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

Definition at line 56 of file ShapeMatrixCache.h.

◆ ShapeMatrixVectorsLowerOrder_N

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

Definition at line 78 of file ShapeMatrixCache.h.

Constructor & Destructor Documentation

◆ ShapeMatrixCache()

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

Definition at line 51 of file ShapeMatrixCache.cpp.

52{
53 using namespace boost::mp11;
54 using Indices = mp_iota<mp_size<ETLs>>;
55
56 mp_for_each<Indices>(
57 [this, integration_order](auto index)
58 {
59 using ETL = mp_at_c<ETLs, index>;
62
63 std::get<index.value>(Nss_higher_order_) = ::initShapeMatrices(
64 integration_order, mp_identity<ShapeFunctionHigherOrder>{});
65
68
69 std::get<index.value>(Nss_lower_order_) = ::initShapeMatrices(
70 integration_order, mp_identity<ShapeFunctionLowerOrder>{});
71 });
72}
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 92 of file ShapeMatrixCache.h.

93 {
94 using Index = boost::mp11::mp_find<MeshElements, MeshElement>;
95 return std::get<Index::value>(Nss_higher_order_);
96 }

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 99 of file ShapeMatrixCache.h.

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

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 107 of file ShapeMatrixCache.h.

108 {
109 return boost::mp11::mp_size<ETLs>::value;
110 }

Member Data Documentation

◆ Nss_higher_order_

ShapeMatrixVectorsHigherOrder_N NumLib::ShapeMatrixCache::Nss_higher_order_
private

Definition at line 123 of file ShapeMatrixCache.h.

Referenced by ShapeMatrixCache(), and NsHigherOrder().

◆ Nss_lower_order_

ShapeMatrixVectorsLowerOrder_N NumLib::ShapeMatrixCache::Nss_lower_order_
private

Definition at line 124 of file ShapeMatrixCache.h.

Referenced by ShapeMatrixCache(), and NsLowerOrder().


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