Documentation 6b54b78464
Loading...
Searching...
No Matches
CEulerSolver.hpp
Go to the documentation of this file.
1/*!
2 * \file CEulerSolver.hpp
3 * \brief Headers of the CEulerSolver class
4 * \author F. Palacios, T. Economon
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/CEulerVariable.hpp"
32#include "../output/CTurboOutput.hpp"
33
34/*!
35 * \class CEulerSolver
36 * \ingroup Euler_Equations
37 * \brief Class for compressible inviscid flow problems, serves as base for Navier-Stokes/RANS.
38 * \author F. Palacios
39 */
40class CEulerSolver : public CFVMFlowSolverBase<CEulerVariable, ENUM_REGIME::COMPRESSIBLE> {
41protected:
43
45 Prandtl_Turb = 0.0; /*!< \brief Turbulent Prandtl number. */
46
47 su2double AllBound_CEquivArea_Inv=0.0; /*!< \brief equivalent area coefficient (inviscid contribution) for all the boundaries. */
48 vector<su2double> CEquivArea_Mnt; /*!< \brief Equivalent area (inviscid contribution) for each boundary. */
49 vector<su2double> CEquivArea_Inv; /*!< \brief Equivalent area (inviscid contribution) for each boundary. */
50
51 vector<su2double> Inflow_MassFlow; /*!< \brief Mass flow rate for each boundary. */
52 vector<su2double> Exhaust_MassFlow; /*!< \brief Mass flow rate for each boundary. */
53 vector<su2double> Inflow_Pressure; /*!< \brief Fan face pressure for each boundary. */
54 vector<su2double> Inflow_Mach; /*!< \brief Fan face mach number for each boundary. */
55 vector<su2double> Inflow_Area; /*!< \brief Boundary total area. */
56 vector<su2double> Exhaust_Area; /*!< \brief Boundary total area. */
57 vector<su2double> Exhaust_Pressure; /*!< \brief Fan face pressure for each boundary. */
58 vector<su2double> Exhaust_Temperature; /*!< \brief Fan face mach number for each boundary. */
60 Inflow_MassFlow_Total = 0.0, /*!< \brief Mass flow rate for each boundary. */
61 Exhaust_MassFlow_Total = 0.0, /*!< \brief Mass flow rate for each boundary. */
62 Inflow_Pressure_Total = 0.0, /*!< \brief Fan face pressure for each boundary. */
63 Inflow_Mach_Total = 0.0, /*!< \brief Fan face mach number for each boundary. */
64 InverseDesign = 0.0; /*!< \brief Inverse design functional for each boundary. */
65 vector<vector<unsigned long> > DonorGlobalIndex; /*!< \brief Value of the donor global index. */
66 vector<su2activematrix> DonorPrimVar; /*!< \brief Value of the donor variables at each boundary. */
67 vector<vector<su2double> > ActDisk_DeltaP; /*!< \brief Value of the Delta P. */
68 vector<vector<su2double> > ActDisk_DeltaP_r; /*!< \brief Value of the DeltaP_r. */
69 vector<vector<su2double> > ActDisk_Thrust_r; /*!< \brief Value of the Thrust_r. */
70 vector<vector<su2double> > ActDisk_Torque_r; /*!< \brief Value of the Torque_r. */
71 vector<vector<su2double> > ActDisk_DeltaT; /*!< \brief Value of the Delta T. */
72
74 ActDisk_R; /*!< \brief Value of the actuator disk Radius. */
76 ActDisk_C, /*!< \brief Value of the actuator disk Center. */
77 ActDisk_Axis; /*!< \brief Value of the actuator disk Axis. */
78 vector<vector<su2double> > ActDisk_Fa; /*!< \brief Value of the actuator disk Axial Force per Unit Area. */
79 vector<vector<su2double> > ActDisk_Fx; /*!< \brief Value of the actuator disk X component of the radial and tangential forces per Unit Area resultant. */
80 vector<vector<su2double> > ActDisk_Fy; /*!< \brief Value of the actuator disk Y component of the radial and tangential forces per Unit Area resultant. */
81 vector<vector<su2double> > ActDisk_Fz; /*!< \brief Value of the actuator disk Z component of the radial and tangential forces per Unit Area resultant. */
82 vector<vector<su2double> > ActDisk_Fa_BEM; /*!< \brief Value of the actuator disk Axial Force per Unit Area. */
83 vector<vector<su2double> > ActDisk_Fx_BEM; /*!< \brief Value of the actuator disk X component of the radial and tangential forces per Unit Area resultant. */
84 vector<vector<su2double> > ActDisk_Fy_BEM; /*!< \brief Value of the actuator disk Y component of the radial and tangential forces per Unit Area resultant. */
85 vector<vector<su2double> > ActDisk_Fz_BEM; /*!< \brief Value of the actuator disk Z component of the radial and tangential forces per Unit Area resultant. */
86
88 Total_CL_Prev = 0.0, /*!< \brief Total lift coefficient for all the boundaries (fixed lift mode). */
89 Total_SolidCD = 0.0, /*!< \brief Total drag coefficient for all the boundaries. */
90 Total_CD_Prev = 0.0, /*!< \brief Total drag coefficient for all the boundaries (fixed lift mode). */
91 Total_NetThrust = 0.0, /*!< \brief Total drag coefficient for all the boundaries. */
92 Total_Power = 0.0, /*!< \brief Total drag coefficient for all the boundaries. */
93 Total_ReverseFlow = 0.0, /*!< \brief Total drag coefficient for all the boundaries. */
94 Total_IDC = 0.0, /*!< \brief Total IDC coefficient for all the boundaries. */
95 Total_IDC_Mach = 0.0, /*!< \brief Total IDC coefficient for all the boundaries. */
96 Total_IDR = 0.0, /*!< \brief Total IDC coefficient for all the boundaries. */
97 Total_DC60 = 0.0, /*!< \brief Total IDC coefficient for all the boundaries. */
98 Total_MFR = 0.0, /*!< \brief Total Mass Flow Ratio for all the boundaries. */
99 Total_Prop_Eff = 0.0, /*!< \brief Total Mass Flow Ratio for all the boundaries. */
100 Total_ByPassProp_Eff = 0.0, /*!< \brief Total Mass Flow Ratio for all the boundaries. */
101 Total_Adiab_Eff = 0.0, /*!< \brief Total Mass Flow Ratio for all the boundaries. */
102 Total_Poly_Eff = 0.0, /*!< \brief Total Mass Flow Ratio for all the boundaries. */
103 Total_CMx_Prev = 0.0, /*!< \brief Total drag coefficient for all the boundaries (fixed lift mode). */
104 Total_CMy_Prev = 0.0, /*!< \brief Total drag coefficient for all the boundaries (fixed lift mode). */
105 Total_CMz_Prev = 0.0, /*!< \brief Total drag coefficient for all the boundaries (fixed lift mode). */
106 Total_AeroCD = 0.0, /*!< \brief Total aero drag coefficient for all the boundaries. */
107 Total_CEquivArea = 0.0; /*!< \brief Total Equivalent Area coefficient for all the boundaries. */
108
109 su2double AoA_Prev, /*!< \brief Old value of the angle of attack (monitored). */
111 bool Start_AoA_FD = false, /*!< \brief Boolean for start of finite differencing for FixedCL mode */
112 End_AoA_FD = false, /*!< \brief Boolean for end of finite differencing for FixedCL mode */
113 Update_AoA = false; /*!< \brief Boolean to signal Angle of Attack Update */
114 unsigned long Iter_Update_AoA = 0; /*!< \brief Iteration at which AoA was updated last */
115 su2double dCL_dAlpha; /*!< \brief Value of dCL_dAlpha used to control CL in fixed CL mode */
116 unsigned long BCThrust_Counter;
117
118 vector<CFluidModel*> FluidModel; /*!< \brief fluid model used in the solver. */
119
120 /*!< \brief Variables for outlier detection. */
122
123 /*--- Turbomachinery Solver Variables ---*/
124
125 vector<su2activematrix> AverageFlux;
126 vector<su2activematrix> SpanTotalFlux;
127 vector<su2activematrix> AverageVelocity;
128 vector<su2activematrix> AverageTurboVelocity;
129 vector<su2activematrix> OldAverageTurboVelocity;
140
143 vector<su2activematrix> TurboVelocityIn;
146 vector<su2activematrix> TurboVelocityOut;
155
159
160 vector<su2matrix<complex<su2double> > > CkInflow, CkOutflow1, CkOutflow2;
161
162 static constexpr unsigned short nMixingStateVars = 8; /*!< \brief Number of averaged variables transferred across mixing plane interfaces. */
163 vector<su2activematrix> MixingState; /*<! \brief Donor-side averaged state recieved at each mixing plane interface */
164
165 /*--- End of Turbomachinery Solver Variables ---*/
166
167 inline su2double GetTangGridVelIn(unsigned short val_blade, unsigned long val_span) {
168 return TurboVelocityIn[val_blade][val_span][1] - RelTangVelocityIn[val_blade][val_span];
169 }
170
171 inline su2double GetTangGridVelOut(unsigned short val_blade, unsigned long val_span) {
172 return TurboVelocityOut[val_blade][val_span][1] - RelTangVelocityOut[val_blade][val_span];
173 }
174
175 /*!
176 * \brief Get a component of the donor-side averaged state at a mixing plane interface
177 * \param[in] val_marker - marker index
178 * \param[in] val_span - span index
179 * \param[in] val_state - requested state component
180 */
181 inline su2double GetMixingState(unsigned short val_marker,
182 unsigned long val_span,
183 unsigned short val_state
184 // unsigned long donor_index
185 ) const final {
186 return MixingState[val_marker][val_span][val_state];
187 }
188
189 /*!
190 * \brief Set a component of the donor-side averaged state at a mixing plane interface nodes.
191 * \param[in] val_marker - marker index
192 * \param[in] val_span - span index
193 * \param[in] val_state - state component to set
194 * \param[in] component - value to set
195 */
196 inline void SetMixingState(unsigned short val_marker,
197 unsigned long val_span,
198 unsigned short val_state,
199 // unsigned long donor_index,
200 su2double component) final {
201 MixingState[val_marker][val_span][val_state] = component;
202 }
203
204 /*!
205 * \brief Preprocessing actions common to the Euler and NS solvers.
206 * \param[in] geometry - Geometrical definition of the problem.
207 * \param[in] solver_container - Container vector with all the solutions.
208 * \param[in] config - Definition of the particular problem.
209 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
210 * \param[in] RunTime_EqSystem - System of equations which is going to be solved.
211 * \param[in] Output - boolean to determine whether to print output.
212 */
213 void CommonPreprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh,
214 unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output);
215
216 /*!
217 * \brief Update the AoA and freestream velocity at the farfield.
218 * \param[in] geometry - Geometrical definition of the problem.
219 * \param[in] solver_container - Container vector with all the solutions.
220 * \param[in] config - Definition of the particular problem.
221 * \param[in] iMesh - current mesh level for the multigrid.
222 * \param[in] Output - boolean to determine whether to print output.
223 */
224 void SetFarfield_AoA(CGeometry *geometry, CSolver **solver_container,
225 CConfig *config, unsigned short iMesh, bool Output);
226
227 /*!
228 * \brief Compute Ducros Sensor for Roe Dissipation.
229 * \param[in] geometry - Geometrical definition of the problem.
230 * \param[in] solver_container - Container vector with all the solutions.
231 * \param[in] config - Definition of the particular problem.
232 */
233 void SetUpwind_Ducros_Sensor(CGeometry *geometry, CConfig *config);
234
235 /*!
236 * \brief Compute the Fan face Mach number.
237 * \param[in] geometry - Geometrical definition of the problem.
238 * \param[in] solution - Container vector with all the solutions.
239 */
240 void GetPower_Properties(CGeometry *geometry, CConfig *config,
241 unsigned short iMesh, bool Output);
242
243 /*!
244 * \brief Parallelization of Undivided Laplacian.
245 * \param[in] geometry - Geometrical definition of the problem.
246 * \param[in] config - Definition of the particular problem.
247 */
248 void Set_MPI_ActDisk(CSolver **solver_container, CGeometry *geometry, CConfig *config);
249
250 /*!
251 * \brief Update the AoA and freestream velocity at the farfield.
252 * \param[in] geometry - Geometrical definition of the problem.
253 * \param[in] solver_container - Container vector with all the solutions.
254 * \param[in] config - Definition of the particular problem.
255 * \param[in] iMesh - current mesh level for the multigrid.
256 * \param[in] Output - boolean to determine whether to print output.
257 */
258 void SetActDisk_BCThrust(CGeometry *geometry, CSolver **solver_container,
259 CConfig *config, unsigned short iMesh, bool Output);
260
261 /*!
262 * \brief Read the actuator disk input file for the VARIABLE_LOAD type.
263 * \param[in] geometry - Geometrical definition of the problem.
264 * \param[in] solver_container - Container vector with all the solutions.
265 * \param[in] config - Definition of the particular problem.
266 * \param[in] iMesh - current mesh level for the multigrid.
267 * \param[in] Output - boolean to determine whether to print output.
268 */
269 void ReadActDisk_InputFile(CGeometry *geometry, CSolver **solver_container,
270 CConfig *config, unsigned short iMesh, bool Output);
271
272 /*!
273 * \author: Chandukrishna Y., T. N. Venkatesh and Josy P. Pullockara
274 * \brief Read and update the variable load actuator disk from input file for the BLADE_ELEMENT type.
275 * \param[in] geometry - Geometrical definition of the problem.
276 * \param[in] solver_container - Container vector with all the solutions.
277 * \param[in] config - Definition of the particular problem.
278 * \param[in] iMesh - current mesh level for the multigrid.
279 * \param[in] Output - boolean to determine whether to print output.
280 */
281 void SetActDisk_BEM_VLAD(CGeometry *geometry, CSolver **solver_container,
282 CConfig *config, unsigned short iMesh, bool Output);
283
284 /*!
285 * \brief Compute the max eigenvalue.
286 * \param[in] geometry - Geometrical definition of the problem.
287 * \param[in] config - Definition of the particular problem.
288 */
289 void SetMax_Eigenvalue(CGeometry *geometry, const CConfig *config);
290
291 /*!
292 * \brief Compute the undivided laplacian for the solution.
293 * \param[in] geometry - Geometrical definition of the problem.
294 * \param[in] config - Definition of the particular problem.
295 */
296 void SetUndivided_Laplacian(CGeometry *geometry, const CConfig *config);
297
298 /*!
299 * \brief Compute the dissipation sensor for centered schemes.
300 * \param[in] geometry - Geometrical definition of the problem.
301 * \param[in] config - Definition of the particular problem.
302 */
303 void SetCentered_Dissipation_Sensor(CGeometry *geometry, const CConfig *config);
304
305 /*!
306 * \brief A virtual member.
307 * \param[in] geometry - Geometrical definition.
308 * \param[in] config - Definition of the particular problem.
309 */
310 inline virtual void SetRoe_Dissipation(CGeometry *geometry, CConfig *config) { }
311
312 /*!
313 * \brief Compute the velocity^2, SoundSpeed, Pressure, Enthalpy, Viscosity.
314 * \param[in] solver_container - Container vector with all the solutions.
315 * \param[in] config - Definition of the particular problem.
316 * \return - The number of non-physical points.
317 */
318 virtual unsigned long SetPrimitive_Variables(CSolver **solver_container,
319 const CConfig *config);
320
321 /*!
322 * \brief Set gradients of coefficients for fixed CL mode
323 * \param[in] config - Definition of the particular problem.
324 */
325 void SetCoefficient_Gradients(CConfig *config) const;
326
327 /*!
328 * \brief Instantiate a SIMD numerics object.
329 * \param[in] solvers - Container vector with all the solutions.
330 * \param[in] config - Definition of the particular problem.
331 */
332 void InstantiateEdgeNumerics(const CSolver* const* solvers, const CConfig* config) final;
333
334 /*!
335 * \brief Set the solver nondimensionalization.
336 * \param[in] config - Definition of the particular problem.
337 * \param[in] iMesh - Index of the mesh in multigrid computations.
338 */
339 void SetNondimensionalization(CConfig *config, unsigned short iMesh);
340
341 /*!
342 * \brief Set reference values for pressure, forces, etc.
343 */
344 void SetReferenceValues(const CConfig& config) final;
345
346public:
347 CEulerSolver() = delete;
348
349 /*!
350 * \brief Main constructor of this class.
351 * \param[in] geometry - Geometrical definition of the problem.
352 * \param[in] config - Definition of the particular problem.
353 * \param[in] iMesh - Grid level.
354 * \param[in] navier_stokes - True when the constructor is called by the derived class CNSSolver.
355 */
356 CEulerSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh, const bool navier_stokes = false);
357
358 /*!
359 * \brief Destructor of the class.
360 */
361 ~CEulerSolver(void) override;
362
363 /*!
364 * \brief Compute the pressure at the infinity.
365 * \return Value of the pressure at the infinity.
366 */
367 inline CFluidModel* GetFluidModel(void) const final { return FluidModel[omp_get_thread_num()]; }
368
369 /*!
370 * \brief Compute the time step for solving the Euler equations.
371 * \param[in] geometry - Geometrical definition of the problem.
372 * \param[in] solver_container - Container vector with all the solutions.
373 * \param[in] config - Definition of the particular problem.
374 * \param[in] iMesh - Index of the mesh in multigrid computations.
375 * \param[in] Iteration - Value of the current iteration.
376 */
377 void SetTime_Step(CGeometry *geometry,
378 CSolver **solver_container,
379 CConfig *config,
380 unsigned short iMesh,
381 unsigned long Iteration) final;
382
383 /*!
384 * \brief Compute the spatial integration using a centered scheme.
385 * \param[in] geometry - Geometrical definition of the problem.
386 * \param[in] solver_container - Container vector with all the solutions.
387 * \param[in] numerics_container - Description of the numerical method.
388 * \param[in] config - Definition of the particular problem.
389 * \param[in] iMesh - Index of the mesh in multigrid computations.
390 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
391 */
392 void Centered_Residual(CGeometry *geometry,
393 CSolver **solver_container,
394 CNumerics **numerics_container,
395 CConfig *config,
396 unsigned short iMesh,
397 unsigned short iRKStep) final;
398
399 /*!
400 * \brief Compute the spatial integration using a upwind scheme.
401 * \param[in] geometry - Geometrical definition of the problem.
402 * \param[in] solver_container - Container vector with all the solutions.
403 * \param[in] numerics_container - Description of the numerical method.
404 * \param[in] config - Definition of the particular problem.
405 * \param[in] iMesh - Index of the mesh in multigrid computations.
406 */
407 void Upwind_Residual(CGeometry *geometry,
408 CSolver **solver_container,
409 CNumerics **numerics_container,
410 CConfig *config,
411 unsigned short iMesh) final;
412
413 /*!
414 * \brief Recompute the extrapolated quantities, after MUSCL reconstruction,
415 * in a more thermodynamically consistent way.
416 * \note This method is static to improve the chances of it being used in a
417 * thread-safe manner.
418 * \param[in,out] fluidModel - The fluid model.
419 * \param[in] nDim - Number of physical dimensions.
420 * \param[in,out] primitive - Primitive variables.
421 * \param[out] secondary - Secondary variables.
422 */
423 static void ComputeConsistentExtrapolation(CFluidModel *fluidModel,
424 unsigned short nDim,
425 su2double *primitive,
426 su2double *secondary);
427
428 /*!
429 * \brief Apply low Mach number correction to the primitives at two points,
430 * usually connected by an edge.
431 * \note This method is static to improve the chances of it being used in a
432 * thread-safe manner.
433 * \param[in,out] fluidModel - The fluid model.
434 * \param[in] nDim - Number of physical dimensions.
435 * \param[in,out] primitive_i - Primitive variables at point i.
436 * \param[in,out] primitive_j - Primitive variables at point j.
437 */
438 static void LowMachPrimitiveCorrection(CFluidModel *fluidModel,
439 unsigned short nDim,
440 su2double *primitive_i,
441 su2double *primitive_j);
442
443 /*!
444 * \brief Source term integration.
445 * \param[in] geometry - Geometrical definition of the problem.
446 * \param[in] solver_container - Container vector with all the solutions.
447 * \param[in] numerics_container - Description of the numerical method.
448 * \param[in] config - Definition of the particular problem.
449 * \param[in] iMesh - Index of the mesh in multigrid computations.
450 */
451 void Source_Residual(CGeometry *geometry,
452 CSolver **solver_container,
453 CNumerics **numerics_container,
454 CConfig *config,
455 unsigned short iMesh) override;
456
457 /*!
458 * \brief Source term integration.
459 * \param[in] geometry - Geometrical definition of the problem.
460 * \param[in] solver_container - Container vector with all the solutions.
461 * \param[in] numerics - Description of the numerical method.
462 * \param[in] config - Definition of the particular problem.
463 * \param[in] iMesh - Index of the mesh in multigrid computations.
464 */
465 void Source_Template(CGeometry *geometry,
466 CSolver **solver_container,
467 CNumerics *numerics,
468 CConfig *config,
469 unsigned short iMesh) final;
470
471 /*!
472 * \brief Compute primitive variables and their gradients.
473 * \param[in] geometry - Geometrical definition of the problem.
474 * \param[in] solver_container - Container vector with all the solutions.
475 * \param[in] config - Definition of the particular problem.
476 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
477 * \param[in] RunTime_EqSystem - System of equations which is going to be solved.
478 * \param[in] Output - boolean to determine whether to print output.
479 */
480 void Preprocessing(CGeometry *geometry,
481 CSolver **solver_container,
482 CConfig *config,
483 unsigned short iMesh,
484 unsigned short iRKStep,
485 unsigned short RunTime_EqSystem,
486 bool Output) override;
487
488 /*!
489 * \brief Compute the preconditioner for convergence acceleration by Roe-Turkel method.
490 * \param[in] config - Definition of the particular problem.
491 * \param[in] iPoint - Index of the grid point.
492 * \param[in] delta - Volume over delta t.
493 * \param[in,out] preconditioner - The preconditioner matrix, must be allocated outside.
494 */
495 void SetPreconditioner(const CConfig *config, unsigned long iPoint,
496 su2double delta, su2activematrix& preconditioner) const;
497
498 /*!
499 * \author H. Kline
500 * \brief Compute weighted-sum "combo" objective output
501 * \param[in] config - Definition of the particular problem.
502 * \param[in] solver - Container vector with all the solutions.
503 */
504 void Evaluate_ObjFunc(const CConfig *config, CSolver **solver) override;
505
506 /*!
507 * \brief Impose the far-field boundary condition using characteristics.
508 * \param[in] geometry - Geometrical definition of the problem.
509 * \param[in] solver_container - Container vector with all the solutions.
510 * \param[in] conv_numerics - Description of the numerical method.
511 * \param[in] visc_numerics - Description of the numerical method.
512 * \param[in] config - Definition of the particular problem.
513 * \param[in] val_marker - Surface marker where the boundary condition is applied.
514 */
515 void BC_Far_Field(CGeometry *geometry,
516 CSolver **solver_container,
517 CNumerics *conv_numerics,
518 CNumerics *visc_numerics,
519 CConfig *config,
520 unsigned short val_marker) final;
521
522 /*!
523 * \brief Impose the engine inflow boundary condition.
524 * \param[in] geometry - Geometrical definition of the problem.
525 * \param[in] solver_container - Container vector with all the solutions.
526 * \param[in] conv_numerics - Description of the numerical method.
527 * \param[in] visc_numerics - Description of the numerical method.
528 * \param[in] config - Definition of the particular problem.
529 * \param[in] val_marker - Surface marker where the boundary condition is applied.
530 */
531 void BC_ActDisk_Inlet(CGeometry *geometry,
532 CSolver **solver_container,
533 CNumerics *conv_numerics,
534 CNumerics *visc_numerics,
535 CConfig *config,
536 unsigned short val_marker) final;
537
538 /*!
539 * \brief Impose the engine exhaust boundary condition.
540 * \param[in] geometry - Geometrical definition of the problem.
541 * \param[in] solver_container - Container vector with all the solutions.
542 * \param[in] conv_numerics - Description of the numerical method.
543 * \param[in] visc_numerics - Description of the numerical method.
544 * \param[in] config - Definition of the particular problem.
545 * \param[in] val_marker - Surface marker where the boundary condition is applied.
546 */
547 void BC_ActDisk_Outlet(CGeometry *geometry,
548 CSolver **solver_container,
549 CNumerics *conv_numerics,
550 CNumerics *visc_numerics,
551 CConfig *config,
552 unsigned short val_marker) final;
553
554 /*!
555 * \brief Impose an actuator disk inlet boundary condition.
556 * \param[in] geometry - Geometrical definition of the problem.
557 * \param[in] solver_container - Container vector with all the solutions.
558 * \param[in] conv_numerics - Description of the numerical method.
559 * \param[in] visc_numerics - Description of the numerical method.
560 * \param[in] config - Definition of the particular problem.
561 * \param[in] val_marker - Surface marker where the boundary condition is applied.
562 * \param[in] val_inlet_surface - Boolean for whether val_marker is an inlet
563 */
564 void BC_ActDisk(CGeometry *geometry,
565 CSolver **solver_container,
566 CNumerics *conv_numerics,
567 CNumerics *visc_numerics,
568 CConfig *config,
569 unsigned short val_marker,
570 bool val_inlet_surface) final;
571
572 /*!
573 * \brief Impose an actuator disk with variable load boundary condition.
574 * \param[in] geometry - Geometrical definition of the problem.
575 * \param[in] solver_container - Container vector with all the solutions.
576 * \param[in] conv_numerics - Description of the numerical method.
577 * \param[in] visc_numerics - Description of the numerical method.
578 * \param[in] config - Definition of the particular problem.
579 * \param[in] val_marker - Surface marker where the boundary condition is applied.
580 * \param[in] val_inlet_surface - Boolean for whether val_marker is an inlet
581 */
582 void BC_ActDisk_VariableLoad(CGeometry *geometry,
583 CSolver **solver_container,
584 CNumerics *conv_numerics,
585 CNumerics *visc_numerics,
586 CConfig *config,
587 unsigned short val_marker,
588 bool val_inlet_surface);
589
590 /*!
591 * \author: G.Gori, S.Vitale, M.Pini, A.Guardone, P.Colonna
592 *
593 * \brief Impose the boundary condition using characteristic recostruction.
594 * \param[in] geometry - Geometrical definition of the problem.
595 * \param[in] solver_container - Container vector with all the solutions.
596 * \param[in] conv_numerics - Description of the numerical method.
597 * \param[in] visc_numerics - Description of the numerical method.
598 * \param[in] config - Definition of the particular problem.
599 * \param[in] val_marker - Surface marker where the boundary condition is applied.
600 */
601 void BC_Riemann(CGeometry *geometry,
602 CSolver **solver_container,
603 CNumerics *conv_numerics,
604 CNumerics *visc_numerics,
605 CConfig *config,
606 unsigned short val_marker) final;
607
608 /*!
609 * \brief Impose the boundary condition using characteristic recostruction.
610 * \param[in] geometry - Geometrical definition of the problem.
611 * \param[in] solver_container - Container vector with all the solutions.
612 * \param[in] conv_numerics - Description of the numerical method.
613 * \param[in] visc_numerics - Description of the numerical method.
614 * \param[in] config - Definition of the particular problem.
615 * \param[in] val_marker - Surface marker where the boundary condition is applied.
616 */
617 void BC_TurboRiemann(CGeometry *geometry,
618 CSolver **solver_container,
619 CNumerics *conv_numerics,
620 CNumerics *visc_numerics,
621 CConfig *config,
622 unsigned short val_marker) final;
623
624 /*!
625 * \brief It computes Fourier transformation for the needed quantities along the pitch for each span in turbomachinery analysis.
626 * \param[in] geometry - Geometrical definition of the problem.
627 * \param[in] solver_container - Container vector with all the solutions.
628 * \param[in] config - Definition of the particular problem.
629 * \param[in] marker_flag - Surface marker flag where the function is applied.
630 */
631 void PreprocessBC_Giles(CGeometry *geometry,
632 CConfig *config,
633 CNumerics *conv_numerics,
634 unsigned short marker_flag) final;
635
636 /*!
637 * \author: G.Gori, S.Vitale, M.Pini, A.Guardone, P.Colonna
638 *
639 * \brief Impose the boundary condition using characteristic recostruction.
640 * \param[in] geometry - Geometrical definition of the problem.
641 * \param[in] solver_container - Container vector with all the solutions.
642 * \param[in] conv_numerics - Description of the numerical method.
643 * \param[in] visc_numerics - Description of the numerical method.
644 * \param[in] config - Definition of the particular problem.
645 * \param[in] val_marker - Surface marker where the boundary condition is applied.
646 */
647 void BC_Giles(CGeometry *geometry,
648 CSolver **solver_container,
649 CNumerics *conv_numerics,
650 CNumerics *visc_numerics,
651 CConfig *config,
652 unsigned short val_marker) final;
653
654 /*!
655 * \brief Impose a subsonic inlet boundary condition.
656 * \param[in] geometry - Geometrical definition of the problem.
657 * \param[in] solver_container - Container vector with all the solutions.
658 * \param[in] conv_numerics - Description of the numerical method.
659 * \param[in] visc_numerics - Description of the numerical method.
660 * \param[in] config - Definition of the particular problem.
661 * \param[in] val_marker - Surface marker where the boundary condition is applied.
662 */
663 void BC_Inlet(CGeometry *geometry,
664 CSolver **solver_container,
665 CNumerics *conv_numerics,
666 CNumerics *visc_numerics,
667 CConfig *config,
668 unsigned short val_marker) final;
669
670 /*!
671 * \brief Impose a supersonic inlet boundary condition.
672 * \param[in] geometry - Geometrical definition of the problem.
673 * \param[in] solver_container - Container vector with all the solutions.
674 * \param[in] conv_numerics - Description of the numerical method.
675 * \param[in] visc_numerics - Description of the numerical method.
676 * \param[in] config - Definition of the particular problem.
677 * \param[in] val_marker - Surface marker where the boundary condition is applied.
678 */
679 void BC_Supersonic_Inlet(CGeometry *geometry,
680 CSolver **solver_container,
681 CNumerics *conv_numerics,
682 CNumerics *visc_numerics,
683 CConfig *config,
684 unsigned short val_marker) final;
685
686 /*!
687 * \brief Impose a supersonic outlet boundary condition.
688 * \param[in] geometry - Geometrical definition of the problem.
689 * \param[in] solver_container - Container vector with all the solutions.
690 * \param[in] conv_numerics - Description of the numerical method.
691 * \param[in] visc_numerics - Description of the numerical method.
692 * \param[in] config - Definition of the particular problem.
693 * \param[in] val_marker - Surface marker where the boundary condition is applied.
694 */
695 void BC_Supersonic_Outlet(CGeometry *geometry,
696 CSolver **solver_container,
697 CNumerics *conv_numerics,
698 CNumerics *visc_numerics,
699 CConfig *config,
700 unsigned short val_marker) final;
701
702 /*!
703 * \brief Impose the outlet boundary condition.
704 * \param[in] geometry - Geometrical definition of the problem.
705 * \param[in] solver_container - Container vector with all the solutions.
706 * \param[in] conv_numerics - Description of the numerical method.
707 * \param[in] visc_numerics - Description of the numerical method.
708 * \param[in] config - Definition of the particular problem.
709 * \param[in] val_marker - Surface marker where the boundary condition is applied.
710 */
711 void BC_Outlet(CGeometry *geometry,
712 CSolver **solver_container,
713 CNumerics *conv_numerics,
714 CNumerics *visc_numerics,
715 CConfig *config,
716 unsigned short val_marker) final;
717
718 /*!
719 * \brief Impose the nacelle inflow boundary condition.
720 * \param[in] geometry - Geometrical definition of the problem.
721 * \param[in] solver_container - Container vector with all the solutions.
722 * \param[in] conv_numerics - Description of the numerical method.
723 * \param[in] visc_numerics - Description of the numerical method.
724 * \param[in] config - Definition of the particular problem.
725 * \param[in] val_marker - Surface marker where the boundary condition is applied.
726 */
727 void BC_Engine_Inflow(CGeometry *geometry,
728 CSolver **solver_container,
729 CNumerics *conv_numerics,
730 CNumerics *visc_numerics,
731 CConfig *config,
732 unsigned short val_marker) final;
733
734 /*!
735 * \brief Impose the ancelle exhaust boundary condition.
736 * \param[in] geometry - Geometrical definition of the problem.
737 * \param[in] solver_container - Container vector with all the solutions.
738 * \param[in] conv_numerics - Description of the numerical method.
739 * \param[in] visc_numerics - Description of the numerical method.
740 * \param[in] config - Definition of the particular problem.
741 * \param[in] val_marker - Surface marker where the boundary condition is applied.
742 */
743 void BC_Engine_Exhaust(CGeometry *geometry,
744 CSolver **solver_container,
745 CNumerics *conv_numerics,
746 CNumerics *visc_numerics,
747 CConfig *config,
748 unsigned short val_marker) final;
749
750 /*!
751 * \brief Update the solution using a Runge-Kutta scheme.
752 * \param[in] geometry - Geometrical definition of the problem.
753 * \param[in] solver_container - Container vector with all the solutions.
754 * \param[in] config - Definition of the particular problem.
755 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
756 */
757 void ExplicitRK_Iteration(CGeometry *geometry,
758 CSolver **solver_container,
759 CConfig *config,
760 unsigned short iRKStep) final;
761
762 /*!
763 * \brief Update the solution using the classical fourth-order Runge-Kutta scheme.
764 * \param[in] geometry - Geometrical definition of the problem.
765 * \param[in] solver_container - Container vector with all the solutions.
766 * \param[in] config - Definition of the particular problem.
767 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
768 */
769 void ClassicalRK4_Iteration(CGeometry *geometry,
770 CSolver **solver_container,
771 CConfig *config,
772 unsigned short iRKStep) final;
773
774 /*!
775 * \brief Check for convergence of the Fixed CL mode to the target CL
776 * \param[in] config - Definition of the particular problem.
777 * \param[in] convergence - boolean for whether the solution is converged
778 * \return boolean for whether the Fixed CL mode is converged to target CL
779 */
780 bool FixedCL_Convergence(CConfig *config, bool convergence) final;
781
782 /*!
783 * \brief Checking whether fixed CL mode in finite-differencing mode
784 * \return boolean for whether the Fixed CL mode is currently in finite-differencing mode
785 */
786 inline bool GetStart_AoA_FD(void) const final { return Start_AoA_FD; }
787
788 /*!
789 * \brief Checking whether fixed CL mode in finite-differencing mode
790 * \return boolean for whether the Fixed CL mode is currently in finite-differencing mode
791 */
792 inline bool GetEnd_AoA_FD(void) const final { return End_AoA_FD; }
793
794 /*!
795 * \brief Get the iteration of the last AoA update (Fixed CL Mode)
796 * \return value for the last iteration that the AoA was updated
797 */
798 inline unsigned long GetIter_Update_AoA(void) const final { return Iter_Update_AoA; }
799
800 /*!
801 * \brief Get the AoA before the most recent update
802 * \return value of the AoA before most recent update
803 */
804 inline su2double GetPrevious_AoA(void) const final { return AoA_Prev; }
805
806 /*!
807 * \brief Get the CL Driver's control command
808 * \return value of CL Driver control command (AoA_inc)
809 */
810 inline su2double GetAoA_inc(void) const final { return AoA_inc; }
811
812 /*!
813 * \brief Update the solution using the explicit Euler scheme.
814 * \param[in] geometry - Geometrical definition of the problem.
815 * \param[in] solver_container - Container vector with all the solutions.
816 * \param[in] config - Definition of the particular problem.
817 */
818 void ExplicitEuler_Iteration(CGeometry *geometry,
819 CSolver **solver_container,
820 CConfig *config) final;
821
822 /*!
823 * \brief Prepare an implicit iteration.
824 * \param[in] geometry - Geometrical definition of the problem.
825 * \param[in] config - Definition of the particular problem.
826 */
827 void PrepareImplicitIteration(CGeometry *geometry, CSolver**, CConfig *config) final;
828
829 /*!
830 * \brief Compute a suitable under-relaxation parameter to limit the change in the solution variables over
831 * a nonlinear iteration for stability.
832 * \param[in] config - Definition of the particular problem.
833 */
834 void ComputeUnderRelaxationFactor(const CConfig *config) final;
835
836 /*!
837 * \brief Identify points where the static temperature is an outlier to treat them
838 * as non-physical, e.g. force the reconstruction to be 1st order.
839 */
840 void IdentifySolutionOutliers(const CConfig *config, unsigned long iter) final;
841
842 /*!
843 * \brief Provide the mass flow rate.
844 * \param val_marker Surface where the coeficient is going to be computed.
845 * \return Value of the mass flow rate on the surface <i>val_marker</i>.
846 */
847 inline su2double GetInflow_MassFlow(unsigned short val_marker) const final { return Inflow_MassFlow[val_marker]; }
848
849 /*!
850 * \brief Provide the mass flow rate.
851 * \param val_marker Surface where the coeficient is going to be computed.
852 * \return Value of the mass flow rate on the surface <i>val_marker</i>.
853 */
854 inline su2double GetExhaust_MassFlow(unsigned short val_marker) const final { return Exhaust_MassFlow[val_marker]; }
855
856 /*!
857 * \brief Provide the mass flow rate.
858 * \param val_marker Surface where the coeficient is going to be computed.
859 * \return Value of the fan face pressure on the surface <i>val_marker</i>.
860 */
861 inline su2double GetInflow_Pressure(unsigned short val_marker) const final { return Inflow_Pressure[val_marker]; }
862
863 /*!
864 * \brief Provide the mass flow rate.
865 * \param val_marker Surface where the coeficient is going to be computed.
866 * \return Value of the fan face mach on the surface <i>val_marker</i>.
867 */
868 inline su2double GetInflow_Mach(unsigned short val_marker) const final { return Inflow_Mach[val_marker]; }
869
870 /*!
871 * \brief Provide the total (inviscid + viscous) non dimensional aero CD.
872 * \return Value of the Aero CD coefficient (inviscid + viscous contribution).
873 */
874 inline su2double GetTotal_AeroCD() const final { return Total_AeroCD; }
875
876 /*!
877 * \brief Provide the total (inviscid + viscous) non dimensional Near-Field pressure coefficient.
878 * \return Value of the NearField pressure coefficient (inviscid + viscous contribution).
879 */
880 inline su2double GetTotal_CNearFieldOF() const final { return Total_CNearFieldOF; }
881
882 /*!
883 * \brief Set the value of the Aero drag.
884 * \param[in] val_cequivarea - Value of the aero drag.
885 */
886 inline void SetTotal_AeroCD(su2double val_aerocd) final { Total_AeroCD = val_aerocd; }
887
888 /*!
889 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
890 * \return Value of the drag coefficient (inviscid + viscous contribution).
891 */
892 inline su2double GetTotal_NetThrust() const final { return Total_NetThrust; }
893
894 /*!
895 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
896 * \return Value of the drag coefficient (inviscid + viscous contribution).
897 */
898 inline su2double GetTotal_Power() const final { return Total_Power; }
899
900 /*!
901 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
902 * \return Value of the drag coefficient (inviscid + viscous contribution).
903 */
904 inline su2double GetTotal_SolidCD() const final { return Total_SolidCD; }
905
906 /*!
907 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
908 * \return Value of the drag coefficient (inviscid + viscous contribution).
909 */
910 inline su2double GetTotal_ReverseFlow() const final { return Total_ReverseFlow; }
911
912 /*!
913 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
914 * \return Value of the drag coefficient (inviscid + viscous contribution).
915 */
916 inline su2double GetTotal_MFR() const final { return Total_MFR; }
917
918 /*!
919 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
920 * \return Value of the drag coefficient (inviscid + viscous contribution).
921 */
922 inline su2double GetTotal_Prop_Eff() const final { return Total_Prop_Eff; }
923
924 /*!
925 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
926 * \return Value of the drag coefficient (inviscid + viscous contribution).
927 */
929
930 /*!
931 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
932 * \return Value of the drag coefficient (inviscid + viscous contribution).
933 */
934 inline su2double GetTotal_Adiab_Eff() const final { return Total_Adiab_Eff; }
935
936 /*!
937 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
938 * \return Value of the drag coefficient (inviscid + viscous contribution).
939 */
940 inline su2double GetTotal_Poly_Eff() const final { return Total_Poly_Eff; }
941
942 /*!
943 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
944 * \return Value of the drag coefficient (inviscid + viscous contribution).
945 */
946 inline su2double GetTotal_IDC() const final { return Total_IDC; }
947
948 /*!
949 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
950 * \return Value of the drag coefficient (inviscid + viscous contribution).
951 */
952 inline su2double GetTotal_IDC_Mach() const final { return Total_IDC_Mach; }
953
954 /*!
955 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
956 * \return Value of the drag coefficient (inviscid + viscous contribution).
957 */
958 inline su2double GetTotal_IDR() const final { return Total_IDR; }
959
960 /*!
961 * \brief Provide the total (inviscid + viscous) non dimensional drag coefficient.
962 * \return Value of the drag coefficient (inviscid + viscous contribution).
963 */
964 inline su2double GetTotal_DC60() const final { return Total_DC60; }
965
966 /*!
967 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
968 * \param[in] val_Total_CD - Value of the total drag coefficient.
969 */
970 inline void SetTotal_NetThrust(su2double val_Total_NetThrust) final { Total_NetThrust = val_Total_NetThrust; }
971
972 /*!
973 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
974 * \param[in] val_Total_CD - Value of the total drag coefficient.
975 */
976 inline void SetTotal_Power(su2double val_Total_Power) final { Total_Power = val_Total_Power; }
977
978 /*!
979 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
980 * \param[in] val_Total_CD - Value of the total drag coefficient.
981 */
982 inline void SetTotal_SolidCD(su2double val_Total_SolidCD) final { Total_SolidCD = val_Total_SolidCD; }
983
984 /*!
985 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
986 * \param[in] val_Total_CD - Value of the total drag coefficient.
987 */
988 inline void SetTotal_ReverseFlow(su2double val_Total_ReverseFlow) final { Total_ReverseFlow = val_Total_ReverseFlow; }
989
990 /*!
991 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
992 * \param[in] val_Total_CD - Value of the total drag coefficient.
993 */
994 inline void SetTotal_MFR(su2double val_Total_MFR) final { Total_MFR = val_Total_MFR; }
995
996 /*!
997 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
998 * \param[in] val_Total_CD - Value of the total drag coefficient.
999 */
1000 inline void SetTotal_Prop_Eff(su2double val_Total_Prop_Eff) final { Total_Prop_Eff = val_Total_Prop_Eff; }
1001
1002 /*!
1003 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
1004 * \param[in] val_Total_CD - Value of the total drag coefficient.
1005 */
1006 inline void SetTotal_ByPassProp_Eff(su2double val_Total_ByPassProp_Eff) final { Total_ByPassProp_Eff = val_Total_ByPassProp_Eff; }
1007
1008 /*!
1009 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
1010 * \param[in] val_Total_CD - Value of the total drag coefficient.
1011 */
1012 inline void SetTotal_Adiab_Eff(su2double val_Total_Adiab_Eff) final { Total_Adiab_Eff = val_Total_Adiab_Eff; }
1013
1014 /*!
1015 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
1016 * \param[in] val_Total_CD - Value of the total drag coefficient.
1017 */
1018 inline void SetTotal_Poly_Eff(su2double val_Total_Poly_Eff) final { Total_Poly_Eff = val_Total_Poly_Eff; }
1019
1020 /*!
1021 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
1022 * \param[in] val_Total_CD - Value of the total drag coefficient.
1023 */
1024 inline void SetTotal_IDC(su2double val_Total_IDC) final { Total_IDC = val_Total_IDC; }
1025
1026 /*!
1027 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
1028 * \param[in] val_Total_CD - Value of the total drag coefficient.
1029 */
1030 inline void SetTotal_IDC_Mach(su2double val_Total_IDC_Mach) final { Total_IDC_Mach = val_Total_IDC_Mach; }
1031
1032 /*!
1033 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
1034 * \param[in] val_Total_CD - Value of the total drag coefficient.
1035 */
1036 inline void SetTotal_IDR(su2double val_Total_IDR) final { Total_IDR = val_Total_IDR; }
1037
1038 /*!
1039 * \brief Store the total (inviscid + viscous) non dimensional drag coefficient.
1040 * \param[in] val_Total_CD - Value of the total drag coefficient.
1041 */
1042 inline void SetTotal_DC60(su2double val_Total_DC60) final { Total_DC60 = val_Total_DC60; }
1043
1044 /*!
1045 * \brief Value of the characteristic global index at the boundaries.
1046 * \param[in] val_marker - Surface marker where the coefficient is computed.
1047 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
1048 * \return Value of the pressure coefficient.
1049 */
1050 inline unsigned long GetDonorGlobalIndex(unsigned short val_marker,
1051 unsigned long val_vertex) const final {
1052 return DonorGlobalIndex[val_marker][val_vertex];
1053 }
1054
1055 /*!
1056 * \brief Value of the characteristic global index at the boundaries.
1057 * \param[in] val_marker - Surface marker where the coefficient is computed.
1058 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
1059 * \return Value of the pressure coefficient.
1060 */
1061 inline void SetDonorGlobalIndex(unsigned short val_marker,
1062 unsigned long val_vertex,
1063 unsigned long val_index) final {
1064 DonorGlobalIndex[val_marker][val_vertex] = val_index;
1065 }
1066
1067 /*!
1068 * \brief Set the initial condition for the Euler Equations.
1069 * \param[in] geometry - Geometrical definition of the problem.
1070 * \param[in] solver_container - Container with all the solutions.
1071 * \param[in] config - Definition of the particular problem.
1072 * \param[in] ExtIter - External iteration.
1073 */
1074 void SetInitialCondition(CGeometry **geometry,
1075 CSolver ***solver_container,
1076 CConfig *config,
1077 unsigned long TimeIter) final;
1078
1079 /*!
1080 * \brief Set the solution using the Freestream values.
1081 * \param[in] config - Definition of the particular problem.
1082 */
1083 void SetFreeStream_Solution(const CConfig *config) final;
1084
1085 /*!
1086 * \brief Initilize turbo containers.
1087 * \param[in] geometry - Geometrical definition of the problem.
1088 * \param[in] config - Definition of the particular problem.
1089 */
1090 void InitTurboContainers(CGeometry *geometry, CConfig **config, unsigned short iZone) final;
1091
1092 /*!
1093 * \brief Get Primal variables for turbo performance computation
1094 * iteration can be executed by multiple threads.
1095 * \return returns Density, pressure and TurboVelocity (IN/OUTLET)
1096 */
1097 inline vector<su2double> GetTurboPrimitive(unsigned short iBlade, unsigned short iSpan, bool INLET) override {
1098 vector<su2double> TurboPrimitive;
1099 TurboPrimitive.reserve(5);
1100 if (INLET) {
1101 TurboPrimitive.push_back(DensityIn[iBlade][iSpan]);
1102 TurboPrimitive.push_back(PressureIn[iBlade][iSpan]);
1103 TurboPrimitive.push_back(TurboVelocityIn[iBlade][iSpan][0]);
1104 TurboPrimitive.push_back(TurboVelocityIn[iBlade][iSpan][1]);
1105 if (nDim==3)
1106 TurboPrimitive.push_back(TurboVelocityIn[iBlade][iSpan][2]);
1107 }
1108 else {
1109 TurboPrimitive.push_back(DensityOut[iBlade][iSpan]);
1110 TurboPrimitive.push_back(PressureOut[iBlade][iSpan]);
1111 TurboPrimitive.push_back(TurboVelocityOut[iBlade][iSpan][0]);
1112 TurboPrimitive.push_back(TurboVelocityOut[iBlade][iSpan][1]);
1113 if (nDim==3)
1114 TurboPrimitive.push_back(TurboVelocityOut[iBlade][iSpan][2]);
1115 }
1116 return TurboPrimitive;
1117 }
1118 /*!
1119 * \brief Set the solution using the Freestream values.
1120 * \param[in] config - Definition of the particular problem.
1121 */
1122 void SetFreeStream_TurboSolution(CConfig *config) final;
1123 /*!
1124 * \brief It computes average quantities along the span for turbomachinery analysis.
1125 * \param[in] geometry - Geometrical definition of the problem.
1126 * \param[in] solver_container - Container vector with all the solutions.
1127 * \param[in] config - Definition of the particular problem.
1128 * \param[in] marker_flag - Surface marker flag where the function is applied.
1129 */
1130 void PreprocessAverage(CSolver **solver,
1131 CGeometry *geometry,
1132 CConfig *config,
1133 unsigned short marker_flag) final;
1134
1135 /*!
1136 * \brief It computes average quantities along the span for turbomachinery analysis.
1137 * \param[in] geometry - Geometrical definition of the problem.
1138 * \param[in] solver_container - Container vector with all the solutions.
1139 * \param[in] config - Definition of the particular problem.
1140 * \param[in] marker_flag - Surface marker flag where the function is applied.
1141 */
1142 void TurboAverageProcess(CSolver **solver,
1143 CGeometry *geometry,
1144 CConfig *config,
1145 unsigned short marker_flag) final;
1146
1147 void ComputeTurboBladePerformance(CGeometry* geometry, CConfig* config, unsigned short iBlade) final;
1148
1149 /*!
1150 * \brief it performs a mixed out average of the nodes of a boundary.
1151 * \param[in] val_init_pressure - initial pressure value
1152 * \param[in] val_Averaged_Flux - flux averaged values.
1153 * \param[in] val_normal - normal vector.
1154 * \param[in] pressure_mix - value of the mixed-out avaraged pressure.
1155 * \param[in] density_miz - value of the mixed-out avaraged density.
1156 */
1157 void MixedOut_Average (CConfig *config,
1158 su2double val_init_pressure,
1159 const su2double *val_Averaged_Flux,
1160 const su2double *val_normal,
1161 su2double& pressure_mix,
1162 su2double& density_mix);
1163
1164 /*!
1165 * \brief It gathers into the master node average quantities at inflow and outflow needed for turbomachinery analysis.
1166 * \param[in] config - Definition of the particular problem.
1167 * \param[in] geometry - Geometrical definition of the problem.
1168 */
1169 void GatherInOutAverageValues(CConfig *config, CGeometry *geometry) final;
1170
1171 /*!
1172 * \brief it take a velocity in the cartesian reference of framework and transform into the turbomachinery frame of reference.
1173 * \param[in] cartesianVelocity - cartesian components of velocity vector.
1174 * \param[in] turboNormal - normal vector in the turbomachinery frame of reference.
1175 * \param[in] turboVelocity - velocity vector in the turbomachinery frame of reference.
1176 */
1177 inline void ComputeTurboVelocity(const su2double *cartesianVelocity,
1178 const su2double *turboNormal,
1179 su2double *turboVelocity,
1180 unsigned short marker_flag,
1181 TURBOMACHINERY_TYPE kind_turb){
1182
1183 if ((kind_turb == TURBOMACHINERY_TYPE::AXIAL && nDim == 3) ||
1184 (kind_turb == TURBOMACHINERY_TYPE::CENTRIPETAL_AXIAL && marker_flag == OUTFLOW) ||
1185 (kind_turb == TURBOMACHINERY_TYPE::AXIAL_CENTRIFUGAL && marker_flag == INFLOW)) {
1186 turboVelocity[2] = turboNormal[0]*cartesianVelocity[0] + cartesianVelocity[1]*turboNormal[1];
1187 turboVelocity[1] = turboNormal[0]*cartesianVelocity[1] - turboNormal[1]*cartesianVelocity[0];
1188 turboVelocity[0] = cartesianVelocity[2];
1189 } else {
1190 turboVelocity[0] = turboNormal[0]*cartesianVelocity[0] + cartesianVelocity[1]*turboNormal[1];
1191 turboVelocity[1] = turboNormal[0]*cartesianVelocity[1] - turboNormal[1]*cartesianVelocity[0];
1192
1193 if (marker_flag == INFLOW) {
1194 turboVelocity[0] *= -1.0;
1195 turboVelocity[1] *= -1.0;
1196 }
1197 if (nDim == 3) turboVelocity[2] = cartesianVelocity[2];
1198 }
1199 }
1200
1201 inline std::shared_ptr<CTurboOutput> GetTurboBladePerformance() const final { return TurbomachineryPerformance; }
1202
1203 /*!
1204 * \brief it take a velocity in the cartesian reference of framework and transform into the turbomachinery frame of reference.
1205 * \param[in] cartesianVelocity - cartesian components of velocity vector.
1206 * \param[in] turboNormal - normal vector in the turbomachinery frame of reference.
1207 * \param[in] turboVelocity - velocity vector in the turbomachinery frame of reference.
1208 */
1209 inline void ComputeBackVelocity(const su2double *turboVelocity,
1210 const su2double *turboNormal,
1211 su2double *cartesianVelocity,
1212 unsigned short marker_flag,
1213 TURBOMACHINERY_TYPE kind_turb){
1214
1215 if ((kind_turb == TURBOMACHINERY_TYPE::AXIAL && nDim == 3) ||
1216 (kind_turb == TURBOMACHINERY_TYPE::CENTRIPETAL_AXIAL && marker_flag == OUTFLOW) ||
1217 (kind_turb == TURBOMACHINERY_TYPE::AXIAL_CENTRIFUGAL && marker_flag == INFLOW)) {
1218 cartesianVelocity[0] = turboVelocity[2]*turboNormal[0] - turboVelocity[1]*turboNormal[1];
1219 cartesianVelocity[1] = turboVelocity[2]*turboNormal[1] + turboVelocity[1]*turboNormal[0];
1220 cartesianVelocity[2] = turboVelocity[0];
1221 } else {
1222 cartesianVelocity[0] = turboVelocity[0]*turboNormal[0] - turboVelocity[1]*turboNormal[1];
1223 cartesianVelocity[1] = turboVelocity[0]*turboNormal[1] + turboVelocity[1]*turboNormal[0];
1224
1225 if (marker_flag == INFLOW) {
1226 cartesianVelocity[0] *= -1.0;
1227 cartesianVelocity[1] *= -1.0;
1228 }
1229 if (nDim == 3) cartesianVelocity[2] = turboVelocity[2];
1230 }
1231 }
1232
1233 /*!
1234 * \brief Provide the average density at the boundary of interest.
1235 * \param[in] val_marker - bound marker.
1236 * \return Value of the Average Density on the surface <i>val_marker</i>.
1237 */
1238 inline su2double GetAverageDensity(unsigned short valMarker, unsigned short valSpan) const final {
1239 return AverageDensity[valMarker][valSpan];
1240 }
1241
1242 /*!
1243 * \brief Provide the average pressure at the boundary of interest.
1244 * \param[in] val_marker - bound marker.
1245 * \return Value of the Average Pressure on the surface <i>val_marker</i>.
1246 */
1247 inline su2double GetAveragePressure(unsigned short valMarker, unsigned short valSpan) const final {
1248 return AveragePressure[valMarker][valSpan];
1249 }
1250
1251 /*!
1252 * \brief Provide the average turbo velocity average at the boundary of interest.
1253 * \param[in] val_marker - bound marker.
1254 * \return Value of the Average Total Pressure on the surface <i>val_marker</i>.
1255 */
1256 inline const su2double* GetAverageTurboVelocity(unsigned short valMarker, unsigned short valSpan) const final {
1257 return AverageTurboVelocity[valMarker][valSpan];
1258 }
1259
1260 /*!
1261 * \brief Provide the average density at the boundary of interest.
1262 * \param[in] val_marker - bound marker.
1263 * \return Value of the Average turbulent Nu on the surface <i>val_marker</i>.
1264 */
1265 inline su2double GetAverageNu(unsigned short valMarker, unsigned short valSpan) const final {
1266 return AverageNu[valMarker][valSpan];
1267 }
1268
1269 /*!
1270 * \brief Provide the average density at the boundary of interest.
1271 * \param[in] val_marker - bound marker.
1272 * \return Value of the Average turbulent Kine on the surface <i>val_marker</i>.
1273 */
1274 inline su2double GetAverageKine(unsigned short valMarker, unsigned short valSpan) const final {
1275 return AverageKine[valMarker][valSpan];
1276 }
1277
1278 /*!
1279 * \brief Provide the average density at the boundary of interest.
1280 * \param[in] val_marker - bound marker.
1281 * \return Value of the Average turbulent Omega on the surface <i>val_marker</i>.
1282 */
1283 inline su2double GetAverageOmega(unsigned short valMarker, unsigned short valSpan) const final {
1284 return AverageOmega[valMarker][valSpan];
1285 }
1286
1287 /*!
1288 * \brief Provide the inlet density to check convergence of conservative mixing-plane.
1289 * \param[in] inMarkerTP - bound marker.
1290 * \return Value of the inlet density.
1291 */
1292 inline su2double GetDensityIn(unsigned short inMarkerTP, unsigned short valSpan) const final {
1293 return DensityIn[inMarkerTP][valSpan];
1294 }
1295
1296 /*!
1297 * \brief Provide the inlet pressure to check convergence of conservative mixing-plane.
1298 * \param[in] inMarkerTP - bound marker.
1299 * \return Value of inlet pressure.
1300 */
1301 inline su2double GetPressureIn(unsigned short inMarkerTP, unsigned short valSpan) const final {
1302 return PressureIn[inMarkerTP][valSpan];
1303 }
1304
1305 /*!
1306 * \brief Provide the inlet normal velocity to check convergence of conservative mixing-plane.
1307 * \param[in] inMarkerTP - bound marker.
1308 * \return Value of the inlet normal velocity.
1309 */
1310 inline const su2double* GetTurboVelocityIn(unsigned short inMarkerTP, unsigned short valSpan) const final {
1311 return TurboVelocityIn[inMarkerTP][valSpan];
1312 }
1313
1314 /*!
1315 * \brief Provide the outlet density to check convergence of conservative mixing-plane.
1316 * \param[in] inMarkerTP - bound marker.
1317 * \return Value of the outlet density.
1318 */
1319 inline su2double GetDensityOut(unsigned short inMarkerTP, unsigned short valSpan) const final {
1320 return DensityOut[inMarkerTP][valSpan];
1321 }
1322
1323 /*!
1324 * \brief Provide the outlet pressure to check convergence of conservative mixing-plane.
1325 * \param[in] inMarkerTP - bound marker.
1326 * \return Value of the outlet pressure.
1327 */
1328 inline su2double GetPressureOut(unsigned short inMarkerTP, unsigned short valSpan) const final {
1329 return PressureOut[inMarkerTP][valSpan];
1330 }
1331
1332 /*!
1333 * \brief Provide the outlet normal velocity to check convergence of conservative mixing-plane.
1334 * \param[in] inMarkerTP - bound marker.
1335 * \return Value of the outlet normal velocity.
1336 */
1337 inline const su2double* GetTurboVelocityOut(unsigned short inMarkerTP, unsigned short valSpan) const final {
1338 return TurboVelocityOut[inMarkerTP][valSpan];
1339 }
1340
1341 /*!
1342 * \brief Provide the inlet turbulent kei to check convergence of conservative mixing-plane.
1343 * \param[in] inMarkerTP - bound marker.
1344 * \return Value of the inlet density.
1345 */
1346 inline su2double GetKineIn(unsigned short inMarkerTP, unsigned short valSpan) const final {
1347 return KineIn[inMarkerTP][valSpan];
1348 }
1349
1350 /*!
1351 * \brief Provide the inlet turbulent omega to check convergence of conservative mixing-plane.
1352 * \param[in] inMarkerTP - bound marker.
1353 * \return Value of the inlet density.
1354 */
1355 inline su2double GetOmegaIn(unsigned short inMarkerTP, unsigned short valSpan) const final {
1356 return OmegaIn[inMarkerTP][valSpan];
1357 }
1358
1359 /*!
1360 * \brief Provide the inlet turbulent nu to check convergence of conservative mixing-plane.
1361 * \param[in] inMarkerTP - bound marker.
1362 * \return Value of the inlet density.
1363 */
1364 inline su2double GetNuIn(unsigned short inMarkerTP, unsigned short valSpan) const final {
1365 return NuIn[inMarkerTP][valSpan];
1366 }
1367
1368 /*!
1369 * \brief Provide the outlet turbulent kei to check convergence of conservative mixing-plane.
1370 * \param[in] inMarkerTP - bound marker.
1371 * \return Value of the inlet density.
1372 */
1373 inline su2double GetKineOut(unsigned short inMarkerTP, unsigned short valSpan) const final {
1374 return KineOut[inMarkerTP][valSpan];
1375 }
1376
1377 /*!
1378 * \brief Provide the outlet turbulent omega to check convergence of conservative mixing-plane.
1379 * \param[in] inMarkerTP - bound marker.
1380 * \return Value of the inlet density.
1381 */
1382 inline su2double GetOmegaOut(unsigned short inMarkerTP, unsigned short valSpan) const final {
1383 return OmegaOut[inMarkerTP][valSpan];
1384 }
1385
1386 /*!
1387 * \brief Provide the outlet turbulent nu to check convergence of conservative mixing-plane.
1388 * \param[in] inMarkerTP - bound marker.
1389 * \return Value of the inlet density.
1390 */
1391 inline su2double GetNuOut(unsigned short inMarkerTP, unsigned short valSpan) const final {
1392 return NuOut[inMarkerTP][valSpan];
1393 }
1394
1395 /*!
1396 * \brief Set inlet density.
1397 * \param[in] value - turboperformance value to set.
1398 * \param[in] inMarkerTP - turboperformance marker.
1399 */
1400 inline void SetDensityIn(su2double value,
1401 unsigned short inMarkerTP,
1402 unsigned short valSpan) final {
1403 DensityIn[inMarkerTP][valSpan] = value;
1404 }
1405
1406 /*!
1407 * \brief Set inlet pressure.
1408 * \param[in] value - turboperformance value to set.
1409 * \param[in] inMarkerTP - turboperformance marker.
1410 */
1411 inline void SetPressureIn(su2double value,
1412 unsigned short inMarkerTP,
1413 unsigned short valSpan) final {
1414 PressureIn[inMarkerTP][valSpan] = value;
1415 }
1416
1417 /*!
1418 * \brief Set inlet normal velocity.
1419 * \param[in] value - turboperformance value to set.
1420 * \param[in] inMarkerTP - turboperformance marker.
1421 */
1422 inline void SetTurboVelocityIn(const su2double *value,
1423 unsigned short inMarkerTP,
1424 unsigned short valSpan) final {
1425 for(unsigned short iDim = 0; iDim < nDim; iDim++)
1426 TurboVelocityIn[inMarkerTP][valSpan][iDim] = value[iDim];
1427 }
1428
1429 /*!
1430 * \brief Set outlet density.
1431 * \param[in] value - turboperformance value to set.
1432 * \param[in] inMarkerTP - turboperformance marker.
1433 */
1434 inline void SetDensityOut(su2double value,
1435 unsigned short inMarkerTP,
1436 unsigned short valSpan) final {
1437 DensityOut[inMarkerTP][valSpan] = value;
1438 }
1439
1440 /*!
1441 * \brief Set outlet pressure.
1442 * \param[in] value - turboperformance value to set.
1443 * \param[in] inMarkerTP - turboperformance marker.
1444 */
1445 inline void SetPressureOut(su2double value,
1446 unsigned short inMarkerTP,
1447 unsigned short valSpan) final {
1448 PressureOut[inMarkerTP][valSpan] = value;
1449 }
1450
1451 /*!
1452 * \brief Set outlet normal velocity.
1453 * \param[in] value - turboperformance value to set.
1454 * \param[in] inMarkerTP - turboperformance marker.
1455 */
1456 inline void SetTurboVelocityOut(const su2double *value,
1457 unsigned short inMarkerTP,
1458 unsigned short valSpan) final {
1459 for(unsigned short iDim = 0; iDim < nDim; iDim++)
1460 TurboVelocityOut[inMarkerTP][valSpan][iDim] = value[iDim];
1461 }
1462
1463 /*!
1464 * \brief Set inlet turbulent kei.
1465 * \param[in] value - turboperformance value to set.
1466 * \param[in] inMarkerTP - turboperformance marker.
1467 */
1468 inline void SetKineIn(su2double value,
1469 unsigned short inMarkerTP,
1470 unsigned short valSpan) final {
1471 KineIn[inMarkerTP][valSpan] = value;
1472 }
1473 /*!
1474 * \brief Set inlet turbulent omega.
1475 * \param[in] value - turboperformance value to set.
1476 * \param[in] inMarkerTP - turboperformance marker.
1477 */
1478 inline void SetOmegaIn(su2double value,
1479 unsigned short inMarkerTP,
1480 unsigned short valSpan) final {
1481 OmegaIn[inMarkerTP][valSpan] = value;
1482 }
1483
1484 /*!
1485 * \brief Set inlet turbulent Nu.
1486 * \param[in] value - turboperformance value to set.
1487 * \param[in] inMarkerTP - turboperformance marker.
1488 */
1489 inline void SetNuIn(su2double value,
1490 unsigned short inMarkerTP,
1491 unsigned short valSpan) final {
1492 NuIn[inMarkerTP][valSpan] = value;
1493 }
1494
1495 /*!
1496 * \brief Set outlet turbulent kei.
1497 * \param[in] value - turboperformance value to set.
1498 * \param[in] inMarkerTP - turboperformance marker.
1499 */
1500 inline void SetKineOut(su2double value,
1501 unsigned short inMarkerTP,
1502 unsigned short valSpan) final {
1503 KineOut[inMarkerTP][valSpan] = value;
1504 }
1505
1506 /*!
1507 * \brief Set Outlet turbulent omega.
1508 * \param[in] value - turboperformance value to set.
1509 * \param[in] inMarkerTP - turboperformance marker.
1510 */
1511 inline void SetOmegaOut(su2double value,
1512 unsigned short inMarkerTP,
1513 unsigned short valSpan) final {
1514 OmegaOut[inMarkerTP][valSpan] = value;
1515 }
1516
1517 /*!
1518 * \brief Set outlet turbulent Nu.
1519 * \param[in] value - turboperformance value to set.
1520 * \param[in] inMarkerTP - turboperformance marker.
1521 */
1522 inline void SetNuOut(su2double value,
1523 unsigned short inMarkerTP,
1524 unsigned short valSpan) final {
1525 NuOut[inMarkerTP][valSpan] = value;
1526 }
1527
1528 /*!
1529 * \brief Print verification error to screen.
1530 * \param[in] config - Definition of the particular problem.
1531 */
1532 void PrintVerificationError(const CConfig* config) const final;
1533
1534 /*!
1535 * \brief The Euler and NS solvers support MPI+OpenMP.
1536 */
1537 inline bool GetHasHybridParallel() const final { return true; }
1538
1539};
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
Class for compressible inviscid flow problems, serves as base for Navier-Stokes/RANS.
Definition CEulerSolver.hpp:40
su2activematrix RelTangVelocityOut
Definition CEulerSolver.hpp:154
vector< su2double > Inflow_MassFlow
Mass flow rate for each boundary.
Definition CEulerSolver.hpp:51
su2double GetExhaust_MassFlow(unsigned short val_marker) const final
Provide the mass flow rate.
Definition CEulerSolver.hpp:854
su2double Total_CD_Prev
Total drag coefficient for all the boundaries (fixed lift mode).
Definition CEulerSolver.hpp:90
vector< su2double > Exhaust_Temperature
Fan face mach number for each boundary.
Definition CEulerSolver.hpp:58
su2activematrix AveragePressure
Definition CEulerSolver.hpp:130
vector< su2activematrix > MixingState
Definition CEulerSolver.hpp:163
su2double GetMixingState(unsigned short val_marker, unsigned long val_span, unsigned short val_state) const final
Get a component of the donor-side averaged state at a mixing plane interface.
Definition CEulerSolver.hpp:181
void SetPreconditioner(const CConfig *config, unsigned long iPoint, su2double delta, su2activematrix &preconditioner) const
Compute the preconditioner for convergence acceleration by Roe-Turkel method.
Definition CEulerSolver.cpp:2704
su2double InverseDesign
Inverse design functional for each boundary.
Definition CEulerSolver.hpp:64
su2double AoA_Prev
Old value of the angle of attack (monitored).
Definition CEulerSolver.hpp:109
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 CEulerSolver.cpp:1606
su2double MeanTemperature
Definition CEulerSolver.hpp:121
CFluidModel * GetFluidModel(void) const final
Compute the pressure at the infinity.
Definition CEulerSolver.hpp:367
const su2double * GetTurboVelocityIn(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the inlet normal velocity to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1310
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 CEulerSolver.cpp:5001
su2double Total_Poly_Eff
Total Mass Flow Ratio for all the boundaries.
Definition CEulerSolver.hpp:102
void SetActDisk_BCThrust(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, bool Output)
Update the AoA and freestream velocity at the farfield.
Definition CEulerSolver.cpp:3692
vector< su2activematrix > DonorPrimVar
Value of the donor variables at each boundary.
Definition CEulerSolver.hpp:66
su2double GetTotal_SolidCD() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:904
void SetTotal_IDC_Mach(su2double val_Total_IDC_Mach) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:1030
su2activematrix DensityIn
Definition CEulerSolver.hpp:141
su2double Total_CMz_Prev
Total drag coefficient for all the boundaries (fixed lift mode).
Definition CEulerSolver.hpp:105
su2double Total_CMx_Prev
Total drag coefficient for all the boundaries (fixed lift mode).
Definition CEulerSolver.hpp:103
su2double Inflow_Pressure_Total
Fan face pressure for each boundary.
Definition CEulerSolver.hpp:62
su2double GetTotal_ReverseFlow() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:910
su2double GetTotal_MFR() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:916
void SetNondimensionalization(CConfig *config, unsigned short iMesh)
Set the solver nondimensionalization.
Definition CEulerSolver.cpp:806
su2double Total_MFR
Total Mass Flow Ratio for all the boundaries.
Definition CEulerSolver.hpp:98
su2activematrix NuIn
Definition CEulerSolver.hpp:149
void IdentifySolutionOutliers(const CConfig *config, unsigned long iter) final
Identify points where the static temperature is an outlier to treat them as non-physical,...
Definition CEulerSolver.cpp:2577
bool GetHasHybridParallel() const final
The Euler and NS solvers support MPI+OpenMP.
Definition CEulerSolver.hpp:1537
static void ComputeConsistentExtrapolation(CFluidModel *fluidModel, unsigned short nDim, su2double *primitive, su2double *secondary)
Recompute the extrapolated quantities, after MUSCL reconstruction, in a more thermodynamically consis...
Definition CEulerSolver.cpp:2038
su2double GetInflow_Mach(unsigned short val_marker) const final
Provide the mass flow rate.
Definition CEulerSolver.hpp:868
void BC_Engine_Inflow(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose the nacelle inflow boundary condition.
Definition CEulerSolver.cpp:7839
void SetTotal_AeroCD(su2double val_aerocd) final
Set the value of the Aero drag.
Definition CEulerSolver.hpp:886
su2double GetTotal_Adiab_Eff() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:934
void PreprocessAverage(CSolver **solver, CGeometry *geometry, CConfig *config, unsigned short marker_flag) final
It computes average quantities along the span for turbomachinery analysis.
Definition CEulerSolver.cpp:9090
void SetKineOut(su2double value, unsigned short inMarkerTP, unsigned short valSpan) final
Set outlet turbulent kei.
Definition CEulerSolver.hpp:1500
vector< su2activematrix > AverageFlux
Definition CEulerSolver.hpp:125
su2double GetTotal_AeroCD() const final
Provide the total (inviscid + viscous) non dimensional aero CD.
Definition CEulerSolver.hpp:874
su2double Total_AeroCD
Total aero drag coefficient for all the boundaries.
Definition CEulerSolver.hpp:106
su2activematrix AverageOmega
Definition CEulerSolver.hpp:137
void SetPressureOut(su2double value, unsigned short inMarkerTP, unsigned short valSpan) final
Set outlet pressure.
Definition CEulerSolver.hpp:1445
su2double GetDensityOut(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the outlet density to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1319
vector< vector< su2double > > ActDisk_Thrust_r
Value of the Thrust_r.
Definition CEulerSolver.hpp:69
su2activematrix RelTangVelocityIn
Definition CEulerSolver.hpp:153
su2double GetOmegaIn(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the inlet turbulent omega to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1355
void ComputeTurboBladePerformance(CGeometry *geometry, CConfig *config, unsigned short iBlade) final
Definition CEulerSolver.cpp:9920
su2double GetPressureOut(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the outlet pressure to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1328
vector< su2double > CEquivArea_Mnt
Equivalent area (inviscid contribution) for each boundary.
Definition CEulerSolver.hpp:48
vector< vector< su2double > > ActDisk_Fy
Value of the actuator disk Y component of the radial and tangential forces per Unit Area resultant.
Definition CEulerSolver.hpp:80
su2activematrix ActDisk_Axis
Value of the actuator disk Axis.
Definition CEulerSolver.hpp:77
su2double GetInflow_MassFlow(unsigned short val_marker) const final
Provide the mass flow rate.
Definition CEulerSolver.hpp:847
su2double Total_IDR
Total IDC coefficient for all the boundaries.
Definition CEulerSolver.hpp:96
su2double GetTotal_Prop_Eff() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:922
void SetDensityIn(su2double value, unsigned short inMarkerTP, unsigned short valSpan) final
Set inlet density.
Definition CEulerSolver.hpp:1400
void Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) override
Source term integration.
Definition CEulerSolver.cpp:2095
void BC_ActDisk_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose the engine exhaust boundary condition.
Definition CEulerSolver.cpp:8337
void SetPressureIn(su2double value, unsigned short inMarkerTP, unsigned short valSpan) final
Set inlet pressure.
Definition CEulerSolver.hpp:1411
void ComputeBackVelocity(const su2double *turboVelocity, const su2double *turboNormal, su2double *cartesianVelocity, unsigned short marker_flag, TURBOMACHINERY_TYPE kind_turb)
it take a velocity in the cartesian reference of framework and transform into the turbomachinery fram...
Definition CEulerSolver.hpp:1209
su2double GetTotal_IDC() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:946
su2double Total_IDC_Mach
Total IDC coefficient for all the boundaries.
Definition CEulerSolver.hpp:95
void ExplicitEuler_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config) final
Update the solution using the explicit Euler scheme.
Definition CEulerSolver.cpp:2512
su2double GetAveragePressure(unsigned short valMarker, unsigned short valSpan) const final
Provide the average pressure at the boundary of interest.
Definition CEulerSolver.hpp:1247
void BC_Giles(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose the boundary condition using characteristic recostruction.
Definition CEulerSolver.cpp:6388
vector< su2double > GetTurboPrimitive(unsigned short iBlade, unsigned short iSpan, bool INLET) override
Get Primal variables for turbo performance computation iteration can be executed by multiple threads.
Definition CEulerSolver.hpp:1097
void SetCentered_Dissipation_Sensor(CGeometry *geometry, const CConfig *config)
Compute the dissipation sensor for centered schemes.
Definition CEulerSolver.cpp:2432
void BC_Supersonic_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose a supersonic inlet boundary condition.
Definition CEulerSolver.cpp:7626
su2double Total_DC60
Total IDC coefficient for all the boundaries.
Definition CEulerSolver.hpp:97
vector< su2matrix< complex< su2double > > > CkOutflow1
Definition CEulerSolver.hpp:160
su2double AoA_inc
Definition CEulerSolver.hpp:110
void SetTotal_Prop_Eff(su2double val_Total_Prop_Eff) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:1000
void BC_Riemann(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose the boundary condition using characteristic recostruction.
Definition CEulerSolver.cpp:5258
su2double GetAverageOmega(unsigned short valMarker, unsigned short valSpan) const final
Provide the average density at the boundary of interest.
Definition CEulerSolver.hpp:1283
su2double GetDensityIn(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the inlet density to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1292
su2activematrix DensityOut
Definition CEulerSolver.hpp:144
su2activematrix RadialEquilibriumPressure
Definition CEulerSolver.hpp:132
vector< vector< su2double > > ActDisk_Fx_BEM
Value of the actuator disk X component of the radial and tangential forces per Unit Area resultant.
Definition CEulerSolver.hpp:83
static constexpr unsigned short nMixingStateVars
Number of averaged variables transferred across mixing plane interfaces.
Definition CEulerSolver.hpp:162
void PreprocessBC_Giles(CGeometry *geometry, CConfig *config, CNumerics *conv_numerics, unsigned short marker_flag) final
It computes Fourier transformation for the needed quantities along the pitch for each span in turboma...
Definition CEulerSolver.cpp:6222
vector< vector< su2double > > ActDisk_Fa_BEM
Value of the actuator disk Axial Force per Unit Area.
Definition CEulerSolver.hpp:82
su2activematrix PressureOut
Definition CEulerSolver.hpp:145
void SetOmegaOut(su2double value, unsigned short inMarkerTP, unsigned short valSpan) final
Set Outlet turbulent omega.
Definition CEulerSolver.hpp:1511
unsigned long GetIter_Update_AoA(void) const final
Get the iteration of the last AoA update (Fixed CL Mode)
Definition CEulerSolver.hpp:798
su2double GetPressureIn(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the inlet pressure to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1301
void SetTotal_ReverseFlow(su2double val_Total_ReverseFlow) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:988
vector< vector< unsigned long > > DonorGlobalIndex
Value of the donor global index.
Definition CEulerSolver.hpp:65
void ReadActDisk_InputFile(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, bool Output)
Read the actuator disk input file for the VARIABLE_LOAD type.
Definition CEulerSolver.cpp:4140
su2double GetAverageDensity(unsigned short valMarker, unsigned short valSpan) const final
Provide the average density at the boundary of interest.
Definition CEulerSolver.hpp:1238
su2double StdDevTemperature
Definition CEulerSolver.hpp:121
su2double GetAverageNu(unsigned short valMarker, unsigned short valSpan) const final
Provide the average density at the boundary of interest.
Definition CEulerSolver.hpp:1265
bool End_AoA_FD
Boolean for end of finite differencing for FixedCL mode.
Definition CEulerSolver.hpp:112
void SetTotal_MFR(su2double val_Total_MFR) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:994
void SetReferenceValues(const CConfig &config) final
Set reference values for pressure, forces, etc.
Definition CEulerSolver.cpp:1452
vector< su2matrix< complex< su2double > > > CkOutflow2
Definition CEulerSolver.hpp:160
su2double Total_CMy_Prev
Total drag coefficient for all the boundaries (fixed lift mode).
Definition CEulerSolver.hpp:104
void SetDensityOut(su2double value, unsigned short inMarkerTP, unsigned short valSpan) final
Set outlet density.
Definition CEulerSolver.hpp:1434
virtual unsigned long SetPrimitive_Variables(CSolver **solver_container, const CConfig *config)
Compute the velocity^2, SoundSpeed, Pressure, Enthalpy, Viscosity.
Definition CEulerSolver.cpp:1730
void ComputeTurboVelocity(const su2double *cartesianVelocity, const su2double *turboNormal, su2double *turboVelocity, unsigned short marker_flag, TURBOMACHINERY_TYPE kind_turb)
it take a velocity in the cartesian reference of framework and transform into the turbomachinery fram...
Definition CEulerSolver.hpp:1177
su2double ExtAveragePressure
Definition CEulerSolver.hpp:157
void SetTotal_NetThrust(su2double val_Total_NetThrust) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:970
su2double Inflow_MassFlow_Total
Mass flow rate for each boundary.
Definition CEulerSolver.hpp:60
su2double GetKineOut(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the outlet turbulent kei to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1373
su2double GetKineIn(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the inlet turbulent kei to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1346
su2double GetTotal_DC60() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:964
su2activevector AverageMassFlowRate
Definition CEulerSolver.hpp:138
vector< vector< su2double > > ActDisk_Fx
Value of the actuator disk X component of the radial and tangential forces per Unit Area resultant.
Definition CEulerSolver.hpp:79
su2double dCL_dAlpha
Value of dCL_dAlpha used to control CL in fixed CL mode.
Definition CEulerSolver.hpp:115
vector< vector< su2double > > ActDisk_Fa
Value of the actuator disk Axial Force per Unit Area.
Definition CEulerSolver.hpp:78
su2double Total_Prop_Eff
Total Mass Flow Ratio for all the boundaries.
Definition CEulerSolver.hpp:99
void InstantiateEdgeNumerics(const CSolver *const *solvers, const CConfig *config) final
Instantiate a SIMD numerics object.
Definition CEulerSolver.cpp:371
vector< su2activematrix > TurboVelocityOut
Definition CEulerSolver.hpp:146
su2double AllBound_CEquivArea_Inv
equivalent area coefficient (inviscid contribution) for all the boundaries.
Definition CEulerSolver.hpp:47
su2activematrix NuOut
Definition CEulerSolver.hpp:152
vector< su2matrix< complex< su2double > > > CkInflow
Definition CEulerSolver.hpp:160
void SetActDisk_BEM_VLAD(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, bool Output)
Read and update the variable load actuator disk from input file for the BLADE_ELEMENT type.
Definition CEulerSolver.cpp:4341
su2double Exhaust_MassFlow_Total
Mass flow rate for each boundary.
Definition CEulerSolver.hpp:61
void Source_Template(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short iMesh) final
Source term integration.
Definition CEulerSolver.cpp:2348
void Set_MPI_ActDisk(CSolver **solver_container, CGeometry *geometry, CConfig *config)
Parallelization of Undivided Laplacian.
Definition CEulerSolver.cpp:481
vector< su2activematrix > TurboVelocityIn
Definition CEulerSolver.hpp:143
su2double GetOmegaOut(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the outlet turbulent omega to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1382
bool GetEnd_AoA_FD(void) const final
Checking whether fixed CL mode in finite-differencing mode.
Definition CEulerSolver.hpp:792
void SetFreeStream_Solution(const CConfig *config) final
Set the solution using the Freestream values.
Definition CEulerSolver.cpp:9045
void SetTurboVelocityOut(const su2double *value, unsigned short inMarkerTP, unsigned short valSpan) final
Set outlet normal velocity.
Definition CEulerSolver.hpp:1456
void SetTotal_Adiab_Eff(su2double val_Total_Adiab_Eff) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:1012
su2double GetNuOut(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the outlet turbulent nu to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1391
vector< su2activematrix > AverageVelocity
Definition CEulerSolver.hpp:127
su2activematrix PressureIn
Definition CEulerSolver.hpp:142
void SetOmegaIn(su2double value, unsigned short inMarkerTP, unsigned short valSpan) final
Set inlet turbulent omega.
Definition CEulerSolver.hpp:1478
su2double GetNuIn(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the inlet turbulent nu to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1364
su2double Total_ByPassProp_Eff
Total Mass Flow Ratio for all the boundaries.
Definition CEulerSolver.hpp:100
su2double GetTotal_Poly_Eff() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:940
vector< su2double > Exhaust_Area
Boundary total area.
Definition CEulerSolver.hpp:56
void SetUndivided_Laplacian(CGeometry *geometry, const CConfig *config)
Compute the undivided laplacian for the solution.
Definition CEulerSolver.cpp:2384
void ClassicalRK4_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) final
Update the solution using the classical fourth-order Runge-Kutta scheme.
Definition CEulerSolver.cpp:2505
su2double Total_Adiab_Eff
Total Mass Flow Ratio for all the boundaries.
Definition CEulerSolver.hpp:101
su2activematrix AverageKine
Definition CEulerSolver.hpp:136
CEulerSolver()=delete
su2double GetInflow_Pressure(unsigned short val_marker) const final
Provide the mass flow rate.
Definition CEulerSolver.hpp:861
~CEulerSolver(void) override
Destructor of the class.
Definition CEulerSolver.cpp:367
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 CEulerSolver.cpp:1758
void SetTotal_Poly_Eff(su2double val_Total_Poly_Eff) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:1018
su2double GetAverageKine(unsigned short valMarker, unsigned short valSpan) const final
Provide the average density at the boundary of interest.
Definition CEulerSolver.hpp:1274
su2activematrix OmegaIn
Definition CEulerSolver.hpp:148
void SetTotal_SolidCD(su2double val_Total_SolidCD) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:982
su2double Total_CL_Prev
Total lift coefficient for all the boundaries (fixed lift mode).
Definition CEulerSolver.hpp:88
void BC_TurboRiemann(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose the boundary condition using characteristic recostruction.
Definition CEulerSolver.cpp:5689
vector< su2double > Inflow_Mach
Fan face mach number for each boundary.
Definition CEulerSolver.hpp:54
void SetKineIn(su2double value, unsigned short inMarkerTP, unsigned short valSpan) final
Set inlet turbulent kei.
Definition CEulerSolver.hpp:1468
vector< su2activematrix > SpanTotalFlux
Definition CEulerSolver.hpp:126
vector< vector< su2double > > ActDisk_Torque_r
Value of the Torque_r.
Definition CEulerSolver.hpp:70
su2activematrix AverageNu
Definition CEulerSolver.hpp:135
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 CEulerSolver.cpp:7161
void BC_ActDisk_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose the engine inflow boundary condition.
Definition CEulerSolver.cpp:8322
su2double GetTangGridVelOut(unsigned short val_blade, unsigned long val_span)
Definition CEulerSolver.hpp:171
su2activematrix ActDisk_C
Value of the actuator disk Center.
Definition CEulerSolver.hpp:76
vector< su2double > Exhaust_Pressure
Fan face pressure for each boundary.
Definition CEulerSolver.hpp:57
void BC_ActDisk(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker, bool val_inlet_surface) final
Impose an actuator disk inlet boundary condition.
Definition CEulerSolver.cpp:8352
void SetMixingState(unsigned short val_marker, unsigned long val_span, unsigned short val_state, su2double component) final
Set a component of the donor-side averaged state at a mixing plane interface nodes.
Definition CEulerSolver.hpp:196
vector< su2activematrix > AverageTurboVelocity
Definition CEulerSolver.hpp:128
su2double ExtAverageDensity
Definition CEulerSolver.hpp:156
virtual void SetRoe_Dissipation(CGeometry *geometry, CConfig *config)
A virtual member.
Definition CEulerSolver.hpp:310
std::shared_ptr< CTurboOutput > GetTurboBladePerformance() const final
Definition CEulerSolver.hpp:1201
su2activematrix OmegaOut
Definition CEulerSolver.hpp:151
su2double Total_ReverseFlow
Total drag coefficient for all the boundaries.
Definition CEulerSolver.hpp:93
vector< su2double > CEquivArea_Inv
Equivalent area (inviscid contribution) for each boundary.
Definition CEulerSolver.hpp:49
su2activematrix KineOut
Definition CEulerSolver.hpp:150
void SetTurboVelocityIn(const su2double *value, unsigned short inMarkerTP, unsigned short valSpan) final
Set inlet normal velocity.
Definition CEulerSolver.hpp:1422
const su2double * GetAverageTurboVelocity(unsigned short valMarker, unsigned short valSpan) const final
Provide the average turbo velocity average at the boundary of interest.
Definition CEulerSolver.hpp:1256
void SetTotal_Power(su2double val_Total_Power) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:976
vector< vector< su2double > > ActDisk_Fy_BEM
Value of the actuator disk Y component of the radial and tangential forces per Unit Area resultant.
Definition CEulerSolver.hpp:84
vector< vector< su2double > > ActDisk_Fz
Value of the actuator disk Z component of the radial and tangential forces per Unit Area resultant.
Definition CEulerSolver.hpp:81
vector< su2activematrix > OldAverageTurboVelocity
Definition CEulerSolver.hpp:129
void SetTotal_ByPassProp_Eff(su2double val_Total_ByPassProp_Eff) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:1006
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 CEulerSolver.cpp:1821
void BC_ActDisk_VariableLoad(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker, bool val_inlet_surface)
Impose an actuator disk with variable load boundary condition.
Definition CEulerSolver.cpp:8764
su2activematrix KineIn
Definition CEulerSolver.hpp:147
void InitTurboContainers(CGeometry *geometry, CConfig **config, unsigned short iZone) final
Initilize turbo containers.
Definition CEulerSolver.cpp:393
void SetUpwind_Ducros_Sensor(CGeometry *geometry, CConfig *config)
Compute Ducros Sensor for Roe Dissipation.
Definition CEulerSolver.cpp:2446
su2double GetTotal_ByPassProp_Eff() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:928
void SetTotal_IDC(su2double val_Total_IDC) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:1024
void BC_Engine_Exhaust(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose the ancelle exhaust boundary condition.
Definition CEulerSolver.cpp:8070
vector< vector< su2double > > ActDisk_DeltaP
Value of the Delta P.
Definition CEulerSolver.hpp:67
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 CEulerSolver.cpp:1696
su2activevector ExtAverageTurboVelocity
Definition CEulerSolver.hpp:158
void SetMax_Eigenvalue(CGeometry *geometry, const CConfig *config)
Compute the max eigenvalue.
Definition CEulerSolver.cpp:2363
void SetCoefficient_Gradients(CConfig *config) const
Set gradients of coefficients for fixed CL mode.
Definition CEulerSolver.cpp:4917
su2double GetAoA_inc(void) const final
Get the CL Driver's control command.
Definition CEulerSolver.hpp:810
void BC_Supersonic_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) final
Impose a supersonic outlet boundary condition.
Definition CEulerSolver.cpp:7715
bool Start_AoA_FD
Boolean for start of finite differencing for FixedCL mode.
Definition CEulerSolver.hpp:111
su2double Total_SolidCD
Total drag coefficient for all the boundaries.
Definition CEulerSolver.hpp:89
bool GetStart_AoA_FD(void) const final
Checking whether fixed CL mode in finite-differencing mode.
Definition CEulerSolver.hpp:786
void SetFreeStream_TurboSolution(CConfig *config) final
Set the solution using the Freestream values.
Definition CEulerSolver.cpp:9058
su2double GetTotal_NetThrust() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:892
su2double Prandtl_Turb
Turbulent Prandtl number.
Definition CEulerSolver.hpp:45
vector< vector< su2double > > ActDisk_DeltaT
Value of the Delta T.
Definition CEulerSolver.hpp:71
void PrintVerificationError(const CConfig *config) const final
Print verification error to screen.
Definition CEulerSolver.cpp:9006
su2double Inflow_Mach_Total
Fan face mach number for each boundary.
Definition CEulerSolver.hpp:63
void Evaluate_ObjFunc(const CConfig *config, CSolver **solver) override
Compute weighted-sum "combo" objective output.
Definition CEulerSolver.cpp:4942
vector< su2double > Inflow_Pressure
Fan face pressure for each boundary.
Definition CEulerSolver.hpp:53
vector< su2double > Exhaust_MassFlow
Mass flow rate for each boundary.
Definition CEulerSolver.hpp:52
su2double GetPrevious_AoA(void) const final
Get the AoA before the most recent update.
Definition CEulerSolver.hpp:804
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 CEulerSolver.cpp:1814
unsigned long BCThrust_Counter
Definition CEulerSolver.hpp:116
su2double Total_NetThrust
Total drag coefficient for all the boundaries.
Definition CEulerSolver.hpp:91
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 CEulerSolver.cpp:7451
void SetInitialCondition(CGeometry **geometry, CSolver ***solver_container, CConfig *config, unsigned long TimeIter) final
Set the initial condition for the Euler Equations.
Definition CEulerSolver.cpp:1481
void ComputeUnderRelaxationFactor(const CConfig *config) final
Compute a suitable under-relaxation parameter to limit the change in the solution variables over a no...
Definition CEulerSolver.cpp:2540
void MixedOut_Average(CConfig *config, su2double val_init_pressure, const su2double *val_Averaged_Flux, const su2double *val_normal, su2double &pressure_mix, su2double &density_mix)
it performs a mixed out average of the nodes of a boundary.
Definition CEulerSolver.cpp:9679
static void LowMachPrimitiveCorrection(CFluidModel *fluidModel, unsigned short nDim, su2double *primitive_i, su2double *primitive_j)
Apply low Mach number correction to the primitives at two points, usually connected by an edge.
Definition CEulerSolver.cpp:2056
su2double GetTotal_IDR() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:958
void GetPower_Properties(CGeometry *geometry, CConfig *config, unsigned short iMesh, bool Output)
Compute the Fan face Mach number.
Definition CEulerSolver.cpp:2762
void SetTotal_IDR(su2double val_Total_IDR) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:1036
void SetNuIn(su2double value, unsigned short inMarkerTP, unsigned short valSpan) final
Set inlet turbulent Nu.
Definition CEulerSolver.hpp:1489
vector< su2double > Inflow_Area
Boundary total area.
Definition CEulerSolver.hpp:55
su2activematrix AverageRelTangVelocity
Definition CEulerSolver.hpp:139
su2activevector ActDisk_R
Value of the actuator disk Radius.
Definition CEulerSolver.hpp:74
su2double GetTangGridVelIn(unsigned short val_blade, unsigned long val_span)
Definition CEulerSolver.hpp:167
bool FixedCL_Convergence(CConfig *config, bool convergence) final
Check for convergence of the Fixed CL mode to the target CL.
Definition CEulerSolver.cpp:4815
unsigned long Iter_Update_AoA
Iteration at which AoA was updated last.
Definition CEulerSolver.hpp:114
const su2double * GetTurboVelocityOut(unsigned short inMarkerTP, unsigned short valSpan) const final
Provide the outlet normal velocity to check convergence of conservative mixing-plane.
Definition CEulerSolver.hpp:1337
void SetFarfield_AoA(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, bool Output)
Update the AoA and freestream velocity at the farfield.
Definition CEulerSolver.cpp:4768
su2activematrix AverageDensity
Definition CEulerSolver.hpp:133
bool Update_AoA
Boolean to signal Angle of Attack Update.
Definition CEulerSolver.hpp:113
vector< vector< su2double > > ActDisk_Fz_BEM
Value of the actuator disk Z component of the radial and tangential forces per Unit Area resultant.
Definition CEulerSolver.hpp:85
void SetNuOut(su2double value, unsigned short inMarkerTP, unsigned short valSpan) final
Set outlet turbulent Nu.
Definition CEulerSolver.hpp:1522
su2activematrix OldAveragePressure
Definition CEulerSolver.hpp:131
void GatherInOutAverageValues(CConfig *config, CGeometry *geometry) final
It gathers into the master node average quantities at inflow and outflow needed for turbomachinery an...
Definition CEulerSolver.cpp:9725
su2activematrix OldAverageDensity
Definition CEulerSolver.hpp:134
void SetDonorGlobalIndex(unsigned short val_marker, unsigned long val_vertex, unsigned long val_index) final
Value of the characteristic global index at the boundaries.
Definition CEulerSolver.hpp:1061
su2double GetTotal_Power() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:898
vector< CFluidModel * > FluidModel
fluid model used in the solver.
Definition CEulerSolver.hpp:118
void ExplicitRK_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) final
Update the solution using a Runge-Kutta scheme.
Definition CEulerSolver.cpp:2498
su2double Total_Power
Total drag coefficient for all the boundaries.
Definition CEulerSolver.hpp:92
void SetTotal_DC60(su2double val_Total_DC60) final
Store the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:1042
su2double GetTotal_IDC_Mach() const final
Provide the total (inviscid + viscous) non dimensional drag coefficient.
Definition CEulerSolver.hpp:952
unsigned long GetDonorGlobalIndex(unsigned short val_marker, unsigned long val_vertex) const final
Value of the characteristic global index at the boundaries.
Definition CEulerSolver.hpp:1050
vector< vector< su2double > > ActDisk_DeltaP_r
Value of the DeltaP_r.
Definition CEulerSolver.hpp:68
su2double GetTotal_CNearFieldOF() const final
Provide the total (inviscid + viscous) non dimensional Near-Field pressure coefficient.
Definition CEulerSolver.hpp:880
su2double Total_CEquivArea
Total Equivalent Area coefficient for all the boundaries.
Definition CEulerSolver.hpp:107
void PrepareImplicitIteration(CGeometry *geometry, CSolver **, CConfig *config) final
Prepare an implicit iteration.
Definition CEulerSolver.cpp:2518
su2double Total_IDC
Total IDC coefficient for all the boundaries.
Definition CEulerSolver.hpp:94
void TurboAverageProcess(CSolver **solver, CGeometry *geometry, CConfig *config, unsigned short marker_flag) final
It computes average quantities along the span for turbomachinery analysis.
Definition CEulerSolver.cpp:9259
Definition CFVMFlowSolverBase.hpp:36
su2double Total_CNearFieldOF
Total Near-Field Pressure coefficient for all the boundaries.
Definition CFVMFlowSolverBase.hpp:169
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
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
std::shared_ptr< CTurboOutput > TurbomachineryPerformance
turbo performance calculator.
Definition CSolver.hpp:158
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
TURBOMACHINERY_TYPE
Types of mixing process for averaging quantities at the boundaries.
Definition option_structure.hpp:2071
@ AXIAL
axial turbomachinery.
@ AXIAL_CENTRIFUGAL
mixed flow turbine.
@ CENTRIPETAL_AXIAL
mixed flow turbine.
@ INFLOW
flag for inflow marker for compute turboperformance.
Definition option_structure.hpp:2116
@ OUTFLOW
flag for outflow marker for compute turboperformance.
Definition option_structure.hpp:2117