include/meltpooldg/time_integration/time_integrator_base.hpp Source File

Developer Documentation: include/meltpooldg/time_integration/time_integrator_base.hpp Source File
Developer Documentation
time_integrator_base.hpp
Go to the documentation of this file.
1
5#pragma once
6#include <deal.II/lac/la_parallel_vector.h>
7
10
11#include <functional>
12
14{
15 template <typename number>
17 {
18 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
19
20 public:
21 explicit TimeIntegratorBase(const TimeIntegratorData<number> &time_integrator_data_in)
22 : time_integrator_data(time_integrator_data_in)
23 {}
24
25 virtual ~TimeIntegratorBase() = default;
26
32 virtual unsigned int
34
41 virtual void
42 reinit(const VectorType &vector_template) = 0;
43
47 virtual void
48 reinit(const SolutionHistory<VectorType> &solution_history)
49 {
50 reinit(solution_history.get_current_solution());
51 }
52
65 virtual void
66 perform_time_step(number current_time,
67 number time_step,
68 SolutionHistory<VectorType> &solution_history,
69 const std::function<void(number, number, VectorType &, const VectorType &)>
70 &pre_processing = {},
71 const std::function<void(number, number, VectorType &, const VectorType &)>
72 &post_processing = {}) = 0;
73
77 TimeIntegratorSchemes
79 {
80 return time_integrator_data.integrator_type;
81 }
82
88 void
89 set_monitoring_vector(VectorType &monitoring_vector_in)
90 {
91 monitoring_vector = &monitoring_vector_in;
92 }
93
98 void
100 {
101 monitoring_vector = nullptr;
102 }
103
104 protected:
105 const TimeIntegratorData<number> time_integrator_data;
107 };
108} // namespace MeltPoolDG::TimeIntegration
Definition solution_history.hpp:21
const VectorType & get_current_solution() const
Definition solution_history.hpp:102
Definition time_integrator_base.hpp:17
virtual void reinit(const SolutionHistory< VectorType > &solution_history)
Definition time_integrator_base.hpp:48
virtual void perform_time_step(number current_time, number time_step, SolutionHistory< VectorType > &solution_history, const std::function< void(number, number, VectorType &, const VectorType &)> &pre_processing={}, const std::function< void(number, number, VectorType &, const VectorType &)> &post_processing={})=0
virtual unsigned int required_solution_history_size() const =0
TimeIntegratorBase(const TimeIntegratorData< number > &time_integrator_data_in)
Definition time_integrator_base.hpp:21
virtual void reinit(const VectorType &vector_template)=0
void reset_monitoring_vector()
Definition time_integrator_base.hpp:99
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition time_integrator_base.hpp:18
void set_monitoring_vector(VectorType &monitoring_vector_in)
Definition time_integrator_base.hpp:89
const TimeIntegratorData< number > time_integrator_data
Definition time_integrator_base.hpp:105
VectorType * monitoring_vector
Definition time_integrator_base.hpp:106
TimeIntegratorSchemes get_integrator_type() const
Definition time_integrator_base.hpp:78
Class providing different low storage explicit Runge-Kutta schemes. The schemes implemented in this c...
Definition bdf_time_integration.hpp:18