OGS
ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim > Class Template Referencefinal

Detailed Description

template<typename ShapeFunction, typename IntegrationMethod, int GlobalDim>
class ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >

Definition at line 36 of file VolumetricSourceTermFEM.h.

#include <VolumetricSourceTermFEM.h>

Inheritance diagram for ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >:
[legend]
Collaboration diagram for ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >:
[legend]

Public Member Functions

 VolumetricSourceTermLocalAssembler (MeshLib::Element const &element, std::size_t const local_matrix_size, bool const is_axially_symmetric, unsigned const integration_order, ParameterLib::Parameter< double > const &volumetric_source_term)
 
void integrate (std::size_t const id, NumLib::LocalToGlobalIndexMap const &source_term_dof_table, double const t, GlobalVector &b) override
 
- Public Member Functions inherited from ProcessLib::VolumetricSourceTermLocalAssemblerInterface
virtual ~VolumetricSourceTermLocalAssemblerInterface ()=default
 

Private Types

using ShapeMatricesType = ShapeMatrixPolicyType< ShapeFunction, GlobalDim >
 
using LocalAssemblerTraits = ProcessLib::LocalAssemblerTraits< ShapeMatricesType, ShapeFunction::NPOINTS, NUM_NODAL_DOF, GlobalDim >
 
using NodalVectorType = typename LocalAssemblerTraits::LocalVector
 
using NodalRowVectorType = typename ShapeMatricesType::NodalRowVectorType
 

Private Attributes

ParameterLib::Parameter< double > const & _volumetric_source_term
 
IntegrationMethod const _integration_method
 
std::vector< SourceTermIntegrationPointData< NodalRowVectorType >, Eigen::aligned_allocator< SourceTermIntegrationPointData< NodalRowVectorType > > > _ip_data
 
MeshLib::Element const & _element
 
NodalVectorType _local_rhs
 

Static Private Attributes

static const unsigned NUM_NODAL_DOF = 1
 

Member Typedef Documentation

◆ LocalAssemblerTraits

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
using ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::LocalAssemblerTraits = ProcessLib::LocalAssemblerTraits< ShapeMatricesType, ShapeFunction::NPOINTS, NUM_NODAL_DOF, GlobalDim>
private

Definition at line 43 of file VolumetricSourceTermFEM.h.

◆ NodalRowVectorType

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
using ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::NodalRowVectorType = typename ShapeMatricesType::NodalRowVectorType
private

Definition at line 47 of file VolumetricSourceTermFEM.h.

◆ NodalVectorType

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
using ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::NodalVectorType = typename LocalAssemblerTraits::LocalVector
private

Definition at line 46 of file VolumetricSourceTermFEM.h.

◆ ShapeMatricesType

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
using ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::ShapeMatricesType = ShapeMatrixPolicyType<ShapeFunction, GlobalDim>
private

Definition at line 41 of file VolumetricSourceTermFEM.h.

Constructor & Destructor Documentation

◆ VolumetricSourceTermLocalAssembler()

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::VolumetricSourceTermLocalAssembler ( MeshLib::Element const &  element,
std::size_t const  local_matrix_size,
bool const  is_axially_symmetric,
unsigned const  integration_order,
ParameterLib::Parameter< double > const &  volumetric_source_term 
)
inline

Definition at line 50 of file VolumetricSourceTermFEM.h.

56  : _volumetric_source_term(volumetric_source_term),
57  _integration_method(integration_order),
58  _element(element),
59  _local_rhs(local_matrix_size)
60  {
61  unsigned const n_integration_points =
62  _integration_method.getNumberOfPoints();
63 
64  auto const shape_matrices =
66  GlobalDim>(_element, is_axially_symmetric,
68 
69  for (unsigned ip = 0; ip < n_integration_points; ip++)
70  {
71  _ip_data.emplace_back(
72  shape_matrices[ip].N,
73  _integration_method.getWeightedPoint(ip).getWeight() *
74  shape_matrices[ip].integralMeasure *
75  shape_matrices[ip].detJ);
76  }
77  }
std::vector< SourceTermIntegrationPointData< NodalRowVectorType >, Eigen::aligned_allocator< SourceTermIntegrationPointData< NodalRowVectorType > > > _ip_data
ShapeMatrixPolicyType< ShapeFunction, GlobalDim > ShapeMatricesType
ParameterLib::Parameter< double > const & _volumetric_source_term
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 ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_element, ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_integration_method, ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_ip_data, and NumLib::initShapeMatrices().

Member Function Documentation

◆ integrate()

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
void ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::integrate ( std::size_t const  id,
NumLib::LocalToGlobalIndexMap const &  source_term_dof_table,
double const  t,
GlobalVector b 
)
inlineoverridevirtual

Implements ProcessLib::VolumetricSourceTermLocalAssemblerInterface.

Definition at line 79 of file VolumetricSourceTermFEM.h.

82  {
83  _local_rhs.setZero();
84 
85  unsigned const n_integration_points =
86  _integration_method.getNumberOfPoints();
87 
88  for (unsigned ip = 0; ip < n_integration_points; ip++)
89  {
90  auto const& N = _ip_data[ip].N;
91  auto const& w = _ip_data[ip].integration_weight;
92 
94  std::nullopt, _element.getID(), ip,
96  NumLib::interpolateCoordinates<ShapeFunction,
98  N))};
99  auto const st_val = _volumetric_source_term(t, pos)[0];
100 
101  _local_rhs.noalias() += N.transpose() * st_val * w;
102  }
103  auto const indices = NumLib::getIndices(id, source_term_dof_table);
104  b.add(indices, _local_rhs);
105  }
void add(IndexType rowId, double v)
add entry
Definition: EigenVector.h:80
virtual std::size_t getID() const final
Returns the ID of the element.
Definition: Element.h:82
MathLib::TemplatePoint< double, 3 > Point3d
std::vector< GlobalIndexType > getIndices(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table)
std::array< double, 3 > interpolateCoordinates(MeshLib::Element const &e, typename ShapeMatricesType::ShapeMatrices::ShapeType const &N)

References ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_element, ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_integration_method, ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_ip_data, ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_local_rhs, ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_volumetric_source_term, MathLib::EigenVector::add(), MeshLib::Element::getID(), NumLib::getIndices(), and NumLib::interpolateCoordinates().

Member Data Documentation

◆ _element

◆ _integration_method

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
IntegrationMethod const ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_integration_method
private

◆ _ip_data

◆ _local_rhs

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
NodalVectorType ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_local_rhs
private

◆ _volumetric_source_term

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
ParameterLib::Parameter<double> const& ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_volumetric_source_term
private

◆ NUM_NODAL_DOF

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
const unsigned ProcessLib::VolumetricSourceTermLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::NUM_NODAL_DOF = 1
staticprivate

Definition at line 39 of file VolumetricSourceTermFEM.h.


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