ExaDG
Loading...
Searching...
No Matches
driver_steady_problems.h
1/* ______________________________________________________________________
2 *
3 * ExaDG - High-Order Discontinuous Galerkin for the Exa-Scale
4 *
5 * Copyright (C) 2021 by the ExaDG authors
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 * ______________________________________________________________________
20 */
21
22#ifndef INCLUDE_EXADG_STRUCTURE_TIME_INTEGRATION_DRIVER_STEADY_PROBLEMS_H_
23#define INCLUDE_EXADG_STRUCTURE_TIME_INTEGRATION_DRIVER_STEADY_PROBLEMS_H_
24
25// deal.II
26#include <deal.II/base/timer.h>
27#include <deal.II/lac/la_parallel_vector.h>
28
29// ExaDG
30#include <exadg/utilities/timer_tree.h>
31
32namespace ExaDG
33{
34namespace Structure
35{
36// forward declarations
37class Parameters;
38
39template<typename Number>
40class PostProcessorBase;
41
42namespace Interface
43{
44template<typename Number>
45class Operator;
46}
47
48template<int dim, typename Number>
50{
51public:
52 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
53
54 DriverSteady(std::shared_ptr<Interface::Operator<Number>> operator_,
55 std::shared_ptr<PostProcessorBase<Number>> postprocessor_,
56 Parameters const & param_,
57 MPI_Comm const & mpi_comm_,
58 bool const is_test_);
59
60 void
61 setup();
62
63 void
64 solve();
65
66 std::shared_ptr<TimerTree>
67 get_timings() const;
68
69private:
70 void
71 initialize_vectors();
72
73 void
74 initialize_solution();
75
76 void
77 do_solve();
78
79 void
80 postprocessing() const;
81
82 std::shared_ptr<Interface::Operator<Number>> pde_operator;
83
84 std::shared_ptr<PostProcessorBase<Number>> postprocessor;
85
86 Parameters const & param;
87
88 MPI_Comm const mpi_comm;
89
90 bool is_test;
91
92 dealii::ConditionalOStream pcout;
93
94 // vectors
95 VectorType solution;
96 VectorType rhs_vector;
97
98 std::shared_ptr<TimerTree> timer_tree;
99};
100
101} // namespace Structure
102} // namespace ExaDG
103
104#endif
Definition driver_steady_problems.h:50
Definition interface.h:36
Definition parameters.h:40
Definition postprocessor_base.h:36
Definition driver.cpp:33