36template <
typename ShapeFunction,
int GlobalDim>
53 std::size_t
const local_matrix_size,
55 bool const is_axially_symmetric,
62 unsigned const n_integration_points =
65 auto const shape_matrices =
67 GlobalDim>(
_element, is_axially_symmetric,
70 for (
unsigned ip = 0; ip < n_integration_points; ip++)
75 shape_matrices[ip].integralMeasure *
76 shape_matrices[ip].detJ);
86 unsigned const n_integration_points =
89 for (
unsigned ip = 0; ip < n_integration_points; ip++)
92 auto const& w =
_ip_data[ip].integration_weight;
102 _local_rhs.noalias() += N.transpose() * st_val * w;
112 std::vector<SourceTermIntegrationPointData<NodalRowVectorType>,
113 Eigen::aligned_allocator<
Global vector based on Eigen vector.
void add(IndexType rowId, double v)
add entry
std::size_t getID() const
Returns the ID of the element.
MathLib::WeightedPoint const & getWeightedPoint(unsigned const igp) const
unsigned getNumberOfPoints() const
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 ShapeMatricesType::NodalRowVectorType NodalRowVectorType
typename LocalAssemblerTraits::LocalVector NodalVectorType
NodalVectorType _local_rhs
MeshLib::Element const & _element
void integrate(std::size_t const id, NumLib::LocalToGlobalIndexMap const &source_term_dof_table, double const t, GlobalVector &b) override
ParameterLib::Parameter< double > const & _volumetric_source_term
std::vector< SourceTermIntegrationPointData< NodalRowVectorType >, Eigen::aligned_allocator< SourceTermIntegrationPointData< NodalRowVectorType > > > _ip_data
NumLib::GenericIntegrationMethod const & _integration_method
ShapeMatrixPolicyType< ShapeFunction, GlobalDim > ShapeMatricesType
VolumetricSourceTermLocalAssembler(MeshLib::Element const &element, std::size_t const local_matrix_size, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, ParameterLib::Parameter< double > const &volumetric_source_term)
static const unsigned NUM_NODAL_DOF
std::vector< GlobalIndexType > getIndices(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table)
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)
std::array< double, 3 > interpolateCoordinates(MeshLib::Element const &e, typename ShapeMatricesType::ShapeMatrices::ShapeType const &N)
RowVectorType< ShapeFunction::NPOINTS > NodalRowVectorType
Vector< NNodes *NodalDOF > LocalVector