31 template <
typename ShapeFunction,
typename IntegrationMethod,
int GlobalDim>
34 ShapeFunction, IntegrationMethod, GlobalDim>
37 ShapeFunction, IntegrationMethod, GlobalDim>;
46 std::size_t
const local_matrix_size,
47 bool const is_axially_symmetric,
48 unsigned const integration_order,
50 :
Base(e, is_axially_symmetric, integration_order),
59 double const t, std::vector<GlobalVector*>
const& x,
69 unsigned const n_integration_points =
74 std::vector<double>
const local_values = x[process_id]->get(indices);
75 std::size_t
const bulk_element_id =
77 std::size_t
const bulk_face_id =
79 for (
unsigned ip = 0; ip < n_integration_points; ip++)
82 auto const& N = n_and_weight.N;
83 auto const& w = n_and_weight.weight;
89 double int_pt_value = 0.0;
93 -boundary_permeability_node_values * int_pt_value *
96 _local_rhs.noalias() += N * neumann_node_values.dot(N) * w;
99 b.
add(indices, _local_rhs);
108 Eigen::Vector3d surface_normal =
111 surface_normal.tail(zeros_size).setZero();
112 return surface_normal;
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.
static Eigen::Vector3d getSurfaceNormal(Element const &e)
Returns the surface normal of a 2D element.
unsigned getDimension() const
Returns the dimension of the mesh (determined by the maximum dimension over all elements).
MeshLib::Element const & _element
IntegrationMethod const _integration_method
typename ShapeMatricesType::NodalMatrixType NodalMatrixType
typename ShapeMatricesType::NodalVectorType NodalVectorType
std::vector< NAndWeight, Eigen::aligned_allocator< NAndWeight > > const _ns_and_weights
void assemble(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table_boundary, double const t, std::vector< GlobalVector * > const &x, int const process_id, GlobalMatrix &, GlobalVector &b, GlobalMatrix *) override
Eigen::Vector3d const _surface_normal
HCNonAdvectiveFreeComponentFlowBoundaryConditionData const & _data
HCNonAdvectiveFreeComponentFlowBoundaryConditionLocalAssembler(MeshLib::Element const &e, std::size_t const local_matrix_size, bool const is_axially_symmetric, unsigned const integration_order, HCNonAdvectiveFreeComponentFlowBoundaryConditionData const &data)
std::size_t const _local_matrix_size
Eigen::Vector3d getOrientedSurfaceNormal(MeshLib::Element const &e) const
virtual Eigen::Vector3d getFlux(std::size_t, MathLib::Point3d const &, double const, std::vector< GlobalVector * > const &) const
MeshLib::Mesh & getMesh() const
MathLib::Point3d getBulkElementPoint(Tri const &, std::size_t const face_id, MathLib::WeightedPoint1D const &wp)
void shapeFunctionInterpolate(const NodalValues &nodal_values, const ShapeMatrix &shape_matrix_N, double &interpolated_value, ScalarTypes &... interpolated_values)
std::vector< GlobalIndexType > getIndices(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table)
virtual Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > getNodalValuesOnElement(MeshLib::Element const &element, double const t) const
Returns a matrix of values for all nodes of the given element.
ParameterLib::Parameter< double > const & boundary_permeability
MeshLib::PropertyVector< std::size_t > const bulk_element_ids
MeshLib::PropertyVector< std::size_t > const bulk_face_ids