ExaDG
Loading...
Searching...
No Matches
enum_types.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_CONVECTION_DIFFUSION_USER_INTERFACE_ENUM_TYPES_H_
23#define INCLUDE_EXADG_CONVECTION_DIFFUSION_USER_INTERFACE_ENUM_TYPES_H_
24
25#include <string>
26
27namespace ExaDG
28{
29namespace ConvDiff
30{
31/**************************************************************************************/
32/* */
33/* MATHEMATICAL MODEL */
34/* */
35/**************************************************************************************/
36
37/*
38 * ProblemType describes whether a steady or an unsteady problem has to be solved
39 */
40enum class ProblemType
41{
42 Undefined,
43 Steady,
44 Unsteady
45};
46
47/*
48 * EquationType describes the physical/mathematical model that has to be solved,
49 * i.e., diffusion problem, convective problem or convection-diffusion problem
50 */
51enum class EquationType
52{
53 Undefined,
54 Convection,
55 Diffusion,
56 ConvectionDiffusion
57};
58
59/*
60 * This parameter describes the type of velocity field for the convective term.
61 * Function means that an analytical velocity field is prescribed, while DoFVector
62 * means that the velocity field is read and interpolated from a DoFVector, e.g.,
63 * the velocity field obtained as the solution of the incompressible Navier-Stokes
64 * equations.
65 */
66enum class TypeVelocityField
67{
68 Function,
69 DoFVector
70};
71
72/*
73 * Formulation of convective term: divergence formulation or convective formulation
74 */
75enum class FormulationConvectiveTerm
76{
77 DivergenceFormulation,
78 ConvectiveFormulation
79};
80
81/**************************************************************************************/
82/* */
83/* PHYSICAL QUANTITIES */
84/* */
85/**************************************************************************************/
86
87// there are currently no enums for this section
88
89
90
91/**************************************************************************************/
92/* */
93/* TEMPORAL DISCRETIZATION */
94/* */
95/**************************************************************************************/
96
97/*
98 * Temporal discretization method:
99 * ExplRK: Explicit Runge-Kutta methods (implemented for orders 1-4)
100 * BDF: backward differentiation formulae (implemented for order 1-3)
101 */
102enum class TemporalDiscretization
103{
104 Undefined,
105 ExplRK,
106 BDF
107};
108
109/*
110 * For the BDF time integrator, the convective term can be either
111 * treated explicitly or implicitly
112 */
113enum class TreatmentOfConvectiveTerm
114{
115 Undefined,
116 Explicit, // additive decomposition (IMEX)
117 Implicit
118};
119
120/*
121 * Temporal discretization method for OIF splitting:
122 *
123 * Explicit Runge-Kutta methods
124 */
125enum class TimeIntegratorRK
126{
127 Undefined,
128 ExplRK1Stage1,
129 ExplRK2Stage2,
130 ExplRK3Stage3,
131 ExplRK4Stage4,
132 ExplRK3Stage4Reg2C,
133 ExplRK3Stage7Reg2, // optimized for maximum time step sizes in DG context
134 ExplRK4Stage5Reg2C,
135 ExplRK4Stage8Reg2, // optimized for maximum time step sizes in DG context
136 ExplRK4Stage5Reg3C,
137 ExplRK5Stage9Reg2S
138};
139
140/*
141 * calculation of time step size
142 */
143enum class TimeStepCalculation
144{
145 Undefined,
146 UserSpecified,
147 CFL,
148 Diffusion,
149 CFLAndDiffusion,
150 MaxEfficiency
151};
152
153/**************************************************************************************/
154/* */
155/* SPATIAL DISCRETIZATION */
156/* */
157/**************************************************************************************/
158
159/*
160 * Numerical flux formulation of convective term
161 */
162enum class NumericalFluxConvectiveOperator
163{
164 Undefined,
165 CentralFlux,
166 LaxFriedrichsFlux
167};
168
169/**************************************************************************************/
170/* */
171/* SOLVER */
172/* */
173/**************************************************************************************/
174
175/*
176 * Solver for linear system of equations
177 */
178enum class Solver
179{
180 Undefined,
181 CG,
182 GMRES,
183 FGMRES // flexible GMRES
184};
185
186/*
187 * Preconditioner type for solution of linear system of equations
188 */
189enum class Preconditioner
190{
191 Undefined,
192 None,
193 InverseMassMatrix,
194 PointJacobi,
195 BlockJacobi,
196 Multigrid
197};
198
199/*
200 * Specify the operator type to be used for multigrid (which can differ from the
201 * equation type)
202 */
203enum class MultigridOperatorType
204{
205 Undefined,
206 ReactionDiffusion,
207 ReactionConvection,
208 ReactionConvectionDiffusion
209};
210
211/**************************************************************************************/
212/* */
213/* OUTPUT AND POSTPROCESSING */
214/* */
215/**************************************************************************************/
216
217// there are currently no enums for this section
218
219} // namespace ConvDiff
220} // namespace ExaDG
221
222
223#endif /* INCLUDE_EXADG_CONVECTION_DIFFUSION_USER_INTERFACE_ENUM_TYPES_H_ */
Definition driver.cpp:33