15 template <
typename BoundaryConditionData,
16 template <
typename,
typename,
unsigned>
17 class LocalAssemblerImplementation>
18 template <
typename Data>
19 GenericNonuniformNaturalBoundaryCondition<BoundaryConditionData,
20 LocalAssemblerImplementation>::
21 GenericNonuniformNaturalBoundaryCondition(
22 unsigned const integration_order,
unsigned const shapefunction_order,
24 int const variable_id,
int const component_id,
25 unsigned const global_dim,
MeshLib::Mesh const& bc_mesh, Data&& data)
26 : _data(std::forward<Data>(data)), _bc_mesh(bc_mesh)
28 static_assert(std::is_same<
typename std::decay<BoundaryConditionData>::type,
29 typename std::decay<Data>::type>::value,
30 "Type mismatch between declared and passed BC data.");
39 "Variable id or component id too high. Actual values: (%d, %d), " 40 "maximum values: (%d, %d).",
48 "The dimension of the given boundary mesh (%d) is not by one lower " 49 "than the bulk dimension (%d).",
54 DBUG(
"Found %d nodes for Natural BCs for the variable %d and component %d",
55 bc_nodes.size(), variable_id, component_id);
62 variable_id, {component_id}, std::move(bc_mesh_subset)));
64 createLocalAssemblers<LocalAssemblerImplementation>(
67 integration_order,
_data);
70 template <
typename BoundaryConditionData,
71 template <
typename,
typename,
unsigned>
72 class LocalAssemblerImplementation>
74 BoundaryConditionData,
76 const GlobalVector& x,
static void executeMemberOnDereferenced(Method method, Container const &container, Args &&... args)
int getNumberOfVariableComponents(int variable_id) const
std::vector< Node * > const & getNodes() const
Get the nodes-vector for the mesh.
bool isAxiallySymmetric() const
int getNumberOfVariables() const
std::vector< Element * > const & getElements() const
Get the element-vector for the mesh.
LocalToGlobalIndexMap * deriveBoundaryConstrainedMap(int const variable_id, std::vector< int > const &component_ids, MeshLib::MeshSubset &&new_mesh_subset) const
unsigned getDimension() const
Returns the dimension of the mesh (determined by the maximum dimension over all elements).
#define OGS_FATAL(fmt,...)
A subset of nodes on a single mesh.