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),
58 double const t, std::vector<GlobalVector*>
const& x,
68 .template topRows<ShapeFunction::MeshElement::n_all_nodes>();
72 .template topRows<ShapeFunction::MeshElement::n_all_nodes>();
76 .template topRows<ShapeFunction::MeshElement::n_all_nodes>();
80 .template topRows<ShapeFunction::MeshElement::n_all_nodes>();
81 unsigned const n_integration_points =
84 auto const indices_current_variable =
88 std::vector<double>
const local_current_variable =
89 x[process_id]->get(indices_current_variable);
90 std::vector<double>
const local_other_variable =
91 x[process_id]->get(indices_other_variable);
93 for (
unsigned ip = 0; ip < n_integration_points; ip++)
96 auto const& N = n_and_weight.N;
97 auto const& w = n_and_weight.weight;
99 double current_variable_int_pt = 0.0;
100 double other_variable_int_pt = 0.0;
103 current_variable_int_pt);
105 other_variable_int_pt);
107 constant_node_values +
108 coefficient_current_variable_node_values *
109 current_variable_int_pt +
110 coefficient_other_variable_node_values * other_variable_int_pt +
111 coefficient_mixed_variables_node_values *
112 current_variable_int_pt * other_variable_int_pt;
113 _local_rhs.noalias() += N * neumann_node_values.dot(N) * w;
116 b.
add(indices_current_variable, _local_rhs);
Global vector based on Eigen vector.
void add(IndexType rowId, double v)
add entry
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
std::size_t const _local_matrix_size
VariableDependentNeumannBoundaryConditionLocalAssembler(MeshLib::Element const &e, std::size_t const local_matrix_size, bool const is_axially_symmetric, unsigned const integration_order, VariableDependentNeumannBoundaryConditionData const &data)
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
VariableDependentNeumannBoundaryConditionData const & _data
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 & coefficient_mixed_variables
ParameterLib::Parameter< double > const & constant
NumLib::LocalToGlobalIndexMap const & dof_table_boundary_other_variable
ParameterLib::Parameter< double > const & coefficient_current_variable
ParameterLib::Parameter< double > const & coefficient_other_variable