OGS
ProcessVariable.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <map>
7#include <memory>
8#include <string>
9#include <vector>
10
13
14namespace MathLib
15{
17} // namespace MathLib
18
19namespace MeshLib
20{
21class Mesh;
22
23template <typename PROP_VAL_TYPE>
24class PropertyVector;
25} // namespace MeshLib
26
27namespace NumLib
28{
30} // namespace NumLib
31
32namespace ParameterLib
33{
34struct ParameterBase;
35
36template <typename T>
37struct Parameter;
38} // namespace ParameterLib
39
40namespace ProcessLib
41{
42class SourceTermBase;
44class Process;
47struct SourceTermConfig;
48} // namespace ProcessLib
49
50namespace ProcessLib
51{
55{
56public:
58 BaseLib::ConfigTree const& config, MeshLib::Mesh& mesh,
59 std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes,
60 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
61 parameters,
62 std::map<std::string,
63 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
64 curves);
65
67
68 std::string const& getName() const { return _name; }
69
71 MeshLib::Mesh const& getMesh() const;
72
73 std::vector<DeactivatedSubdomain> const& getDeactivatedSubdomains() const
74 {
76 }
77
78 void updateDeactivatedSubdomains(double const time);
79
80 std::vector<std::size_t> const& getActiveElementIDs() const
81 {
83 }
84
87
88 std::vector<std::unique_ptr<BoundaryCondition>> createBoundaryConditions(
89 const NumLib::LocalToGlobalIndexMap& dof_table, const int variable_id,
90 unsigned const integration_order,
91 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
92 parameters,
93 Process const& process,
94 std::vector<std::reference_wrapper<ProcessVariable>> const&
95 all_process_variables_for_this_process,
96 std::map<int, std::shared_ptr<MaterialPropertyLib::Medium>> const&
97 media);
98
99 std::vector<std::unique_ptr<SourceTermBase>> createSourceTerms(
100 const NumLib::LocalToGlobalIndexMap& dof_table, const int variable_id,
101 unsigned const integration_order,
102 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
103 parameters,
104 std::vector<std::reference_wrapper<ProcessVariable>> const&
105 all_process_variables_for_this_process,
106 const MeshLib::Mesh& bulk_mesh);
107
112
113 unsigned getShapeFunctionOrder() const { return _shapefunction_order; }
114
119
121
122private:
123 std::string const _name;
125 const int _n_components;
140
141 std::vector<DeactivatedSubdomain> _deactivated_subdomains;
142
145 mutable std::vector<std::size_t> _ids_of_active_elements;
147
149 const NumLib::LocalToGlobalIndexMap& dof_table, const int variable_id,
150 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
151 parameters,
152 std::vector<std::unique_ptr<BoundaryCondition>>& bcs);
153
155
156 std::vector<BoundaryConditionConfig> _bc_configs;
157 std::vector<SourceTermConfig> _source_term_configs;
158
160};
161
162} // namespace ProcessLib
void updateDeactivatedSubdomains(double const time)
std::vector< std::unique_ptr< SourceTermBase > > createSourceTerms(const NumLib::LocalToGlobalIndexMap &dof_table, const int variable_id, unsigned const integration_order, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::vector< std::reference_wrapper< ProcessVariable > > const &all_process_variables_for_this_process, const MeshLib::Mesh &bulk_mesh)
ParameterLib::Parameter< double > const & _initial_condition
std::vector< BoundaryConditionConfig > _bc_configs
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)
MeshLib::Mesh const & getMesh() const
Returns a mesh on which the process variable is defined.
std::vector< std::size_t > const & getActiveElementIDs() const
ProcessVariable(ProcessVariable &&)
ParameterLib::Parameter< double > const & getInitialCondition() const
std::vector< DeactivatedSubdomain > _deactivated_subdomains
const bool _compensate_non_equilibrium_initial_residuum
unsigned getShapeFunctionOrder() const
std::string const & getName() const
MeshLib::PropertyVector< unsigned char > * _is_active
std::vector< std::size_t > _ids_of_active_elements
std::vector< SourceTermConfig > _source_term_configs
bool compensateNonEquilibriumInitialResiduum() const
int getNumberOfGlobalComponents() const
Returns the number of components of the process variable.
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::reference_wrapper< ProcessVariable > > const &all_process_variables_for_this_process, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
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)
std::vector< DeactivatedSubdomain > const & getDeactivatedSubdomains() const