24 template <
int GlobalDim,
25 template <
typename,
typename,
int>
class LocalAssemblerImplementation>
28 unsigned const integration_order,
unsigned const shapefunction_order,
33 _integration_order(integration_order),
37 auto const& number_of_components =
39 std::vector<int> component_ids(number_of_components);
40 std::iota(std::begin(component_ids), std::end(component_ids), 0);
44 DBUG(
"Found {:d} nodes for Natural BCs for the variable {:d}",
45 bc_nodes.size(), variable_id);
52 variable_id, component_ids, std::move(bc_mesh_subset)));
55 GlobalDim, LocalAssemblerImplementation>(
61 template <
int GlobalDim,
62 template <
typename,
typename,
int>
class LocalAssemblerImplementation>
64 applyNaturalBC(
const double t, std::vector<GlobalVector*>
const& x,
70 _local_assemblers, *_dof_table_boundary, t, x, K, b, Jac);
73 template <
int GlobalDim>
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,
void DBUG(char const *fmt, Args const &... args)
void checkConfigParameter(std::string const ¶m, T const &value) const
T getConfigParameter(std::string const ¶m) const
Global vector based on Eigen vector.
A subset of nodes on a single mesh.
bool isAxiallySymmetric() const
std::vector< Node * > const & getNodes() const
Get the nodes-vector for the mesh.
std::vector< Element * > const & getElements() const
Get the element-vector for the mesh.
int getNumberOfVariableComponents(int variable_id) const
LocalToGlobalIndexMap * deriveBoundaryConstrainedMap(int const variable_id, std::vector< int > const &component_ids, MeshLib::MeshSubset &&new_mesh_subset) const
virtual void assemble(std::size_t const id, NumLib::LocalToGlobalIndexMap const &dof_table_boundary, double const t, std::vector< GlobalVector * > const &, GlobalMatrix &, GlobalVector &b, GlobalMatrix *)=0
MeshLib::Mesh const & _bc_mesh
ParameterLib::Parameter< double > const & _pressure
unsigned const _integration_order
Integration order for integration over the lower-dimensional elements.
std::unique_ptr< NumLib::LocalToGlobalIndexMap > _dof_table_boundary
std::vector< std::unique_ptr< NormalTractionBoundaryConditionLocalAssemblerInterface > > _local_assemblers
Local assemblers for each element of number of _elements.
void createLocalAssemblers(NumLib::LocalToGlobalIndexMap const &dof_table, const unsigned shapefunction_order, std::vector< MeshLib::Element * > const &mesh_elements, std::vector< std::unique_ptr< LocalAssemblerInterface >> &local_assemblers, ExtraCtorArgs &&... extra_ctor_args)
std::unique_ptr< NormalTractionBoundaryCondition< GlobalDim, NormalTractionBoundaryConditionLocalAssembler > > createNormalTractionBoundaryCondition(BaseLib::ConfigTree const &config, MeshLib::Mesh const &bc_mesh, NumLib::LocalToGlobalIndexMap const &dof_table, int const variable_id, unsigned const integration_order, unsigned const shapefunction_order, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
static void executeMemberOnDereferenced(Method method, Container const &container, Args &&... args)