ExaDG
Loading...
Searching...
No Matches
postprocessor.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_COMPRESSIBLE_NAVIER_STOKES_POSTPROCESSOR_POSTPROCESSOR_H_
23#define INCLUDE_EXADG_COMPRESSIBLE_NAVIER_STOKES_POSTPROCESSOR_POSTPROCESSOR_H_
24
25#include <exadg/compressible_navier_stokes/postprocessor/output_generator.h>
26#include <exadg/compressible_navier_stokes/postprocessor/pointwise_output_generator.h>
27#include <exadg/compressible_navier_stokes/postprocessor/postprocessor_base.h>
28#include <exadg/postprocessor/error_calculation.h>
29#include <exadg/postprocessor/kinetic_energy_calculation.h>
30#include <exadg/postprocessor/kinetic_energy_spectrum.h>
31#include <exadg/postprocessor/lift_and_drag_calculation.h>
32#include <exadg/postprocessor/pressure_difference_calculation.h>
33
34namespace ExaDG
35{
36namespace CompNS
37{
38template<int dim>
40{
41 OutputData output_data;
42 PointwiseOutputData<dim> pointwise_output_data;
44 LiftAndDragData lift_and_drag_data;
45 PressureDifferenceData<dim> pressure_difference_data;
46 KineticEnergyData kinetic_energy_data;
47 KineticEnergySpectrumData kinetic_energy_spectrum_data;
48};
49
50template<int dim, typename Number>
51class PostProcessor : public PostProcessorBase<dim, Number>
52{
53public:
54 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
55
56 PostProcessor(PostProcessorData<dim> const & postprocessor_data, MPI_Comm const & comm);
57
58 virtual ~PostProcessor();
59
60 void
61 setup(Operator<dim, Number> const & pde_operator) override;
62
63 void
64 do_postprocessing(VectorType const & solution,
65 double const time,
66 types::time_step const time_step_number) override;
67
68protected:
75
76private:
77 void
78 initialize_derived_fields();
79
80 void
81 invalidate_derived_fields();
82
83 MPI_Comm const mpi_comm;
84
86
87 dealii::SmartPointer<Operator<dim, Number> const> navier_stokes_operator;
88
89 OutputGenerator<dim, Number> output_generator;
90 PointwiseOutputGenerator<dim, Number> pointwise_output_generator;
91 ErrorCalculator<dim, Number> error_calculator;
92 LiftAndDragCalculator<dim, Number> lift_and_drag_calculator;
93 PressureDifferenceCalculator<dim, Number> pressure_difference_calculator;
94 KineticEnergyCalculator<dim, Number> kinetic_energy_calculator;
95 KineticEnergySpectrumCalculator<dim, Number> kinetic_energy_spectrum_calculator;
96};
97
98} // namespace CompNS
99} // namespace ExaDG
100
101#endif /* INCLUDE_EXADG_COMPRESSIBLE_NAVIER_STOKES_POSTPROCESSOR_POSTPROCESSOR_H_ */
Definition operator.h:48
Definition output_generator.h:89
Definition pointwise_output_generator.h:48
Definition postprocessor_base.h:60
Definition postprocessor.h:52
Definition error_calculation.h:95
Definition kinetic_energy_calculation.h:81
Definition kinetic_energy_spectrum.h:113
Definition lift_and_drag_calculation.h:79
Definition pressure_difference_calculation.h:69
Definition solution_field.h:39
Definition driver.cpp:33
Definition output_generator.h:38
Definition pointwise_output_generator.h:35
Definition postprocessor.h:40
Definition error_calculation.h:39
Definition kinetic_energy_calculation.h:37
Definition kinetic_energy_spectrum.h:40
Definition lift_and_drag_calculation.h:35
Definition pressure_difference_calculation.h:40