OGS
ProcessLib::BoundaryConditionCollection Class Referencefinal

Detailed Description

Definition at line 19 of file BoundaryConditionCollection.h.

#include <BoundaryConditionCollection.h>

Public Member Functions

 BoundaryConditionCollection (std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &parameters)
 
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)
 
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 22 of file BoundaryConditionCollection.h.

25  : _parameters(parameters)
26  {
27  }
std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const & _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 
)

Definition at line 25 of file BoundaryConditionCollection.cpp.

30 {
31  for (int variable_id = 0;
32  variable_id < static_cast<int>(process_variables.size());
33  ++variable_id)
34  {
35  ProcessVariable& pv = process_variables[variable_id];
36  auto bcs = pv.createBoundaryConditions(
37  dof_table, variable_id, integration_order, _parameters, process);
38 
39  std::move(bcs.begin(), bcs.end(),
40  std::back_inserter(_boundary_conditions));
41  }
42 
43  // For each BC there will be storage for Dirichlet BC. This storage will be
44  // uninitialized by default, and has to be filled by the respective BC
45  // object if needed.
46  _dirichlet_bcs.resize(_boundary_conditions.size());
47 }
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 52 of file BoundaryConditionCollection.h.

53  {
54  _boundary_conditions.push_back(std::move(bc));
55  }

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 15 of file BoundaryConditionCollection.cpp.

18 {
19  for (auto const& bc : _boundary_conditions)
20  {
21  bc->applyNaturalBC(t, x, process_id, K, b, Jac);
22  }
23 }

References _boundary_conditions.

◆ getKnownSolutions()

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

Definition at line 34 of file BoundaryConditionCollection.h.

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

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 66 of file BoundaryConditionCollection.h.

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

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 57 of file BoundaryConditionCollection.h.

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

References _boundary_conditions.

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 77 of file BoundaryConditionCollection.h.

Referenced by addBCsForProcessVariables(), and getKnownSolutions().

◆ _parameters

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

Definition at line 80 of file BoundaryConditionCollection.h.

Referenced by addBCsForProcessVariables().


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