OGS
ProcessVariable.h
Go to the documentation of this file.
1 
11 #pragma once
12 
14 #include "ParameterLib/Parameter.h"
17 
18 // DeactivatedSubdomain cannot be forwardly declared because that
19 // std::unique_ptr<DeactivatedSubdomain> type member requires its full
20 // definition (see https://stackoverflow.com/a/6089065).
22 
23 namespace MeshLib
24 {
25 class Mesh;
26 template <typename T>
27 class PropertyVector;
28 } // namespace MeshLib
29 namespace NumLib
30 {
31 class LocalToGlobalIndexMap;
32 }
33 
34 namespace ProcessLib
35 {
36 class SourceTerm;
37 class BoundaryCondition;
38 class Process;
39 } // namespace ProcessLib
40 
41 namespace ProcessLib
42 {
46 {
47 public:
49  BaseLib::ConfigTree const& config, MeshLib::Mesh& mesh,
50  std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes,
51  std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
52  parameters,
53  std::map<std::string,
54  std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
55  curves);
56 
58 
59  std::string const& getName() const;
60 
62  MeshLib::Mesh const& getMesh() const;
63 
64  std::vector<std::unique_ptr<DeactivatedSubdomain const>> const&
66  {
68  }
69 
70  void updateDeactivatedSubdomains(double const time);
71 
72  std::vector<std::size_t> const& getActiveElementIDs() const
73  {
75  }
76 
79  std::vector<std::unique_ptr<BoundaryCondition>> createBoundaryConditions(
80  const NumLib::LocalToGlobalIndexMap& dof_table, const int variable_id,
81  unsigned const integration_order,
82  std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
83  parameters,
84  Process const& process);
85 
86  std::vector<std::unique_ptr<SourceTerm>> createSourceTerms(
87  const NumLib::LocalToGlobalIndexMap& dof_table, const int variable_id,
88  unsigned const integration_order,
89  std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
90  parameters);
91 
93  {
94  return _initial_condition;
95  }
96 
97  unsigned getShapeFunctionOrder() const { return _shapefunction_order; }
98 
99 private:
100  std::string const _name;
102  const int _n_components;
117 
118  std::vector<std::unique_ptr<DeactivatedSubdomain const>>
120 
123  mutable std::vector<std::size_t> _ids_of_active_elements;
124 
126  const NumLib::LocalToGlobalIndexMap& dof_table, const int variable_id,
127  std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
128  parameters,
129  std::vector<std::unique_ptr<BoundaryCondition>>& bcs);
130 
132 
133  std::vector<BoundaryConditionConfig> _bc_configs;
134  std::vector<SourceTermConfig> _source_term_configs;
135 };
136 
137 } // namespace ProcessLib
void updateDeactivatedSubdomains(double const time)
ParameterLib::Parameter< double > const & _initial_condition
std::vector< BoundaryConditionConfig > _bc_configs
std::vector< std::unique_ptr< DeactivatedSubdomain const > > const & getDeactivatedSubdomains() const
MeshLib::Mesh const & getMesh() const
Returns a mesh on which the process variable is defined.
void createBoundaryConditionsForDeactivatedSubDomains(const NumLib::LocalToGlobalIndexMap &dof_table, const int variable_id, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &parameters, std::vector< std::unique_ptr< BoundaryCondition >> &bcs)
unsigned getShapeFunctionOrder() const
std::string const & getName() const
std::vector< std::unique_ptr< SourceTerm > > createSourceTerms(const NumLib::LocalToGlobalIndexMap &dof_table, const int variable_id, unsigned const integration_order, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &parameters)
ProcessVariable(BaseLib::ConfigTree const &config, MeshLib::Mesh &mesh, std::vector< std::unique_ptr< MeshLib::Mesh >> const &meshes, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &parameters, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation >> const &curves)
ParameterLib::Parameter< double > const & getInitialCondition() const
std::vector< std::unique_ptr< BoundaryCondition > > createBoundaryConditions(const NumLib::LocalToGlobalIndexMap &dof_table, const int variable_id, unsigned const integration_order, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &parameters, Process const &process)
std::vector< std::size_t > _ids_of_active_elements
std::vector< SourceTermConfig > _source_term_configs
std::vector< std::unique_ptr< DeactivatedSubdomain const > > _deactivated_subdomains
int getNumberOfGlobalComponents() const
Returns the number of components of the process variable.
std::vector< std::size_t > const & getActiveElementIDs() const