OGS
TESProcess.h
Go to the documentation of this file.
1 
11 #pragma once
12 
14 #include "ProcessLib/Process.h"
15 
16 #include "TESAssemblyParams.h"
17 #include "TESLocalAssembler.h"
18 
19 namespace MeshLib
20 {
21 class Element;
22 class Mesh;
23 template <typename PROP_VAL_TYPE>
24 class PropertyVector;
25 }
26 
27 namespace ProcessLib
28 {
29 namespace TES
30 {
31 class TESProcess final : public Process
32 {
33 public:
34  TESProcess(
35  std::string name,
36  MeshLib::Mesh& mesh,
37  std::unique_ptr<AbstractJacobianAssembler>&& jacobian_assembler,
38  std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
39  parameters,
40  unsigned const integration_order,
41  std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>&&
42  process_variables,
43  SecondaryVariableCollection&& secondary_variables,
44  BaseLib::ConfigTree const& config);
45 
46  void preTimestepConcreteProcess(std::vector<GlobalVector*> const& x,
47  const double t, const double delta_t,
48  const int process_id) override;
49  void preIterationConcreteProcess(const unsigned iter,
50  GlobalVector const& x) override;
52  GlobalVector const& x) override;
53 
54  bool isLinear() const override { return false; }
55 
56 private:
58  NumLib::LocalToGlobalIndexMap const& dof_table,
59  MeshLib::Mesh const& mesh, unsigned const integration_order) override;
60 
61  void assembleConcreteProcess(const double t, double const dt,
62  std::vector<GlobalVector*> const& x,
63  std::vector<GlobalVector*> const& xdot,
64  int const process_id, GlobalMatrix& M,
65  GlobalMatrix& K, GlobalVector& b) override;
66 
68 
70  const double t, double const dt, std::vector<GlobalVector*> const& x,
71  std::vector<GlobalVector*> const& xdot, const double dxdot_dx,
72  const double dx_dx, int const process_id, GlobalMatrix& M,
73  GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override;
74 
76  const double t,
77  std::vector<GlobalVector*> const& x,
78  std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
79  std::unique_ptr<GlobalVector>& result_cache);
80 
82  const double t,
83  std::vector<GlobalVector*> const& x,
84  std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
85  std::unique_ptr<GlobalVector>& result_cache);
86 
88  const double t,
89  std::vector<GlobalVector*> const& x,
90  std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
91  std::unique_ptr<GlobalVector>& result_cache);
92 
93  std::vector<std::unique_ptr<TESLocalAssemblerInterface>> _local_assemblers;
94 
96 
97  // used for checkBounds()
98  std::unique_ptr<GlobalVector> _x_previous_timestep;
99 };
100 
101 } // namespace TES
102 
103 } // namespace ProcessLib
Global vector based on Eigen vector.
Definition: EigenVector.h:26
std::string const name
Definition: Process.h:323
Handles configuration of several secondary variables from the project file.
std::vector< std::unique_ptr< TESLocalAssemblerInterface > > _local_assemblers
Definition: TESProcess.h:93
GlobalVector const & computeRelativeHumidity(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::unique_ptr< GlobalVector > &result_cache)
Definition: TESProcess.cpp:356
bool isLinear() const override
Definition: TESProcess.h:54
TESProcess(std::string name, MeshLib::Mesh &mesh, std::unique_ptr< AbstractJacobianAssembler > &&jacobian_assembler, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &parameters, unsigned const integration_order, std::vector< std::vector< std::reference_wrapper< ProcessVariable >>> &&process_variables, SecondaryVariableCollection &&secondary_variables, BaseLib::ConfigTree const &config)
Definition: TESProcess.cpp:20
void preTimestepConcreteProcess(std::vector< GlobalVector * > const &x, const double t, const double delta_t, const int process_id) override
Definition: TESProcess.cpp:248
void assembleConcreteProcess(const double t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &xdot, int const process_id, GlobalMatrix &M, GlobalMatrix &K, GlobalVector &b) override
Definition: TESProcess.cpp:212
NumLib::IterationResult postIterationConcreteProcess(GlobalVector const &x) override
Definition: TESProcess.cpp:271
std::unique_ptr< GlobalVector > _x_previous_timestep
Definition: TESProcess.h:98
GlobalVector const & computeEquilibriumLoading(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::unique_ptr< GlobalVector > &result_cache)
Definition: TESProcess.cpp:396
GlobalVector const & computeVapourPartialPressure(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::unique_ptr< GlobalVector > &result_cache)
Definition: TESProcess.cpp:321
void initializeConcreteProcess(NumLib::LocalToGlobalIndexMap const &dof_table, MeshLib::Mesh const &mesh, unsigned const integration_order) override
Process specific initialization called by initialize().
Definition: TESProcess.cpp:140
void preIterationConcreteProcess(const unsigned iter, GlobalVector const &x) override
Definition: TESProcess.cpp:263
AssemblyParams _assembly_params
Definition: TESProcess.h:95
void assembleWithJacobianConcreteProcess(const double t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &xdot, const double dxdot_dx, const double dx_dx, int const process_id, GlobalMatrix &M, GlobalMatrix &K, GlobalVector &b, GlobalMatrix &Jac) override
Definition: TESProcess.cpp:231
IterationResult
Status flags telling the NonlinearSolver if an iteration succeeded.