28 unsigned const integration_order, unsigned const shapefunction_order,
29 NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
30 int const variable_id, MeshLib::Mesh const& bc_mesh,
31 ParameterLib::Parameter<double> const& pressure)
33 _integration_order(integration_order),
37 auto const& number_of_components =
38 dof_table_bulk.getNumberOfVariableComponents(variable_id);
39 std::vector<int> component_ids(number_of_components);
40 std::iota(std::begin(component_ids), std::end(component_ids), 0);
43 std::vector<MeshLib::Node*>
const bc_nodes = _bc_mesh.getNodes();
44 DBUG(
"Found {:d} nodes for Natural BCs for the variable {:d}",
45 bc_nodes.size(), variable_id);
51 _dof_table_boundary = dof_table_bulk.deriveBoundaryConstrainedMap(
52 variable_id, component_ids, std::move(bc_mesh_subset));
54 BoundaryConditionAndSourceTerm::detail::createLocalAssemblers<
55 GlobalDim, LocalAssemblerImplementation>(
56 *_dof_table_boundary, shapefunction_order, _bc_mesh.getElements(),
58 _bc_mesh.isAxiallySymmetric(), _pressure);
64 applyNaturalBC(const double t, std::vector<GlobalVector*> const& x,
65 int const , GlobalMatrix* K, GlobalVector& b,
69 &NormalTractionBoundaryConditionLocalAssemblerInterface::assemble,
70 _local_assemblers, *_dof_table_boundary, t, x, K, b, Jac);
79 unsigned const integration_order,
unsigned const shapefunction_order,
80 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>
const& parameters)
82 DBUG(
"Constructing NormalTractionBoundaryCondition from config.");
86 auto const parameter_name =
89 DBUG(
"Using parameter {:s}", parameter_name);
91 auto const& pressure = ParameterLib::findParameter<double>(
92 parameter_name, parameters, 1, &bc_mesh);
95 integration_order, shapefunction_order, dof_table, variable_id, bc_mesh,