ExaDG
Loading...
Searching...
No Matches
pressure_difference_calculation.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_POSTPROCESSOR_PRESSURE_DIFFERENCE_CALCULATION_H_
23#define INCLUDE_EXADG_POSTPROCESSOR_PRESSURE_DIFFERENCE_CALCULATION_H_
24
25// deal.II
26#include <deal.II/base/conditional_ostream.h>
27#include <deal.II/base/point.h>
28#include <deal.II/dofs/dof_handler.h>
29#include <deal.II/fe/mapping_q.h>
30#include <deal.II/lac/la_parallel_vector.h>
31
32// ExaDG
33#include <exadg/postprocessor/solution_field.h>
34#include <exadg/postprocessor/time_control.h>
35
36namespace ExaDG
37{
38template<int dim>
40{
41 PressureDifferenceData() : directory("output/"), filename("pressure_difference")
42 {
43 }
44
45 /*
46 * Data to control output: Set is_active also in the unsteady case
47 */
48 TimeControlData time_control_data;
49
50 /*
51 * Points:
52 * calculation of pressure difference: p(point_1) - p(point_2)
53 */
54 dealii::Point<dim> point_1;
55 dealii::Point<dim> point_2;
56
57 /*
58 * directory and filename
59 */
60 std::string directory;
61 std::string filename;
62
63 void
64 print(dealii::ConditionalOStream & pcout, bool const unsteady) const;
65};
66
67template<int dim, typename Number>
69{
70public:
71 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
72
73 PressureDifferenceCalculator(MPI_Comm const & comm);
74
75 void
76 setup(dealii::DoFHandler<dim> const & dof_handler_pressure_in,
77 dealii::Mapping<dim> const & mapping_in,
78 PressureDifferenceData<dim> const & pressure_difference_data_in);
79
80 void
81 evaluate(VectorType const & pressure, double const time) const;
82
83 TimeControl time_control;
84
85private:
86 MPI_Comm const mpi_comm;
87
88 mutable bool clear_files;
89
90 dealii::SmartPointer<dealii::DoFHandler<dim> const> dof_handler_pressure;
91 dealii::SmartPointer<dealii::Mapping<dim> const> mapping;
92
94};
95
96} // namespace ExaDG
97
98#endif /* INCLUDE_EXADG_POSTPROCESSOR_PRESSURE_DIFFERENCE_CALCULATION_H_ */
Definition pressure_difference_calculation.h:69
Definition time_control.h:64
Definition driver.cpp:33
Definition pressure_difference_calculation.h:40
Definition time_control.h:40