Documentation 6b54b78464
Loading...
Searching...
No Matches
CIncEulerSolver.hpp
Go to the documentation of this file.
1/*!
2 * \file CIncEulerSolver.hpp
3 * \brief Headers of the CIncEulerSolver class
4 * \author F. Palacios, T. Economon, T. Albring
5 * \version 8.5.0 "Harrier"
6 *
7 * SU2 Project Website: https://su2code.github.io
8 *
9 * The SU2 Project is maintained by the SU2 Foundation
10 * (http://su2foundation.org)
11 *
12 * Copyright 2012-2026, SU2 Contributors (cf. AUTHORS.md)
13 *
14 * SU2 is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU Lesser General Public
16 * License as published by the Free Software Foundation; either
17 * version 2.1 of the License, or (at your option) any later version.
18 *
19 * SU2 is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 * Lesser General Public License for more details.
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with SU2. If not, see <http://www.gnu.org/licenses/>.
26 */
27
28#pragma once
29
31#include "../variables/CIncEulerVariable.hpp"
32
33/*!
34 * \class CIncEulerSolver
35 * \brief Main class for defining the incompressible Euler flow solver.
36 * \ingroup Euler_Equations
37 * \author F. Palacios, T. Economon, T. Albring
38 */
39class CIncEulerSolver : public CFVMFlowSolverBase<CIncEulerVariable, ENUM_REGIME::INCOMPRESSIBLE> {
40protected:
41 vector<CFluidModel*> FluidModel; /*!< \brief fluid model used in the solver. */
43
49
50 /*!
51 * \brief Preprocessing actions common to the Euler and NS solvers.
52 * \param[in] geometry - Geometrical definition of the problem.
53 * \param[in] solver_container - Container vector with all the solutions.
54 * \param[in] config - Definition of the particular problem.
55 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
56 * \param[in] RunTime_EqSystem - System of equations which is going to be solved.
57 * \param[in] Output - boolean to determine whether to print output.
58 */
59 void CommonPreprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh,
60 unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output);
61
62 /*!
63 * \brief Compute the preconditioner for low-Mach flows.
64 * \param[in] iPoint - Index of the grid point
65 * \param[in] config - Definition of the particular problem.
66 * \param[in] delta - Volume over delta time, does not matter for explicit.
67 * \param[out] preconditioner - The preconditioner matrix.
68 */
69 void SetPreconditioner(const CConfig *config, unsigned long iPoint,
70 su2double delta, su2activematrix& preconditioner) const;
71
72 /*!
73 * \brief Compute a pressure sensor switch.
74 * \param[in] geometry - Geometrical definition of the problem.
75 * \param[in] solver_container - Container vector with all the solutions.
76 * \param[in] config - Definition of the particular problem.
77 */
78 void SetCentered_Dissipation_Sensor(CGeometry *geometry, const CConfig *config);
79
80 /*!
81 * \brief Compute the max eigenvalue.
82 * \param[in] geometry - Geometrical definition of the problem.
83 * \param[in] config - Definition of the particular problem.
84 */
85 void SetMax_Eigenvalue(CGeometry *geometry, const CConfig *config);
86
87 /*!
88 * \brief Compute the velocity^2, SoundSpeed, Pressure, Enthalpy, Viscosity.
89 * \param[in] solver_container - Container vector with all the solutions.
90 * \param[in] config - Definition of the particular problem.
91 * \return - The number of non-physical points.
92 */
93 virtual unsigned long SetPrimitive_Variables(CSolver **solver_container, const CConfig *config);
94
95 /*!
96 * \brief Recompute the dual-time density history (rho_n, rho_n-1) from the stored
97 * solution histories (Solution_time_n[,1], and the species histories for
98 * flamelet/variable-density) via the fluid model.
99 * \details Called once per physical time step (InnerIter == 0), after the solution
100 * push-back. This keeps the density history consistent with the primitive
101 * state at time n (also after restart).
102 * \param[in] solver_container - Container vector with all the solutions.
103 * \param[in] config - Definition of the particular problem.
104 */
105 void RecomputeDensity_time_n(CSolver **solver_container, const CConfig *config);
106
107 /*!
108 * \brief Update the Beta parameter for the incompressible preconditioner.
109 * \param[in] geometry - Geometrical definition of the problem.
110 * \param[in] solver_container - Container vector with all the solutions.
111 * \param[in] config - Definition of the particular problem.
112 * \param[in] iMesh - current mesh level for the multigrid.
113 */
114 void SetBeta_Parameter(CGeometry *geometry,
115 CSolver **solver_container,
116 CConfig *config,
117 unsigned short iMesh);
118
119 /*!
120 * \brief Update the pressure range P_max - P_min for target mass flow rate.
121 * \param[in] geometry - Geometrical definition of the problem.
122 * \param[in] solver_container - Container vector with all the solutions.
123 * \param[in] config - Definition of the particular problem.
124 * \param[in] iMesh - current mesh level for the multigrid.
125 */
126 void SetRangePressure(CGeometry *geometry,
127 CSolver **solver_container,
128 CConfig *config,
129 unsigned short iMesh);
130
131 /*!
132 * \brief A virtual member.
133 */
134 void GetOutlet_Properties(CGeometry *geometry,
135 CConfig *config,
136 unsigned short iMesh,
137 bool Output);
138
139 /*!
140 * \brief Set the solver nondimensionalization.
141 * \param[in] config - Definition of the particular problem.
142 * \param[in] iMesh - Index of the mesh in multigrid computations.
143 */
144 void SetNondimensionalization(CConfig *config, unsigned short iMesh);
145
146 /*!
147 * \brief Generic implementation of explicit iterations with preconditioner.
148 */
149 template<ENUM_TIME_INT IntegrationType>
150 void Explicit_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep);
151
152 /*!
153 * \brief Set reference values for pressure, forces, etc.
154 */
155 void SetReferenceValues(const CConfig& config) final;
156
157 /*!
158 * \brief Apply a correction to the pressure or pressure deviation gradient to align with the edges
159 * \param[in] corrected_grad_pressure - The corrected gradient at the edge
160 * \param[in] avg_grad_pressure - The average gradient at the edge
161 * \param[in] val_pressure_i - variable at point i
162 * \param[in] val_pressure_j - variable at point j
163 * \param[in] val_edge_vector - The vector between points i and j
164 * \param[in] val_dist_ij_2 - The distance between points i and j, squared
165 */
166 void CorrectPressureGradient(su2double* corrected_grad_pressure,
167 const su2double* avg_grad_pressure,
168 const su2double val_pressure_i,
169 const su2double val_pressure_j,
170 const su2double* val_edge_vector,
171 const su2double val_dist_ij_2);
172
173public:
174 CIncEulerSolver() = delete;
175
176 /*!
177 * \brief Constructor of the class.
178 * \param[in] geometry - Geometrical definition of the problem.
179 * \param[in] config - Definition of the particular problem.
180 * \param[in] iMesh - Grid level.
181 * \param[in] navier_stokes - True when the constructor is called by the derived class CIncNSSolver.
182 */
183 CIncEulerSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh, const bool navier_stokes = false);
184
185 /*!
186 * \brief Destructor of the class.
187 */
188 ~CIncEulerSolver(void) override;
189
190 /*!
191 * \brief Compute the pressure at the infinity.
192 * \return Value of the pressure at the infinity.
193 */
194 inline CFluidModel* GetFluidModel(void) const final { return FluidModel[omp_get_thread_num()]; }
195
196 /*!
197 * \brief Compute the time step for solving the Euler equations.
198 * \param[in] geometry - Geometrical definition of the problem.
199 * \param[in] solver_container - Container vector with all the solutions.
200 * \param[in] config - Definition of the particular problem.
201 * \param[in] iMesh - Index of the mesh in multigrid computations.
202 * \param[in] Iteration - Value of the current iteration.
203 */
204 void SetTime_Step(CGeometry *geometry,
205 CSolver **solver_container,
206 CConfig *config,
207 unsigned short iMesh,
208 unsigned long Iteration) final;
209
210 /*!
211 * \brief Compute the spatial integration using a centered scheme.
212 * \param[in] geometry - Geometrical definition of the problem.
213 * \param[in] solver_container - Container vector with all the solutions.
214 * \param[in] numerics_container - Description of the numerical method.
215 * \param[in] config - Definition of the particular problem.
216 * \param[in] iMesh - Index of the mesh in multigrid computations.
217 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
218 */
219 void Centered_Residual(CGeometry *geometry,
220 CSolver **solver_container,
221 CNumerics **numerics_container,
222 CConfig *config,
223 unsigned short iMesh,
224 unsigned short iRKStep) final;
225
226 /*!
227 * \brief Compute the spatial integration using a upwind scheme.
228 * \param[in] geometry - Geometrical definition of the problem.
229 * \param[in] solver_container - Container vector with all the solutions.
230 * \param[in] numerics_container - Description of the numerical method.
231 * \param[in] config - Definition of the particular problem.
232 * \param[in] iMesh - Index of the mesh in multigrid computations.
233 */
234 void Upwind_Residual(CGeometry *geometry,
235 CSolver **solver_container,
236 CNumerics **numerics_container,
237 CConfig *config,
238 unsigned short iMesh) final;
239
240 /*!
241 * \brief Recompute the extrapolated quantities, after MUSCL reconstruction,
242 * in a more thermodynamically consistent way.
243 * \note This method is static to improve the chances of it being used in a
244 * thread-safe manner.
245 * \param[in,out] fluidModel - The fluid model.
246 * \param[in] nDim - Number of physical dimensions.
247 * \param[in] scalar - scalar variable.
248 * \param[in,out] primitive - Primitive variables.
249 */
250 static void ComputeConsistentExtrapolation(CFluidModel* fluidModel, unsigned short nDim, const su2double* scalar,
251 su2double* primitive);
252
253 /*!
254 * \brief Source term integration.
255 * \param[in] geometry - Geometrical definition of the problem.
256 * \param[in] solver_container - Container vector with all the solutions.
257 * \param[in] numerics_container - Description of the numerical method.
258 * \param[in] config - Definition of the particular problem.
259 * \param[in] iMesh - Index of the mesh in multigrid computations.
260 */
261 void Source_Residual(CGeometry *geometry,
262 CSolver **solver_container,
263 CNumerics **numerics_container,
264 CConfig *config,
265 unsigned short iMesh) final;
266
267 /*!
268 * \brief Source term integration.
269 * \param[in] geometry - Geometrical definition of the problem.
270 * \param[in] solver_container - Container vector with all the solutions.
271 * \param[in] numerics - Description of the numerical method.
272 * \param[in] config - Definition of the particular problem.
273 * \param[in] iMesh - Index of the mesh in multigrid computations.
274 */
275 void Source_Template(CGeometry *geometry,
276 CSolver **solver_container,
277 CNumerics *numerics,
278 CConfig *config,
279 unsigned short iMesh) final;
280
281 /*!
282 * \brief Compute primitive variables and their gradients.
283 * \param[in] geometry - Geometrical definition of the problem.
284 * \param[in] solver_container - Container vector with all the solutions.
285 * \param[in] config - Definition of the particular problem.
286 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
287 * \param[in] RunTime_EqSystem - System of equations which is going to be solved.
288 * \param[in] Output - boolean to determine whether to print output.
289 */
290 void Preprocessing(CGeometry *geometry,
291 CSolver **solver_container,
292 CConfig *config,
293 unsigned short iMesh,
294 unsigned short iRKStep,
295 unsigned short RunTime_EqSystem,
296 bool Output) override;
297
298 /*!
299 * \author H. Kline
300 * \brief Compute weighted-sum "combo" objective output
301 * \param[in] config - Definition of the particular problem.
302 * \param[in] solver - Container vector with all the solutions.
303 */
304 void Evaluate_ObjFunc(const CConfig *config, CSolver **solver) final {
306
307 if (config->GetWeakly_Coupled_Heat()) {
308 solver[HEAT_SOL]->Evaluate_ObjFunc(config, solver);
309 Total_ComboObj += solver[HEAT_SOL]->GetTotal_ComboObj();
310 }
311 }
312
313 /*!
314 * \brief Impose the far-field boundary condition using characteristics.
315 * \param[in] geometry - Geometrical definition of the problem.
316 * \param[in] solver_container - Container vector with all the solutions.
317 * \param[in] conv_numerics - Description of the numerical method.
318 * \param[in] visc_numerics - Description of the numerical method.
319 * \param[in] config - Definition of the particular problem.
320 * \param[in] val_marker - Surface marker where the boundary condition is applied.
321 */
322 void BC_Far_Field(CGeometry *geometry,
323 CSolver **solver_container,
324 CNumerics *conv_numerics,
325 CNumerics *visc_numerics,
326 CConfig *config,
327 unsigned short val_marker) final;
328
329 /*!
330 * \brief Impose a subsonic inlet boundary condition.
331 * \param[in] geometry - Geometrical definition of the problem.
332 * \param[in] solver_container - Container vector with all the solutions.
333 * \param[in] conv_numerics - Description of the numerical method.
334 * \param[in] visc_numerics - Description of the numerical method.
335 * \param[in] config - Definition of the particular problem.
336 * \param[in] val_marker - Surface marker where the boundary condition is applied.
337 */
338 void BC_Inlet(CGeometry *geometry,
339 CSolver **solver_container,
340 CNumerics *conv_numerics,
341 CNumerics *visc_numerics,
342 CConfig *config,
343 unsigned short val_marker) final;
344
345 /*!
346 * \brief Impose the outlet boundary condition.
347 * \param[in] geometry - Geometrical definition of the problem.
348 * \param[in] solver_container - Container vector with all the solutions.
349 * \param[in] conv_numerics - Description of the numerical method.
350 * \param[in] visc_numerics - Description of the numerical method.
351 * \param[in] config - Definition of the particular problem.
352 * \param[in] val_marker - Surface marker where the boundary condition is applied.
353 */
354 void BC_Outlet(CGeometry *geometry,
355 CSolver **solver_container,
356 CNumerics *conv_numerics,
357 CNumerics *visc_numerics,
358 CConfig *config,
359 unsigned short val_marker) final;
360
361 /*!
362 * \brief Update the solution using a Runge-Kutta scheme.
363 * \param[in] geometry - Geometrical definition of the problem.
364 * \param[in] solver_container - Container vector with all the solutions.
365 * \param[in] config - Definition of the particular problem.
366 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
367 */
368 void ExplicitRK_Iteration(CGeometry *geometry,
369 CSolver **solver_container,
370 CConfig *config,
371 unsigned short iRKStep) final;
372
373 /*!
374 * \brief Update the solution using the classical Runge-Kutta 4 scheme.
375 * \param[in] geometry - Geometrical definition of the problem.
376 * \param[in] solver_container - Container vector with all the solutions.
377 * \param[in] config - Definition of the particular problem.
378 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
379 */
380 void ClassicalRK4_Iteration(CGeometry *geometry,
381 CSolver **solver_container,
382 CConfig *config,
383 unsigned short iRKStep) final;
384
385 /*!
386 * \brief Update the solution using the explicit Euler scheme.
387 * \param[in] geometry - Geometrical definition of the problem.
388 * \param[in] solver_container - Container vector with all the solutions.
389 * \param[in] config - Definition of the particular problem.
390 */
391 void ExplicitEuler_Iteration(CGeometry *geometry,
392 CSolver **solver_container,
393 CConfig *config) final;
394
395 /*!
396 * \brief Prepare an implicit iteration.
397 * \param[in] geometry - Geometrical definition of the problem.
398 * \param[in] config - Definition of the particular problem.
399 */
400 void PrepareImplicitIteration(CGeometry *geometry, CSolver**, CConfig *config) final;
401
402 /*!
403 * \brief Set the total residual adding the term that comes from the Dual Time Strategy.
404 * \param[in] geometry - Geometrical definition of the problem.
405 * \param[in] solver_container - Container vector with all the solutions.
406 * \param[in] config - Definition of the particular problem.
407 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
408 * \param[in] iMesh - Index of the mesh in multigrid computations.
409 * \param[in] RunTime_EqSystem - System of equations which is going to be solved.
410 */
411 void SetResidual_DualTime(CGeometry *geometry,
412 CSolver **solver_container,
413 CConfig *config,
414 unsigned short iRKStep,
415 unsigned short iMesh,
416 unsigned short RunTime_EqSystem) final;
417
418 /*!
419 * \brief Load a solution from a restart file.
420 * \param[in] geometry - Geometrical definition of the problem.
421 * \param[in] solver - Container vector with all of the solvers.
422 * \param[in] config - Definition of the particular problem.
423 * \param[in] val_iter - Current external iteration number.
424 * \param[in] val_update_geo - Flag for updating coords and grid velocity.
425 */
426 void LoadRestart(CGeometry **geometry,
427 CSolver ***solver,
428 CConfig *config,
429 int val_iter,
430 bool val_update_geo) final;
431
432 /*!
433 * \brief Set the solution using the Freestream values.
434 * \param[in] config - Definition of the particular problem.
435 */
436 void SetFreeStream_Solution(const CConfig *config) final;
437
438 /*!
439 * \brief Print verification error to screen.
440 * \param[in] config - Definition of the particular problem.
441 */
442 void PrintVerificationError(const CConfig* config) const final;
443
444 /*!
445 * \brief The incompressible Euler and NS solvers support MPI+OpenMP.
446 */
447 inline bool GetHasHybridParallel() const final { return true; }
448
449 /*!
450 * \brief Get values for streamwise periodic flow: delta P, m_dot, inlet T, integrated heat, etc.
451 * \return Struct holding streamwise periodic values.
452 */
454
455 /*!
456 * \brief Register In- or Output.
457 * \param[in] input - Boolean whether In- or Output should be registered.
458 * \param[in] config - The particular config.
459 * \returns The number of extra variables.
460 */
461 unsigned long RegisterSolutionExtra(bool input, const CConfig* config) final;
462
463 /*!
464 * \brief Seed the adjoint of the extra solution at the output.
465 * \param[in] adj_sol - Vector containing the adjoint solution to seed.
466 * \param[in] config - The particular config.
467 */
468 void SetAdjoint_SolutionExtra(const su2activevector& adj_sol, const CConfig* config) final;
469
470 /*!
471 * \brief Extract the adjoint of the extra solution at the input.
472 * \param[out] adj_sol - Vector to store the adjoint into.
473 * \param[in] config - The particular config.
474 */
475 void ExtractAdjoint_SolutionExtra(su2activevector& adj_sol, const CConfig* config) final;
476
477 /*!
478 * \brief Compute the spatial integration using a centered scheme.
479 * \param[in] geometry - Geometrical definition of the problem.
480 * \param[in] solver_container - Container vector with all the solutions.
481 */
482 void ComputeEdgeMassFluxesRhieChow(CGeometry *geometry, CSolver **solver_container, CConfig *config) final;
483
484 /*!
485 * \brief Compute the spatial integration using a centered scheme.
486 * \param[in] geometry - Geometrical definition of the problem.
487 * \param[in] solver_container - Container vector with all the solutions.
488 * \param[in] config - Definition of the particular problem.
489 */
490 void ApplyPressureVelocityCorrection(CGeometry *geometry, CSolver **solver_container, CConfig *config) final;
491
492};
Base class template for all FVM flow solvers.
A templated matrix/vector-like object.
Definition C2DContainer.hpp:374
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
Definition CFVMFlowSolverBase.hpp:36
su2double EvaluateCommonObjFunc(const CConfig &config) const
Evaluate common part of objective function to all solvers.
Definition CFVMFlowSolverBase.inl:2811
Main class for defining the Thermo-Physical Model.
Definition CFluidModel.hpp:47
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition CGeometry.hpp:75
Main class for defining the incompressible Euler flow solver.
Definition CIncEulerSolver.hpp:39
void Explicit_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep)
Generic implementation of explicit iterations with preconditioner.
Definition CIncEulerSolver.cpp:2085
void SetResidual_DualTime(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep, unsigned short iMesh, unsigned short RunTime_EqSystem) final
Set the total residual adding the term that comes from the Dual Time Strategy.
Definition CIncEulerSolver.cpp:3105
void SetReferenceValues(const CConfig &config) final
Set reference values for pressure, forces, etc.
Definition CIncEulerSolver.cpp:970
void Source_Template(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short iMesh) final
Source term integration.
Definition CIncEulerSolver.cpp:2033
unsigned long RegisterSolutionExtra(bool input, const CConfig *config) final
Register In- or Output.
Definition CIncEulerSolver.cpp:3655
StreamwisePeriodicValues SPvalsUpdated
Definition CIncEulerSolver.hpp:42
void SetFreeStream_Solution(const CConfig *config) final
Set the solution using the Freestream values.
Definition CIncEulerSolver.cpp:3641
void SetMax_Eigenvalue(CGeometry *geometry, const CConfig *config)
Compute the max eigenvalue.
Definition CIncEulerSolver.cpp:2048
void ClassicalRK4_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) final
Update the solution using the classical Runge-Kutta 4 scheme.
Definition CIncEulerSolver.cpp:2125
void ExtractAdjoint_SolutionExtra(su2activevector &adj_sol, const CConfig *config) final
Extract the adjoint of the extra solution at the input.
Definition CIncEulerSolver.cpp:3672
void SetNondimensionalization(CConfig *config, unsigned short iMesh)
Set the solver nondimensionalization.
Definition CIncEulerSolver.cpp:260
~CIncEulerSolver(void) override
Destructor of the class.
Definition CIncEulerSolver.cpp:254
void SetRangePressure(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh)
Update the pressure range P_max - P_min for target mass flow rate.
Definition CIncEulerSolver.cpp:2222
CIncEulerSolver()=delete
void SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) final
Compute the time step for solving the Euler equations.
Definition CIncEulerSolver.cpp:1185
void PrepareImplicitIteration(CGeometry *geometry, CSolver **, CConfig *config) final
Prepare an implicit iteration.
Definition CIncEulerSolver.cpp:2138
void SetBeta_Parameter(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh)
Update the Beta parameter for the incompressible preconditioner.
Definition CIncEulerSolver.cpp:2180
void BC_Far_Field(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose the far-field boundary condition using characteristics.
Definition CIncEulerSolver.cpp:2372
void CorrectPressureGradient(su2double *corrected_grad_pressure, const su2double *avg_grad_pressure, const su2double val_pressure_i, const su2double val_pressure_j, const su2double *val_edge_vector, const su2double val_dist_ij_2)
Apply a correction to the pressure or pressure deviation gradient to align with the edges.
Definition CIncEulerSolver.cpp:3679
void LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) final
Load a solution from a restart file.
Definition CIncEulerSolver.cpp:3596
virtual unsigned long SetPrimitive_Variables(CSolver **solver_container, const CConfig *config)
Compute the velocity^2, SoundSpeed, Pressure, Enthalpy, Viscosity.
Definition CIncEulerSolver.cpp:1124
su2activevector EdgeMassFluxCorrection
Definition CIncEulerSolver.hpp:48
static void ComputeConsistentExtrapolation(CFluidModel *fluidModel, unsigned short nDim, const su2double *scalar, su2double *primitive)
Recompute the extrapolated quantities, after MUSCL reconstruction, in a more thermodynamically consis...
Definition CIncEulerSolver.cpp:1533
vector< CFluidModel * > FluidModel
fluid model used in the solver.
Definition CIncEulerSolver.hpp:41
void Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) final
Source term integration.
Definition CIncEulerSolver.cpp:1544
su2activematrix momentumCorrection
Definition CIncEulerSolver.hpp:47
StreamwisePeriodicValues GetStreamwisePeriodicValues() const final
Get values for streamwise periodic flow: delta P, m_dot, inlet T, integrated heat,...
Definition CIncEulerSolver.hpp:453
void ExplicitRK_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) final
Update the solution using a Runge-Kutta scheme.
Definition CIncEulerSolver.cpp:2118
void SetAdjoint_SolutionExtra(const su2activevector &adj_sol, const CConfig *config) final
Seed the adjoint of the extra solution at the output.
Definition CIncEulerSolver.cpp:3665
void Centered_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep) final
Compute the spatial integration using a centered scheme.
Definition CIncEulerSolver.cpp:1257
void SetCentered_Dissipation_Sensor(CGeometry *geometry, const CConfig *config)
Compute a pressure sensor switch.
Definition CIncEulerSolver.cpp:2069
StreamwisePeriodicValues SPvals
Definition CIncEulerSolver.hpp:42
bool pressure_based
Definition CIncEulerSolver.hpp:44
su2activevector pressureCorrection
Definition CIncEulerSolver.hpp:46
void Upwind_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) final
Compute the spatial integration using a upwind scheme.
Definition CIncEulerSolver.cpp:1363
bool GetHasHybridParallel() const final
The incompressible Euler and NS solvers support MPI+OpenMP.
Definition CIncEulerSolver.hpp:447
void ComputeEdgeMassFluxesRhieChow(CGeometry *geometry, CSolver **solver_container, CConfig *config) final
Compute the spatial integration using a centered scheme.
Definition CIncEulerSolver.cpp:3697
void Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) override
Compute primitive variables and their gradients.
Definition CIncEulerSolver.cpp:1075
void GetOutlet_Properties(CGeometry *geometry, CConfig *config, unsigned short iMesh, bool Output)
A virtual member.
Definition CIncEulerSolver.cpp:3343
void ApplyPressureVelocityCorrection(CGeometry *geometry, CSolver **solver_container, CConfig *config) final
Compute the spatial integration using a centered scheme.
Definition CIncEulerSolver.cpp:3787
void BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose a subsonic inlet boundary condition.
Definition CIncEulerSolver.cpp:2571
void CommonPreprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output)
Preprocessing actions common to the Euler and NS solvers.
Definition CIncEulerSolver.cpp:999
CFluidModel * GetFluidModel(void) const final
Compute the pressure at the infinity.
Definition CIncEulerSolver.hpp:194
su2activevector alpha_p
Definition CIncEulerSolver.hpp:45
void RecomputeDensity_time_n(CSolver **solver_container, const CConfig *config)
Recompute the dual-time density history (rho_n, rho_n-1) from the stored solution histories (Solution...
Definition CIncEulerSolver.cpp:1149
void PrintVerificationError(const CConfig *config) const final
Print verification error to screen.
Definition CIncEulerSolver.cpp:3555
void Evaluate_ObjFunc(const CConfig *config, CSolver **solver) final
Compute weighted-sum "combo" objective output.
Definition CIncEulerSolver.hpp:304
void SetPreconditioner(const CConfig *config, unsigned long iPoint, su2double delta, su2activematrix &preconditioner) const
Compute the preconditioner for low-Mach flows.
Definition CIncEulerSolver.cpp:2259
void ExplicitEuler_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config) final
Update the solution using the explicit Euler scheme.
Definition CIncEulerSolver.cpp:2132
void BC_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose the outlet boundary condition.
Definition CIncEulerSolver.cpp:2879
Class for defining the numerical methods.
Definition CNumerics.hpp:48
Definition CSolver.hpp:71
unsigned short nDim
Number of dimensions of the problem.
Definition CSolver.hpp:90
su2double Total_ComboObj
Total 'combo' objective for all monitored boundaries.
Definition CSolver.hpp:108
passivedouble su2double
Definition code_config.hpp:181
constexpr int omp_get_thread_num()
Index of current thread, akin to MPI rank.
Definition omp_structure.hpp:85
@ HEAT_SOL
Position of the heat equation in the solution solver array.
Definition option_structure.hpp:582
Container to hold Variables for streamwise Periodic flow as they are often used together in places.
Definition option_structure.hpp:3003