Documentation 6b54b78464
Loading...
Searching...
No Matches
CFEM_DG_NSSolver.hpp
Go to the documentation of this file.
1/*!
2 * \file CFEM_DG_NSSolver.hpp
3 * \brief Headers of the CFEM_DG_NSSolver class
4 * \author E. van der Weide, T. Economon, J. Alonso
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
29#pragma once
30
32
33/*!
34 * \class CFEM_DG_NSSolver
35 * \brief Main class for defining the Navier-Stokes Discontinuous Galerkin finite element flow solver.
36 * \ingroup Navier_Stokes_Equations
37 * \author E. van der Weide, T. Economon, J. Alonso
38 * \version 8.5.0 "Harrier"
39 */
41private:
42 su2double Viscosity_Inf; /*!< \brief Viscosity at the infinity. */
43 su2double Tke_Inf; /*!< \brief Turbulent kinetic energy at the infinity. */
44 su2double Prandtl_Lam, /*!< \brief Laminar Prandtl number. */
45 Prandtl_Turb; /*!< \brief Turbulent Prandtl number. */
46
47 CSGSModel *SGSModel; /*!< \brief LES Subgrid Scale model. */
48 bool SGSModelUsed; /*!< \brief Whether or not an LES Subgrid Scale model is used. */
49
51 *CL_Visc, /*!< \brief Lift coefficient (viscous contribution) for each boundary. */
52 *CD_Visc, /*!< \brief Drag coefficient (viscous contribution) for each boundary. */
53 *CSF_Visc, /*!< \brief Side force coefficient (viscous contribution) for each boundary. */
54 *CMx_Visc, /*!< \brief Moment x coefficient (viscous contribution) for each boundary. */
55 *CMy_Visc, /*!< \brief Moment y coefficient (viscous contribution) for each boundary. */
56 *CMz_Visc, /*!< \brief Moment z coefficient (viscous contribution) for each boundary. */
57 *CFx_Visc, /*!< \brief Force x coefficient (viscous contribution) for each boundary. */
58 *CFy_Visc, /*!< \brief Force y coefficient (viscous contribution) for each boundary. */
59 *CFz_Visc, /*!< \brief Force z coefficient (viscous contribution) for each boundary. */
60 *CEff_Visc, /*!< \brief Efficiency (Cl/Cd) (Viscous contribution) for each boundary. */
61 *Surface_CL_Visc, /*!< \brief Lift coefficient (viscous contribution) for each monitoring surface. */
62 *Surface_CD_Visc, /*!< \brief Drag coefficient (viscous contribution) for each monitoring surface. */
63 *Surface_CSF_Visc, /*!< \brief Side-force coefficient (viscous contribution) for each monitoring surface. */
64 *Surface_CEff_Visc, /*!< \brief Side-force coefficient (viscous contribution) for each monitoring surface. */
65 *Surface_CFx_Visc, /*!< \brief Force x coefficient (viscous contribution) for each monitoring surface. */
66 *Surface_CFy_Visc, /*!< \brief Force y coefficient (viscous contribution) for each monitoring surface. */
67 *Surface_CFz_Visc, /*!< \brief Force z coefficient (viscous contribution) for each monitoring surface. */
68 *Surface_CMx_Visc, /*!< \brief Moment x coefficient (viscous contribution) for each monitoring surface. */
69 *Surface_CMy_Visc, /*!< \brief Moment y coefficient (viscous contribution) for each monitoring surface. */
70 *Surface_CMz_Visc, /*!< \brief Moment z coefficient (viscous contribution) for each monitoring surface. */
71 *Heat_Visc, /*!< \brief Heat load (viscous contribution) for each boundary. */
72 *MaxHeatFlux_Visc; /*!< \brief Maximum heat flux (viscous contribution) for each boundary. */
73
75 AllBound_CD_Visc, /*!< \brief Drag coefficient (viscous contribution) for all the boundaries. */
76 AllBound_CL_Visc, /*!< \brief Lift coefficient (viscous contribution) for all the boundaries. */
77 AllBound_CSF_Visc, /*!< \brief Sideforce coefficient (viscous contribution) for all the boundaries. */
78 AllBound_CMx_Visc, /*!< \brief Moment x coefficient (inviscid contribution) for all the boundaries. */
79 AllBound_CMy_Visc, /*!< \brief Moment y coefficient (inviscid contribution) for all the boundaries. */
80 AllBound_CMz_Visc, /*!< \brief Moment z coefficient (inviscid contribution) for all the boundaries. */
81 AllBound_CEff_Visc, /*!< \brief Efficient coefficient (Viscous contribution) for all the boundaries. */
82 AllBound_CFx_Visc, /*!< \brief Force x coefficient (inviscid contribution) for all the boundaries. */
83 AllBound_CFy_Visc, /*!< \brief Force y coefficient (inviscid contribution) for all the boundaries. */
84 AllBound_CFz_Visc, /*!< \brief Force z coefficient (inviscid contribution) for all the boundaries. */
85 AllBound_HeatFlux_Visc, /*!< \brief Heat load (viscous contribution) for all the boundaries. */
86 AllBound_MaxHeatFlux_Visc; /*!< \brief Maximum heat flux (viscous contribution) for all boundaries. */
87 su2double StrainMag_Max,
88 Omega_Max; /*!< \brief Maximum Strain Rate magnitude and Omega. */
89
90public:
91
92 /*!
93 * \brief Constructor of the class.
94 */
95 CFEM_DG_NSSolver(void);
96
97 /*!
98 * \overload
99 * \param[in] geometry - Geometrical definition of the problem.
100 * \param[in] config - Definition of the particular problem.
101 */
102 CFEM_DG_NSSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh);
103
104 /*!
105 * \brief Destructor of the class.
106 */
107 ~CFEM_DG_NSSolver(void) override;
108
109 /*!
110 * \brief Function to compute the time step for solving the Navier-Stokes equations.
111 * \param[in] geometry - Geometrical definition of the problem.
112 * \param[in] solver_container - Container vector with all the solutions.
113 * \param[in] config - Definition of the particular problem.
114 * \param[in] iMesh - Index of the mesh in multigrid computations.
115 * \param[in] Iteration - Value of the current iteration.
116 */
117 void SetTime_Step(CGeometry *geometry,
118 CSolver **solver_container,
119 CConfig *config,
120 unsigned short iMesh,
121 unsigned long Iteration) override;
122
123 /*!
124 * \brief Compute the artificial viscosity for shock capturing in DG.
125 * \param[in] config - Definition of the particular problem.
126 * \param[in] elemBeg - Begin index of the element range to be computed.
127 * \param[in] elemEnd - End index (not included) of the element range to be computed.
128 * \param[out] workArray - Work array.
129 */
130 void Shock_Capturing_DG(CConfig *config,
131 const unsigned long elemBeg,
132 const unsigned long elemEnd,
133 su2double *workArray) override;
134
135 /*!
136 * \brief Per-Olof Persson's method for capturing shock in DG
137 * \param[in] elemBeg - Begin index of the element range to be computed.
138 * \param[in] elemEnd - End index (not included) of the element range to be computed.
139 * \param[out] workArray - Work array.
140 */
141 void Shock_Capturing_DG_Persson(const unsigned long elemBeg,
142 const unsigned long elemEnd,
143 su2double *workArray);
144
145 /*!
146 * \brief Compute the volume contributions to the spatial residual.
147 * \param[in] config - Definition of the particular problem.
148 * \param[in] elemBeg - Begin index of the element range to be computed.
149 * \param[in] elemEnd - End index (not included) of the element range to be computed.
150 * \param[out] workArray - Work array.
151 */
152 void Volume_Residual(CConfig *config,
153 const unsigned long elemBeg,
154 const unsigned long elemEnd,
155 su2double *workArray) override;
156
157 /*!
158 * \brief Compute the spatial residual for the given range of faces.
159 * \param[in] config - Definition of the particular problem.
160 * \param[in] indFaceBeg - Starting index in the matching faces.
161 * \param[in] indFaceEnd - End index in the matching faces.
162 * \param[in,out] indResFaces - Index where to store the residuals in
163 the vector of face residuals.
164 * \param[in] numerics - Description of the numerical method.
165 * \param[out] workArray - Work array.
166 */
167 void ResidualFaces(CConfig *config,
168 const unsigned long indFaceBeg,
169 const unsigned long indFaceEnd,
170 unsigned long &indResFaces,
171 CNumerics *numerics,
172 su2double *workArray) override;
173
174 /*!
175 * \brief Impose via the residual the Euler wall boundary condition.
176 * \param[in] config - Definition of the particular problem.
177 * \param[in] surfElemBeg - Start index in the list of surface elements.
178 * \param[in] surfElemEnd - End index (not included) in the list of surface elements.
179 * \param[in] surfElem - Array of surface elements for which the boundary
180 conditions must be imposed.
181 * \param[out] resFaces - Array where the residual contribution from the
182 surface elements must be stored.
183 * \param[in] conv_numerics - Description of the numerical method.
184 * \param[out] workArray - Work array.
185 */
186 void BC_Euler_Wall(CConfig *config,
187 const unsigned long surfElemBeg,
188 const unsigned long surfElemEnd,
189 const CSurfaceElementFEM *surfElem,
190 su2double *resFaces,
191 CNumerics *conv_numerics,
192 su2double *workArray) override;
193
194 /*!
195 * \brief Impose the far-field boundary condition.
196 * \param[in] config - Definition of the particular problem.
197 * \param[in] surfElemBeg - Start index in the list of surface elements.
198 * \param[in] surfElemEnd - End index (not included) in the list of surface elements.
199 * \param[in] surfElem - Array of surface elements for which the boundary
200 conditions must be imposed.
201 * \param[out] resFaces - Array where the residual contribution from the
202 surface elements must be stored.
203 * \param[in] conv_numerics - Description of the numerical method.
204 * \param[out] workArray - Work array.
205 */
206 void BC_Far_Field(CConfig *config,
207 const unsigned long surfElemBeg,
208 const unsigned long surfElemEnd,
209 const CSurfaceElementFEM *surfElem,
210 su2double *resFaces,
211 CNumerics *conv_numerics,
212 su2double *workArray) override;
213
214 /*!
215 * \brief Impose the symmetry boundary condition using the residual.
216 * \param[in] config - Definition of the particular problem.
217 * \param[in] surfElemBeg - Start index in the list of surface elements.
218 * \param[in] surfElemEnd - End index (not included) in the list of surface elements.
219 * \param[in] surfElem - Array of surface elements for which the boundary
220 conditions must be imposed.
221 * \param[out] resFaces - Array where the residual contribution from the
222 surface elements must be stored.
223 * \param[in] conv_numerics - Description of the numerical method.
224 * \param[out] workArray - Work array.
225 */
226 void BC_Sym_Plane(CConfig *config,
227 const unsigned long surfElemBeg,
228 const unsigned long surfElemEnd,
229 const CSurfaceElementFEM *surfElem,
230 su2double *resFaces,
231 CNumerics *conv_numerics,
232 su2double *workArray) override;
233
234 /*!
235 * \brief Impose the supersonic outlet boundary condition.
236 * \param[in] config - Definition of the particular problem.
237 * \param[in] surfElemBeg - Start index in the list of surface elements.
238 * \param[in] surfElemEnd - End index (not included) in the list of surface elements.
239 * \param[in] surfElem - Array of surface elements for which the boundary
240 conditions must be imposed.
241 * \param[out] resFaces - Array where the residual contribution from the
242 surface elements must be stored.
243 * \param[in] conv_numerics - Description of the numerical method.
244 * \param[out] workArray - Work array.
245 */
246 void BC_Supersonic_Outlet(CConfig *config,
247 const unsigned long surfElemBeg,
248 const unsigned long surfElemEnd,
249 const CSurfaceElementFEM *surfElem,
250 su2double *resFaces,
251 CNumerics *conv_numerics,
252 su2double *workArray) override;
253
254 /*!
255 * \brief Impose the subsonic inlet boundary condition.
256 * \param[in] config - Definition of the particular problem.
257 * \param[in] surfElemBeg - Start index in the list of surface elements.
258 * \param[in] surfElemEnd - End index (not included) in the list of surface elements.
259 * \param[in] surfElem - Array of surface elements for which the boundary
260 conditions must be imposed.
261 * \param[out] resFaces - Array where the residual contribution from the
262 surface elements must be stored.
263 * \param[in] conv_numerics - Description of the numerical method.
264 * \param[in] val_marker - Surface marker where the boundary condition is applied.
265 * \param[out] workArray - Work array.
266 */
267 void BC_Inlet(CConfig *config,
268 const unsigned long surfElemBeg,
269 const unsigned long surfElemEnd,
270 const CSurfaceElementFEM *surfElem,
271 su2double *resFaces,
272 CNumerics *conv_numerics,
273 unsigned short val_marker,
274 su2double *workArray) override;
275
276 /*!
277 * \brief Impose the outlet boundary condition.
278 * \param[in] config - Definition of the particular problem.
279 * \param[in] surfElemBeg - Start index in the list of surface elements.
280 * \param[in] surfElemEnd - End index (not included) in the list of surface elements.
281 * \param[in] surfElem - Array of surface elements for which the boundary
282 conditions must be imposed.
283 * \param[out] resFaces - Array where the residual contribution from the
284 surface elements must be stored.
285 * \param[in] conv_numerics - Description of the numerical method.
286 * \param[in] val_marker - Surface marker where the boundary condition is applied.
287 * \param[out] workArray - Work array.
288 */
289 void BC_Outlet(CConfig *config,
290 const unsigned long surfElemBeg,
291 const unsigned long surfElemEnd,
292 const CSurfaceElementFEM *surfElem,
293 su2double *resFaces,
294 CNumerics *conv_numerics,
295 unsigned short val_marker,
296 su2double *workArray) override;
297
298 /*!
299 * \brief Impose a constant heat-flux condition at the wall.
300 * \param[in] config - Definition of the particular problem.
301 * \param[in] surfElemBeg - Start index in the list of surface elements.
302 * \param[in] surfElemEnd - End index (not included) in the list of surface elements.
303 * \param[in] surfElem - Array of surface elements for which the boundary
304 conditions must be imposed.
305 * \param[out] resFaces - Array where the residual contribution from the
306 surface elements must be stored.
307 * \param[in] conv_numerics - Description of the numerical method.
308 * \param[in] val_marker - Surface marker where the boundary condition is applied.
309 * \param[out] workArray - Work array.
310 */
311 void BC_HeatFlux_Wall(CConfig *config,
312 const unsigned long surfElemBeg,
313 const unsigned long surfElemEnd,
314 const CSurfaceElementFEM *surfElem,
315 su2double *resFaces,
316 CNumerics *conv_numerics,
317 unsigned short val_marker,
318 su2double *workArray) override;
319
320 /*!
321 * \brief Impose an isothermal condition at the wall.
322 * \param[in] config - Definition of the particular problem.
323 * \param[in] surfElemBeg - Start index in the list of surface elements.
324 * \param[in] surfElemEnd - End index (not included) in the list of surface elements.
325 * \param[in] surfElem - Array of surface elements for which the boundary
326 conditions must be imposed.
327 * \param[out] resFaces - Array where the residual contribution from the
328 surface elements must be stored.
329 * \param[in] conv_numerics - Description of the numerical method.
330 * \param[in] val_marker - Surface marker where the boundary condition is applied.
331 * \param[out] workArray - Work array.
332 */
333 void BC_Isothermal_Wall(CConfig *config,
334 const unsigned long surfElemBeg,
335 const unsigned long surfElemEnd,
336 const CSurfaceElementFEM *surfElem,
337 su2double *resFaces,
338 CNumerics *conv_numerics,
339 unsigned short val_marker,
340 su2double *workArray) override;
341
342 /*!
343 * \brief Impose the boundary condition using characteristic reconstruction.
344 * \param[in] config - Definition of the particular problem.
345 * \param[in] surfElemBeg - Start index in the list of surface elements.
346 * \param[in] surfElemEnd - End index (not included) in the list of surface elements.
347 * \param[in] surfElem - Array of surface elements for which the boundary
348 conditions must be imposed.
349 * \param[out] resFaces - Array where the residual contribution from the
350 surface elements must be stored.
351 * \param[in] conv_numerics - Description of the numerical method.
352 * \param[in] val_marker - Surface marker where the boundary condition is applied.
353 * \param[out] workArray - Work array.
354 */
355 void BC_Riemann(CConfig *config,
356 const unsigned long surfElemBeg,
357 const unsigned long surfElemEnd,
358 const CSurfaceElementFEM *surfElem,
359 su2double *resFaces,
360 CNumerics *conv_numerics,
361 unsigned short val_marker,
362 su2double *workArray) override;
363
364 /*!
365 * \brief Impose the user customized boundary condition.
366 * \param[in] config - Definition of the particular problem.
367 * \param[in] surfElemBeg - Start index in the list of surface elements.
368 * \param[in] surfElemEnd - End index (not included) in the list of surface elements.
369 * \param[in] surfElem - Array of surface elements for which the boundary
370 conditions must be imposed.
371 * \param[out] resFaces - Array where the residual contribution from the
372 surface elements must be stored.
373 * \param[in] conv_numerics - Description of the numerical method.
374 * \param[out] workArray - Work array.
375 */
376 void BC_Custom(CConfig *config,
377 const unsigned long surfElemBeg,
378 const unsigned long surfElemEnd,
379 const CSurfaceElementFEM *surfElem,
380 su2double *resFaces,
381 CNumerics *conv_numerics,
382 su2double *workArray) override;
383
384 /*!
385 * \brief Compute the viscosity at the infinity.
386 * \return Value of the viscosity at the infinity.
387 */
388 inline su2double GetViscosity_Inf(void) const override { return Viscosity_Inf; }
389
390 /*!
391 * \brief Get the turbulent kinetic energy at the infinity.
392 * \return Value of the turbulent kinetic energy at the infinity.
393 */
394 inline su2double GetTke_Inf(void) const override { return Tke_Inf; }
395
396 /*!
397 * \brief Compute the viscous forces and all the addimensional coefficients.
398 * \param[in] geometry - Geometrical definition of the problem.
399 * \param[in] config - Definition of the particular problem.
400 */
401 void Friction_Forces(const CGeometry* geometry, const CConfig* config) override;
402
403 /*!
404 * \brief Get the non dimensional lift coefficient (viscous contribution).
405 * \param[in] val_marker - Surface marker where the coefficient is computed.
406 * \return Value of the lift coefficient (viscous contribution) on the surface <i>val_marker</i>.
407 */
408 inline su2double GetCL_Visc(unsigned short val_marker) const override { return CL_Visc[val_marker]; }
409
410 /*!
411 * \brief Get the non dimensional sideforce coefficient (viscous contribution).
412 * \param[in] val_marker - Surface marker where the coefficient is computed.
413 * \return Value of the sideforce coefficient (viscous contribution) on the surface <i>val_marker</i>.
414 */
415 inline su2double GetCSF_Visc(unsigned short val_marker) const override { return CSF_Visc[val_marker]; }
416
417 /*!
418 * \brief Get the non dimensional drag coefficient (viscous contribution).
419 * \param[in] val_marker - Surface marker where the coefficient is computed.
420 * \return Value of the drag coefficient (viscous contribution) on the surface <i>val_marker</i>.
421 */
422 inline su2double GetCD_Visc(unsigned short val_marker) const override { return CD_Visc[val_marker]; }
423
424 /*!
425 * \brief Get the total non dimensional lift coefficient (viscous contribution).
426 * \return Value of the lift coefficient (viscous contribution).
427 */
428 inline su2double GetAllBound_CL_Visc() const override { return AllBound_CL_Visc; }
429
430 /*!
431 * \brief Get the total non dimensional sideforce coefficient (viscous contribution).
432 * \return Value of the lift coefficient (viscous contribution).
433 */
434 inline su2double GetAllBound_CSF_Visc() const override { return AllBound_CSF_Visc; }
435
436 /*!
437 * \brief Get the total non dimensional drag coefficient (viscous contribution).
438 * \return Value of the drag coefficient (viscous contribution).
439 */
440 inline su2double GetAllBound_CD_Visc() const override { return AllBound_CD_Visc; }
441
442 /*!
443 * \brief Get the max Omega.
444 * \return Value of the max Omega.
445 */
446 inline su2double GetOmega_Max(void) const override { return Omega_Max; }
447
448 /*!
449 * \brief Get the max Strain rate magnitude.
450 * \return Value of the max Strain rate magnitude.
451 */
452 inline su2double GetStrainMag_Max(void) const override { return StrainMag_Max; }
453
454private:
455
456 /*!
457 * \brief Function, which computes the spatial residual of the ADER-DG
458 predictor step for the given volume element and solution using an
459 aliased discretization in 2D.
460 * \param[in] config - Definition of the particular problem.
461 * \param[in] elem - Volume element for which the spatial residual of the
462 predictor step must be computed.
463 * \param[in] sol - Solution for which the residual must be computed.
464 * \param[in] nSimul - Number of entities (typically time integration points)
465 that are treated simultaneously.
466 * \param[in] NPad - Padded N value in the matrix multiplications to
467 obtain better performance. The solution sol is stored
468 with this padded value to avoid a memcpy.
469 * \param[out] res - Residual of the spatial DOFs to be computed by this
470 function.
471 * \param[out] work - Work array.
472 */
473 void ADER_DG_AliasedPredictorResidual_2D(CConfig *config,
474 CVolumeElementFEM *elem,
475 const su2double *sol,
476 const unsigned short nSimul,
477 const unsigned short NPad,
478 su2double *res,
479 su2double *work) override;
480
481/*!
482 * \brief Function, which computes the spatial residual of the ADER-DG
483 predictor step for the given volume element and solution using an
484 aliased discretization in 3D.
485 * \param[in] config - Definition of the particular problem.
486 * \param[in] elem - Volume element for which the spatial residual of the
487 predictor step must be computed.
488 * \param[in] sol - Solution for which the residual must be computed.
489 * \param[in] nSimul - Number of entities (typically time integration points)
490 that are treated simultaneously.
491 * \param[in] NPad - Padded N value in the matrix multiplications to
492 obtain better performance. The solution sol is stored
493 with this padded value to avoid a memcpy.
494 * \param[out] res - Residual of the spatial DOFs to be computed by this
495 function.
496 * \param[out] work - Work array.
497 */
498 void ADER_DG_AliasedPredictorResidual_3D(CConfig *config,
499 CVolumeElementFEM *elem,
500 const su2double *sol,
501 const unsigned short nSimul,
502 const unsigned short NPad,
503 su2double *res,
504 su2double *work) override;
505 /*!
506 * \brief Function, which computes the spatial residual of the ADER-DG
507 predictor step for the given volume element and solution using a
508 non-aliased discretization in 2D.
509 * \param[in] config - Definition of the particular problem.
510 * \param[in] elem - Volume element for which the spatial residual of the
511 predictor step must be computed.
512 * \param[in] sol - Solution for which the residual must be computed.
513 * \param[in] nSimul - Number of entities (typically time integration points)
514 that are treated simultaneously.
515 * \param[in] NPad - Padded N value in the matrix multiplications to
516 obtain better performance. The solution sol is stored
517 with this padded value to avoid a memcpy.
518 * \param[out] res - Residual of the spatial DOFs to be computed by this
519 function.
520 * \param[out] work - Work array.
521 */
522 void ADER_DG_NonAliasedPredictorResidual_2D(CConfig *config,
523 CVolumeElementFEM *elem,
524 const su2double *sol,
525 const unsigned short nSimul,
526 const unsigned short NPad,
527 su2double *res,
528 su2double *work) override;
529
530 /*!
531 * \brief Function, which computes the spatial residual of the ADER-DG
532 predictor step for the given volume element and solution using a
533 non-aliased discretization in 3D.
534 * \param[in] config - Definition of the particular problem.
535 * \param[in] elem - Volume element for which the spatial residual of the
536 predictor step must be computed.
537 * \param[in] sol - Solution for which the residual must be computed.
538 * \param[in] nSimul - Number of entities (typically time integration points)
539 that are treated simultaneously.
540 * \param[in] NPad - Padded N value in the matrix multiplications to
541 obtain better performance. The solution sol is stored
542 with this padded value to avoid a memcpy.
543 * \param[out] res - Residual of the spatial DOFs to be computed by this
544 function.
545 * \param[out] work - Work array.
546 */
547 void ADER_DG_NonAliasedPredictorResidual_3D(CConfig *config,
548 CVolumeElementFEM *elem,
549 const su2double *sol,
550 const unsigned short nSimul,
551 const unsigned short NPad,
552 su2double *res,
553 su2double *work) override;
554 /*!
555 * \brief Function to compute the penalty terms in the integration
556 points of a face.
557 * \param[in] indFaceChunk - Index of the face in the chunk of fused faces.
558 * \param[in] nInt - Number of integration points of the face.
559 * \param[in] NPad - Value of the padding parameter to obtain optimal
560 performance in the gemm computations.
561 * \param[in] solInt0 - Solution in the integration points of side 0.
562 * \param[in] solInt1 - Solution in the integration points of side 1.
563 * \param[in] viscosityInt0 - Viscosity in the integration points of side 0.
564 * \param[in] viscosityInt1 - Viscosity in the integration points of side 1.
565 * \param[in] kOverCvInt0 - Heat conductivity divided by Cv in the
566 integration points of side 0.
567 * \param[in] kOverCvInt1 - Heat conductivity divided by Cv in the
568 integration points of side 1.
569 * \param[in] ConstPenFace - Penalty constant for this face.
570 * \param[in] lenScale0 - Length scale of the element of side 0.
571 * \param[in] lenScale1 - Length scale of the element of side 1.
572 * \param[in] metricNormalsFace - Metric terms in the integration points, which
573 contain the normals.
574 * \param[out] penaltyFluxes - Penalty fluxes in the integration points.
575 */
576 void PenaltyTermsFluxFace(const unsigned short indFaceChunk,
577 const unsigned short nInt,
578 const unsigned short NPad,
579 const su2double *solInt0,
580 const su2double *solInt1,
581 const su2double *viscosityInt0,
582 const su2double *viscosityInt1,
583 const su2double *kOverCvInt0,
584 const su2double *kOverCvInt1,
585 const su2double ConstPenFace,
586 const su2double lenScale0,
587 const su2double lenScale1,
588 const su2double *metricNormalsFace,
589 su2double *penaltyFluxes);
590
591 /*!
592 * \brief Function, which performs the treatment of the boundary faces for
593 the Navier-Stokes equations for the most of the boundary conditions.
594 * \param[in] config - Definition of the particular problem.
595 * \param[in] conv_numerics - Description of the numerical method.
596 * \param[in] nFaceSimul - Number of faces that are treated simultaneously
597 to improve performance.
598 * \param[in] NPad - Value of the padding parameter to obtain optimal
599 performance in the gemm computations.
600 * \param[in] Wall_HeatFlux - The value of the prescribed heat flux.
601 * \param[in] HeatFlux_Prescribed - Whether or not the heat flux is prescribed by
602 e.g. the boundary conditions.
603 * \param[in] Wall_Temperature - The value of the prescribed wall temperature.
604 * \param[in] Temperature_Prescribed - Whether or not the temperature is precribed
605 by e.g. the boundary conditions.
606 * \param[in] surfElem - Surface boundary elements for which the
607 residuals mut be computed.
608 * \param[in] solIntL - Left states in the integration points of the face.
609 * \param[in] solIntR - Right states in the integration points of the face.
610 * \param[out] workArray - Storage for the local arrays.
611 * \param[out] resFaces - Array to store the residuals of the face.
612 * \param[in,out] indResFaces - Index in resFaces, where the current residual
613 should be stored. It is updated in the function
614 for the next boundary element.
615 * \param[in,out] wallModel - Possible pointer to the wall model treatment.
616 NULL pointer indicates no wall model treatment.
617 */
618 void ViscousBoundaryFacesBCTreatment(CConfig *config,
619 CNumerics *conv_numerics,
620 const unsigned short nFaceSimul,
621 const unsigned short NPad,
622 const su2double Wall_HeatFlux,
623 const bool HeatFlux_Prescribed,
624 const su2double Wall_Temperature,
625 const bool Temperature_Prescribed,
626 const CSurfaceElementFEM *surfElem,
627 const su2double *solIntL,
628 const su2double *solIntR,
629 su2double *workArray,
630 su2double *resFaces,
631 unsigned long &indResFaces,
632 CWallModel *wallModel);
633
634 /*!
635 * \brief Function, which computes the viscous fluxes in the integration
636 points for the boundary faces that must be treated simulaneously.
637 This function uses the standard approach for computing the fluxes,
638 i.e. no wall modeling.
639 * \param[in] config - Definition of the particular problem.
640 * \param[in] nFaceSimul - Number of faces that are treated simultaneously
641 to improve performance.
642 * \param[in] NPad - Value of the padding parameter to obtain optimal
643 performance in the gemm computations.
644 * \param[in] nInt - Number of integration points on the face.
645 * \param[in] nDOFsElem - Number of DOFs of the adjacent element.
646 * \param[in] Wall_HeatFlux - The value of the prescribed heat flux.
647 * \param[in] HeatFlux_Prescribed - Whether or not the heat flux is prescribed by
648 e.g. the boundary conditions.
649 * \param[in] derBasisElem - Array, which contains the derivatives of the
650 basis functions of the adjacent element
651 in the integration points.
652 * \param[in] surfElem - Surface boundary elements for which the
653 viscous fluxes must be computed.
654 * \param[in] solIntL - Left states in the integration points of the face.
655 * \param[out] solElem - Storage for the solution in the adjacent elements.
656 * \param[out] gradSolInt - Storage for the gradients of the solution in the
657 integration points of the face.
658 * \param[out] viscFluxes - To be computed viscous fluxes in the
659 integration points.
660 * \param[out] viscosityInt - To be computed viscosity in the integration points.
661 * \param[out] kOverCvInt - To be computed thermal conductivity in the
662 integration points.
663 */
664 void ComputeViscousFluxesBoundaryFaces(CConfig *config,
665 const unsigned short nFaceSimul,
666 const unsigned short NPad,
667 const unsigned short nInt,
668 const unsigned short nDOFsElem,
669 const su2double Wall_HeatFlux,
670 const bool HeatFlux_Prescribed,
671 const su2double *derBasisElem,
672 const CSurfaceElementFEM *surfElem,
673 const su2double *solIntL,
674 su2double *solElem,
675 su2double *gradSolInt,
676 su2double *viscFluxes,
677 su2double *viscosityInt,
678 su2double *kOverCvInt);
679
680 /*!
681 * \brief Function, which computes the viscous fluxes in the integration
682 points for the boundary faces that must be treated simulaneously.
683 The viscous fluxes are computed via a wall modeling approach.
684 * \param[in] config - Definition of the particular problem.
685 * \param[in] nFaceSimul - Number of faces that are treated simultaneously
686 to improve performance.
687 * \param[in] NPad - Value of the padding parameter to obtain optimal
688 performance in the gemm computations.
689 * \param[in] nInt - Number of integration points on the face.
690 * \param[in] Wall_HeatFlux - The value of the prescribed heat flux.
691 * \param[in] HeatFlux_Prescribed - Whether or not the heat flux is prescribed by
692 the boundary conditions.
693 * \param[in] Wall_Temperature - The value of the prescribed wall temperature.
694 * \param[in] Temperature_Prescribed - Whether or not the temperature is precribed
695 by the boundary conditions
696 * \param[in] surfElem - Surface boundary elements for which the
697 viscous fluxes must be computed.
698 * \param[in] solIntL - Left states in the integration points of the face.
699 * \param[out] workArray - Storage array
700 * \param[out] viscFluxes - To be computed viscous fluxes in the
701 integration points.
702 * \param[out] viscosityInt - To be computed viscosity in the integration points.
703 * \param[out] kOverCvInt - To be computed thermal conductivity in the
704 integration points.
705 * \param[in,out] wallModel - Pointer to the wall model treatment.
706 */
707 void WallTreatmentViscousFluxes(CConfig *config,
708 const unsigned short nFaceSimul,
709 const unsigned short NPad,
710 const unsigned short nInt,
711 const su2double Wall_HeatFlux,
712 const bool HeatFlux_Prescribed,
713 const su2double Wall_Temperature,
714 const bool Temperature_Prescribed,
715 const CSurfaceElementFEM *surfElem,
716 const su2double *solIntL,
717 su2double *workArray,
718 su2double *viscFluxes,
719 su2double *viscosityInt,
720 su2double *kOverCvInt,
721 CWallModel *wallModel);
722
723 /*!
724 * \brief Function, which computes the residual contribution from a boundary
725 face in a viscous computation when the boundary conditions have
726 already been applied.
727 * \param[in] config - Definition of the particular problem.
728 * \param[in] conv_numerics - Description of the numerical method.
729 * \param[in] nFaceSimul - Number of fused faces, i.e. the number of faces
730 that are treated simultaneously to improve performance.
731 * \param[in] NPad - Value of the padding parameter to obtain optimal
732 performance in the gemm computations.
733 * \param[in] surfElem - Surface boundary elements for which the
734 contribution to the residual must be computed.
735 * \param[in] solInt0 - Solution in the integration points of side 0.
736 * \param[in] solInt1 - Solution in the integration points of side 1.
737 * \param[out] paramFluxes - Array used for temporary storage.
738 * \param[out] fluxes - Temporary storage for the fluxes in the
739 integration points.
740 * \param[in,out] viscFluxes - On input this array contains the viscous fluxes
741 in the integration points. It is also used for
742 temporary storage.
743 * \param[in] viscosityInt - Temporary storage for the viscosity in the
744 integration points.
745 * \param[in] kOverCvInt - Temporary storage for the thermal conductivity
746 over Cv in the integration points.
747 * \param[out] resFaces - Array to store the residuals of the face.
748 * \param[in,out] indResFaces - Index in resFaces, where the current residual
749 should be stored. It is updated in the function
750 for the next boundary element.
751 */
752 void ResidualViscousBoundaryFace(CConfig *config,
753 CNumerics *conv_numerics,
754 const unsigned short nFaceSimul,
755 const unsigned short NPad,
756 const CSurfaceElementFEM *surfElem,
757 const su2double *solInt0,
758 const su2double *solInt1,
759 su2double *paramFluxes,
760 su2double *fluxes,
761 su2double *viscFluxes,
762 const su2double *viscosityInt,
763 const su2double *kOverCvInt,
764 su2double *resFaces,
765 unsigned long &indResFaces);
766
767 /*!
768 * \brief Function to compute the symmetrizing terms in the integration
769 points of a face.
770 * \param[in] indFaceChunk - Index of the face in the chunk of fused faces.
771 * \param[in] nInt - Number of integration points of the face.
772 * \param[in] NPad - Value of the padding parameter to obtain optimal
773 performance in the gemm computations.
774 * \param[in] solInt0 - Solution in the integration points of side 0.
775 * \param[in] solInt1 - Solution in the integration points of side 1.
776 * \param[in] viscosityInt0 - Viscosity in the integration points of side 0.
777 * \param[in] viscosityInt1 - Viscosity in the integration points of side 1.
778 * \param[in] kOverCvInt0 - Heat conductivity divided by Cv in the
779 integration points of side 0.
780 * \param[in] kOverCvInt1 - Heat conductivity divided by Cv in the
781 integration points of side 1.
782 * \param[in] metricNormalsFace - Metric terms in the integration points, which
783 contain the normals.
784 * \param[out] symmFluxes - Symmetrizing fluxes in the integration points.
785 */
786 void SymmetrizingFluxesFace(const unsigned short indFaceChunk,
787 const unsigned short nInt,
788 const unsigned short NPad,
789 const su2double *solInt0,
790 const su2double *solInt1,
791 const su2double *viscosityInt0,
792 const su2double *viscosityInt1,
793 const su2double *kOverCvInt0,
794 const su2double *kOverCvInt1,
795 const su2double *metricNormalsFace,
796 su2double *symmFluxes);
797
798 /*!
799 * \brief Function, which transforms the symmetrizing fluxes in the integration points
800 such that they are suited to be multiplied by the parametric gradients of
801 the basis functions.
802 * \param[in] indFaceChunk - Index of the face in the chunk of fused faces.
803 * \param[in] nInt - Number of integration points of the face.
804 * \param[in] NPad - Value of the padding parameter to obtain optimal
805 performance in the gemm computations.
806 * \param[in] halfTheta - Half times the theta parameter in the symmetrizing terms.
807 * \param[in] symmFluxes - Symmetrizing fluxes to be multiplied by the Cartesian
808 gradients of the basis functions.
809 * \param[in] weights - Integration weights of the integration points.
810 * \param[in] metricCoorFace - Derivatives of the parametric coordinates w.r.t. the
811 Cartesian coordinates in the integration points of
812 the face.
813 * \param[out] paramFluxes - Parametric fluxes in the integration points.
814 */
815 void TransformSymmetrizingFluxes(const unsigned short indFaceChunk,
816 const unsigned short nInt,
817 const unsigned short NPad,
818 const su2double halfTheta,
819 const su2double *symmFluxes,
820 const su2double *weights,
821 const su2double *metricCoorFace,
822 su2double *paramFluxes);
823
824 /*!
825 * \brief Function to compute the viscous normal fluxes in the integration points of a face.
826 * \param[in] adjVolElem - Pointer to the adjacent volume.
827 * \param[in] indFaceChunk - Index of the face in the chunk of fused faces.
828 * \param[in] nInt - Number of integration points of the face.
829 * \param[in] NPad - Value of the padding parameter to obtain optimal
830 performance in the gemm computations.
831 * \param[in] Wall_HeatFlux - The value of the prescribed heat flux.
832 * \param[in] HeatFlux_Prescribed - Whether or not the heat flux is prescribed by
833 e.g. the boundary conditions.
834 * \param[in] solInt - Solution in the integration points.
835 * \param[in] gradSolInt - Gradient of the solution in the integration points.
836 * \param[in] metricCoorDerivFace - Metric terms in the integration points, which
837 contain the derivatives of the parametric
838 coordinates w.r.t. the Cartesian coordinates.
839 Needed to compute the Cartesian gradients.
840 * \param[in] metricNormalsFace - Metric terms in the integration points, which
841 contain the normals.
842 * \param[in] wallDistanceInt - Wall distances in the integration points of the face.
843 * \param[out] viscNormFluxes - Viscous normal fluxes in the integration points.
844 * \param[out] viscosityInt - Viscosity in the integration points, which is
845 needed for other terms in the discretization.
846 * \param[out] kOverCvInt - Thermal conductivity over Cv in the integration points,
847 which is needed for other terms in the discretization.
848 */
849 void ViscousNormalFluxFace(const CVolumeElementFEM *adjVolElem,
850 const unsigned short indFaceChunk,
851 const unsigned short nInt,
852 const unsigned short NPad,
853 const su2double Wall_HeatFlux,
854 const bool HeatFlux_Prescribed,
855 const su2double *solInt,
856 const su2double *gradSolInt,
857 const su2double *metricCoorDerivFace,
858 const su2double *metricNormalsFace,
859 const su2double *wallDistanceInt,
860 su2double *viscNormFluxes,
861 su2double *viscosityInt,
862 su2double *kOverCvInt);
863
864 /*!
865 * \brief Function to compute the viscous normal flux in one integration point for a
866 2D simulation.
867 * \param[in] sol - Conservative variables.
868 * \param[in] solGradCart - Cartesian gradients of the conservative variables.
869 * \param[in] normal - Normal vector
870 * \param[in] HeatFlux - Value of the prescribed heat flux. If not
871 prescribed, this value should be zero.
872 * \param[in] factHeatFlux - Multiplication factor for the heat flux. It is zero
873 when the heat flux is prescribed and one when it has
874 to be computed.
875 * \param[in] wallDist - Distance to the nearest viscous wall, if appropriate.
876 * \param[in lenScale_LES - LES length scale, if appropriate.
877 * \param[out] Viscosity - Total viscosity, to be computed.
878 * \param[out] kOverCv - Total thermal conductivity over Cv, to be computed.
879 * \param[out] normalFlux - Viscous normal flux, to be computed.
880 */
881 void ViscousNormalFluxIntegrationPoint_2D(const su2double *sol,
882 const su2double solGradCart[4][2],
883 const su2double *normal,
884 const su2double HeatFlux,
885 const su2double factHeatFlux,
886 const su2double wallDist,
887 const su2double lenScale_LES,
888 su2double &Viscosity,
889 su2double &kOverCv,
890 su2double *normalFlux);
891
892 /*!
893 * \brief Function to compute the viscous normal flux in one integration point for a
894 3D simulation.
895 * \param[in] sol - Conservative variables.
896 * \param[in] solGradCart - Cartesian gradients of the conservative variables.
897 * \param[in] normal - Normal vector
898 * \param[in] HeatFlux - Value of the prescribed heat flux. If not
899 prescribed, this value should be zero.
900 * \param[in] factHeatFlux - Multiplication factor for the heat flux. It is zero
901 when the heat flux is prescribed and one when it has
902 to be computed.
903 * \param[in] wallDist - Distance to the nearest viscous wall, if appropriate.
904 * \param[in lenScale_LES - LES length scale, if appropriate.
905 * \param[out] Viscosity - Total viscosity, to be computed.
906 * \param[out] kOverCv - Total thermal conductivity over Cv, to be computed.
907 * \param[out] normalFlux - Viscous normal flux, to be computed.
908 */
909 void ViscousNormalFluxIntegrationPoint_3D(const su2double *sol,
910 const su2double solGradCart[5][3],
911 const su2double *normal,
912 const su2double HeatFlux,
913 const su2double factHeatFlux,
914 const su2double wallDist,
915 const su2double lenScale_LES,
916 su2double &Viscosity,
917 su2double &kOverCv,
918 su2double *normalFlux);
919};
Headers of the CFEM_DG_EulerSolver class.
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
Main class for defining the Euler Discontinuous Galerkin finite element flow solver.
Definition CFEM_DG_EulerSolver.hpp:40
Main class for defining the Navier-Stokes Discontinuous Galerkin finite element flow solver.
Definition CFEM_DG_NSSolver.hpp:40
void Shock_Capturing_DG_Persson(const unsigned long elemBeg, const unsigned long elemEnd, su2double *workArray)
Per-Olof Persson's method for capturing shock in DG.
Definition CFEM_DG_NSSolver.cpp:2998
void BC_Inlet(CConfig *config, const unsigned long surfElemBeg, const unsigned long surfElemEnd, const CSurfaceElementFEM *surfElem, su2double *resFaces, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) override
Impose the subsonic inlet boundary condition.
Definition CFEM_DG_NSSolver.cpp:5614
su2double GetCL_Visc(unsigned short val_marker) const override
Get the non dimensional lift coefficient (viscous contribution).
Definition CFEM_DG_NSSolver.hpp:408
su2double GetCSF_Visc(unsigned short val_marker) const override
Get the non dimensional sideforce coefficient (viscous contribution).
Definition CFEM_DG_NSSolver.hpp:415
~CFEM_DG_NSSolver(void) override
Destructor of the class.
Definition CFEM_DG_NSSolver.cpp:157
void SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) override
Function to compute the time step for solving the Navier-Stokes equations.
Definition CFEM_DG_NSSolver.cpp:898
su2double GetTke_Inf(void) const override
Get the turbulent kinetic energy at the infinity.
Definition CFEM_DG_NSSolver.hpp:394
void BC_Riemann(CConfig *config, const unsigned long surfElemBeg, const unsigned long surfElemEnd, const CSurfaceElementFEM *surfElem, su2double *resFaces, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) override
Impose the boundary condition using characteristic reconstruction.
Definition CFEM_DG_NSSolver.cpp:5999
CFEM_DG_NSSolver(void)
Constructor of the class.
Definition CFEM_DG_NSSolver.cpp:36
void BC_Supersonic_Outlet(CConfig *config, const unsigned long surfElemBeg, const unsigned long surfElemEnd, const CSurfaceElementFEM *surfElem, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray) override
Impose the supersonic outlet boundary condition.
Definition CFEM_DG_NSSolver.cpp:5546
void BC_Euler_Wall(CConfig *config, const unsigned long surfElemBeg, const unsigned long surfElemEnd, const CSurfaceElementFEM *surfElem, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray) override
Impose via the residual the Euler wall boundary condition.
Definition CFEM_DG_NSSolver.cpp:5000
void ResidualFaces(CConfig *config, const unsigned long indFaceBeg, const unsigned long indFaceEnd, unsigned long &indResFaces, CNumerics *numerics, su2double *workArray) override
Compute the spatial residual for the given range of faces.
Definition CFEM_DG_NSSolver.cpp:3737
void BC_Sym_Plane(CConfig *config, const unsigned long surfElemBeg, const unsigned long surfElemEnd, const CSurfaceElementFEM *surfElem, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray) override
Impose the symmetry boundary condition using the residual.
Definition CFEM_DG_NSSolver.cpp:5140
su2double GetAllBound_CSF_Visc() const override
Get the total non dimensional sideforce coefficient (viscous contribution).
Definition CFEM_DG_NSSolver.hpp:434
void BC_Far_Field(CConfig *config, const unsigned long surfElemBeg, const unsigned long surfElemEnd, const CSurfaceElementFEM *surfElem, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray) override
Impose the far-field boundary condition.
Definition CFEM_DG_NSSolver.cpp:5067
void Friction_Forces(const CGeometry *geometry, const CConfig *config) override
Compute the viscous forces and all the addimensional coefficients.
Definition CFEM_DG_NSSolver.cpp:188
su2double GetAllBound_CD_Visc() const override
Get the total non dimensional drag coefficient (viscous contribution).
Definition CFEM_DG_NSSolver.hpp:440
su2double GetCD_Visc(unsigned short val_marker) const override
Get the non dimensional drag coefficient (viscous contribution).
Definition CFEM_DG_NSSolver.hpp:422
void BC_HeatFlux_Wall(CConfig *config, const unsigned long surfElemBeg, const unsigned long surfElemEnd, const CSurfaceElementFEM *surfElem, su2double *resFaces, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) override
Impose a constant heat-flux condition at the wall.
Definition CFEM_DG_NSSolver.cpp:5748
void Shock_Capturing_DG(CConfig *config, const unsigned long elemBeg, const unsigned long elemEnd, su2double *workArray) override
Compute the artificial viscosity for shock capturing in DG.
Definition CFEM_DG_NSSolver.cpp:2982
void BC_Custom(CConfig *config, const unsigned long surfElemBeg, const unsigned long surfElemEnd, const CSurfaceElementFEM *surfElem, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray) override
Impose the user customized boundary condition.
Definition CFEM_DG_NSSolver.cpp:6066
void Volume_Residual(CConfig *config, const unsigned long elemBeg, const unsigned long elemEnd, su2double *workArray) override
Compute the volume contributions to the spatial residual.
Definition CFEM_DG_NSSolver.cpp:3160
su2double GetViscosity_Inf(void) const override
Compute the viscosity at the infinity.
Definition CFEM_DG_NSSolver.hpp:388
su2double GetStrainMag_Max(void) const override
Get the max Strain rate magnitude.
Definition CFEM_DG_NSSolver.hpp:452
su2double GetOmega_Max(void) const override
Get the max Omega.
Definition CFEM_DG_NSSolver.hpp:446
void BC_Isothermal_Wall(CConfig *config, const unsigned long surfElemBeg, const unsigned long surfElemEnd, const CSurfaceElementFEM *surfElem, su2double *resFaces, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) override
Impose an isothermal condition at the wall.
Definition CFEM_DG_NSSolver.cpp:5881
su2double GetAllBound_CL_Visc() const override
Get the total non dimensional lift coefficient (viscous contribution).
Definition CFEM_DG_NSSolver.hpp:428
void BC_Outlet(CConfig *config, const unsigned long surfElemBeg, const unsigned long surfElemEnd, const CSurfaceElementFEM *surfElem, su2double *resFaces, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) override
Impose the outlet boundary condition.
Definition CFEM_DG_NSSolver.cpp:5681
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
Base class for defining the LES subgrid scale model.
Definition sgs_model.hpp:43
Definition CSolver.hpp:71
Class to store a volume element for the FEM solver.
Definition fem_geometry_structure.hpp:45
Base class for defining the LES wall model.
Definition wall_model.hpp:47
passivedouble su2double
Definition code_config.hpp:181
Class to store a surface element for the FEM solver.
Definition fem_geometry_structure.hpp:204