OGS 6.2.0-244-g47b8a9a9d
HTProcess.h
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include <array>
13 
14 #include "ProcessLib/Process.h"
15 
16 namespace NumLib
17 {
18 class LocalToGlobalIndexMap;
19 }
20 
21 namespace ProcessLib
22 {
23 struct SurfaceFluxData;
24 
25 namespace HT
26 {
27 class HTLocalAssemblerInterface;
28 struct HTMaterialProperties;
29 
49 class HTProcess final : public Process
50 {
51 public:
52  HTProcess(
53  MeshLib::Mesh& mesh,
54  std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&&
55  jacobian_assembler,
56  std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
57  parameters,
58  unsigned const integration_order,
59  std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>&&
60  process_variables,
61  std::unique_ptr<HTMaterialProperties>&& material_properties,
62  SecondaryVariableCollection&& secondary_variables,
63  NumLib::NamedFunctionCaller&& named_function_caller,
64  bool const use_monolithic_scheme,
65  std::unique_ptr<ProcessLib::SurfaceFluxData>&& surfaceflux,
66  const int heat_transport_process_id,
67  const int hydraulic_process_id);
70 
71  bool isLinear() const override { return false; }
73 
74  Eigen::Vector3d getFlux(std::size_t element_id,
75  MathLib::Point3d const& p,
76  double const t,
77  GlobalVector const& x) const override;
78 
79  void setCoupledTermForTheStaggeredSchemeToLocalAssemblers() override;
80 
81  void postTimestepConcreteProcess(GlobalVector const& x,
82  const double t,
83  const double delta_t,
84  int const process_id) override;
85 
86 private:
87  void initializeConcreteProcess(
88  NumLib::LocalToGlobalIndexMap const& dof_table,
89  MeshLib::Mesh const& mesh,
90  unsigned const integration_order) override;
91 
92  void assembleConcreteProcess(const double t, GlobalVector const& x,
93  GlobalMatrix& M, GlobalMatrix& K,
94  GlobalVector& b) override;
95 
96  void assembleWithJacobianConcreteProcess(
97  const double t, GlobalVector const& x, GlobalVector const& xdot,
98  const double dxdot_dx, const double dx_dx, GlobalMatrix& M,
99  GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override;
100 
101  void preTimestepConcreteProcess(GlobalVector const& x, double const t,
102  double const dt,
103  const int process_id) override;
104 
105  void setCoupledSolutionsOfPreviousTimeStepPerProcess(const int process_id);
106 
110  void setCoupledSolutionsOfPreviousTimeStep();
111 
115  std::tuple<NumLib::LocalToGlobalIndexMap*, bool>
116  getDOFTableForExtrapolatorData() const override;
117 
118  const std::unique_ptr<HTMaterialProperties> _material_properties;
119 
120  std::vector<std::unique_ptr<HTLocalAssemblerInterface>> _local_assemblers;
121 
123  std::array<std::unique_ptr<GlobalVector>, 2> _xs_previous_timestep;
124 
125  std::unique_ptr<ProcessLib::SurfaceFluxData> _surfaceflux;
126 
129 };
130 
131 } // namespace HT
132 } // namespace ProcessLib
std::unique_ptr< ProcessLib::SurfaceFluxData > _surfaceflux
Definition: HTProcess.h:125
const int _hydraulic_process_id
Definition: HTProcess.h:128
bool isLinear() const override
Definition: HTProcess.h:71
Builds expression trees of named functions dynamically at runtime.
Handles configuration of several secondary variables from the project file.
const int _heat_transport_process_id
Definition: HTProcess.h:127
const std::unique_ptr< HTMaterialProperties > _material_properties
Definition: HTProcess.h:118
std::array< std::unique_ptr< GlobalVector >, 2 > _xs_previous_timestep
Solutions of the previous time step.
Definition: HTProcess.h:123
std::vector< std::unique_ptr< HTLocalAssemblerInterface > > _local_assemblers
Definition: HTProcess.h:120