21 std::vector<std::size_t>
const*
const active_element_ids,
24 bool const set_outer_nodes_dirichlet_values,
27 int const component_id)
28 : _parameter(parameter),
29 _subdomain(subdomain),
30 _variable_id(variable_id),
31 _component_id(component_id),
32 _time_interval(std::move(time_interval)),
33 _active_element_ids(active_element_ids),
34 _set_outer_nodes_dirichlet_values(set_outer_nodes_dirichlet_values)
45 std::vector<MeshLib::Node*>
const& bc_nodes =
_subdomain.
mesh->getNodes();
51 _variable_id, {_component_id}, std::move(subdomain_mesh_subset)));
58 auto const& bulk_element_ids =
60 .template getPropertyVector<std::size_t>(
67 {
return id == bulk_element_ids[e->getID()]; });
70 std::vector<MeshLib::Node*> inactive_nodes_in_bc_mesh;
72 back_inserter(inactive_nodes_in_bc_mesh),
75 const auto& connected_elements =
78 return std::all_of(begin(connected_elements),
79 end(connected_elements), is_inactive);
85 back_inserter(inactive_nodes_in_bc_mesh),
88 const auto& connected_elements =
91 return std::all_of(begin(connected_elements),
92 end(connected_elements),
97 auto time_interval_contains = [&](
double const t)
102 if (time_interval_contains(t))
110 bc_values.
ids.clear();
Defines functions that are shared by DirichletBoundaryCondition and DirichletBoundaryConditionWithinT...
Global vector based on Eigen vector.
double getSupportMin() const
double getSupportMax() const
A subset of nodes on a single mesh.
LocalToGlobalIndexMap * deriveBoundaryConstrainedMap(int const variable_id, std::vector< int > const &component_ids, MeshLib::MeshSubset &&new_mesh_subset) const
MathLib::PiecewiseLinearInterpolation const _time_interval
std::vector< std::size_t > const * _active_element_ids
void getEssentialBCValues(const double t, GlobalVector const &x, NumLib::IndexValueVector< GlobalIndexType > &bc_values) const override
Writes the values of essential BCs to bc_values.
DeactivatedSubdomainDirichlet(std::vector< std::size_t > const *active_element_ids, MathLib::PiecewiseLinearInterpolation time_interval, ParameterLib::Parameter< double > const ¶meter, bool const set_outer_nodes_dirichlet_values, DeactivatedSubdomainMesh const &subdomain, NumLib::LocalToGlobalIndexMap const &dof_table_bulk, int const variable_id, int const component_id)
ParameterLib::Parameter< double > const & _parameter
bool const _set_outer_nodes_dirichlet_values
void config(NumLib::LocalToGlobalIndexMap const &dof_table_bulk)
std::unique_ptr< NumLib::LocalToGlobalIndexMap const > _dof_table_boundary
DeactivatedSubdomainMesh const & _subdomain
void getEssentialBCValuesLocal(ParameterLib::Parameter< double > const ¶meter, MeshLib::Mesh const &bc_mesh, std::vector< MeshLib::Node * > const &nodes_in_bc_mesh, NumLib::LocalToGlobalIndexMap const &dof_table_boundary, int const variable_id, int const component_id, const double t, GlobalVector const &, NumLib::IndexValueVector< GlobalIndexType > &bc_values)
void checkParametersOfDirichletBoundaryCondition(MeshLib::Mesh const &bc_mesh, NumLib::LocalToGlobalIndexMap const &dof_table_bulk, int const variable_id, int const component_id)
std::vector< IndexType > ids
std::vector< double > values
std::vector< MeshLib::Node * > const outer_nodes
std::vector< MeshLib::Node * > const inner_nodes
std::unique_ptr< MeshLib::Mesh > const mesh