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_CONVECTION_DIFFUSION_DRIVER_STEADY_PROBLEMS_H_
23#define INCLUDE_CONVECTION_DIFFUSION_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 ConvDiff
35{
36// forward declaration
37class Parameters;
38
39template<typename Number>
40class PostProcessorInterface;
41
42namespace Interface
43{
44template<typename Number>
45class Operator;
46}
47
48template<typename Number>
50{
51public:
52 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
53
55
56 DriverSteadyProblems(std::shared_ptr<Operator> operator_,
57 std::shared_ptr<PostProcessorInterface<Number>> postprocessor_,
58 Parameters const & param_,
59 MPI_Comm const & mpi_comm_,
60 bool const is_test_);
61
62 void
63 setup();
64
65 void
66 solve();
67
68 std::shared_ptr<TimerTree>
69 get_timings() const;
70
71private:
72 void
73 initialize_vectors();
74
75 void
76 initialize_solution();
77
78 void
79 do_solve();
80
81 void
82 postprocessing() const;
83
84 std::shared_ptr<Operator> pde_operator;
85
86 Parameters const & param;
87
88 MPI_Comm const mpi_comm;
89
90 bool is_test;
91
92 dealii::ConditionalOStream pcout;
93
94 std::shared_ptr<TimerTree> timer_tree;
95
96 // vectors
97 VectorType solution;
98 VectorType rhs_vector;
99
100 std::shared_ptr<PostProcessorInterface<Number>> postprocessor;
101};
102
103} // namespace ConvDiff
104} // namespace ExaDG
105
106#endif /* INCLUDE_CONVECTION_DIFFUSION_DRIVER_STEADY_PROBLEMS_H_ */
Definition driver_steady_problems.h:50
Definition interface.h:39
Definition parameters.h:46
Definition postprocessor_base.h:44
Definition driver.cpp:33