OGS
ProcessLib::BoundaryConditionCollection Class Referencefinal

Detailed Description

Definition at line 13 of file BoundaryConditionCollection.h.

#include <BoundaryConditionCollection.h>

Public Member Functions

 BoundaryConditionCollection (std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters)
void setReleaseNodalForces (GlobalVector const *r_neq) const
void applyNaturalBC (const double t, std::vector< GlobalVector * > const &x, int const process_id, GlobalMatrix *K, GlobalVector &b, GlobalMatrix *Jac) const
std::vector< NumLib::IndexValueVector< GlobalIndexType > > const * getKnownSolutions (double const t, GlobalVector const &x) const
void addBCsForProcessVariables (std::vector< std::reference_wrapper< ProcessVariable > > const &process_variables, NumLib::LocalToGlobalIndexMap const &dof_table, unsigned const integration_order, Process const &process, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
void addBoundaryCondition (std::unique_ptr< BoundaryCondition > &&bc)
void preTimestep (const double t, std::vector< GlobalVector * > const &x, int const process_id) const
void postTimestep (const double t, std::vector< GlobalVector * > const &x, int const process_id) const

Private Attributes

std::vector< NumLib::IndexValueVector< GlobalIndexType > > _dirichlet_bcs
std::vector< std::unique_ptr< BoundaryCondition > > _boundary_conditions
std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const & _parameters

Constructor & Destructor Documentation

◆ BoundaryConditionCollection()

ProcessLib::BoundaryConditionCollection::BoundaryConditionCollection ( std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const & parameters)
inlineexplicit

Definition at line 16 of file BoundaryConditionCollection.h.

19 : _parameters(parameters)
20 {
21 }
std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const & _parameters

References _parameters.

Member Function Documentation

◆ addBCsForProcessVariables()

void ProcessLib::BoundaryConditionCollection::addBCsForProcessVariables ( std::vector< std::reference_wrapper< ProcessVariable > > const & process_variables,
NumLib::LocalToGlobalIndexMap const & dof_table,
unsigned const integration_order,
Process const & process,
std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const & media )

Definition at line 42 of file BoundaryConditionCollection.cpp.

48{
49 for (int variable_id = 0;
50 variable_id < static_cast<int>(process_variables.size());
51 ++variable_id)
52 {
53 ProcessVariable& pv = process_variables[variable_id];
54 auto bcs = pv.createBoundaryConditions(
55 dof_table, variable_id, integration_order, _parameters, process,
56 process_variables, media);
57
58 std::move(bcs.begin(), bcs.end(),
59 std::back_inserter(_boundary_conditions));
60 }
61
62 // For each BC there will be storage for Dirichlet BC. This storage will be
63 // uninitialized by default, and has to be filled by the respective BC
64 // object if needed.
66}
std::vector< NumLib::IndexValueVector< GlobalIndexType > > _dirichlet_bcs
std::vector< std::unique_ptr< BoundaryCondition > > _boundary_conditions

References _boundary_conditions, _dirichlet_bcs, _parameters, and ProcessLib::ProcessVariable::createBoundaryConditions().

◆ addBoundaryCondition()

void ProcessLib::BoundaryConditionCollection::addBoundaryCondition ( std::unique_ptr< BoundaryCondition > && bc)
inline

Definition at line 50 of file BoundaryConditionCollection.h.

51 {
52 _boundary_conditions.push_back(std::move(bc));
53 }

References _boundary_conditions.

◆ applyNaturalBC()

void ProcessLib::BoundaryConditionCollection::applyNaturalBC ( const double t,
std::vector< GlobalVector * > const & x,
int const process_id,
GlobalMatrix * K,
GlobalVector & b,
GlobalMatrix * Jac ) const

Definition at line 32 of file BoundaryConditionCollection.cpp.

35{
36 for (auto const& bc : _boundary_conditions)
37 {
38 bc->applyNaturalBC(t, x, process_id, K, b, Jac);
39 }
40}

References _boundary_conditions.

◆ getKnownSolutions()

std::vector< NumLib::IndexValueVector< GlobalIndexType > > const * ProcessLib::BoundaryConditionCollection::getKnownSolutions ( double const t,
GlobalVector const & x ) const
inline

Definition at line 30 of file BoundaryConditionCollection.h.

31 {
32 auto const n_bcs = _boundary_conditions.size();
33 for (std::size_t i = 0; i < n_bcs; ++i)
34 {
35 auto const& bc = *_boundary_conditions[i];
36 auto& dirichlet_storage = _dirichlet_bcs[i];
37 bc.getEssentialBCValues(t, x, dirichlet_storage);
38 }
39 return &_dirichlet_bcs;
40 }

References _boundary_conditions, and _dirichlet_bcs.

◆ postTimestep()

void ProcessLib::BoundaryConditionCollection::postTimestep ( const double t,
std::vector< GlobalVector * > const & x,
int const process_id ) const
inline

Definition at line 64 of file BoundaryConditionCollection.h.

66 {
67 for (auto const& bc_ptr : _boundary_conditions)
68 {
69 bc_ptr->postTimestep(t, x, process_id);
70 }
71 }

References _boundary_conditions.

◆ preTimestep()

void ProcessLib::BoundaryConditionCollection::preTimestep ( const double t,
std::vector< GlobalVector * > const & x,
int const process_id ) const
inline

Definition at line 55 of file BoundaryConditionCollection.h.

57 {
58 for (auto const& bc_ptr : _boundary_conditions)
59 {
60 bc_ptr->preTimestep(t, x, process_id);
61 }
62 }

References _boundary_conditions.

◆ setReleaseNodalForces()

void ProcessLib::BoundaryConditionCollection::setReleaseNodalForces ( GlobalVector const * r_neq) const

Definition at line 14 of file BoundaryConditionCollection.cpp.

16{
18
19 for (auto const& bc : _boundary_conditions)
20 {
21 auto* release_nodal_forces = dynamic_cast<ReleaseNodalForce*>(bc.get());
22 if (!release_nodal_forces)
23 {
24 continue;
25 }
26 // For ReleasedNodalForce, we need to set the non-equilibrium
27 // initial residuum vector.
28 release_nodal_forces->set(r_neq);
29 }
30}
void setLocalAccessibleVector(PETScVector const &x)
Definition LinAlg.cpp:20

References _boundary_conditions, ProcessLib::ReleaseNodalForce::set(), and MathLib::LinAlg::setLocalAccessibleVector().

Member Data Documentation

◆ _boundary_conditions

std::vector<std::unique_ptr<BoundaryCondition> > ProcessLib::BoundaryConditionCollection::_boundary_conditions
private

◆ _dirichlet_bcs

std::vector<NumLib::IndexValueVector<GlobalIndexType> > ProcessLib::BoundaryConditionCollection::_dirichlet_bcs
mutableprivate

Definition at line 75 of file BoundaryConditionCollection.h.

Referenced by addBCsForProcessVariables(), and getKnownSolutions().

◆ _parameters

std::vector<std::unique_ptr<ParameterLib::ParameterBase> > const& ProcessLib::BoundaryConditionCollection::_parameters
private

The documentation for this class was generated from the following files: