35 template <
typename ShapeFunction,
typename IntegrationMethod,
int GlobalDim>
52 std::size_t
const local_matrix_size,
53 bool const is_axially_symmetric,
54 unsigned const integration_order,
61 unsigned const n_integration_points =
64 auto const shape_matrices =
66 GlobalDim>(
_element, is_axially_symmetric,
69 for (
unsigned ip = 0; ip < n_integration_points; ip++)
74 shape_matrices[ip].integralMeasure *
75 shape_matrices[ip].detJ);
85 unsigned const n_integration_points =
88 for (
unsigned ip = 0; ip < n_integration_points; ip++)
91 auto const& w =
_ip_data[ip].integration_weight;
101 _local_rhs.noalias() += N.transpose() * st_val * w;
111 std::vector<SourceTermIntegrationPointData<NodalRowVectorType>,
112 Eigen::aligned_allocator<
Global vector based on Eigen vector.
void add(IndexType rowId, double v)
add entry
virtual std::size_t getID() const final
Returns the ID of the element.
virtual void integrate(std::size_t const id, NumLib::LocalToGlobalIndexMap const &source_term_dof_table, double const t, GlobalVector &b)=0
virtual ~VolumetricSourceTermLocalAssemblerInterface()=default
typename LocalAssemblerTraits::LocalVector NodalVectorType
std::vector< SourceTermIntegrationPointData< NodalRowVectorType >, Eigen::aligned_allocator< SourceTermIntegrationPointData< NodalRowVectorType > > > _ip_data
MeshLib::Element const & _element
static const unsigned NUM_NODAL_DOF
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)
ShapeMatrixPolicyType< ShapeFunction, GlobalDim > ShapeMatricesType
void integrate(std::size_t const id, NumLib::LocalToGlobalIndexMap const &source_term_dof_table, double const t, GlobalVector &b) override
IntegrationMethod const _integration_method
NodalVectorType _local_rhs
typename ShapeMatricesType::NodalRowVectorType NodalRowVectorType
ParameterLib::Parameter< double > const & _volumetric_source_term
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)
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)
RowVectorType< ShapeFunction::NPOINTS > NodalRowVectorType
Vector< NNodes *NodalDOF > LocalVector