21 int const component_id,
unsigned const integration_order,
22 unsigned const shapefunction_order,
unsigned const global_dim,
23 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>
const& parameters)
25 DBUG(
"Constructing VariableDependentNeumann BC from config.");
31 "VariableDependentNeumann BC only implemented for 2 variable "
34 assert(variable_id == 0 || variable_id == 1);
39 "The dimension ({:d}) of the given boundary mesh '{:s}' is not by "
41 "lower than the bulk dimension ({:d}).",
45 auto const constant_name =
48 auto const& constant = ParameterLib::findParameter<double>(
49 constant_name, parameters, 1, &bc_mesh);
51 auto const coefficient_current_variable_name =
54 "coefficient_current_variable_name");
55 auto const& coefficient_current_variable =
56 ParameterLib::findParameter<double>(coefficient_current_variable_name,
57 parameters, 1, &bc_mesh);
59 auto const coefficient_other_variable_name =
62 "coefficient_other_variable_name");
63 auto const& coefficient_other_variable =
64 ParameterLib::findParameter<double>(coefficient_other_variable_name,
65 parameters, 1, &bc_mesh);
67 auto const coefficient_mixed_variables_name =
70 "coefficient_mixed_variables_name");
71 auto const& coefficient_mixed_variables =
72 ParameterLib::findParameter<double>(coefficient_mixed_variables_name,
73 parameters, 1, &bc_mesh);
75 std::vector<MeshLib::Node*>
const& bc_nodes = bc_mesh.
getNodes();
77 auto dof_table_boundary_other_variable =
79 (variable_id + 1) % 2, {component_id}, std::move(bc_mesh_subset));
95 return std::make_unique<VariableDependentNeumannBoundaryCondition>(
96 integration_order, shapefunction_order, dof_table, variable_id,
97 component_id, global_dim, bc_mesh,
99 constant, coefficient_current_variable, coefficient_other_variable,
100 coefficient_mixed_variables,
101 std::move(dof_table_boundary_other_variable)});
std::unique_ptr< VariableDependentNeumannBoundaryCondition > createVariableDependentNeumannBoundaryCondition(BaseLib::ConfigTree const &config, MeshLib::Mesh const &bc_mesh, NumLib::LocalToGlobalIndexMap const &dof_table, int const variable_id, int const component_id, unsigned const integration_order, unsigned const shapefunction_order, unsigned const global_dim, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const ¶meters)