OGS
TimeDecayDirichletBoundaryCondition.h
Go to the documentation of this file.
1
12#pragma once
13
14#include <memory>
15
19
20namespace ParameterLib
21{
22template <typename T>
23struct Parameter;
24} // namespace ParameterLib
25
26namespace MeshLib
27{
28class Mesh;
29}
30
31namespace ProcessLib
32{
50{
51public:
70 int const variable_id, int const component_id,
71 MeshLib::Mesh const& boundary_mesh,
72 NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
73 ParameterLib::Parameter<double> const& time_decay_parameter,
74 double const lower_limit);
75
77 const double t, GlobalVector const& x,
78 NumLib::IndexValueVector<GlobalIndexType>& bc_values) const override;
79
80private:
81 int const variable_id_;
82 int const component_id_;
83
85
86 std::unique_ptr<NumLib::LocalToGlobalIndexMap> const dof_table_boundary_;
87
99
101 double const lower_limit_;
102
105 mutable std::vector<double> initial_x_values_;
106
107 mutable bool initial_values_are_set_ = false;
108
109 void setInitialValues(GlobalVector const& x) const;
110};
111
112} // namespace ProcessLib
Global vector based on Eigen vector.
Definition EigenVector.h:26
Dirichlet boundary condition with time-dependent decay.
void getEssentialBCValues(const double t, GlobalVector const &x, NumLib::IndexValueVector< GlobalIndexType > &bc_values) const override
Writes the values of essential BCs to bc_values.
TimeDecayDirichletBoundaryCondition(int const variable_id, int const component_id, MeshLib::Mesh const &boundary_mesh, NumLib::LocalToGlobalIndexMap const &dof_table_bulk, ParameterLib::Parameter< double > const &time_decay_parameter, double const lower_limit)
Constructs a time decay Dirichlet boundary condition.
std::unique_ptr< NumLib::LocalToGlobalIndexMap > const dof_table_boundary_
ParameterLib::Parameter< double > const & time_decay_parameter_
double const lower_limit_
The lower limit of the boundary value.