Documentation a537f1bdf2
Loading...
Searching...
No Matches
CSolver.hpp
Go to the documentation of this file.
1/*!
2 * \file CSolver.hpp
3 * \brief Headers of the CSolver class which is inherited by all of the other solvers
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
30#include "../../../Common/include/parallelization/mpi_structure.hpp"
31
32#include <cmath>
33#include <cstddef>
34#include <string>
35#include <fstream>
36#include <sstream>
37#include <algorithm>
38#include <iostream>
39#include <set>
40#include <unordered_map>
41#include <stdlib.h>
42#include <stdio.h>
43
44#include "../fluid/CFluidModel.hpp"
45#include "../task_definition.hpp"
46#include "../numerics/CNumerics.hpp"
47#include "../sgs_model.hpp"
48#include "../../../Common/include/fem/fem_geometry_structure.hpp"
49#include "../../../Common/include/geometry/CGeometry.hpp"
50#include "../../../Common/include/CConfig.hpp"
51#include "../../../Common/include/linear_algebra/CSysMatrix.hpp"
52#include "../../../Common/include/linear_algebra/CSysVector.hpp"
53#include "../../../Common/include/linear_algebra/CSysSolve.hpp"
54#include "../../../Common/include/grid_movement/CSurfaceMovement.hpp"
55#include "../../../Common/include/grid_movement/CVolumetricMovement.hpp"
56#include "../../../Common/include/linear_algebra/blas_structure.hpp"
57#include "../../../Common/include/graph_coloring_structure.hpp"
58#include "../../../Common/include/toolboxes/MMS/CVerificationSolution.hpp"
59#include "../../../Common/include/toolboxes/geometry_toolbox.hpp"
60#include "../limiters/CLimiterDetails.hpp"
61#include "../variables/CVariable.hpp"
62
63#include "../output/CTurboOutput.hpp"
64
65#ifdef HAVE_LIBROM
66#include "librom.h"
67#endif
68
69using namespace std;
70
71class CSolver {
72protected:
73 enum : size_t {OMP_MIN_SIZE = 32}; /*!< \brief Chunk size for small loops. */
74
75 int rank, /*!< \brief MPI Rank. */
76 size; /*!< \brief MPI Size. */
77 bool adjoint; /*!< \brief Boolean to determine whether solver is initialized as a direct or an adjoint solver. */
78 unsigned short MGLevel; /*!< \brief Multigrid level of this solver object. */
79 unsigned short IterLinSolver; /*!< \brief Linear solver iterations. */
80 su2double ResLinSolver; /*!< \brief Final linear solver residual. */
81 unsigned short NonLinRes_Counter; /*!< \brief Number of elements of the nonlinear residual indicator series. */
82 vector<su2double> NonLinRes_Series; /*!< \brief Vector holding the nonlinear residual indicator series. */
83 su2double Old_Func, /*!< \brief Old value of the nonlinear residual indicator. */
84 New_Func; /*!< \brief Current value of the nonlinear residual indicator. */
85 unsigned short nVar, /*!< \brief Number of variables of the problem. */
86 nPrimVar, /*!< \brief Number of primitive variables of the problem. */
87 nPrimVarGrad, /*!< \brief Number of primitive variables of the problem in the gradient computation. */
88 nSecondaryVar, /*!< \brief Number of primitive variables of the problem. */
89 nVarGrad, /*!< \brief Number of variables for deallocating the LS Cvector. */
90 nDim; /*!< \brief Number of dimensions of the problem. */
91 unsigned long nPoint; /*!< \brief Number of points of the computational grid. */
92 unsigned long nPointDomain; /*!< \brief Number of points of the computational grid. */
93 su2double Max_Delta_Time, /*!< \brief Maximum value of the delta time for all the control volumes. */
94 Min_Delta_Time; /*!< \brief Minimum value of the delta time for all the control volumes. */
95 su2double Max_CFL_Local; /*!< \brief Maximum value of the CFL across all the control volumes. */
96 su2double Min_CFL_Local; /*!< \brief Minimum value of the CFL across all the control volumes. */
97 su2double Avg_CFL_Local; /*!< \brief Average value of the CFL across all the control volumes. */
98 vector<su2double> Residual_RMS; /*!< \brief Vector with the mean residual for each variable. */
99 vector<su2double> Residual_Max; /*!< \brief Vector with the maximal residual for each variable. */
100 vector<su2double> Residual_BGS; /*!< \brief Vector with the mean residual for each variable for BGS subiterations. */
101 vector<su2double> Residual_Max_BGS; /*!< \brief Vector with the maximal residual for each variable for BGS subiterations. */
102 vector<unsigned long> Point_Max; /*!< \brief Vector with the maximal residual for each variable. */
103 vector<unsigned long> Point_Max_BGS; /*!< \brief Vector with the maximal residual for each variable. */
104 su2activematrix Point_Max_Coord; /*!< \brief Vector with pointers to the coords of the maximal residual for each variable. */
105 su2activematrix Point_Max_Coord_BGS; /*!< \brief Vector with pointers to the coords of the maximal residual for each variable. */
106
107 su2double Total_Custom_ObjFunc = 0.0; /*!< \brief Total custom objective function. */
108 su2double Total_ComboObj = 0.0; /*!< \brief Total 'combo' objective for all monitored boundaries */
109
110 /*--- Variables that need to go. ---*/
111
112 su2double *Residual, /*!< \brief Auxiliary nVar vector. */
113 *Residual_i, /*!< \brief Auxiliary nVar vector for storing the residual at point i. */
114 *Residual_j; /*!< \brief Auxiliary nVar vector for storing the residual at point j. */
115 su2double *Solution, /*!< \brief Auxiliary nVar vector. */
116 *Solution_i, /*!< \brief Auxiliary nVar vector for storing the solution at point i. */
117 *Solution_j; /*!< \brief Auxiliary nVar vector for storing the solution at point j. */
118 su2double *Vector, /*!< \brief Auxiliary nDim vector. */
119 *Vector_i, /*!< \brief Auxiliary nDim vector to do the reconstruction of the variables at point i. */
120 *Vector_j; /*!< \brief Auxiliary nDim vector to do the reconstruction of the variables at point j. */
121 su2double *Res_Conv, /*!< \brief Auxiliary nVar vector for storing the convective residual. */
122 *Res_Visc, /*!< \brief Auxiliary nVar vector for storing the viscous residual. */
123 *Res_Sour, /*!< \brief Auxiliary nVar vector for storing the viscous residual. */
124 *Res_Conv_i, /*!< \brief Auxiliary vector for storing the convective residual at point i. */
125 *Res_Visc_i, /*!< \brief Auxiliary vector for storing the viscous residual at point i. */
126 *Res_Conv_j, /*!< \brief Auxiliary vector for storing the convective residual at point j. */
127 *Res_Visc_j; /*!< \brief Auxiliary vector for storing the viscous residual at point j. */
128 su2double **Jacobian_i, /*!< \brief Auxiliary matrices for storing point to point Jacobians at point i. */
129 **Jacobian_j; /*!< \brief Auxiliary matrices for storing point to point Jacobians at point j. */
130 su2double **Jacobian_ii, /*!< \brief Auxiliary matrices for storing point to point Jacobians. */
131 **Jacobian_ij, /*!< \brief Auxiliary matrices for storing point to point Jacobians. */
132 **Jacobian_ji, /*!< \brief Auxiliary matrices for storing point to point Jacobians. */
133 **Jacobian_jj; /*!< \brief Auxiliary matrices for storing point to point Jacobians. */
134
135 /*--- End variables that need to go. ---*/
136
137 su2activevector iPoint_UndLapl; /*!< \brief Auxiliary variable for the undivided Laplacians. */
138 su2activevector jPoint_UndLapl; /*!< \brief Auxiliary variable for the undivided Laplacians. */
139
140 vector<int> Restart_Vars; /*!< \brief Auxiliary structure for holding the number of variables and points in a restart. */
141 int Restart_ExtIter; /*!< \brief Auxiliary structure for holding the external iteration offset from a restart. */
142 vector<passivedouble> Restart_Data; /*!< \brief Auxiliary structure for holding the data values from a restart. */
143 unsigned short nOutputVariables; /*!< \brief Number of variables to write. */
144
145 unsigned long nMarker; /*!< \brief Total number of markers using the grid information. */
146 vector<unsigned long> nVertex; /*!< \brief Store nVertex at each marker for deallocation */
147
148 bool rotate_periodic; /*!< \brief Flag that controls whether the periodic solution needs to be rotated for the solver. */
149 bool implicit_periodic; /*!< \brief Flag that controls whether the implicit system should be treated by the periodic BC comms. */
150 su2activematrix PeriodicProj; /*!< \brief Min/max reconstruction increments at periodic receive points (for limiters). */
151 std::unordered_map<unsigned long, size_t> PeriodicProjIndex; /*!< \brief Local point to compact projection row. */
152
153 bool dynamic_grid; /*!< \brief Flag that determines whether the grid is dynamic (moving or deforming + grid velocities). */
154
155 vector<su2activematrix> VertexTraction; /*- Temporary, this will be moved to a new postprocessing structure once in place -*/
156 vector<su2activematrix> VertexTractionAdjoint; /*- Also temporary -*/
157
158 std::shared_ptr<CTurboOutput> TurbomachineryPerformance; /*!< \brief turbo performance calculator. */
159
160 string SolverName; /*!< \brief Store the name of the solver for output purposes. */
161
162 /*!
163 * \brief Pure virtual function, all derived solvers MUST implement a method returning their "nodes".
164 * \note Don't forget to call SetBaseClassPointerToNodes() in the constructor of the derived CSolver.
165 * \return Nodes of the solver, upcast to their base class (CVariable).
166 */
168
169 /*!
170 * \brief Call this method to set "base_nodes" after the "nodes" variable of the derived solver is instantiated.
171 * \note One could set base_nodes directly if it were not private but that could lead to confusion
172 */
174
175 /*!
176 * \brief Compute the undivided laplacian for the solution variables.
177 * \param[in] geometry - Geometrical definition of the problem.
178 * \param[in] config - Definition of the particular problem.
179 */
180 void SetUndivided_Laplacian(CGeometry *geometry, const CConfig *config);
181
182private:
183
184 /*!
185 * \brief Interpolate Restart_Data after reading it.
186 * \param[in] geometry - Geometrical definition of the problem.
187 * \param[in] config - Definition of the particular problem.
188 */
189 void InterpolateRestartData(const CGeometry *geometry, const CConfig *config);
190
191 /*--- Private to prevent use by derived solvers, each solver MUST have its own "nodes" member of the
192 most derived type possible, e.g. CEulerSolver has nodes of CEulerVariable* and not CVariable*.
193 This variable is to avoid two virtual functions calls per call i.e. CSolver::GetNodes() returns
194 directly instead of calling GetBaseClassPointerToNodes() or doing something equivalent. ---*/
195 CVariable* base_nodes; /*!< \brief Pointer to CVariable to allow polymorphic access to solver nodes. */
196
197public:
198
199 CSysVector<su2double> LinSysSol; /*!< \brief vector to store iterative solution of implicit linear system. */
200 CSysVector<su2double> LinSysRes; /*!< \brief vector to store iterative residual of implicit linear system. */
201 CSysMatrix<su2mixedfloat> Jacobian; /*!< \brief Complete sparse Jacobian structure for implicit computations. */
202 CSysSolve<su2mixedfloat> System; /*!< \brief Linear solver/smoother. */
203
204 CSysVector<su2double> OutputVariables; /*!< \brief vector to store the extra variables to be written. */
205 string* OutputHeadingNames; /*!< \brief vector of strings to store the headings for the exra variables */
206
207 CVerificationSolution *VerificationSolution; /*!< \brief Verification solution class used within the solver. */
208
209 vector<string> fields;
210
211#ifdef HAVE_LIBROM
212 std::unique_ptr<CAROM::BasisGenerator> u_basis_generator;
213#endif
214
215 /*!
216 * \brief Constructor of the class.
217 */
219
220 /*!
221 * \brief Destructor of the class.
222 */
223 virtual ~CSolver(void);
224
225 /*!
226 * \brief Allow outside access to the nodes of the solver, containing conservatives, primitives, etc.
227 * \return Nodes of the solver.
228 */
229 inline CVariable* GetNodes() {
230 assert(base_nodes!=nullptr && "CSolver::base_nodes was not set properly, see brief for CSolver::SetBaseClassPointerToNodes()");
231 return base_nodes;
232 }
233 inline const CVariable* GetNodes() const {
234 assert(base_nodes!=nullptr && "CSolver::base_nodes was not set properly, see brief for CSolver::SetBaseClassPointerToNodes()");
235 return base_nodes;
236 }
237
238 bool HasPeriodicRotation(const CConfig& config) const;
239
240 /*!
241 * \brief Helper function to define the type and number of variables per point for each communication type.
242 * \param[in] config - Definition of the particular problem.
243 * \param[in] commType - Enumerated type for the quantity to be communicated.
244 * \param[out] COUNT_PER_POINT - Number of communicated variables per point.
245 * \param[out] MPI_TYPE - Enumerated type for the datatype of the quantity to be communicated.
246 */
247 void GetCommCountAndType(const CConfig* config,
248 MPI_QUANTITIES commType,
249 unsigned short &COUNT_PER_POINT,
250 COMM_TYPE &MPI_TYPE) const;
251
252 /*!
253 * \brief Routine to load a solver quantity into the data structures for MPI point-to-point communication and to launch non-blocking sends and recvs.
254 * \param[in] geometry - Geometrical definition of the problem.
255 * \param[in] config - Definition of the particular problem.
256 * \param[in] commType - Enumerated type for the quantity to be communicated.
257 */
258 void InitiateComms(CGeometry *geometry,
259 const CConfig *config,
260 MPI_QUANTITIES commType);
261
262 /*!
263 * \brief Routine to complete the set of non-blocking communications launched by InitiateComms() and unpacking of the data in the solver class.
264 * \param[in] geometry - Geometrical definition of the problem.
265 * \param[in] config - Definition of the particular problem.
266 * \param[in] commType - Enumerated type for the quantity to be unpacked.
267 */
268 void CompleteComms(CGeometry *geometry,
269 const CConfig *config,
270 MPI_QUANTITIES commType);
271
272 /*!
273 * \brief Helper function to define the type and number of variables per point for each communication type.
274 * \param[in] config - Definition of the particular problem.
275 * \param[in] commType - Enumerated type for the quantity to be communicated.
276 * \param[out] COUNT_PER_POINT - Number of communicated variables per point.
277 * \param[out] MPI_TYPE - Enumerated type for the datatype of the quantity to be communicated.
278 * \param[out] ICOUNT - Number of rows of matrices associated with the communication.
279 * \param[out] JCOUNT - Number of columns of the same matrices.
280 */
281 void GetPeriodicCommCountAndType(const CConfig* config,
282 unsigned short commType,
283 unsigned short &COUNT_PER_POINT,
284 COMM_TYPE &MPI_TYPE,
285 unsigned short &ICOUNT,
286 unsigned short &JCOUNT) const;
287
288 /*!
289 * \brief Routine to load a solver quantity into the data structures for MPI periodic communication and to launch non-blocking sends and recvs.
290 * \param[in] geometry - Geometrical definition of the problem.
291 * \param[in] config - Definition of the particular problem.
292 * \param[in] val_periodic_index - Index for the periodic marker to be treated (first in a pair).
293 * \param[in] commType - Enumerated type for the quantity to be communicated.
294 */
295 void InitiatePeriodicComms(CGeometry *geometry,
296 const CConfig *config,
297 unsigned short val_periodic_index,
298 unsigned short commType);
299
300 /*!
301 * \brief Routine to complete the set of non-blocking periodic communications launched by InitiatePeriodicComms() and unpacking of the data in the solver class.
302 * \param[in] geometry - Geometrical definition of the problem.
303 * \param[in] config - Definition of the particular problem.
304 * \param[in] val_periodic_index - Index for the periodic marker to be treated (first in a pair).
305 * \param[in] commType - Enumerated type for the quantity to be unpacked.
306 */
307 void CompletePeriodicComms(CGeometry *geometry,
308 const CConfig *config,
309 unsigned short val_periodic_index,
310 unsigned short commType);
311
312 /*!
313 * \brief Set number of linear solver iterations.
314 * \param[in] val_iterlinsolver - Number of linear iterations.
315 */
316 inline void SetIterLinSolver(unsigned short val_iterlinsolver) { IterLinSolver = val_iterlinsolver; }
317
318 /*!
319 * \brief Set the final linear solver residual.
320 * \param[in] val_reslinsolver - Value of final linear solver residual.
321 */
322 inline void SetResLinSolver(su2double val_reslinsolver) { ResLinSolver = val_reslinsolver; }
323
324 /*!
325 * \brief Set the value of the max residual and RMS residual.
326 * \param[in] geometry - Geometrical definition of the problem.
327 * \param[in] config - Definition of the particular problem.
328 * \param[in] force - Reduce on a coarse level too, where it is skipped by default.
329 */
330 void SetResidual_RMS(const CGeometry *geometry, const CConfig *config, bool force = false);
331
332 /*!
333 * \brief Communicate the value of the max residual and RMS residual.
334 * \param[in] val_iterlinsolver - Number of linear iterations.
335 */
336 void SetResidual_BGS(const CGeometry *geometry, const CConfig *config);
337
338 /*!
339 * \brief Set the value of the max residual and RMS residual.
340 * \param[in] val_iterlinsolver - Number of linear iterations.
341 */
342 void ComputeResidual_Multizone(const CGeometry *geometry, const CConfig *config);
343
344 /*!
345 * \brief Move the mesh in time
346 */
347 inline virtual void SetDualTime_Mesh(void){ }
348
349 /*!
350 * \brief Get information whether the initialization is an adjoint solver or not.
351 * \return <code>TRUE</code> means that it is an adjoint solver.
352 */
353 inline bool GetAdjoint(void) const { return adjoint; }
354
355 /*!
356 * \brief Compute the pressure at the infinity.
357 * \return Value of the pressure at the infinity.
358 */
359 inline virtual CFluidModel* GetFluidModel(void) const { return nullptr;}
360
361 /*!
362 * \brief Get number of linear solver iterations.
363 * \return Number of linear solver iterations.
364 */
365 inline unsigned short GetIterLinSolver(void) const { return IterLinSolver; }
366
367 /*!
368 * \brief Get the final linear solver residual.
369 * \return Value of final linear solver residual.
370 */
371 inline su2double GetResLinSolver(void) const { return ResLinSolver; }
372
373 /*!
374 * \brief Get the value of the maximum delta time.
375 * \return Value of the maximum delta time.
376 */
377 inline su2double GetMax_Delta_Time(void) const { return Max_Delta_Time; }
378
379 /*!
380 * \brief Get the value of the minimum delta time.
381 * \return Value of the minimum delta time.
382 */
383 inline su2double GetMin_Delta_Time(void) const { return Min_Delta_Time; }
384
385 /*!
386 * \brief Get the value of the maximum local CFL number.
387 * \return Value of the maximum local CFL number.
388 */
389 inline su2double GetMax_CFL_Local(void) const { return Max_CFL_Local; }
390
391 /*!
392 * \brief Get the value of the minimum local CFL number.
393 * \return Value of the minimum local CFL number.
394 */
395 inline su2double GetMin_CFL_Local(void) const { return Min_CFL_Local; }
396
397 /*!
398 * \brief Get the value of the average local CFL number.
399 * \return Value of the average local CFL number.
400 */
401 inline su2double GetAvg_CFL_Local(void) const { return Avg_CFL_Local; }
402
403 /*!
404 * \brief Set min/max/avg local CFL summary statistics.
405 * \param[in] val_cfl - Uniform CFL value to report.
406 */
407 inline void SetCFL_Local_Stats(su2double val_cfl) {
408 Min_CFL_Local = val_cfl;
409 Max_CFL_Local = val_cfl;
410 Avg_CFL_Local = val_cfl;
411 }
412
413 /*!
414 * \brief Get the number of variables of the problem.
415 */
416 inline unsigned short GetnVar(void) const { return nVar; }
417
418 /*!
419 * \brief Get the number of variables of the problem.
420 */
421 inline unsigned short GetnPrimVar(void) const { return nPrimVar; }
422
423 /*!
424 * \brief Get the number of variables of the problem.
425 */
426 inline unsigned short GetnPrimVarGrad(void) const { return nPrimVarGrad; }
427
428 /*!
429 * \brief Get the number of variables of the problem.
430 */
431 inline unsigned short GetnSecondaryVar(void) const { return nSecondaryVar; }
432
433 /*!
434 * \brief Get the number of variables of the problem.
435 */
436 inline unsigned short GetnOutputVariables(void) const { return nOutputVariables; }
437
438 /*!
439 * \brief A virtual member.
440 * \param[in] geometry - Geometrical definition of the problem.
441 * \param[in] solver_container - Container vector with all the solutions.
442 * \param[in] config - Definition of the particular problem.
443 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
444 * \param[in] iMesh - Index of the mesh in multigrid computations.
445 * \param[in] RunTime_EqSystem - System of equations which is going to be solved.
446 */
447 inline virtual void SetResidual_DualTime(CGeometry *geometry,
448 CSolver **solver_container,
449 CConfig *config,
450 unsigned short iRKStep,
451 unsigned short iMesh,
452 unsigned short RunTime_EqSystem) { }
453
454 /*!
455 * \brief Get the maximal residual, this is useful for the convergence history.
456 * \param[in] val_var - Index of the variable.
457 * \return Value of the biggest residual for the variable in the position <i>val_var</i>.
458 */
459 inline su2double GetRes_RMS(unsigned short val_var) const { return Residual_RMS[val_var]; }
460
461 /*!
462 * \brief Get the maximal residual, this is useful for the convergence history.
463 * \param[in] val_var - Index of the variable.
464 * \return Value of the biggest residual for the variable in the position <i>val_var</i>.
465 */
466 inline su2double GetRes_Max(unsigned short val_var) const { return Residual_Max[val_var]; }
467
468 /*!
469 * \brief Get the residual for BGS subiterations.
470 * \param[in] val_var - Index of the variable.
471 * \return Value of the biggest residual for the variable in the position <i>val_var</i>.
472 */
473 inline su2double GetRes_BGS(unsigned short val_var) const { return Residual_BGS[val_var]; }
474
475 /*!
476 * \brief Get the maximal residual for BGS subiterations.
477 * \param[in] val_var - Index of the variable.
478 * \return Value of the biggest residual for the variable in the position <i>val_var</i>.
479 */
480 inline su2double GetRes_Max_BGS(unsigned short val_var) const { return Residual_Max_BGS[val_var]; }
481
482 /*!
483 * \brief Get the residual for FEM structural analysis.
484 * \param[in] val_var - Index of the variable.
485 * \return Value of the residual for the variable in the position <i>val_var</i>.
486 */
487 inline virtual su2double GetRes_FEM(unsigned short val_var) const { return 0.0; }
488
489 /*!
490 * \brief Get the maximal residual, this is useful for the convergence history.
491 * \param[in] val_var - Index of the variable.
492 * \return Value of the biggest residual for the variable in the position <i>val_var</i>.
493 */
494 inline unsigned long GetPoint_Max(unsigned short val_var) const { return Point_Max[val_var]; }
495
496 /*!
497 * \brief Get the location of the maximal residual, this is useful for the convergence history.
498 * \param[in] val_var - Index of the variable.
499 * \return Pointer to the location (x, y, z) of the biggest residual for the variable <i>val_var</i>.
500 */
501 inline const su2double* GetPoint_Max_Coord(unsigned short val_var) const { return Point_Max_Coord[val_var]; }
502
503 /*!
504 * \brief Get the maximal residual, this is useful for the convergence history.
505 * \param[in] val_var - Index of the variable.
506 * \return Value of the biggest residual for the variable in the position <i>val_var</i>.
507 */
508 inline unsigned long GetPoint_Max_BGS(unsigned short val_var) const { return Point_Max_BGS[val_var]; }
509
510 /*!
511 * \brief Get the location of the maximal residual, this is useful for the convergence history.
512 * \param[in] val_var - Index of the variable.
513 * \return Pointer to the location (x, y, z) of the biggest residual for the variable <i>val_var</i>.
514 */
515 inline const su2double* GetPoint_Max_Coord_BGS(unsigned short val_var) const { return Point_Max_Coord_BGS[val_var]; }
516
517 /*!
518 * \brief Set Value of the residual due to the Geometric Conservation Law (GCL) for steady rotating frame problems.
519 * \param[in] geometry - Geometrical definition of the problem.
520 * \param[in] config - Definition of the particular problem.
521 */
522 void SetRotatingFrame_GCL(CGeometry *geometry, const CConfig *config);
523
524 /*!
525 * \brief Compute the Green-Gauss gradient of the auxiliary variable.
526 * \param[in] geometry - Geometrical definition of the problem.
527 */
528 void SetAuxVar_Gradient_GG(CGeometry *geometry, const CConfig *config);
529
530 /*!
531 * \brief Compute the Least Squares gradient of the auxiliary variable.
532 * \param[in] geometry - Geometrical definition of the problem.
533 * \param[in] config - Definition of the particular problem.
534 */
535 void SetAuxVar_Gradient_LS(CGeometry *geometry, const CConfig *config);
536
537 /*!
538 * \brief Add External to Solution vector.
539 */
541
542 /*!
543 * \brief Add the current Solution vector to External.
544 */
546
547 /*!
548 * \brief Update a given cross-term with relaxation and the running total (External).
549 * \param[in] config - Definition of the particular problem.
550 * \param[in,out] cross_term - The cross-term being updated.
551 */
552 void Update_Cross_Term(CConfig *config, su2passivematrix &cross_term);
553
554 /*!
555 * \brief Compute the Green-Gauss gradient of the solution.
556 * \param[in] geometry - Geometrical definition of the problem.
557 * \param[in] config - Definition of the particular problem.
558 * \param[in] idxVel - Index to velocity, -1 if no velocity is present in the solver.
559 * \param[in] reconstruction - indicator that the gradient being computed is for upwind reconstruction.
560 */
561 void SetSolution_Gradient_GG(CGeometry *geometry, const CConfig *config, short idxVel, bool reconstruction = false);
562
563 /*!
564 * \brief Compute the Least Squares gradient of the solution.
565 * \param[in] geometry - Geometrical definition of the problem.
566 * \param[in] config - Definition of the particular problem.
567 * \param[in] idxVel - Index to velocity, -1 if no velocity is present in the solver.
568 * \param[in] reconstruction - indicator that the gradient being computed is for upwind reconstruction.
569 */
570 void SetSolution_Gradient_LS(CGeometry *geometry, const CConfig *config, short idxVel, bool reconstruction = false);
571
572 /*!
573 * \brief Compute the Least Squares gradient of the grid velocity.
574 * \param[in] geometry - Geometrical definition of the problem.
575 * \param[in] config - Definition of the particular problem.
576 */
577 void SetGridVel_Gradient(CGeometry *geometry, const CConfig *config) const;
578
579 /*!
580 * \brief Compute slope limiter.
581 * \param[in] geometry - Geometrical definition of the problem.
582 * \param[in] config - Definition of the particular problem.
583 */
584 void SetSolution_Limiter(CGeometry *geometry, const CConfig *config);
585
586 /*!
587 * \brief A virtual member.
588 * \param[in] geometry - Geometrical definition of the problem.
589 * \param[in] config - Definition of the particular problem.
590 */
591 inline virtual void SetPrimitive_Limiter(CGeometry *geometry, const CConfig *config) { }
592
593 /*!
594 * \brief A virtual member.
595 * \return flame thickness value.
596 */
597 virtual su2double GetFlameThickness() const {return 1.0;}
598
599 /*!
600 * \brief Compute the projection of a variable for MUSCL reconstruction.
601 * \note The result should be halved when added to i (or subtracted from j).
602 * \param[in] grad - Gradient vector.
603 * \param[in] vector_ij - Distance vector.
604 * \param[in] delta_ij - Centered difference.
605 * \param[in] kappa - Blending coefficient for U-MUSCL reconstruction.
606 * \param[in] ramp_val - Value of the 1st-2nd order MUSCL ramp.
607 * \return - Projected variable.
608 */
610 su2double kappa, su2double ramp_val) const {
611 su2double project_grad = GeometryToolbox::DotProduct(nDim, grad, vector_ij);
612 return ramp_val * LimiterHelpers<>::umusclProjection(project_grad, delta_ij, kappa);
613 }
614
615 /*!
616 * \brief Set the old solution variables to the current solution value for Runge-Kutta iteration.
617 * It is a virtual function, because for the DG-FEM solver a different version is needed.
618 */
619 inline virtual void Set_OldSolution() { base_nodes->Set_OldSolution(); }
620
621 /*!
622 * \brief Set the new solution variables to the current solution value for classical RK.
623 */
624 inline virtual void Set_NewSolution() { }
625
626 /*!
627 * \brief Load the geometries at the previous time states n and nM1.
628 * \param[in] geometry - Geometrical definition of the problem.
629 * \param[in] config - Definition of the particular problem.
630 */
631 void Restart_OldGeometry(CGeometry *geometry, CConfig *config) const;
632
633 /*!
634 * \brief A virtual member.
635 * \param[in] geometry - Geometrical definition of the problem.
636 * \param[in] solver_container - Container vector with all the solutions.
637 * \param[in] config - Definition of the particular problem.
638 * \param[in] iMesh - Index of the mesh in multigrid computations.
639 * \param[in] Iteration - Index of the current iteration.
640 */
641 inline virtual void SetTime_Step(CGeometry *geometry,
642 CSolver **solver_container,
643 CConfig *config,
644 unsigned short iMesh,
645 unsigned long Iteration) { }
646
647 /*!
648 * \brief A virtual member.
649 * \param[in] config - Definition of the particular problem.
650 * \param[in] TimeSync - The synchronization time.
651 * \param[in,out] timeEvolved - On input the time evolved before the time step,
652 on output the time evolved after the time step.
653 * \param[out] syncTimeReached - Whether or not the synchronization time is reached.
654 */
655 inline virtual void CheckTimeSynchronization(CConfig *config,
656 const su2double TimeSync,
657 su2double &timeEvolved,
658 bool &syncTimeReached) {}
659
660 /*!
661 * \brief A virtual member.
662 * \param[in] geometry - Geometrical definition of the problem.
663 * \param[in] solver_container - Container vector with all the solutions.
664 * \param[in] numerics - Description of the numerical method.
665 * \param[in] config - Definition of the particular problem.
666 * \param[in] iMesh - Index of the mesh in multigrid computations.
667 */
668 inline virtual void ProcessTaskList_DG(CGeometry *geometry,
669 CSolver **solver_container,
670 CNumerics **numerics,
671 CConfig *config,
672 unsigned short iMesh) {}
673
674 /*!
675 * \brief A virtual member.
676 * \param[in] geometry - Geometrical definition of the problem.
677 * \param[in] solver_container - Container vector with all the solutions.
678 * \param[in] numerics - Description of the numerical method.
679 * \param[in] config - Definition of the particular problem.
680 * \param[in] iMesh - Index of the mesh in multigrid computations.
681 */
682 inline virtual void ADER_SpaceTimeIntegration(CGeometry *geometry,
683 CSolver **solver_container,
684 CNumerics **numerics,
685 CConfig *config,
686 unsigned short iMesh,
687 unsigned short RunTime_EqSystem) {}
688
689 /*!
690 * \brief A virtual member.
691 * \param[in] geometry - Geometrical definition of the problem.
692 * \param[in] solver_container - Container vector with all the solutions.
693 * \param[in] numerics - Description of the numerical method.
694 * \param[in] config - Definition of the particular problem.
695 * \param[in] iMesh - Index of the mesh in multigrid computations.
696 */
697 inline virtual void ComputeSpatialJacobian(CGeometry *geometry, CSolver **solver_container,
698 CNumerics **numerics, CConfig *config,
699 unsigned short iMesh, unsigned short RunTime_EqSystem) {}
700
701 /*!
702 * \brief A virtual member.
703 * \param[in] geometry - Geometrical definition of the problem.
704 * \param[in] solver_container - Container vector with all the solutions.
705 * \param[in] config - Definition of the particular problem.
706 * \param[in] iMesh - Index of the mesh in multigrid computations.
707 */
708 inline virtual void Postprocessing(CGeometry *geometry,
709 CSolver **solver_container,
710 CConfig *config,
711 unsigned short iMesh) { }
712
713 /*!
714 * \brief A virtual member, overloaded.
715 * \param[in] geometry - Geometrical definition of the problem.
716 * \param[in] config - Definition of the particular problem.
717 * \param[in] numerics - Implementation of numerical method.
718 * \param[in] of_comp_mode - Mode to compute just the objective function.
719 */
720 inline virtual void Postprocessing(CGeometry *geometry,
721 CConfig *config,
722 CNumerics **numerics,
723 bool of_comp_mode = false) { }
724
725 /*!
726 * \brief A virtual member.
727 * \param[in] geometry - Geometrical definition of the problem.
728 * \param[in] solver_container - Container vector with all the solutions.
729 * \param[in] numerics_container - Description of the numerical method.
730 * \param[in] config - Definition of the particular problem.
731 * \param[in] iMesh - Index of the mesh in multigrid computations.
732 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
733 */
734 inline virtual void Centered_Residual(CGeometry *geometry,
735 CSolver **solver_container,
736 CNumerics **numerics_container,
737 CConfig *config,
738 unsigned short iMesh,
739 unsigned short iRKStep) { }
740
741 /*!
742 * \brief A virtual member.
743 * \param[in] geometry - Geometrical definition of the problem.
744 * \param[in] solver_container - Container vector with all the solutions.
745 * \param[in] numerics_container - Description of the numerical method.
746 * \param[in] config - Definition of the particular problem.
747 * \param[in] iMesh - Index of the mesh in multigrid computations.
748 */
749 inline virtual void Upwind_Residual(CGeometry *geometry,
750 CSolver **solver_container,
751 CNumerics **numerics_container,
752 CConfig *config,
753 unsigned short iMesh) { }
754
755 /*!
756 * \brief A virtual member.
757 * \param[in] geometry - Geometrical definition of the problem.
758 * \param[in] solver_container - Container vector with all the solutions.
759 * \param[in] config - Definition of the particular problem.
760 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
761 * \param[in] RunTime_EqSystem - System of equations which is going to be solved.
762 * \param[in] Output - boolean to determine whether to print output.
763 */
764 inline virtual void Preprocessing(CGeometry *geometry,
765 CSolver **solver_container,
766 CConfig *config,
767 unsigned short iMesh,
768 unsigned short iRKStep,
769 unsigned short RunTime_EqSystem,
770 bool Output) { }
771
772 /*!
773 * \brief A virtual member overloaded.
774 * \param[in] geometry - Geometrical definition of the problem.
775 * \param[in] solver_container - Container vector with all the solutions.
776 * \param[in] numerics - Container vector of the numerics of the problem.
777 * \param[in] config - Definition of the particular problem.
778 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
779 * \param[in] RunTime_EqSystem - System of equations which is going to be solved.
780 * \param[in] Output - boolean to determine whether to print output.
781 */
782 inline virtual void Preprocessing(CGeometry *geometry,
783 CSolver **solver_container,
784 CConfig *config,
785 CNumerics **numerics,
786 unsigned short iMesh,
787 unsigned long Iteration,
788 unsigned short RunTime_EqSystem,
789 bool Output) { }
790
791 /*!
792 * \brief A virtual member.
793 * \param[in] geometry - Geometrical definition of the problem.
794 * \param[in] solver_container - Container vector with all the solutions.
795 * \param[in] config - Definition of the particular problem.
796 */
797 inline virtual void ComputeEdgeMassFluxesRhieChow(CGeometry *geometry, CSolver **solver_container, CConfig *config) { }
798
799 /*!
800 * \brief A virtual member.
801 * \param[in] geometry - Geometrical definition of the problem.
802 * \param[in] solver_container - Container vector with all the solutions.
803 * \param[in] config - Definition of the particular problem.
804 */
805 inline virtual void ApplyPressureVelocityCorrection(CGeometry *geometry, CSolver **solver_container, CConfig *config) { }
806
807 /*!
808 * \brief A virtual member.
809 * \param[in] geometry - Geometrical definition of the problem.
810 * \param[in] solver_container - Container vector with all the solutions.
811 * \param[in] config - Definition of the particular problem.
812 */
813 inline virtual void Set_Heatflux_Areas(CGeometry *geometry, CConfig *config) { }
814
815 /*!
816 * \author H. Kline
817 * \brief Compute weighted-sum "combo" objective output
818 * \param[in] config - Definition of the particular problem.
819 * \param[in] solver - Container vector with all the solutions.
820 */
821 inline virtual void Evaluate_ObjFunc(const CConfig *config, CSolver **solver) {};
822
823 /*!
824 * \brief A virtual member.
825 * \param[in] geometry - Geometrical definition of the problem.
826 * \param[in] solver_container - Container vector with all the solutions.
827 * \param[in] conv_numerics - Description of the numerical method.
828 * \param[in] visc_numerics - Description of the numerical method.
829 * \param[in] config - Definition of the particular problem.
830 * \param[in] val_marker - Surface marker where the boundary condition is applied.
831 */
832 inline virtual void BC_Euler_Wall(CGeometry *geometry,
833 CSolver **solver_container,
834 CNumerics *conv_numerics,
835 CNumerics *visc_numerics,
836 CConfig *config,
837 unsigned short val_marker) { }
838
839 /*!
840 * \brief Enforce Euler wall BC on a restricted or prolongated multigrid solution by
841 * projecting the momentum to the tangent plane of the wall.
842 * \param[in] geometry - Coarse grid geometry.
843 * \param[in] config - Definition of the particular problem.
844 * \param[in] use_solution_old - If true, project Solution_Old (corrections); if false, project Solution.
845 */
846 inline virtual void MultigridProjectEulerWall(CGeometry* /*geometry*/, const CConfig* /*config*/,
847 bool /*use_solution_old*/) {}
848
849 /*!
850 * \brief A virtual member.
851 * \param[in] geometry - Geometrical definition of the problem.
852 * \param[in] config - Definition of the particular problem.
853 * \param[in] val_marker - Surface marker where the boundary condition is applied.
854 */
855 inline virtual void BC_Clamped(CGeometry *geometry,
856 const CConfig *config,
857 unsigned short val_marker) { }
858
859 /*!
860 * \brief A virtual member.
861 * \param[in] geometry - Geometrical definition of the problem.
862 * \param[in] config - Definition of the particular problem.
863 * \param[in] val_marker - Surface marker where the boundary condition is applied.
864 */
865 inline virtual void BC_Clamped_Post(CGeometry *geometry,
866 const CConfig *config,
867 unsigned short val_marker) { }
868
869 /*!
870 * \brief A virtual member.
871 * \param[in] geometry - Geometrical definition of the problem.
872 * \param[in] config - Definition of the particular problem.
873 * \param[in] val_marker - Surface marker where the boundary condition is applied.
874 */
875 inline virtual void BC_Sym_Plane(CGeometry *geometry,
876 const CConfig *config,
877 unsigned short val_marker) { }
878
879 /*!
880 * \brief A virtual member.
881 * \param[in] geometry - Geometrical definition of the problem.
882 * \param[in] config - Definition of the particular problem.
883 * \param[in] val_marker - Surface marker where the boundary condition is applied.
884 */
885 inline virtual void BC_DispDir(CGeometry *geometry,
886 const CConfig *config,
887 unsigned short val_marker) { }
888
889 /*!
890 * \brief A virtual member.
891 * \param[in] geometry - Geometrical definition of the problem.
892 * \param[in] solver - Description of the numerical method.
893 * \param[in] config - Definition of the particular problem.
894 * \param[in] val_marker - Surface marker where the boundary condition is applied.
895 */
896 inline virtual void BC_Normal_Displacement(CGeometry *geometry,
897 CNumerics *numerics,
898 const CConfig *config,
899 unsigned short val_marker) { }
900
901 /*!
902 * \brief A virtual member.
903 * \param[in] geometry - Geometrical definition of the problem.
904 * \param[in] config - Definition of the particular problem.
905 * \param[in] val_marker - Surface marker where the boundary condition is applied.
906 */
907 inline virtual void BC_Normal_Load(CGeometry *geometry,
908 const CConfig *config,
909 unsigned short val_marker) { }
910
911 /*!
912 * \brief A virtual member.
913 * \param[in] geometry - Geometrical definition of the problem.
914 * \param[in] config - Definition of the particular problem.
915 * \param[in] val_marker - Surface marker where the boundary condition is applied.
916 */
917 inline virtual void BC_Dir_Load(CGeometry *geometry,
918 const CConfig *config,
919 unsigned short val_marker) { }
920
921 /*!
922 * \brief A virtual member.
923 * \param[in] geometry - Geometrical definition of the problem.
924 * \param[in] config - Definition of the particular problem.
925 * \param[in] val_marker - Surface marker where the boundary condition is applied.
926 */
927
928 inline virtual void BC_Sine_Load(CGeometry *geometry,
929 const CConfig *config,
930 unsigned short val_marker) { }
931
932 /*!
933 * \brief A virtual member.
934 * \param[in] geometry - Geometrical definition of the problem.
935 * \param[in] config - Definition of the particular problem.
936 * \param[in] val_marker - Surface marker where the boundary condition is applied.
937 */
938 inline virtual void BC_Damper(CGeometry *geometry,
939 const CConfig *config,
940 unsigned short val_marker) { }
941
942 /*!
943 * \brief A virtual member.
944 * \param[in] geometry - Geometrical definition of the problem.
945 * \param[in] solver_container - Container vector with all the solutions.
946 * \param[in] numerics - Description of the numerical method.
947 * \param[in] config - Definition of the particular problem.
948 */
949 inline virtual void BC_Periodic(CGeometry *geometry,
950 CSolver **solver_container,
951 CNumerics *numerics,
952 CConfig *config) { }
953
954 /*!
955 * \brief Impose the interface state across sliding meshes.
956 * \param[in] geometry - Geometrical definition of the problem.
957 * \param[in] solver_container - Container vector with all the solutions.
958 * \param[in] conv_numerics - Description of the numerical method.
959 * \param[in] visc_numerics - Description of the numerical method.
960 * \param[in] config - Definition of the particular problem.
961 */
962 inline virtual void BC_Fluid_Interface(CGeometry *geometry,
963 CSolver **solver_container,
964 CNumerics *conv_numerics,
965 CNumerics *visc_numerics,
966 CConfig *config) { }
967
968 /*!
969 * \brief A virtual member.
970 * \param[in] geometry - Geometrical definition of the problem.
971 * \param[in] solver_container - Container vector with all the solutions.
972 * \param[in] conv_numerics - Description of the numerical method.
973 * \param[in] visc_numerics - Description of the numerical method.
974 * \param[in] config - Definition of the particular problem.
975 * \param[in] val_marker - Surface marker where the boundary condition is applied.
976 */
977 inline virtual void BC_ActDisk_Inlet(CGeometry *geometry,
978 CSolver **solver_container,
979 CNumerics *conv_numerics,
980 CNumerics *visc_numerics,
981 CConfig *config,
982 unsigned short val_marker) { }
983
984 /*!
985 * \brief A virtual member.
986 * \param[in] geometry - Geometrical definition of the problem.
987 * \param[in] solver_container - Container vector with all the solutions.
988 * \param[in] conv_numerics - Description of the numerical method.
989 * \param[in] visc_numerics - Description of the numerical method.
990 * \param[in] config - Definition of the particular problem.
991 * \param[in] val_marker - Surface marker where the boundary condition is applied.
992 */
993 inline virtual void BC_ActDisk_Outlet(CGeometry *geometry,
994 CSolver **solver_container,
995 CNumerics *conv_numerics,
996 CNumerics *visc_numerics,
997 CConfig *config,
998 unsigned short val_marker) { }
999
1000 /*!
1001 * \brief A virtual member.
1002 * \param[in] geometry - Geometrical definition of the problem.
1003 * \param[in] solver_container - Container vector with all the solutions.
1004 * \param[in] conv_numerics - Description of the numerical method.
1005 * \param[in] visc_numerics - Description of the numerical method.
1006 * \param[in] config - Definition of the particular problem.
1007 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1008 * \param[in] val_inlet_surface - Boolean for whether val_marker is an inlet
1009 */
1010 inline virtual void BC_ActDisk(CGeometry *geometry,
1011 CSolver **solver_container,
1012 CNumerics *conv_numerics,
1013 CNumerics *visc_numerics,
1014 CConfig *config,
1015 unsigned short val_marker,
1016 bool val_inlet_surface) { }
1017
1018 /*!
1019 * \brief A virtual member.
1020 * \param[in] geometry - Geometrical definition of the problem.
1021 * \param[in] solver_container - Container vector with all the solutions.
1022 * \param[in] conv_numerics - Description of the numerical method.
1023 * \param[in] visc_numerics - Description of the numerical method.
1024 * \param[in] config - Definition of the particular problem.
1025 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1026 */
1027 inline virtual void BC_Isothermal_Wall(CGeometry *geometry,
1028 CSolver **solver_container,
1029 CNumerics *conv_numerics,
1030 CNumerics *visc_numerics,
1031 CConfig *config,
1032 unsigned short val_marker) { }
1033
1034 /*!
1035 * \brief A virtual member.
1036 * \param[in] geometry - Geometrical definition of the problem.
1037 * \param[in] solver_container - Container vector with all the solutions.
1038 * \param[in] conv_numerics - Description of the numerical method.
1039 * \param[in] visc_numerics - Description of the numerical method.
1040 * \param[in] config - Definition of the particular problem.
1041 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1042 */
1043 inline virtual void BC_HeatFlux_Wall(CGeometry *geometry,
1044 CSolver **solver_container,
1045 CNumerics *conv_numerics,
1046 CNumerics *visc_numerics,
1047 CConfig *config,
1048 unsigned short val_marker) { }
1049
1050 /*!
1051 * \brief Impose a heat flux by prescribing a heat transfer coefficient and a temperature at infinity.
1052 * \param[in] geometry - Geometrical definition of the problem.
1053 * \param[in] config - Definition of the particular problem.
1054 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1055 */
1056 inline virtual void BC_HeatTransfer_Wall(const CGeometry *geometry,
1057 const CConfig *config,
1058 const unsigned short val_marker) { }
1059
1060 /*!
1061 * \brief A virtual member.
1062 * \param[in] geometry - Geometrical definition of the problem.
1063 * \param[in] solver_container - Container vector with all the solutions.
1064 * \param[in] conv_numerics - Description of the numerical method.
1065 * \param[in] visc_numerics - Description of the numerical method.
1066 * \param[in] config - Definition of the particular problem.
1067 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1068 */
1069 inline virtual void BC_Far_Field(CGeometry *geometry,
1070 CSolver **solver_container,
1071 CNumerics *conv_numerics,
1072 CNumerics *visc_numerics,
1073 CConfig *config,
1074 unsigned short val_marker) { }
1075
1076 /*!
1077 * \brief Impose via the residual the Euler boundary condition.
1078 * \param[in] geometry - Geometrical definition of the problem.
1079 * \param[in] solver_container - Container vector with all the solutions.
1080 * \param[in] conv_numerics - Description of the numerical method.
1081 * \param[in] visc_numerics - Description of the numerical method.
1082 * \param[in] config - Definition of the particular problem.
1083 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1084 */
1085 inline virtual void BC_Sym_Plane(CGeometry *geometry,
1086 CSolver **solver_container,
1087 CNumerics *conv_numerics,
1088 CNumerics *visc_numerics,
1089 CConfig *config,
1090 unsigned short val_marker) { }
1091
1092 /*!
1093 * \brief A virtual member.
1094 * \param[in] geometry - Geometrical definition of the problem.
1095 * \param[in] solver_container - Container vector with all the solutions.
1096 * \param[in] conv_numerics - Description of the numerical method.
1097 * \param[in] visc_numerics - Description of the numerical method.
1098 * \param[in] config - Definition of the particular problem.
1099 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1100 */
1101 inline virtual void BC_Riemann(CGeometry *geometry,
1102 CSolver **solver_container,
1103 CNumerics *conv_numerics,
1104 CNumerics *visc_numerics,
1105 CConfig *config,
1106 unsigned short val_marker) { }
1107
1108 /*!
1109 * \brief A virtual member.
1110 * \param[in] geometry - Geometrical definition of the problem.
1111 * \param[in] solver_container - Container vector with all the solutions.
1112 * \param[in] conv_numerics - Description of the numerical method.
1113 * \param[in] visc_numerics - Description of the numerical method.
1114 * \param[in] config - Definition of the particular problem.
1115 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1116 */
1117 inline virtual void BC_TurboRiemann(CGeometry *geometry,
1118 CSolver **solver_container,
1119 CNumerics *conv_numerics,
1120 CNumerics *visc_numerics,
1121 CConfig *config,
1122 unsigned short val_marker) { }
1123
1124 /*!
1125 * \brief It computes Fourier transformation for the needed quantities along the pitch for each span in turbomachinery analysis.
1126 * \param[in] geometry - Geometrical definition of the problem.
1127 * \param[in] solver_container - Container vector with all the solutions.
1128 * \param[in] config - Definition of the particular problem.
1129 * \param[in] marker_flag - Surface marker flag where the function is applied.
1130 */
1131 inline virtual void PreprocessBC_Giles(CGeometry *geometry,
1132 CConfig *config,
1133 CNumerics *conv_numerics,
1134 unsigned short marker_flag) { }
1135
1136 /*!
1137 * \brief A virtual member.
1138 * \param[in] geometry - Geometrical definition of the problem.
1139 * \param[in] solver_container - Container vector with all the solutions.
1140 * \param[in] conv_numerics - Description of the numerical method.
1141 * \param[in] visc_numerics - Description of the numerical method.
1142 * \param[in] config - Definition of the particular problem.
1143 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1144 */
1145 inline virtual void BC_Giles(CGeometry *geometry,
1146 CSolver **solver_container,
1147 CNumerics *conv_numerics,
1148 CNumerics *visc_numerics,
1149 CConfig *config,
1150 unsigned short val_marker) { }
1151
1152 inline virtual std::shared_ptr<CTurboOutput> GetTurboBladePerformance() const { return std::shared_ptr<CTurboOutput>(nullptr); }
1153
1154 /*!
1155 * \brief A virtual member.
1156 * \param[in] geometry - Geometrical definition of the problem.
1157 * \param[in] solver_container - Container vector with all the solutions.
1158 * \param[in] conv_numerics - Description of the numerical method.
1159 * \param[in] visc_numerics - Description of the numerical method.
1160 * \param[in] config - Definition of the particular problem.
1161 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1162 */
1163 inline virtual void BC_Inlet(CGeometry *geometry,
1164 CSolver **solver_container,
1165 CNumerics *conv_numerics,
1166 CNumerics *visc_numerics,
1167 CConfig *config,
1168 unsigned short val_marker) { }
1169
1170 /*!
1171 * \brief A virtual member.
1172 * \param[in] geometry - Geometrical definition of the problem.
1173 * \param[in] solver_container - Container vector with all the solutions.
1174 * \param[in] conv_numerics - Description of the numerical method.
1175 * \param[in] visc_numerics - Description of the numerical method.
1176 * \param[in] config - Definition of the particular problem.
1177 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1178 */
1179 inline virtual void BC_Inlet_Turbo(CGeometry *geometry,
1180 CSolver **solver_container,
1181 CNumerics *conv_numerics,
1182 CNumerics *visc_numerics,
1183 CConfig *config,
1184 unsigned short val_marker) { }
1185 /*!
1186 * \brief A virtual member.
1187 * \param[in] geometry - Geometrical definition of the problem.
1188 * \param[in] solver_container - Container vector with all the solutions.
1189 * \param[in] conv_numerics - Description of the numerical method.
1190 * \param[in] visc_numerics - Description of the numerical method.
1191 * \param[in] config - Definition of the particular problem.
1192 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1193 */
1194 inline virtual void BC_Inlet_MixingPlane(CGeometry *geometry,
1195 CSolver **solver_container,
1196 CNumerics *conv_numerics,
1197 CNumerics *visc_numerics,
1198 CConfig *config,
1199 unsigned short val_marker) { }
1200
1201 /*!
1202 * \brief A virtual member.
1203 * \param[in] geometry - Geometrical definition of the problem.
1204 * \param[in] solver_container - Container vector with all the solutions.
1205 * \param[in] conv_numerics - Description of the numerical method.
1206 * \param[in] visc_numerics - Description of the numerical method.
1207 * \param[in] config - Definition of the particular problem.
1208 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1209 */
1210 inline virtual void BC_Supersonic_Inlet(CGeometry *geometry,
1211 CSolver **solver_container,
1212 CNumerics *conv_numerics,
1213 CNumerics *visc_numerics,
1214 CConfig *config,
1215 unsigned short val_marker) { }
1216
1217 /*!
1218 * \brief A virtual member.
1219 * \param[in] geometry - Geometrical definition of the problem.
1220 * \param[in] solver_container - Container vector with all the solutions.
1221 * \param[in] conv_numerics - Description of the numerical method.
1222 * \param[in] visc_numerics - Description of the numerical method.
1223 * \param[in] config - Definition of the particular problem.
1224 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1225 */
1226 inline virtual void BC_Supersonic_Outlet(CGeometry *geometry,
1227 CSolver **solver_container,
1228 CNumerics *conv_numerics,
1229 CNumerics *visc_numerics,
1230 CConfig *config,
1231 unsigned short val_marker) { }
1232
1233 /*!
1234 * \brief A virtual member.
1235 * \param[in] geometry - Geometrical definition of the problem.
1236 * \param[in] solver_container - Container vector with all the solutions.
1237 * \param[in] conv_numerics - Description of the convective numerical method.
1238 * \param[in] visc_numerics - Description of the viscous numerical method.
1239 * \param[in] config - Definition of the particular problem.
1240 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1241 */
1242 inline virtual void BC_Custom(CGeometry *geometry,
1243 CSolver **solver_container,
1244 CNumerics *conv_numerics,
1245 CNumerics *visc_numerics,
1246 CConfig *config,
1247 unsigned short val_marker) { }
1248
1249 /*!
1250 * \brief A virtual member.
1251 * \param[in] geometry - Geometrical definition of the problem.
1252 * \param[in] solver_container - Container vector with all the solutions.
1253 * \param[in] conv_numerics - Description of the numerical method.
1254 * \param[in] visc_numerics - Description of the numerical method.
1255 * \param[in] config - Definition of the particular problem.
1256 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1257 */
1258 inline virtual void BC_Outlet(CGeometry *geometry,
1259 CSolver **solver_container,
1260 CNumerics *conv_numerics,
1261 CNumerics *visc_numerics,
1262 CConfig *config,
1263 unsigned short val_marker) { }
1264
1265 /*!
1266 * \brief A virtual member.
1267 * \param[in] geometry - Geometrical definition of the problem.
1268 * \param[in] solver_container - Container vector with all the solutions.
1269 * \param[in] conv_numerics - Description of the numerical method.
1270 * \param[in] visc_numerics - Description of the numerical method.
1271 * \param[in] config - Definition of the particular problem.
1272 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1273 */
1274 inline virtual void BC_Engine_Inflow(CGeometry *geometry,
1275 CSolver **solver_container,
1276 CNumerics *conv_numerics,
1277 CNumerics *visc_numerics,
1278 CConfig *config,
1279 unsigned short val_marker) { }
1280
1281 /*!
1282 * \brief A virtual member.
1283 * \param[in] geometry - Geometrical definition of the problem.
1284 * \param[in] solver_container - Container vector with all the solutions.
1285 * \param[in] conv_numerics - Description of the numerical method.
1286 * \param[in] visc_numerics - Description of the numerical method.
1287 * \param[in] config - Definition of the particular problem.
1288 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1289 */
1290 inline virtual void BC_Engine_Exhaust(CGeometry *geometry,
1291 CSolver **solver_container,
1292 CNumerics *conv_numerics,
1293 CNumerics *visc_numerics,
1294 CConfig *config,
1295 unsigned short val_marker) { }
1296
1297 /*!
1298 * \brief A virtual member.
1299 * \param[in] geometry - Geometrical definition of the problem.
1300 * \param[in] solver_container - Container vector with all the solutions.
1301 * \param[in] numerics - Description of the numerical method.
1302 * \param[in] config - Definition of the particular problem.
1303 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1304 */
1305 inline virtual void BC_ConjugateHeat_Interface(CGeometry *geometry,
1306 CSolver **solver_container,
1307 CNumerics *numerics,
1308 CConfig *config,
1309 unsigned short val_marker) { }
1310
1311 /*!
1312 * \brief A virtual member.
1313 * \param[in] geometry - Geometrical definition of the problem.
1314 * \param[in] solver_container - Container vector with all the solutions.
1315 * \param[in] conv_numerics - Description of the numerical method.
1316 * \param[in] visc_numerics - Description of the numerical method.
1317 * \param[in] config - Definition of the particular problem.
1318 * \param[in] val_marker - Surface marker where the boundary condition is applied.
1319 */
1320 inline virtual void BC_Smoluchowski_Maxwell(CGeometry *geometry,
1321 CSolver **solver_container,
1322 CNumerics *conv_numerics,
1323 CNumerics *visc_numerics,
1324 CConfig *config,
1325 unsigned short val_marker) { }
1326 /*!
1327 * \brief Virtual function to apply something like a strong BC to the whole domain.
1328 * \details Overridden in CTurbSolver to impose fixed values to turbulence quantities
1329 * in a specified upstream half-plane.
1330 * \param[in] geometry - Geometrical definition of the problem.
1331 * \param[in] config - Definition of the particular problem.
1332 */
1333 virtual void Impose_Fixed_Values(const CGeometry *geometry, const CConfig *config) { }
1334
1335 /*!
1336 * \brief Get a component of the donor-side averaged state at a mixing plane interface
1337 * \param[in] val_marker - marker index
1338 * \param[in] val_span - span index
1339 * \param[in] val_state - requested state component
1340 */
1341 inline virtual su2double GetMixingState(unsigned short val_marker,
1342 unsigned long val_span,
1343 unsigned short val_state) const { return 0; }
1344
1345 /*!
1346 * \brief Set a component of the donor-side averaged state at a mixing plane interface nodes.
1347 * \param[in] val_marker - marker index
1348 * \param[in] val_span - span index
1349 * \param[in] val_state - state component to set
1350 * \param[in] component - value to set
1351 */
1352 inline virtual void SetMixingState(unsigned short val_marker,
1353 unsigned long val_span,
1354 unsigned short val_state,
1355 // unsigned long donor_span, // Do I care about where it comes from?
1356 su2double component) { }
1357
1358 /*!
1359 * \brief Get the outer state for fluid interface nodes.
1360 * \param[in] val_marker - marker index
1361 * \param[in] val_vertex - vertex index
1362 * \param[in] val_state - requested state component
1363 * \param[in] donor_index- index of the donor node to get
1364 */
1365 inline virtual su2double GetSlidingState(unsigned short val_marker,
1366 unsigned long val_vertex,
1367 unsigned short val_state,
1368 unsigned long donor_index) const { return 0; }
1369
1370 /*!
1371 * \brief Allocates the final pointer of SlidingState depending on how many donor vertex donate to it. That number is stored in SlidingStateNodes[val_marker][val_vertex].
1372 * \param[in] val_marker - marker index
1373 * \param[in] val_vertex - vertex index
1374 */
1375 inline virtual void SetSlidingStateStructure(unsigned short val_marker, unsigned long val_vertex){}
1376
1377 /*!
1378 * \brief Set the outer state for fluid interface nodes.
1379 * \param[in] val_marker - marker index
1380 * \param[in] val_vertex - vertex index
1381 * \param[in] val_state - requested state component
1382 * \param[in] donor_index- index of the donor node to set
1383 * \param[in] component - set value
1384 */
1385 inline virtual void SetSlidingState(unsigned short val_marker,
1386 unsigned long val_vertex,
1387 unsigned short val_state,
1388 unsigned long donor_index,
1389 su2double component){ }
1390
1391 /*!
1392 * \brief Get the number of outer states for fluid interface nodes.
1393 * \param[in] val_marker - marker index
1394 * \param[in] val_vertex - vertex index
1395 */
1396 inline virtual int GetnSlidingStates(unsigned short val_marker, unsigned long val_vertex) const { return 0; }
1397
1398 /*!
1399 * \brief Set the number of outer states for fluid interface nodes.
1400 * \param[in] val_marker - marker index
1401 * \param[in] val_vertex - vertex index
1402 * \param[in] value - number of outer states
1403 */
1404 inline virtual void SetnSlidingStates(unsigned short val_marker, unsigned long val_vertex, int value) { }
1405
1406 /*!
1407 * \brief Set the conjugate heat variables.
1408 * \param[in] val_marker - marker index
1409 * \param[in] val_vertex - vertex index
1410 * \param[in] pos_var - variable position (in vector of all conjugate heat variables)
1411 * \param[in] relaxation factor - relaxation factor for the change of the variables
1412 * \param[in] val_var - value of the variable
1413 */
1414 inline virtual void SetConjugateHeatVariable(unsigned short val_marker,
1415 unsigned long val_vertex,
1416 unsigned short pos_var,
1417 su2double relaxation_factor,
1418 su2double val_var) { }
1419
1420 /*!
1421 * \brief Set the conjugate heat variables.
1422 * \param[in] val_marker - marker index
1423 * \param[in] val_vertex - vertex index
1424 * \param[in] pos_var - variable position (in vector of all conjugate heat variables)
1425 */
1426 inline virtual su2double GetConjugateHeatVariable(unsigned short val_marker,
1427 unsigned long val_vertex,
1428 unsigned short pos_var) const { return 0.0; }
1429
1430 /*!
1431 * \brief A virtual member.
1432 * \param[in] geometry - Geometrical definition of the problem.
1433 * \param[in] solver_container - Container vector with all the solutions.
1434 * \param[in] config - Definition of the particular problem.
1435 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
1436 */
1437 inline virtual void ExplicitRK_Iteration(CGeometry *geometry,
1438 CSolver **solver_container,
1439 CConfig *config,
1440 unsigned short iRKStep) { }
1441
1442 /*!
1443 * \brief A virtual member.
1444 * \param[in] geometry - Geometrical definition of the problem.
1445 * \param[in] solver_container - Container vector with all the solutions.
1446 * \param[in] config - Definition of the particular problem.
1447 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
1448 */
1449 inline virtual void ClassicalRK4_Iteration(CGeometry *geometry,
1450 CSolver **solver_container,
1451 CConfig *config,
1452 unsigned short iRKStep) { }
1453
1454 /*!
1455 * \brief A virtual member.
1456 * \param[in] geometry - Geometrical definition of the problem.
1457 * \param[in] solver_container - Container vector with all the solutions.
1458 * \param[in] config - Definition of the particular problem.
1459 */
1460 inline virtual void ExplicitEuler_Iteration(CGeometry *geometry,
1461 CSolver **solver_container,
1462 CConfig *config) { }
1463
1464 /*!
1465 * \brief A virtual member.
1466 * \param[in] geometry - Geometrical definition of the problem.
1467 * \param[in] solver_container - Container vector with all the solutions.
1468 * \param[in] config - Definition of the particular problem.
1469 */
1470 inline virtual void PrepareImplicitIteration(CGeometry *geometry,
1471 CSolver **solver_container,
1472 CConfig *config) { }
1473
1474 /*!
1475 * \brief A virtual member.
1476 * \param[in] geometry - Geometrical definition of the problem.
1477 * \param[in] solver_container - Container vector with all the solutions.
1478 * \param[in] config - Definition of the particular problem.
1479 */
1480 inline virtual void CompleteImplicitIteration(CGeometry *geometry,
1481 CSolver **solver_container,
1482 CConfig *config) { }
1483
1484 /*!
1485 * \brief A virtual member.
1486 * \param[in] geometry - Geometrical definition of the problem.
1487 * \param[in] solver_container - Container vector with all the solutions.
1488 * \param[in] config - Definition of the particular problem.
1489 */
1490 inline virtual void ImplicitEuler_Iteration(CGeometry *geometry,
1491 CSolver **solver_container,
1492 CConfig *config) { }
1493
1494 /*!
1495 * \brief Adapt the CFL number based on the local under-relaxation parameters
1496 * computed for each nonlinear iteration.
1497 * \param[in] geometry - Geometrical definition of the problem.
1498 * \param[in] config - Definition of the particular problem.
1499 * \param[in] solver_container - Container vector with all the solutions.
1500 */
1501 void AdaptCFLNumber(CGeometry **geometry, CSolver ***solver_container, CConfig *config);
1502
1503 /*!
1504 * \brief Identify points where the solution is an outlier (physics-specific concept)
1505 * so that solvers can try to restore them to a stable condition.
1506 * \param[in] config - Definition of the particular problem.
1507 * \param[in] iter - Current iteration (time, outer, or inner, as appropriate).
1508 */
1509 inline virtual void IdentifySolutionOutliers(const CConfig *config, unsigned long iter) { }
1510
1511 /*!
1512 * \brief Reset the local CFL adaption variables
1513 */
1514 void ResetCFLAdapt();
1515
1516 /*!
1517 * \brief A virtual member.
1518 * \param[in] geometry - Geometrical definition of the problem.
1519 * \param[in] numerics - Numerical methods.
1520 * \param[in] config - Definition of the particular problem.
1521 */
1522 inline virtual void ImplicitNewmark_Iteration(const CGeometry *geometry,
1523 CNumerics **numerics,
1524 const CConfig *config) { }
1525
1526 /*!
1527 * \brief A virtual member.
1528 * \param[in] geometry - Geometrical definition of the problem.
1529 * \param[in] solver_container - Container vector with all the solutions.
1530 * \param[in] config - Definition of the particular problem.
1531 */
1532 inline virtual void ImplicitNewmark_Update(const CGeometry *geometry,
1533 const CConfig *config) { }
1534
1535 /*!
1536 * \brief A virtual member.
1537 * \param[in] geometry - Geometrical definition of the problem.
1538 * \param[in] solver_container - Container vector with all the solutions.
1539 * \param[in] config - Definition of the particular problem.
1540 */
1541 inline virtual void ImplicitNewmark_Relaxation(const CGeometry *geometry,
1542 const CConfig *config) { }
1543
1544 /*!
1545 * \brief A virtual member.
1546 * \param[in] geometry - Geometrical definition of the problem.
1547 * \param[in] numerics - Numerical methods.
1548 * \param[in] config - Definition of the particular problem.
1549 */
1550 inline virtual void GeneralizedAlpha_Iteration(const CGeometry *geometry,
1551 CNumerics **numerics,
1552 const CConfig *config) { }
1553
1554 /*!
1555 * \brief A virtual member.
1556 * \param[in] geometry - Geometrical definition of the problem.
1557 * \param[in] solver_container - Container vector with all the solutions.
1558 * \param[in] config - Definition of the particular problem.
1559 */
1560 inline virtual void GeneralizedAlpha_UpdateDisp(const CGeometry *geometry,
1561 const CConfig *config) { }
1562
1563 /*!
1564 * \brief A virtual member.
1565 * \param[in] geometry - Geometrical definition of the problem.
1566 * \param[in] solver_container - Container vector with all the solutions.
1567 * \param[in] config - Definition of the particular problem.
1568 */
1569 inline virtual void GeneralizedAlpha_UpdateSolution(const CGeometry *geometry,
1570 const CConfig *config) { }
1571
1572 /*!
1573 * \brief A virtual member.
1574 * \param[in] geometry - Geometrical definition of the problem.
1575 * \param[in] solver_container - Container vector with all the solutions.
1576 * \param[in] config - Definition of the particular problem.
1577 */
1578 inline virtual void GeneralizedAlpha_UpdateLoads(const CGeometry *geometry,
1579 const CConfig *config) { }
1580
1581 /*!
1582 * \brief A virtual member.
1583 * \param[in] geometry - Geometrical definition of the problem.
1584 * \param[in] config - Definition of the particular problem.
1585 */
1586 inline virtual void Pressure_Forces(const CGeometry* geometry, const CConfig* config) { }
1587
1588 /*!
1589 * \brief A virtual member.
1590 * \param[in] geometry - Geometrical definition of the problem.
1591 * \param[in] config - Definition of the particular problem.
1592 */
1593 inline virtual void Momentum_Forces(const CGeometry* geometry, const CConfig* config) { }
1594
1595 /*!
1596 * \brief A virtual member.
1597 * \param[in] geometry - Geometrical definition of the problem.
1598 * \param[in] config - Definition of the particular problem.
1599 */
1600 inline virtual void Friction_Forces(const CGeometry* geometry, const CConfig* config) { }
1601
1602 /*!
1603 * \brief A virtual member.
1604 * \param[in] geometry - Geometrical definition of the problem.
1605 * \param[in] solver_container - Container vector with all the solutions.
1606 * \param[in] config - Definition of the particular problem.
1607 */
1608 inline virtual void Heat_Fluxes(CGeometry *geometry,
1609 CSolver **solver_container,
1610 CConfig *config) { }
1611
1612 /*!
1613 * \brief A virtual member.
1614 * \param[in] geometry - Geometrical definition of the problem.
1615 * \param[in] config - Definition of the particular problem.
1616 * \param[in] reconstruction - indicator that the gradient being computed is for upwind reconstruction.
1617 */
1618 inline virtual void SetPrimitive_Gradient_GG(CGeometry *geometry,
1619 const CConfig *config,
1620 bool reconstruction = false) { }
1621
1622 /*!
1623 * \brief A virtual member.
1624 * \param[in] geometry - Geometrical definition of the problem.
1625 * \param[in] config - Definition of the particular problem.
1626 * \param[in] reconstruction - indicator that the gradient being computed is for upwind reconstruction.
1627 */
1628 inline virtual void SetPrimitive_Gradient_LS(CGeometry *geometry,
1629 const CConfig *config,
1630 bool reconstruction = false) { }
1631
1632 /*!
1633 * \brief A virtual member.
1634 * \param[in] geometry - Geometrical definition of the problem.
1635 * \param[in] solver_container - Container vector with all the solutions.
1636 * \param[in] numerics_container - Description of the numerical method.
1637 * \param[in] config - Definition of the particular problem.
1638 * \param[in] iMesh - Index of the mesh in multigrid computations.
1639 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
1640 */
1641 inline virtual void Viscous_Residual(CGeometry *geometry,
1642 CSolver **solver_container,
1643 CNumerics **numerics_container,
1644 CConfig *config,
1645 unsigned short iMesh,
1646 unsigned short iRKStep) { }
1647
1648 /*!
1649 * \brief A virtual member.
1650 * \param[in] geometry - Geometrical definition of the problem.
1651 * \param[in] solver_container - Container vector with all the solutions.
1652 * \param[in] numerics_container - Description of the numerical method.
1653 * \param[in] config - Definition of the particular problem.
1654 * \param[in] iMesh - Index of the mesh in multigrid computations.
1655 */
1656 inline virtual void Source_Residual(CGeometry *geometry,
1657 CSolver **solver_container,
1658 CNumerics **numerics_container,
1659 CConfig *config,
1660 unsigned short iMesh) { }
1661
1662 /*!
1663 * \brief A virtual member.
1664 * \param[in] geometry - Geometrical definition of the problem.
1665 * \param[in] solver_container - Container vector with all the solutions.
1666 * \param[in] numerics - Description of the numerical method.
1667 * \param[in] config - Definition of the particular problem.
1668 * \param[in] iMesh - Index of the mesh in multigrid computations.
1669 */
1670 inline virtual void Source_Template(CGeometry *geometry,
1671 CSolver **solver_container,
1672 CNumerics *numerics,
1673 CConfig *config,
1674 unsigned short iMesh) { }
1675
1676 /*!
1677 * \brief A virtual member.
1678 * \param[in] val_marker - Surface marker where the coefficient is computed.
1679 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
1680 * \param[in] val_sensitivity - Value of the sensitivity coefficient.
1681 */
1682 inline virtual void SetCSensitivity(unsigned short val_marker,
1683 unsigned long val_vertex,
1684 su2double val_sensitivity) { }
1685
1686 /*!
1687 * \brief A virtual member.
1688 * \param[in] geometry - Geometrical definition of the problem.
1689 * \param[in] solver_container - Container vector with all the solutions.
1690 * \param[in] config - Definition of the particular problem.
1691 */
1692 inline virtual void SetForceProj_Vector(CGeometry *geometry,
1693 CSolver **solver_container,
1694 CConfig *config) { }
1695
1696 /*!
1697 * \brief A virtual member.
1698 * \param[in] val_Total_CD - Value of the total drag coefficient.
1699 */
1700 inline virtual void SetTotal_CD(su2double val_Total_CD) { }
1701
1702 /*!
1703 * \brief A virtual member.
1704 * \param[in] val_Total_CL - Value of the total lift coefficient.
1705 */
1706 inline virtual void SetTotal_CL(su2double val_Total_CL) { }
1707
1708 /*!
1709 * \brief A virtual member.
1710 * \param[in] val_Total_CD - Value of the total drag coefficient.
1711 */
1712 inline virtual void SetTotal_NetThrust(su2double val_Total_NetThrust) { }
1713
1714 /*!
1715 * \brief A virtual member.
1716 * \param[in] val_Total_CD - Value of the total drag coefficient.
1717 */
1718 inline virtual void SetTotal_Power(su2double val_Total_Power) { }
1719
1720 /*!
1721 * \brief A virtual member.
1722 * \param[in] val_Total_CD - Value of the total drag coefficient.
1723 */
1724 inline virtual void SetTotal_SolidCD(su2double val_Total_SolidCD) { }
1725
1726 /*!
1727 * \brief A virtual member.
1728 * \param[in] val_Total_CD - Value of the total drag coefficient.
1729 */
1730 inline virtual void SetTotal_ReverseFlow(su2double val_Total_ReverseFlow) { }
1731
1732 /*!
1733 * \brief A virtual member.
1734 * \param[in] val_Total_CD - Value of the total drag coefficient.
1735 */
1736 inline virtual void SetTotal_MFR(su2double val_Total_MFR) { }
1737
1738 /*!
1739 * \brief A virtual member.
1740 * \param[in] val_Total_CD - Value of the total drag coefficient.
1741 */
1742 inline virtual void SetTotal_Prop_Eff(su2double val_Total_Prop_Eff) { }
1743
1744 /*!
1745 * \brief A virtual member.
1746 * \param[in] val_Total_CD - Value of the total drag coefficient.
1747 */
1748 inline virtual void SetTotal_ByPassProp_Eff(su2double val_Total_ByPassProp_Eff) { }
1749
1750 /*!
1751 * \brief A virtual member.
1752 * \param[in] val_Total_CD - Value of the total drag coefficient.
1753 */
1754 inline virtual void SetTotal_Adiab_Eff(su2double val_Total_Adiab_Eff) { }
1755
1756 /*!
1757 * \brief A virtual member.
1758 * \param[in] val_Total_CD - Value of the total drag coefficient.
1759 */
1760 inline virtual void SetTotal_Poly_Eff(su2double val_Total_Poly_Eff) { }
1761
1762 /*!
1763 * \brief A virtual member.
1764 * \param[in] val_Total_CD - Value of the total drag coefficient.
1765 */
1766 inline virtual void SetTotal_IDC(su2double val_Total_IDC) { }
1767
1768 /*!
1769 * \brief A virtual member.
1770 * \param[in] val_Total_CD - Value of the total drag coefficient.
1771 */
1772 inline virtual void SetTotal_IDC_Mach(su2double val_Total_IDC_Mach) { }
1773
1774 /*!
1775 * \brief A virtual member.
1776 * \param[in] val_Total_CD - Value of the total drag coefficient.
1777 */
1778 inline virtual void SetTotal_IDR(su2double val_Total_IDR) { }
1779
1780 /*!
1781 * \brief A virtual member.
1782 * \param[in] val_Total_CD - Value of the total drag coefficient.
1783 */
1784 inline virtual void SetTotal_DC60(su2double val_Total_DC60) { }
1785
1786 /*!
1787 * \brief A virtual member.
1788 * \param[in] val_Total_CT - Value of the total thrust coefficient.
1789 */
1790 inline virtual void SetTotal_CT(su2double val_Total_CT) { }
1791
1792 /*!
1793 * \brief A virtual member.
1794 * \param[in] val_Total_CQ - Value of the total torque coefficient.
1795 */
1796 inline virtual void SetTotal_CQ(su2double val_Total_CQ) { }
1797
1798 /*!
1799 * \brief A virtual member.
1800 * \param[in] val_Total_Heat - Value of the total heat load.
1801 */
1802 inline virtual void SetTotal_HeatFlux(su2double val_Total_Heat) { }
1803
1804 /*!
1805 * \brief A virtual member.
1806 * \param[in] val_Total_MaxHeat - Value of the total heat load.
1807 */
1808 inline virtual void SetTotal_MaxHeatFlux(su2double val_Total_MaxHeat) { }
1809
1810 /*!
1811 * \brief A virtual member.
1812 * \param[in] geometry - Geometrical definition of the problem.
1813 * \param[in] solver_container - Container vector with all the solutions.
1814 * \param[in] numerics - Description of the numerical method.
1815 * \param[in] config - Definition of the particular problem.
1816 */
1817 inline virtual void Inviscid_Sensitivity(CGeometry *geometry,
1818 CSolver **solver_container,
1819 CNumerics *numerics,
1820 CConfig *config) { }
1821
1822 /*!
1823 * \brief A virtual member.
1824 * \param[in] geometry - Geometrical definition of the problem.
1825 * \param[in] solver_container - Container vector with all the solutions.
1826 * \param[in] numerics - Description of the numerical method.
1827 * \param[in] config - Definition of the particular problem.
1828 */
1829 inline virtual void Smooth_Sensitivity(CGeometry *geometry,
1830 CSolver **solver_container,
1831 CNumerics *numerics,
1832 CConfig *config) { }
1833
1834 /*!
1835 * \brief A virtual member.
1836 * \param[in] geometry - Geometrical definition of the problem.
1837 * \param[in] solver_container - Container vector with all the solutions.
1838 * \param[in] numerics - Description of the numerical method.
1839 * \param[in] config - Definition of the particular problem.
1840 */
1841 inline virtual void Viscous_Sensitivity(CGeometry *geometry,
1842 CSolver **solver_container,
1843 CNumerics *numerics,
1844 CConfig *config) { }
1845
1846 /*!
1847 * \author H. Kline
1848 * \brief Provide the total "combo" objective (weighted sum of other values).
1849 * \return Value of the "combo" objective values.
1850 */
1851 inline su2double GetTotal_ComboObj() const { return Total_ComboObj; }
1852
1853 /*!
1854 * \brief Sets the value of the custom objective function.
1855 * \param[in] value - Value of the total custom objective function.
1856 */
1858
1859 /*!
1860 * \brief A virtual member.
1861 * \param[in] val_marker - Surface marker where the coefficient is computed.
1862 * \return Value of the lift coefficient (inviscid contribution) on the surface <i>val_marker</i>.
1863 */
1864 inline virtual su2double GetCL_Inv(unsigned short val_marker) const { return 0; }
1865
1866 /*!
1867 * \brief A virtual member.
1868 * \param[in] val_marker - Surface marker where the coefficient is computed.
1869 * \return Value of the lift coefficient (viscous contribution) on the surface <i>val_marker</i>.
1870 */
1871 inline virtual su2double GetCL_Visc(unsigned short val_marker) const { return 0; }
1872
1873 /*!
1874 * \brief A virtual member.
1875 * \param[in] val_marker - Surface marker where the coefficient is computed.
1876 * \return Value of the lift coefficient on the surface <i>val_marker</i>.
1877 */
1878 inline virtual su2double GetSurface_CL(unsigned short val_marker) const { return 0; }
1879
1880 /*!
1881 * \brief A virtual member.
1882 * \param[in] val_marker - Surface marker where the coefficient is computed.
1883 * \return Value of the drag coefficient on the surface <i>val_marker</i>.
1884 */
1885 inline virtual su2double GetSurface_CD(unsigned short val_marker) const { return 0; }
1886
1887 /*!
1888 * \brief A virtual member.
1889 * \param[in] val_marker - Surface marker where the coefficient is computed.
1890 * \return Value of the side force coefficient on the surface <i>val_marker</i>.
1891 */
1892 inline virtual su2double GetSurface_CSF(unsigned short val_marker) const { return 0; }
1893
1894 /*!
1895 * \brief A virtual member.
1896 * \param[in] val_marker - Surface marker where the coefficient is computed.
1897 * \return Value of the side force coefficient on the surface <i>val_marker</i>.
1898 */
1899 inline virtual su2double GetSurface_CEff(unsigned short val_marker) const { return 0; }
1900
1901 /*!
1902 * \brief A virtual member.
1903 * \param[in] val_marker - Surface marker where the coefficient is computed.
1904 * \return Value of the x force coefficient on the surface <i>val_marker</i>.
1905 */
1906 inline virtual su2double GetSurface_CFx(unsigned short val_marker) const { return 0; }
1907
1908 /*!
1909 * \brief A virtual member.
1910 * \param[in] val_marker - Surface marker where the coefficient is computed.
1911 * \return Value of the y force coefficient on the surface <i>val_marker</i>.
1912 */
1913 inline virtual su2double GetSurface_CFy(unsigned short val_marker) const { return 0; }
1914
1915 /*!
1916 * \brief A virtual member.
1917 * \param[in] val_marker - Surface marker where the coefficient is computed.
1918 * \return Value of the z force coefficient on the surface <i>val_marker</i>.
1919 */
1920 inline virtual su2double GetSurface_CFz(unsigned short val_marker) const { return 0; }
1921
1922 /*!
1923 * \brief A virtual member.
1924 * \param[in] val_marker - Surface marker where the coefficient is computed.
1925 * \return Value of the x moment coefficient on the surface <i>val_marker</i>.
1926 */
1927 inline virtual su2double GetSurface_CMx(unsigned short val_marker) const { return 0; }
1928
1929 /*!
1930 * \brief A virtual member.
1931 * \param[in] val_marker - Surface marker where the coefficient is computed.
1932 * \return Value of the y moment coefficient on the surface <i>val_marker</i>.
1933 */
1934 inline virtual su2double GetSurface_CMy(unsigned short val_marker) const { return 0; }
1935
1936 /*!
1937 * \brief A virtual member.
1938 * \param[in] val_marker - Surface marker where the coefficient is computed.
1939 * \return Value of the z moment coefficient on the surface <i>val_marker</i>.
1940 */
1941 inline virtual su2double GetSurface_CMz(unsigned short val_marker) const { return 0; }
1942
1943 /*!
1944 * \brief A virtual member.
1945 * \param[in] val_marker - Surface marker where the coefficient is computed.
1946 * \return Value of the lift coefficient on the surface <i>val_marker</i>.
1947 */
1948 inline virtual su2double GetSurface_CL_Inv(unsigned short val_marker) const { return 0; }
1949
1950 /*!
1951 * \brief A virtual member.
1952 * \param[in] val_marker - Surface marker where the coefficient is computed.
1953 * \return Value of the drag coefficient on the surface <i>val_marker</i>.
1954 */
1955 inline virtual su2double GetSurface_CD_Inv(unsigned short val_marker) const { return 0; }
1956
1957 /*!
1958 * \brief A virtual member.
1959 * \param[in] val_marker - Surface marker where the coefficient is computed.
1960 * \return Value of the side force coefficient on the surface <i>val_marker</i>.
1961 */
1962 inline virtual su2double GetSurface_CSF_Inv(unsigned short val_marker) const { return 0; }
1963
1964 /*!
1965 * \brief A virtual member.
1966 * \param[in] val_marker - Surface marker where the coefficient is computed.
1967 * \return Value of the side force coefficient on the surface <i>val_marker</i>.
1968 */
1969 inline virtual su2double GetSurface_CEff_Inv(unsigned short val_marker) const { return 0; }
1970
1971 /*!
1972 * \brief A virtual member.
1973 * \param[in] val_marker - Surface marker where the coefficient is computed.
1974 * \return Value of the x force coefficient on the surface <i>val_marker</i>.
1975 */
1976 inline virtual su2double GetSurface_CFx_Inv(unsigned short val_marker) const { return 0; }
1977
1978 /*!
1979 * \brief A virtual member.
1980 * \param[in] val_marker - Surface marker where the coefficient is computed.
1981 * \return Value of the y force coefficient on the surface <i>val_marker</i>.
1982 */
1983 inline virtual su2double GetSurface_CFy_Inv(unsigned short val_marker) const { return 0; }
1984
1985 /*!
1986 * \brief A virtual member.
1987 * \param[in] val_marker - Surface marker where the coefficient is computed.
1988 * \return Value of the z force coefficient on the surface <i>val_marker</i>.
1989 */
1990 inline virtual su2double GetSurface_CFz_Inv(unsigned short val_marker) const { return 0; }
1991
1992 /*!
1993 * \brief A virtual member.
1994 * \param[in] val_marker - Surface marker where the coefficient is computed.
1995 * \return Value of the x moment coefficient on the surface <i>val_marker</i>.
1996 */
1997 inline virtual su2double GetSurface_CMx_Inv(unsigned short val_marker) const { return 0; }
1998
1999 /*!
2000 * \brief A virtual member.
2001 * \param[in] val_marker - Surface marker where the coefficient is computed.
2002 * \return Value of the y moment coefficient on the surface <i>val_marker</i>.
2003 */
2004 inline virtual su2double GetSurface_CMy_Inv(unsigned short val_marker) const { return 0; }
2005
2006 /*!
2007 * \brief A virtual member.
2008 * \param[in] val_marker - Surface marker where the coefficient is computed.
2009 * \return Value of the z moment coefficient on the surface <i>val_marker</i>.
2010 */
2011 inline virtual su2double GetSurface_CMz_Inv(unsigned short val_marker) const { return 0; }
2012
2013 /*!
2014 * \brief A virtual member.
2015 * \param[in] val_marker - Surface marker where the coefficient is computed.
2016 * \return Value of the lift coefficient on the surface <i>val_marker</i>.
2017 */
2018 inline virtual su2double GetSurface_CL_Visc(unsigned short val_marker) const { return 0; }
2019
2020 /*!
2021 * \brief A virtual member.
2022 * \param[in] val_marker - Surface marker where the coefficient is computed.
2023 * \return Value of the drag coefficient on the surface <i>val_marker</i>.
2024 */
2025 inline virtual su2double GetSurface_CD_Visc(unsigned short val_marker) const { return 0; }
2026
2027 /*!
2028 * \brief A virtual member.
2029 * \param[in] val_marker - Surface marker where the coefficient is computed.
2030 * \return Value of the side force coefficient on the surface <i>val_marker</i>.
2031 */
2032 inline virtual su2double GetSurface_CSF_Visc(unsigned short val_marker) const { return 0; }
2033
2034 /*!
2035 * \brief A virtual member.
2036 * \param[in] val_marker - Surface marker where the coefficient is computed.
2037 * \return Value of the side force coefficient on the surface <i>val_marker</i>.
2038 */
2039 inline virtual su2double GetSurface_CEff_Visc(unsigned short val_marker) const { return 0; }
2040
2041 /*!
2042 * \brief A virtual member.
2043 * \param[in] val_marker - Surface marker where the coefficient is computed.
2044 * \return Value of the x force coefficient on the surface <i>val_marker</i>.
2045 */
2046 inline virtual su2double GetSurface_CFx_Visc(unsigned short val_marker) const { return 0; }
2047
2048 /*!
2049 * \brief A virtual member.
2050 * \param[in] val_marker - Surface marker where the coefficient is computed.
2051 * \return Value of the y force coefficient on the surface <i>val_marker</i>.
2052 */
2053 inline virtual su2double GetSurface_CFy_Visc(unsigned short val_marker) const { return 0; }
2054
2055 /*!
2056 * \brief A virtual member.
2057 * \param[in] val_marker - Surface marker where the coefficient is computed.
2058 * \return Value of the z force coefficient on the surface <i>val_marker</i>.
2059 */
2060 inline virtual su2double GetSurface_CFz_Visc(unsigned short val_marker) const { return 0; }
2061
2062 /*!
2063 * \brief A virtual member.
2064 * \param[in] val_marker - Surface marker where the coefficient is computed.
2065 * \return Value of the x moment coefficient on the surface <i>val_marker</i>.
2066 */
2067 inline virtual su2double GetSurface_CMx_Visc(unsigned short val_marker) const { return 0; }
2068
2069 /*!
2070 * \brief A virtual member.
2071 * \param[in] val_marker - Surface marker where the coefficient is computed.
2072 * \return Value of the y moment coefficient on the surface <i>val_marker</i>.
2073 */
2074 inline virtual su2double GetSurface_CMy_Visc(unsigned short val_marker) const { return 0; }
2075
2076 /*!
2077 * \brief A virtual member.
2078 * \param[in] val_marker - Surface marker where the coefficient is computed.
2079 * \return Value of the z moment coefficient on the surface <i>val_marker</i>.
2080 */
2081 inline virtual su2double GetSurface_CMz_Visc(unsigned short val_marker) const { return 0; }
2082
2083 /*!
2084 * \brief A virtual member.
2085 * \param[in] val_marker - Surface marker where the coefficient is computed.
2086 * \return Value of the buffet metric on the surface <i>val_marker</i>.
2087 */
2088 inline virtual su2double GetSurface_Buffet_Metric(unsigned short val_marker) const { return 0; }
2089
2090 /*!
2091 * \brief A virtual member.
2092 * \param[in] val_marker - Surface marker where the coefficient is computed.
2093 * \return Value of the lift coefficient on the surface <i>val_marker</i>.
2094 */
2095 inline virtual su2double GetSurface_CL_Mnt(unsigned short val_marker) const { return 0; }
2096
2097 /*!
2098 * \brief A virtual member.
2099 * \param[in] val_marker - Surface marker where the coefficient is computed.
2100 * \return Value of the drag coefficient on the surface <i>val_marker</i>.
2101 */
2102 inline virtual su2double GetSurface_CD_Mnt(unsigned short val_marker) const { return 0; }
2103
2104 /*!
2105 * \brief A virtual member.
2106 * \param[in] val_marker - Surface marker where the coefficient is computed.
2107 * \return Value of the side force coefficient on the surface <i>val_marker</i>.
2108 */
2109 inline virtual su2double GetSurface_CSF_Mnt(unsigned short val_marker) const { return 0; }
2110
2111 /*!
2112 * \brief A virtual member.
2113 * \param[in] val_marker - Surface marker where the coefficient is computed.
2114 * \return Value of the side force coefficient on the surface <i>val_marker</i>.
2115 */
2116 inline virtual su2double GetSurface_CEff_Mnt(unsigned short val_marker) const { return 0; }
2117
2118 /*!
2119 * \brief A virtual member.
2120 * \param[in] val_marker - Surface marker where the coefficient is computed.
2121 * \return Value of the x force coefficient on the surface <i>val_marker</i>.
2122 */
2123 inline virtual su2double GetSurface_CFx_Mnt(unsigned short val_marker) const { return 0; }
2124
2125 /*!
2126 * \brief A virtual member.
2127 * \param[in] val_marker - Surface marker where the coefficient is computed.
2128 * \return Value of the y force coefficient on the surface <i>val_marker</i>.
2129 */
2130 inline virtual su2double GetSurface_CFy_Mnt(unsigned short val_marker) const { return 0; }
2131
2132 /*!
2133 * \brief A virtual member.
2134 * \param[in] val_marker - Surface marker where the coefficient is computed.
2135 * \return Value of the z force coefficient on the surface <i>val_marker</i>.
2136 */
2137 inline virtual su2double GetSurface_CFz_Mnt(unsigned short val_marker) const { return 0; }
2138
2139 /*!
2140 * \brief A virtual member.
2141 * \param[in] val_marker - Surface marker where the coefficient is computed.
2142 * \return Value of the x moment coefficient on the surface <i>val_marker</i>.
2143 */
2144 inline virtual su2double GetSurface_CMx_Mnt(unsigned short val_marker) const { return 0; }
2145
2146 /*!
2147 * \brief A virtual member.
2148 * \param[in] val_marker - Surface marker where the coefficient is computed.
2149 * \return Value of the y moment coefficient on the surface <i>val_marker</i>.
2150 */
2151 inline virtual su2double GetSurface_CMy_Mnt(unsigned short val_marker) const { return 0; }
2152
2153 /*!
2154 * \brief A virtual member.
2155 * \param[in] val_marker - Surface marker where the coefficient is computed.
2156 * \return Value of the z moment coefficient on the surface <i>val_marker</i>.
2157 */
2158 inline virtual su2double GetSurface_CMz_Mnt(unsigned short val_marker) const { return 0; }
2159
2160 /*!
2161 * \brief A virtual member.
2162 * \param[in] val_marker - Surface marker where the coefficient is computed.
2163 * \return Value of the lift coefficient (viscous contribution) on the surface <i>val_marker</i>.
2164 */
2165 inline virtual su2double GetCSF_Visc(unsigned short val_marker) const { return 0; }
2166
2167 /*!
2168 * \brief A virtual member.
2169 * \param[in] val_marker - Surface marker where the coefficient is computed.
2170 * \return Value of the drag coefficient (inviscid contribution) on the surface <i>val_marker</i>.
2171 */
2172 inline virtual su2double GetCD_Inv(unsigned short val_marker) const { return 0; }
2173
2174 /*!
2175 * \brief A virtual member.
2176 * \param[in] val_marker - Surface marker where the coefficient is computed.
2177 * \return Value of the mass flow rate on the surface <i>val_marker</i>.
2178 */
2179 inline virtual su2double GetInflow_MassFlow(unsigned short val_marker) const { return 0; }
2180
2181 /*!
2182 * \brief A virtual member.
2183 * \param[in] config - Definition of the particular problem.
2184 * \param[in] convergence - boolean for whether the solution is converged
2185 * \return boolean for whether the Fixed C_L mode is converged to target C_L
2186 */
2187 inline virtual bool FixedCL_Convergence(CConfig *config, bool convergence) { return false; }
2188
2189 /*!
2190 * \brief A virtual member.
2191 * \return boolean for whether the Fixed C_L mode is currently in finite-differencing mode
2192 */
2193 inline virtual bool GetStart_AoA_FD(void) const { return false; }
2194
2195 /*!
2196 * \brief A virtual member.
2197 * \return boolean for whether the Fixed C_L mode is currently in finite-differencing mode
2198 */
2199 inline virtual bool GetEnd_AoA_FD(void) const { return false; }
2200
2201 /*!
2202 * \brief A virtual member.
2203 * \return value for the last iteration that the AoA was updated
2204 */
2205 inline virtual unsigned long GetIter_Update_AoA(void) const { return 0; }
2206
2207 /*!
2208 * \brief A virtual member.
2209 * \return value of the AoA before most recent update
2210 */
2211 inline virtual su2double GetPrevious_AoA(void) const { return 0.0; }
2212
2213 /*!
2214 * \brief A virtual member.
2215 * \return value of CL Driver control command (AoA_inc)
2216 */
2217 inline virtual su2double GetAoA_inc(void) const { return 0.0; }
2218
2219 /*!
2220 * \brief A virtual member.
2221 * \param[in] val_marker - Surface marker where the coefficient is computed.
2222 * \return Value of the mass flow rate on the surface <i>val_marker</i>.
2223 */
2224 inline virtual su2double GetExhaust_MassFlow(unsigned short val_marker) const { return 0; }
2225
2226 /*!
2227 * \brief A virtual member.
2228 * \param[in] val_marker - Surface marker where the coefficient is computed.
2229 * \return Value of the fan face pressure on the surface <i>val_marker</i>.
2230 */
2231 inline virtual su2double GetInflow_Pressure(unsigned short val_marker) const { return 0; }
2232
2233 /*!
2234 * \brief A virtual member.
2235 * \param[in] val_marker - Surface marker where the coefficient is computed.
2236 * \return Value of the fan face mach on the surface <i>val_marker</i>.
2237 */
2238 inline virtual su2double GetInflow_Mach(unsigned short val_marker) const { return 0; }
2239
2240 /*!
2241 * \brief A virtual member.
2242 * \param[in] val_marker - Surface marker where the coefficient is computed.
2243 * \return Value of the sideforce coefficient (inviscid contribution) on the surface <i>val_marker</i>.
2244 */
2245 inline virtual su2double GetCSF_Inv(unsigned short val_marker) const { return 0; }
2246
2247 /*!
2248 * \brief A virtual member.
2249 * \param[in] val_marker - Surface marker where the coefficient is computed.
2250 * \return Value of the efficiency coefficient (inviscid contribution) on the surface <i>val_marker</i>.
2251 */
2252 inline virtual su2double GetCEff_Inv(unsigned short val_marker) const { return 0; }
2253
2254 /*!
2255 * \brief A virtual member.
2256 * \param[in] val_marker - Surface marker where the heat flux is computed.
2257 * \return Value of the integrated heat flux (viscous contribution) on the surface <i>val_marker</i>.
2258 */
2259 inline virtual su2double GetSurface_HF_Visc(unsigned short val_marker) const { return 0; }
2260
2261 /*!
2262 * \brief A virtual member.
2263 * \param[in] val_marker - Surface marker where the heat flux is computed.
2264 * \return Value of the maximum heat flux (viscous contribution) on the surface <i>val_marker</i>.
2265 */
2266 inline virtual su2double GetSurface_MaxHF_Visc(unsigned short val_marker) const { return 0; }
2267
2268 /*!
2269 * \brief A virtual member.
2270 * \param[in] val_marker - Surface marker where the coefficient is computed.
2271 * \return Value of the drag coefficient (viscous contribution) on the surface <i>val_marker</i>.
2272 */
2273 inline virtual su2double GetCD_Visc(unsigned short val_marker) const { return 0; }
2274
2275 /*!
2276 * \brief A virtual member.
2277 * \return Value of the sideforce coefficient (inviscid + viscous contribution).
2278 */
2279 inline virtual su2double GetTotal_CSF() const { return 0; }
2280
2281 /*!
2282 * \brief A virtual member.
2283 * \return Value of the efficiency coefficient (inviscid + viscous contribution).
2284 */
2285 inline virtual su2double GetTotal_CEff() const { return 0; }
2286
2287 /*!
2288 * \brief A virtual member.
2289 * \return Value of the thrust coefficient (force in the -x direction, inviscid + viscous contribution).
2290 */
2291 inline virtual su2double GetTotal_CT() const { return 0; }
2292
2293 /*!
2294 * \brief A virtual member.
2295 * \return Value of the torque coefficient (moment in the -x direction, inviscid + viscous contribution).
2296 */
2297 inline virtual su2double GetTotal_CQ() const { return 0; }
2298
2299 /*!
2300 * \brief A virtual member.
2301 * \return Value of the heat load (integrated heat flux).
2302 */
2303 inline virtual su2double GetTotal_HeatFlux() const { return 0; }
2304
2305 /*!
2306 * \brief A virtual member.
2307 * \return Value of the heat load (integrated heat flux).
2308 */
2309 inline virtual su2double GetTotal_MaxHeatFlux() const { return 0; }
2310
2311 /*!
2312 * \brief A virtual member.
2313 * \return Value of the average temperature.
2314 */
2315 inline virtual su2double GetTotal_AvgTemperature() const { return 0; }
2316
2317 /*!
2318 * \brief A virtual member.
2319 * \return Value of the rotor Figure of Merit (FM) (inviscid + viscous contribution).
2320 */
2321 inline virtual su2double GetTotal_CMerit() const { return 0; }
2322
2323 /*!
2324 * \brief A virtual member.
2325 * \return Value of the Equivalent Area coefficient (inviscid + viscous contribution).
2326 */
2327 inline virtual su2double GetTotal_CEquivArea() const { return 0; }
2328
2329 /*!
2330 * \brief A virtual member.
2331 * \return Value of the Aero drag (inviscid + viscous contribution).
2332 */
2333 inline virtual su2double GetTotal_AeroCD() const { return 0; }
2334
2335 /*!
2336 * \brief A virtual member.
2337 * \return Value of the difference of the presure and the target pressure.
2338 */
2339 inline virtual su2double GetTotal_CpDiff() const { return 0; }
2340
2341 /*!
2342 * \brief A virtual member.
2343 * \return Value of the difference of the heat and the target heat.
2344 */
2345 inline virtual su2double GetTotal_HeatFluxDiff() const { return 0; }
2346
2347 /*!
2348 * \brief A virtual member.
2349 * \return Value of the FEA coefficient (inviscid + viscous contribution).
2350 */
2351 inline virtual su2double GetTotal_CFEA() const { return 0; }
2352
2353 /*!
2354 * \brief A virtual member.
2355 * \return Value of the Near-Field Pressure coefficient (inviscid + viscous contribution).
2356 */
2357 inline virtual su2double GetTotal_CNearFieldOF() const { return 0; }
2358
2359 /*!
2360 * \brief A virtual member.
2361 * \return Value of the objective function for a reference geometry.
2362 */
2363 inline virtual su2double GetTotal_OFRefGeom() const { return 0; }
2364
2365 /*!
2366 * \brief A virtual member.
2367 * \return Value of the objective function for a reference node.
2368 */
2369 inline virtual su2double GetTotal_OFRefNode() const { return 0; }
2370
2371 /*!
2372 * \brief A virtual member.
2373 * \return Value of the objective function for the volume fraction.
2374 */
2375 inline virtual su2double GetTotal_OFVolFrac() const { return 0; }
2376
2377 /*!
2378 * \brief Retrieve the value of the discreteness objective function.
2379 */
2380 inline virtual su2double GetTotal_OFDiscreteness() const { return 0; }
2381
2382 /*!
2383 * \brief A virtual member.
2384 * \return Value of the compliance objective function.
2385 */
2386 inline virtual su2double GetTotal_OFCompliance() const { return 0; }
2387
2388 /*!
2389 * \brief A virtual member.
2390 * \return Value of the stress penalty objective function.
2391 */
2392 inline virtual su2double GetTotal_OFStressPenalty() const { return 0; }
2393
2394 /*!
2395 * \brief A virtual member.
2396 * \return Bool that defines whether the solution has an element-based file or not
2397 */
2398 inline virtual bool IsElementBased(void) const { return false; }
2399
2400 /*!
2401 * \brief A virtual member.
2402 * \param[in] val_cequivarea - Value of the Equivalent Area coefficient.
2403 */
2404 inline virtual void SetTotal_CEquivArea(su2double val_cequivarea) { }
2405
2406 /*!
2407 * \brief A virtual member.
2408 * \param[in] val_aerocd - Value of the aero drag.
2409 */
2410 inline virtual void SetTotal_AeroCD(su2double val_aerocd) { }
2411
2412 /*!
2413 * \brief A virtual member.
2414 * \param[in] val_pressure - Value of the difference between pressure and the target pressure.
2415 */
2416 inline virtual void SetTotal_CpDiff(su2double val_pressure) { }
2417
2418 /*!
2419 * \brief A virtual member.
2420 * \param[in] val_pressure - Value of the difference between heat and the target heat.
2421 */
2422 inline virtual void SetTotal_HeatFluxDiff(su2double val_heat) { }
2423
2424 /*!
2425 * \brief A virtual member.
2426 * \param[in] val_cfea - Value of the FEA coefficient.
2427 */
2428 inline virtual void SetTotal_CFEA(su2double val_cfea) { }
2429
2430 /*!
2431 * \brief A virtual member.
2432 * \param[in] val_ofrefgeom - Value of the objective function for a reference geometry.
2433 */
2434 inline virtual void SetTotal_OFRefGeom(su2double val_ofrefgeom) { }
2435
2436 /*!
2437 * \brief A virtual member.
2438 * \param[in] val_ofrefgeom - Value of the objective function for a reference node.
2439 */
2440 inline virtual void SetTotal_OFRefNode(su2double val_ofrefnode) { }
2441
2442 /*!
2443 * \brief A virtual member.
2444 * \param[in] val_cnearfieldpress - Value of the Near-Field pressure coefficient.
2445 */
2446 inline virtual void SetTotal_CNearFieldOF(su2double val_cnearfieldpress) { }
2447
2448 /*!
2449 * \brief Get the reference force used to compute CL, CD, etc.
2450 */
2451 inline virtual su2double GetAeroCoeffsReferenceForce() const { return 0; }
2452
2453 /*!
2454 * \brief Get the reference dynamic pressure, for Cp, Cf, etc.
2455 */
2456 inline virtual su2double GetReferenceDynamicPressure() const { return 0; }
2457
2458 /*!
2459 * \brief A virtual member.
2460 * \return Value of the lift coefficient (inviscid + viscous contribution).
2461 */
2462 inline virtual su2double GetTotal_CL() const { return 0; }
2463
2464 /*!
2465 * \brief A virtual member.
2466 * \return Value of the drag coefficient (inviscid + viscous contribution).
2467 */
2468 inline virtual su2double GetTotal_CD() const { return 0; }
2469
2470 /*!
2471 * \brief A virtual member.
2472 * \return Value of the drag coefficient (inviscid + viscous contribution).
2473 */
2474 inline virtual su2double GetTotal_NetThrust() const { return 0; }
2475
2476 /*!
2477 * \brief A virtual member.
2478 * \return Value of the drag coefficient (inviscid + viscous contribution).
2479 */
2480 inline virtual su2double GetTotal_Power() const { return 0; }
2481
2482 /*!
2483 * \brief A virtual member.
2484 * \return Value of the drag coefficient (inviscid + viscous contribution).
2485 */
2486 inline virtual su2double GetTotal_SolidCD() const { return 0; }
2487
2488 /*!
2489 * \brief A virtual member.
2490 * \return Value of the drag coefficient (inviscid + viscous contribution).
2491 */
2492 inline virtual su2double GetTotal_ReverseFlow() const { return 0; }
2493
2494 /*!
2495 * \brief A virtual member.
2496 * \return Value of the drag coefficient (inviscid + viscous contribution).
2497 */
2498 inline virtual su2double GetTotal_MFR() const { return 0; }
2499
2500 /*!
2501 * \brief A virtual member.
2502 * \return Value of the drag coefficient (inviscid + viscous contribution).
2503 */
2504 inline virtual su2double GetTotal_Prop_Eff() const { return 0; }
2505
2506 /*!
2507 * \brief A virtual member.
2508 * \return Value of the drag coefficient (inviscid + viscous contribution).
2509 */
2510 inline virtual su2double GetTotal_ByPassProp_Eff() const { return 0; }
2511
2512 /*!
2513 * \brief A virtual member.
2514 * \return Value of the drag coefficient (inviscid + viscous contribution).
2515 */
2516 inline virtual su2double GetTotal_Adiab_Eff() const { return 0; }
2517
2518 /*!
2519 * \brief A virtual member.
2520 * \return Value of the drag coefficient (inviscid + viscous contribution).
2521 */
2522 inline virtual su2double GetTotal_Poly_Eff() const { return 0; }
2523
2524 /*!
2525 * \brief A virtual member.
2526 * \return Value of the drag coefficient (inviscid + viscous contribution).
2527 */
2528 inline virtual su2double GetTotal_IDC() const { return 0; }
2529
2530 /*!
2531 * \brief A virtual member.
2532 * \return Value of the drag coefficient (inviscid + viscous contribution).
2533 */
2534 inline virtual su2double GetTotal_IDC_Mach() const { return 0; }
2535
2536 /*!
2537 * \brief A virtual member.
2538 * \return Value of the drag coefficient (inviscid + viscous contribution).
2539 */
2540 inline virtual su2double GetTotal_IDR() const { return 0; }
2541
2542 /*!
2543 * \brief A virtual member.
2544 * \return Value of the drag coefficient (inviscid + viscous contribution).
2545 */
2546 inline virtual su2double GetTotal_DC60() const { return 0; }
2547
2548 /*!
2549 * \brief A virtual member.
2550 * \return Value of the moment x coefficient (inviscid + viscous contribution).
2551 */
2552 inline virtual su2double GetTotal_CMx() const { return 0; }
2553
2554 /*!
2555 * \brief A virtual member.
2556 * \return Value of the moment y coefficient (inviscid + viscous contribution).
2557 */
2558 inline virtual su2double GetTotal_CMy() const { return 0; }
2559
2560 /*!
2561 * \brief A virtual member.
2562 * \return Value of the moment y coefficient (inviscid + viscous contribution).
2563 */
2564 inline virtual su2double GetTotal_CMz() const { return 0; }
2565
2566 /*!
2567 * \brief A virtual member.
2568 * \return Value of the moment x coefficient (inviscid + viscous contribution).
2569 */
2570 inline virtual su2double GetTotal_CoPx() const { return 0; }
2571
2572 /*!
2573 * \brief A virtual member.
2574 * \return Value of the moment y coefficient (inviscid + viscous contribution).
2575 */
2576 inline virtual su2double GetTotal_CoPy() const { return 0; }
2577
2578 /*!
2579 * \brief A virtual member.
2580 * \return Value of the moment y coefficient (inviscid + viscous contribution).
2581 */
2582 inline virtual su2double GetTotal_CoPz() const { return 0; }
2583
2584 /*!
2585 * \brief A virtual member.
2586 * \return Value of the force x coefficient (inviscid + viscous contribution).
2587 */
2588 inline virtual su2double GetTotal_CFx() const { return 0; }
2589
2590 /*!
2591 * \brief A virtual member.
2592 * \return Value of the force y coefficient (inviscid + viscous contribution).
2593 */
2594 inline virtual su2double GetTotal_CFy() const { return 0; }
2595
2596 /*!
2597 * \brief A virtual member.
2598 * \return Value of the force y coefficient (inviscid + viscous contribution).
2599 */
2600 inline virtual su2double GetTotal_CFz() const { return 0; }
2601
2602 /*!
2603 * \brief A virtual member.
2604 * \return Value of the lift coefficient (inviscid contribution).
2605 */
2606 inline virtual su2double GetAllBound_CL_Inv() const { return 0; }
2607
2608 /*!
2609 * \brief A virtual member.
2610 * \return Value of the drag coefficient (inviscid contribution).
2611 */
2612 inline virtual su2double GetAllBound_CD_Inv() const { return 0; }
2613
2614 /*!
2615 * \brief A virtual member.
2616 * \return Value of the drag coefficient (inviscid contribution).
2617 */
2618 inline virtual su2double GetAllBound_CSF_Inv() const { return 0; }
2619
2620 /*!
2621 * \brief A virtual member.
2622 * \return Value of the drag coefficient (inviscid contribution).
2623 */
2624 inline virtual su2double GetAllBound_CEff_Inv() const { return 0; }
2625
2626 /*!
2627 * \brief A virtual member.
2628 * \return Value of the drag coefficient (inviscid contribution).
2629 */
2630 inline virtual su2double GetAllBound_CMx_Inv() const { return 0; }
2631
2632 /*!
2633 * \brief A virtual member.
2634 * \return Value of the drag coefficient (inviscid contribution).
2635 */
2636 inline virtual su2double GetAllBound_CMy_Inv() const { return 0; }
2637
2638 /*!
2639 * \brief A virtual member.
2640 * \return Value of the drag coefficient (inviscid contribution).
2641 */
2642 inline virtual su2double GetAllBound_CMz_Inv() const { return 0; }
2643
2644 /*!
2645 * \brief A virtual member.
2646 * \return Value of the drag coefficient (inviscid contribution).
2647 */
2648 inline virtual su2double GetAllBound_CoPx_Inv() const { return 0; }
2649
2650 /*!
2651 * \brief A virtual member.
2652 * \return Value of the drag coefficient (inviscid contribution).
2653 */
2654 inline virtual su2double GetAllBound_CoPy_Inv() const { return 0; }
2655
2656 /*!
2657 * \brief A virtual member.
2658 * \return Value of the drag coefficient (inviscid contribution).
2659 */
2660 inline virtual su2double GetAllBound_CoPz_Inv() const { return 0; }
2661
2662 /*!
2663 * \brief A virtual member.
2664 * \return Value of the drag coefficient (inviscid contribution).
2665 */
2666 inline virtual su2double GetAllBound_CFx_Inv() const { return 0; }
2667
2668 /*!
2669 * \brief A virtual member.
2670 * \return Value of the drag coefficient (inviscid contribution).
2671 */
2672 inline virtual su2double GetAllBound_CFy_Inv() const { return 0; }
2673
2674 /*!
2675 * \brief A virtual member.
2676 * \return Value of the drag coefficient (inviscid contribution).
2677 */
2678 inline virtual su2double GetAllBound_CFz_Inv() const { return 0; }
2679
2680 /*!
2681 * \brief A virtual member.
2682 * \return Value of the lift coefficient (inviscid contribution).
2683 */
2684 inline virtual su2double GetAllBound_CL_Visc() const { return 0; }
2685
2686 /*!
2687 * \brief A virtual member.
2688 * \return Value of the drag coefficient (inviscid contribution).
2689 */
2690 inline virtual su2double GetAllBound_CD_Visc() const { return 0; }
2691
2692 /*!
2693 * \brief A virtual member.
2694 * \return Value of the drag coefficient (inviscid contribution).
2695 */
2696 inline virtual su2double GetAllBound_CSF_Visc() const { return 0; }
2697
2698 /*!
2699 * \brief A virtual member.
2700 * \return Value of the drag coefficient (inviscid contribution).
2701 */
2702 inline virtual su2double GetAllBound_CEff_Visc() const { return 0; }
2703
2704 /*!
2705 * \brief A virtual member.
2706 * \return Value of the drag coefficient (inviscid contribution).
2707 */
2708 inline virtual su2double GetAllBound_CMx_Visc() const { return 0; }
2709
2710 /*!
2711 * \brief A virtual member.
2712 * \return Value of the drag coefficient (inviscid contribution).
2713 */
2714 inline virtual su2double GetAllBound_CMy_Visc() const { return 0; }
2715
2716 /*!
2717 * \brief A virtual member.
2718 * \return Value of the drag coefficient (inviscid contribution).
2719 */
2720 inline virtual su2double GetAllBound_CMz_Visc() const { return 0; }
2721
2722 /*!
2723 * \brief A virtual member.
2724 * \return Value of the drag coefficient (inviscid contribution).
2725 */
2726 inline virtual su2double GetAllBound_CoPx_Visc() const { return 0; }
2727
2728 /*!
2729 * \brief A virtual member.
2730 * \return Value of the drag coefficient (inviscid contribution).
2731 */
2732 inline virtual su2double GetAllBound_CoPy_Visc() const { return 0; }
2733
2734 /*!
2735 * \brief A virtual member.
2736 * \return Value of the drag coefficient (inviscid contribution).
2737 */
2738 inline virtual su2double GetAllBound_CoPz_Visc() const { return 0; }
2739
2740 /*!
2741 * \brief A virtual member.
2742 * \return Value of the drag coefficient (inviscid contribution).
2743 */
2744 inline virtual su2double GetAllBound_CFx_Visc() const { return 0; }
2745
2746 /*!
2747 * \brief A virtual member.
2748 * \return Value of the drag coefficient (inviscid contribution).
2749 */
2750 inline virtual su2double GetAllBound_CFy_Visc() const { return 0; }
2751
2752 /*!
2753 * \brief A virtual member.
2754 * \return Value of the drag coefficient (inviscid contribution).
2755 */
2756 inline virtual su2double GetAllBound_CFz_Visc() const { return 0; }
2757
2758 /*!
2759 * \brief A virtual member.
2760 * \return Value of the lift coefficient (inviscid contribution).
2761 */
2762 inline virtual su2double GetAllBound_CL_Mnt() const { return 0; }
2763
2764 /*!
2765 * \brief A virtual member.
2766 * \return Value of the drag coefficient (inviscid contribution).
2767 */
2768 inline virtual su2double GetAllBound_CD_Mnt() const { return 0; }
2769
2770 /*!
2771 * \brief A virtual member.
2772 * \return Value of the drag coefficient (inviscid contribution).
2773 */
2774 inline virtual su2double GetAllBound_CSF_Mnt() const { return 0; }
2775
2776 /*!
2777 * \brief A virtual member.
2778 * \return Value of the drag coefficient (inviscid contribution).
2779 */
2780 inline virtual su2double GetAllBound_CEff_Mnt() const { return 0; }
2781
2782 /*!
2783 * \brief A virtual member.
2784 * \return Value of the drag coefficient (inviscid contribution).
2785 */
2786 inline virtual su2double GetAllBound_CMx_Mnt() const { return 0; }
2787 /*!
2788 * \brief A virtual member.
2789 * \return Value of the drag coefficient (inviscid contribution).
2790 */
2791 inline virtual su2double GetAllBound_CMy_Mnt() const { return 0; }
2792
2793 /*!
2794 * \brief A virtual member.
2795 * \return Value of the drag coefficient (inviscid contribution).
2796 */
2797 inline virtual su2double GetAllBound_CMz_Mnt() const { return 0; }
2798
2799 /*!
2800 * \brief A virtual member.
2801 * \return Value of the drag coefficient (inviscid contribution).
2802 */
2803 inline virtual su2double GetAllBound_CoPx_Mnt() const { return 0; }
2804
2805 /*!
2806 * \brief A virtual member.
2807 * \return Value of the drag coefficient (inviscid contribution).
2808 */
2809 inline virtual su2double GetAllBound_CoPy_Mnt() const { return 0; }
2810
2811 /*!
2812 * \brief A virtual member.
2813 * \return Value of the drag coefficient (inviscid contribution).
2814 */
2815 inline virtual su2double GetAllBound_CoPz_Mnt() const { return 0; }
2816
2817 /*!
2818 * \brief A virtual member.
2819 * \return Value of the drag coefficient (inviscid contribution).
2820 */
2821 inline virtual su2double GetAllBound_CFx_Mnt() const { return 0; }
2822
2823 /*!
2824 * \brief A virtual member.
2825 * \return Value of the drag coefficient (inviscid contribution).
2826 */
2827 inline virtual su2double GetAllBound_CFy_Mnt() const { return 0; }
2828
2829 /*!
2830 * \brief A virtual member.
2831 * \return Value of the drag coefficient (inviscid contribution).
2832 */
2833 inline virtual su2double GetAllBound_CFz_Mnt() const { return 0; }
2834
2835 /*!
2836 * \brief A virtual member.
2837 * \return Value of the buffet metric.
2838 */
2839 inline virtual su2double GetTotal_Buffet_Metric() const { return 0; }
2840
2841 /*!
2842 * \brief A virtual member.
2843 * \param[in] val_marker - Surface marker where the coefficient is computed.
2844 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
2845 * \return Value of the pressure coefficient.
2846 */
2847 inline virtual su2double GetCPressure(unsigned short val_marker, unsigned long val_vertex) const { return 0; }
2848
2849 /*!
2850 * \brief A virtual member.
2851 * \param[in] val_marker - Surface marker where the coefficient is computed.
2852 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
2853 * \return Value of the pressure coefficient.
2854 */
2855 inline virtual su2double GetCPressureTarget(unsigned short val_marker, unsigned long val_vertex) const { return 0; }
2856
2857 /*!
2858 * \brief A virtual member.
2859 * \param[in] val_marker - Surface marker where the coefficient is computed.
2860 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
2861 * \return Value of the pressure coefficient.
2862 */
2863 inline virtual void SetCPressureTarget(unsigned short val_marker,
2864 unsigned long val_vertex,
2865 su2double val_pressure) { }
2866
2867 /*!
2868 * \brief A virtual member.
2869 * \param[in] val_marker - Surface marker where the coefficient is computed.
2870 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
2871 * \return Value of the pressure coefficient.
2872 */
2873
2874 inline virtual void SetCharacPrimVar(unsigned short val_marker,
2875 unsigned long val_vertex,
2876 unsigned short val_var,
2877 su2double val_value) { }
2878
2879 /*!
2880 * \brief A virtual member.
2881 * \param[in] val_marker - Surface marker where the coefficient is computed.
2882 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
2883 * \return Value of the pressure coefficient.
2884 */
2885 inline virtual unsigned long GetDonorGlobalIndex(unsigned short val_marker,
2886 unsigned long val_vertex) const {
2887 return 0;
2888 }
2889
2890 /*!
2891 * \brief A virtual member.
2892 * \param[in] val_marker - Surface marker where the coefficient is computed.
2893 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
2894 * \return Value of the pressure coefficient.
2895 */
2896 inline virtual void SetDonorGlobalIndex(unsigned short val_marker,
2897 unsigned long val_vertex,
2898 unsigned long val_index) { }
2899
2900 /*!
2901 * \brief A virtual member.
2902 * \param[in] val_marker - Surface marker where the coefficient is computed.
2903 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
2904 * \return Value of the pressure coefficient.
2905 */
2906 inline virtual su2double *GetCharacPrimVar(unsigned short val_marker,
2907 unsigned long val_vertex) { return nullptr; }
2908
2909 /*!
2910 * \brief A virtual member
2911 * \param[in] val_marker - Surface marker where the total temperature is evaluated.
2912 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the total temperature is evaluated.
2913 * \return Value of the total temperature
2914 */
2915 inline virtual su2double GetInletTtotal(unsigned short val_marker, unsigned long val_vertex) const { return 0; }
2916
2917 /*!
2918 * \brief A virtual member
2919 * \param[in] val_marker - Surface marker where the total pressure is evaluated.
2920 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the total pressure is evaluated.
2921 * \return Value of the total pressure
2922 */
2923 inline virtual su2double GetInletPtotal(unsigned short val_marker, unsigned long val_vertex) const { return 0; }
2924
2925 /*!
2926 * \brief A virtual member
2927 * \param[in] val_marker - Surface marker where the flow direction is evaluated
2928 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the flow direction is evaluated
2929 * \param[in] val_dim - The component of the flow direction unit vector to be evaluated
2930 * \return Component of a unit vector representing the flow direction.
2931 */
2932 inline virtual su2double GetInletFlowDir(unsigned short val_marker,
2933 unsigned long val_vertex,
2934 unsigned short val_dim) const { return 0; }
2935
2936
2937 /*!
2938 * \brief Set the value of the customized normal scalar values/flux at a specified vertex on a specified marker.
2939 * \param[in] val_marker - Marker value
2940 * \param[in] val_vertex - Boundary vertex value
2941 */
2942 inline virtual void SetCustomBoundaryScalar(unsigned short val_marker, unsigned long val_vertex,
2943 vector<passivedouble> val_customBoundaryScalar) { }
2944
2945
2946 /*!
2947 * \brief A virtual member
2948 * \param[in] val_marker - Surface marker where the total temperature is set.
2949 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the total temperature is set.
2950 * \param[in] val_ttotal - Value of the total temperature
2951 */
2952 inline virtual void SetInletTtotal(unsigned short val_marker,
2953 unsigned long val_vertex,
2954 su2double val_ttotal) { }
2955
2956 /*!
2957 * \brief A virtual member
2958 * \param[in] val_marker - Surface marker where the total pressure is set.
2959 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the total pressure is set.
2960 * \param[in] val_ptotal - Value of the total pressure
2961 */
2962 inline virtual void SetInletPtotal(unsigned short val_marker,
2963 unsigned long val_vertex,
2964 su2double val_ptotal) { }
2965
2966 /*!
2967 * \brief A virtual member
2968 * \param[in] val_marker - Surface marker where the flow direction is set.
2969 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the flow direction is set.
2970 * \param[in] val_dim - The component of the flow direction unit vector to be set
2971 * \param[in] val_flowdir - Component of a unit vector representing the flow direction.
2972 */
2973 inline virtual void SetInletFlowDir(unsigned short val_marker,
2974 unsigned long val_vertex,
2975 unsigned short val_dim,
2976 su2double val_flowdir) { }
2977
2978 /*!
2979 * \brief Updates the components of the farfield velocity vector.
2980 */
2981 inline virtual void UpdateFarfieldVelocity(const CConfig* config) {}
2982
2983 /*!
2984 * \brief A virtual member
2985 * \param[in] iMarker - Marker identifier.
2986 * \param[in] iVertex - Vertex identifier.
2987 * \param[in] iDim - Index of the turbulence variable (i.e. k is 0 in SST)
2988 * \param[in] val_turb_var - Value of the turbulence variable to be used.
2989 */
2990 inline virtual void SetInlet_TurbVar(unsigned short val_marker,
2991 unsigned long val_vertex,
2992 unsigned short val_dim,
2993 su2double val_turb_var) { }
2994
2995 /*!
2996 * \brief A virtual member
2997 * \param[in] config - Definition of the particular problem.
2998 * \param[in] iMarker - Surface marker where the coefficient is computed.
2999 */
3000 inline virtual void SetUniformInlet(const CConfig* config, unsigned short iMarker) {}
3001
3002 /*!
3003 * \brief A virtual member
3004 * \param[in] val_inlet - vector containing the inlet values for the current vertex.
3005 * \param[in] iMarker - Surface marker where the coefficient is computed.
3006 * \param[in] iVertex - Vertex of the marker <i>iMarker</i> where the inlet is being set.
3007 */
3008 inline virtual void SetInletAtVertex(const su2double *val_inlet,
3009 unsigned short iMarker,
3010 unsigned long iVertex) { }
3011
3012 /*!
3013 * \brief Get the set of values imposed at an inlet.
3014 * \param[in] iMarker - Index of the surface marker.
3015 * \param[in] iVertex - Vertex of the marker <i>iMarker</i> where the inlet is being set.
3016 * \param[in] geometry - Geometrical definition of the problem.
3017 * \param[in,out] val_inlet - vector returning the inlet values for the current vertex.
3018 * \return Value of the face area at the vertex.
3019 */
3020 inline virtual su2double GetInletAtVertex(unsigned short iMarker, unsigned long iVertex,
3021 const CGeometry* geometry, su2double* val_inlet) const { return 0; }
3022
3023 /*!
3024 * \brief Update the multi-grid structure for the customized boundary conditions.
3025 * \param geometry_container - Geometrical definition.
3026 * \param solver_container - Solver definition.
3027 * \param config - Definition of the particular problem.
3028 */
3029 inline virtual void UpdateCustomBoundaryConditions(CGeometry **geometry_container,
3030 CSolver ***solver_container,
3031 CConfig *config) { }
3032
3033 /*!
3034 * \brief A virtual member.
3035 * \param[in] val_marker - Surface marker where the coefficient is computed.
3036 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
3037 * \return Value of the skin friction coefficient.
3038 */
3039 inline virtual su2double GetCSkinFriction(unsigned short val_marker,
3040 unsigned long val_vertex,
3041 unsigned short val_dim) const { return 0; }
3042
3043 /*!
3044 * \brief A virtual member.
3045 * \param[in] val_marker - Surface marker where the wall shear stress is computed.
3046 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the wall shear stress is evaluated.
3047 * \return Value of the wall shear stress.
3048 */
3049 inline virtual su2double GetWallShearStress(unsigned short val_marker,
3050 unsigned long val_vertex) const { return 0; }
3051
3052 /*!
3053 * \brief A virtual member.
3054 * \param[in] val_marker - Surface marker where the coefficient is computed.
3055 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
3056 * \return Value of the heat transfer coefficient.
3057 */
3058 inline virtual su2double GetHeatFlux(unsigned short val_marker, unsigned long val_vertex) const { return 0; }
3059
3060 /*!
3061 * \brief A virtual member.
3062 * \param[in] val_marker - Surface marker where the coefficient is computed.
3063 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
3064 * \return Value of the heat transfer coefficient.
3065 */
3066 inline virtual su2double GetHeatFluxTarget(unsigned short val_marker, unsigned long val_vertex) const { return 0; }
3067
3068 /*!
3069 * \brief A virtual member.
3070 * \param[in] val_marker - Surface marker where the coefficient is computed.
3071 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
3072 * \return Value of the pressure coefficient.
3073 */
3074 inline virtual void SetHeatFluxTarget(unsigned short val_marker,
3075 unsigned long val_vertex,
3076 su2double val_heat) { }
3077
3078 /*!
3079 * \brief A virtual member.
3080 * \param[in] val_marker - Surface marker where the coefficient is computed.
3081 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
3082 * \return Value of the buffet sensor.
3083 */
3084 inline virtual su2double GetBuffetSensor(unsigned short val_marker, unsigned long val_vertex) const { return 0; }
3085
3086 /*!
3087 * \brief A virtual member.
3088 * \param[in] val_marker - Surface marker where the coefficient is computed.
3089 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
3090 * \return Value of the y plus.
3091 */
3092 inline virtual su2double GetYPlus(unsigned short val_marker, unsigned long val_vertex) const { return 0; }
3093
3094 /*!
3095 * \brief A virtual member.
3096 * \param[in] val_marker - Surface marker where the coefficient is computed.
3097 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
3098 * \return Value of the u tau.
3099 */
3100 inline virtual su2double GetUTau(unsigned short val_marker, unsigned long val_vertex) const { return 0; }
3101
3102 /*!
3103 * \brief A virtual member.
3104 * \param[in] val_marker - Surface marker where the coefficient is computed.
3105 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
3106 * \return Value of the eddy viscosity.
3107 */
3108 inline virtual su2double GetEddyViscWall(unsigned short val_marker, unsigned long val_vertex) const { return 0; }
3109
3110 /*!
3111 * \brief A virtual member
3112 * \return The mass fluxes (from flow solvers) across the edges.
3113 */
3114 inline virtual const su2activevector* GetEdgeMassFluxes() const { return nullptr; }
3115
3116 /*!
3117 * \brief A virtual member.
3118 * \return Value of the StrainMag_Max
3119 */
3120 inline virtual su2double GetStrainMag_Max(void) const { return 0; }
3121
3122 /*!
3123 * \brief A virtual member.
3124 * \return Value of the Omega_Max
3125 */
3126 inline virtual su2double GetOmega_Max(void) const { return 0; }
3127
3128 /*!
3129 * \brief A virtual member.
3130 * \return Value of the adjoint density at the infinity.
3131 */
3132 inline virtual su2double GetPsiRho_Inf(void) const { return 0; }
3133
3134 /*!
3135 * \brief A virtual member.
3136 * \return Value of the adjoint energy at the infinity.
3137 */
3138 inline virtual su2double GetPsiE_Inf(void) const { return 0; }
3139
3140 /*!
3141 * \brief A virtual member.
3142 * \param[in] val_dim - Index of the adjoint velocity vector.
3143 * \return Value of the adjoint velocity vector at the infinity.
3144 */
3145 inline virtual su2double GetPhi_Inf(unsigned short val_dim) const { return 0; }
3146
3147 /*!
3148 * \brief A virtual member.
3149 * \return Value of the geometrical sensitivity coefficient
3150 * (inviscid + viscous contribution).
3151 */
3152 inline virtual su2double GetTotal_Sens_Geo() const { return 0; }
3153
3154 /*!
3155 * \brief A virtual member.
3156 * \return Value of the Mach sensitivity coefficient
3157 * (inviscid + viscous contribution).
3158 */
3159 inline virtual su2double GetTotal_Sens_Mach() const { return 0; }
3160
3161 /*!
3162 * \brief A virtual member.
3163 * \return Value of the angle of attack sensitivity coefficient
3164 * (inviscid + viscous contribution).
3165 */
3166 inline virtual su2double GetTotal_Sens_AoA() const { return 0; }
3167
3168 /*!
3169 * \brief Set the total farfield pressure sensitivity coefficient.
3170 * \return Value of the farfield pressure sensitivity coefficient
3171 * (inviscid + viscous contribution).
3172 */
3173 inline virtual su2double GetTotal_Sens_Press() const { return 0; }
3174
3175 /*!
3176 * \brief Set the total farfield temperature sensitivity coefficient.
3177 * \return Value of the farfield temperature sensitivity coefficient
3178 * (inviscid + viscous contribution).
3179 */
3180 inline virtual su2double GetTotal_Sens_Temp() const { return 0; }
3181
3182 /*!
3183 * \author H. Kline
3184 * \brief Get the total back pressure sensitivity coefficient.
3185 * \return Value of the back pressure sensitivity coefficient
3186 * (inviscid + viscous contribution).
3187 */
3188 inline virtual su2double GetTotal_Sens_BPress() const { return 0; }
3189
3190 /*!
3191 * \brief A virtual member.
3192 * \return Value of the density sensitivity.
3193 */
3194 inline virtual su2double GetTotal_Sens_Density() const { return 0; }
3195
3196 /*!
3197 * \brief A virtual member.
3198 * \return Value of the velocity magnitude sensitivity.
3199 */
3200 inline virtual su2double GetTotal_Sens_ModVel() const { return 0; }
3201
3202 /*!
3203 * \brief A virtual member.
3204 * \return Value of the density at the infinity.
3205 */
3206 inline virtual su2double GetDensity_Inf(void) const { return 0; }
3207
3208 /*!
3209 * \brief A virtual member.
3210 * \return Value of the velocity at the infinity.
3211 */
3212 inline virtual su2double GetModVelocity_Inf(void) const { return 0; }
3213
3214 /*!
3215 * \brief A virtual member.
3216 * \return Value of the density x energy at the infinity.
3217 */
3218 inline virtual su2double GetDensity_Energy_Inf(void) const { return 0; }
3219
3220 /*!
3221 * \brief A virtual member.
3222 * \return Value of the pressure at the infinity.
3223 */
3224 inline virtual su2double GetPressure_Inf(void) const { return 0; }
3225
3226 /*!
3227 * \brief A virtual member.
3228 * \param[in] val_dim - Index of the velocity vector.
3229 * \return Value of the velocity at the infinity.
3230 */
3231 inline virtual su2double GetVelocity_Inf(unsigned short val_dim) const { return 0; }
3232
3233 /*!
3234 * \brief A virtual member.
3235 * \return Value of the velocity at the infinity.
3236 */
3237 inline virtual su2double *GetVelocity_Inf(void) { return nullptr; }
3238
3239 /*!
3240 * \brief A virtual member.
3241 * \return Value of the viscosity at the infinity.
3242 */
3243 inline virtual su2double GetViscosity_Inf(void) const { return 0; }
3244
3245 /*!
3246 * \brief A virtual member.
3247 * \return Value of nu tilde at the far-field.
3248 */
3249 inline virtual su2double GetNuTilde_Inf(void) const { return 0; }
3250
3251 /*!
3252 * \brief A virtual member.
3253 * \return Value of the turbulent kinetic energy.
3254 */
3255 inline virtual su2double GetTke_Inf(void) const { return 0; }
3256
3257 /*!
3258 * \brief A virtual member.
3259 * \return Value of the turbulent frequency.
3260 */
3261 inline virtual su2double GetOmega_Inf(void) const { return 0; }
3262
3263 /*!
3264 * \brief Get value of the Intermittency.
3265 * \return Value of the Intermittency.
3266 */
3267 inline virtual su2double GetIntermittency_Inf() const { return 0; }
3268
3269 /*!
3270 * \brief Get value of the momentum thickness Reynolds number.
3271 * \return Value of the momentum thickness Reynolds number.
3272 */
3273 inline virtual su2double GetReThetaT_Inf() const { return 0; }
3274
3275 /*!
3276 * \brief A virtual member.
3277 * \return Value of the sensitivity coefficient for the Young Modulus E
3278 */
3279 inline virtual su2double GetTotal_Sens_E(unsigned short iVal) const { return 0.0; }
3280
3281 /*!
3282 * \brief A virtual member.
3283 * \return Value of the sensitivity for the Poisson's ratio Nu
3284 */
3285 inline virtual su2double GetTotal_Sens_Nu(unsigned short iVal) const { return 0.0; }
3286
3287 /*!
3288 * \brief A virtual member.
3289 * \return Value of the structural density sensitivity
3290 */
3291 inline virtual su2double GetTotal_Sens_Rho(unsigned short iVal) const { return 0.0; }
3292
3293 /*!
3294 * \brief A virtual member.
3295 * \return Value of the structural weight sensitivity
3296 */
3297 inline virtual su2double GetTotal_Sens_Rho_DL(unsigned short iVal) const { return 0.0; }
3298
3299 /*!
3300 * \brief A virtual member.
3301 * \return Value of the sensitivity coefficient for the Electric Field in the region iEField
3302 */
3303 inline virtual su2double GetTotal_Sens_EField(unsigned short iEField) const { return 0.0; }
3304
3305 /*!
3306 * \brief A virtual member.
3307 * \return Value of the sensitivity coefficient for the FEA DV in the region iDVFEA
3308 */
3309 inline virtual su2double GetTotal_Sens_DVFEA(unsigned short iDVFEA) const { return 0.0; }
3310
3311 /*!
3312 * \brief A virtual member.
3313 * \return Value of the Young modulus from the adjoint solver
3314 */
3315 inline virtual su2double GetVal_Young(unsigned short iVal) const { return 0.0; }
3316
3317 /*!
3318 * \brief A virtual member.
3319 * \return Value of the Poisson's ratio from the adjoint solver
3320 */
3321 inline virtual su2double GetVal_Poisson(unsigned short iVal) const { return 0.0; }
3322
3323 /*!
3324 * \brief A virtual member.
3325 * \return Value of the density for inertial effects, from the adjoint solver
3326 */
3327 inline virtual su2double GetVal_Rho(unsigned short iVal) const { return 0.0; }
3328
3329 /*!
3330 * \brief A virtual member.
3331 * \return Value of the density for dead loads, from the adjoint solver
3332 */
3333 inline virtual su2double GetVal_Rho_DL(unsigned short iVal) const { return 0.0; }
3334
3335 /*!
3336 * \brief A virtual member.
3337 * \return Number of electric field variables from the adjoint solver
3338 */
3339 inline virtual unsigned short GetnEField(void) const { return 0; }
3340
3341 /*!
3342 * \brief A virtual member.
3343 * \return Number of design variables from the adjoint solver
3344 */
3345 inline virtual unsigned short GetnDVFEA(void) const { return 0; }
3346
3347 /*!
3348 * \brief A virtual member.
3349 * \return Pointer to the values of the Electric Field
3350 */
3351 inline virtual su2double GetVal_EField(unsigned short iVal) const { return 0.0; }
3352
3353 /*!
3354 * \brief A virtual member.
3355 * \return Pointer to the values of the design variables
3356 */
3357 inline virtual su2double GetVal_DVFEA(unsigned short iVal) const { return 0.0; }
3358
3359 /*!
3360 * \brief A virtual member.
3361 * \param[in] val_marker - Surface marker where the coefficient is computed.
3362 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
3363 * \return Value of the sensitivity coefficient.
3364 */
3365 inline virtual su2double GetCSensitivity(unsigned short val_marker,
3366 unsigned long val_vertex) const {
3367 return 0;
3368 }
3369
3370 /*!
3371 * \brief A virtual member.
3372 * \return A pointer to an array containing a set of constants
3373 */
3374 inline virtual const su2double* GetConstants() const { return nullptr; }
3375
3376 /*!
3377 * \brief A virtual member.
3378 * \param[in] iBGS - Number of BGS iteration.
3379 * \param[in] val_forcecoeff_history - Value of the force coefficient.
3380 */
3381 inline virtual void SetForceCoeff(su2double val_forcecoeff_history) { }
3382
3383 /*!
3384 * \brief A virtual member.
3385 * \param[in] val_relaxcoeff_history - Value of the force coefficient.
3386 */
3387 inline virtual void SetRelaxCoeff(su2double val_relaxcoeff_history) { }
3388
3389 /*!
3390 * \brief A virtual member.
3391 * \param[in] iBGS - Number of BGS iteration.
3392 * \param[in] val_FSI_residual - Value of the residual.
3393 */
3394 inline virtual void SetFSI_Residual(su2double val_FSI_residual) { }
3395
3396 /*!
3397 * \brief A virtual member.
3398 * \param[out] val_forcecoeff_history - Value of the force coefficient.
3399 */
3400 inline virtual su2double GetForceCoeff(void) const { return 0.0; }
3401
3402 /*!
3403 * \brief A virtual member.
3404 * \param[out] val_relaxcoeff_history - Value of the relax coefficient.
3405 */
3406 inline virtual su2double GetRelaxCoeff(void) const { return 0.0; }
3407
3408 /*!
3409 * \brief A virtual member.
3410 * \param[out] val_FSI_residual - Value of the residual.
3411 */
3412 inline virtual su2double GetFSI_Residual(void) const { return 0.0; }
3413
3414 /*!
3415 * \brief A virtual member.
3416 * \param[in] geometry - Geometrical definition of the problem.
3417 * \param[in] solver_container - Container with all the solutions.
3418 * \param[in] config - Definition of the particular problem.
3419 * \param[in] ExtIter - External iteration.
3420 */
3421 inline virtual void SetInitialCondition(CGeometry **geometry,
3422 CSolver ***solver_container,
3423 CConfig *config,
3424 unsigned long TimeIter) { }
3425
3426 /*!
3427 * \brief A virtual member.
3428 * \param[in] geometry - Geometrical definition of the problem.
3429 * \param[in] config - Definition of the problem.
3430 */
3431 inline virtual void PredictStruct_Displacement(CGeometry *geometry,
3432 const CConfig *config) { }
3433
3434 /*!
3435 * \brief A virtual member.
3436 * \param[in] geometry - Geometrical definition of the problem.
3437 * \param[in] config - Definition of the problem.
3438 * \param[in] iOuterIter - Current outer iteration.
3439 */
3440 inline virtual void ComputeAitken_Coefficient(CGeometry *geometry,
3441 const CConfig *config,
3442 unsigned long iOuterIter) { }
3443
3444 /*!
3445 * \brief A virtual member.
3446 * \param[in] geometry - Geometrical definition of the problem.
3447 * \param[in] config - Definition of the particular problem.
3448 */
3449 inline virtual void SetAitken_Relaxation(CGeometry *geometry,
3450 const CConfig *config) { }
3451
3452 /*!
3453 * \brief Loads the solution from the restart file.
3454 * \param[in] geometry - Geometrical definition of the problem.
3455 * \param[in] config - Definition of the particular problem.
3456 * \param[in] filename - Name of the restart file.
3457 * \param[in] skipVars - Number of variables preceeding the solution.
3458 */
3459 void BasicLoadRestart(CGeometry *geometry,
3460 const CConfig *config,
3461 const string& filename,
3462 unsigned long skipVars);
3463
3464 /*!
3465 * \brief A virtual member.
3466 * \param[in] geometry - Geometrical definition of the problem.
3467 * \param[in] solver - Container vector with all of the solvers.
3468 * \param[in] config - Definition of the particular problem.
3469 * \param[in] val_iter - Current external iteration number.
3470 * \param[in] val_update_geo - Flag for updating coords and grid velocity.
3471 */
3472 inline virtual void LoadRestart(CGeometry **geometry,
3473 CSolver ***solver,
3474 CConfig *config,
3475 int val_iter,
3476 bool val_update_geo) { }
3477
3478 /*!
3479 * \brief Read a native SU2 restart file in ASCII format.
3480 * \param[in] geometry - Geometrical definition of the problem.
3481 * \param[in] config - Definition of the particular problem.
3482 * \param[in] val_filename - String name of the restart file.
3483 */
3484 void Read_SU2_Restart_ASCII(CGeometry *geometry,
3485 const CConfig *config,
3486 string val_filename);
3487
3488 /*!
3489 * \brief Read a native SU2 restart file in binary format.
3490 * \param[in] geometry - Geometrical definition of the problem.
3491 * \param[in] config - Definition of the particular problem.
3492 * \param[in] val_filename - String name of the restart file.
3493 */
3494 void Read_SU2_Restart_Binary(CGeometry *geometry,
3495 const CConfig *config,
3496 string val_filename);
3497
3498 /*!
3499 * \brief Read the metadata from a native SU2 restart file (ASCII or binary).
3500 * \param[in] geometry - Geometrical definition of the problem.
3501 * \param[in] config - Definition of the particular problem.
3502 * \param[in] adjoint - Boolean to identify the restart file of an adjoint run.
3503 * \param[in] val_filename - String name of the restart file.
3504 */
3505 void Read_SU2_Restart_Metadata(CGeometry *geometry,
3506 CConfig *config,
3507 bool adjoint_run,
3508 const string& val_filename) const;
3509
3510 /*!
3511 * \brief Load a inlet profile data from file into a particular solver.
3512 * \param[in] geometry - Geometrical definition of the problem.
3513 * \param[in] solver - Container vector with all of the solvers.
3514 * \param[in] config - Definition of the particular problem.
3515 * \param[in] val_iter - Current external iteration number.
3516 * \param[in] val_kind_solver - Solver container position.
3517 * \param[in] val_kind_marker - Kind of marker to apply the profiles.
3518 */
3519 void LoadInletProfile(CGeometry **geometry,
3520 CSolver ***solver,
3521 CConfig *config,
3522 int val_iter,
3523 unsigned short val_kind_solver,
3524 unsigned short val_kind_marker) const;
3525
3526 /*!
3527 * \brief A virtual member.
3528 * \param[in] geometry - Geometrical definition of the problem.
3529 * \param[in] config - Definition of the particular problem.
3530 * \param[in] val_iter - Current external iteration number.
3531 */
3532 inline virtual void LoadRestart_FSI(CGeometry *geometry,
3533 CConfig *config,
3534 int val_iter) { }
3535
3536 /*!
3537 * \brief A virtual member.
3538 * \param[in] iElem - element parameter.
3539 * \param[out] iElem_iDe - ID of the Dielectric Elastomer region.
3540 */
3541 inline virtual unsigned short Get_iElem_iDe(unsigned long iElem) const { return 0; }
3542
3543 /*!
3544 * \brief A virtual member.
3545 * \param[in] i_DV - number of design variable.
3546 * \param[in] val_EField - value of the design variable.
3547 */
3548 inline virtual void Set_DV_Val(su2double val_EField, unsigned short i_DV) { }
3549
3550 /*!
3551 * \brief A virtual member.
3552 * \param[in] i_DV - number of design variable.
3553 * \param[out] DV_Val - value of the design variable.
3554 */
3555 inline virtual su2double Get_DV_Val(unsigned short i_DV) const { return 0.0; }
3556
3557 /*!
3558 * \brief Gauss method for solving a linear system.
3559 * \param[in] A - Matrix Ax = b.
3560 * \param[in] rhs - Right hand side.
3561 * \param[in] nVar - Number of variables.
3562 */
3564 su2double* rhs,
3565 unsigned short nVar);
3566
3567 /*!
3568 * \brief Prepares and solves the aeroelastic equations.
3569 * \param[in] surface_movement - Surface movement classes of the problem.
3570 * \param[in] geometry - Geometrical definition of the problem.
3571 * \param[in] config - Definition of the particular problem.
3572 * \param[in] TimeIter - Physical iteration number.
3573 */
3574 void Aeroelastic(CSurfaceMovement *surface_movement,
3575 CGeometry *geometry,
3576 CConfig *config,
3577 unsigned long TimeIter);
3578
3579 /*!
3580 * \brief Sets up the generalized eigenvectors and eigenvalues needed to solve the aeroelastic equations.
3581 * \param[in] PHI - Matrix of the generalized eigenvectors.
3582 * \param[in] w - The eigenvalues of the generalized eigensystem.
3583 * \param[in] config - Definition of the particular problem.
3584 */
3585 void SetUpTypicalSectionWingModel(vector<vector<su2double> >& PHI,
3586 vector<su2double>& w,
3587 CConfig *config);
3588
3589 /*!
3590 * \brief Solve the typical section wing model.
3591 * \param[in] geometry - Geometrical definition of the problem.
3592 * \param[in] Cl - Coefficient of lift at particular iteration.
3593 * \param[in] Cm - Moment coefficient about z-axis at particular iteration.
3594 * \param[in] config - Definition of the particular problem.
3595 * \param[in] val_Marker - Surface that is being monitored.
3596 * \param[in] displacements - solution of typical section wing model.
3597 */
3599 su2double Cl, su2double Cm,
3600 CConfig *config,
3601 unsigned short val_Marker,
3602 vector<su2double>& displacements);
3603
3604 /*!
3605 * \brief A virtual member.
3606 * \param[in] geometry - Geometrical definition of the problem.
3607 * \param[in] config_container - The particular config.
3608 */
3609 inline virtual void RegisterSolution(CGeometry *geometry_container, CConfig *config) { }
3610
3611 /*!
3612 * \brief A virtual member.
3613 * \param[in] geometry - Geometrical definition of the problem.
3614 * \param[in] config_container - The particular config.
3615 */
3616 inline virtual void RegisterOutput(CGeometry *geometry_container, CConfig *config) { }
3617
3618 /*!
3619 * \brief A virtual member.
3620 * \param[in] geometry - The geometrical definition of the problem.
3621 * \param[in] config - The particular config.
3622 */
3623 inline virtual void SetAdjoint_Output(CGeometry *geometry, CConfig *config){}
3624
3625 /*!
3626 * \brief A virtual member.
3627 * \param[in] geometry - The geometrical definition of the problem.
3628 * \param[in] solver_container - The solver container holding all solutions.
3629 * \param[in] config - The particular config.
3630 * \param[in] CrossTerm - Boolean to determine if this is a cross term extraction.
3631 */
3632 inline virtual void ExtractAdjoint_Solution(CGeometry *geometry, CConfig *config, bool CrossTerm){}
3633
3634 /*!
3635 * \brief Register In- or Output.
3636 * \param[in] input - Boolean whether In- or Output should be registered.
3637 * \param[in] config - The particular config.
3638 * \returns The number of extra variables.
3639 */
3640 virtual unsigned long RegisterSolutionExtra(bool input, const CConfig* config) { return 0; }
3641
3642 /*!
3643 * \brief Seed the adjoint of the extra solution at the output.
3644 * \param[in] adj_sol - Vector containing the adjoint solution to seed.
3645 * \param[in] config - The particular config.
3646 */
3647 virtual void SetAdjoint_SolutionExtra(const su2activevector& adj_sol, const CConfig* config) {}
3648
3649 /*!
3650 * \brief Extract the adjoint of the extra solution at the input.
3651 * \param[out] adj_sol - Vector to store the adjoint into.
3652 * \param[in] config - The particular config.
3653 */
3654 virtual void ExtractAdjoint_SolutionExtra(su2activevector& adj_sol, const CConfig* config) {}
3655
3656 /*!
3657 * \brief A virtual member.
3658 * \param[in] geometry - Geometrical definition of the problem.
3659 * \param[in] config - Definition of the particular problem.
3660 */
3661 inline virtual void SetSurface_Sensitivity(CGeometry *geometry, CConfig *config) { }
3662
3663 /*!
3664 * \brief A virtual member. Extract and set the geometrical sensitivity.
3665 * \param[in] geometry - Geometrical definition of the problem.
3666 * \param[in] config - Definition of the particular problem.
3667 * \param[in] target_solver - The target solver for the sensitivities, optional, for when the mesh solver is used.
3668 */
3669 inline virtual void SetSensitivity(CGeometry *geometry, CConfig *config, CSolver *target_solver = nullptr){ }
3670
3671 /*!
3672 * \brief A virtual member.
3673 * \param[in] Set value of interest: 0 - Initial value, 1 - Current value.
3674 */
3675 inline virtual void SetFSI_ConvValue(unsigned short val_index, su2double val_criteria) { };
3676
3677 /*!
3678 * \brief A virtual member.
3679 * \param[in] Value of interest: 0 - Initial value, 1 - Current value.
3680 * \return Values to compare
3681 */
3682 inline virtual su2double GetFSI_ConvValue(unsigned short val_index)const { return 0.0; }
3683
3684 /*!
3685 * \brief A virtual member.
3686 * \param[in] CurrentTime - Current time step.
3687 * \param[in] RampTime - Time for application of the ramp.*
3688 * \param[in] config - Definition of the particular problem.
3689 */
3690 inline virtual su2double Compute_LoadCoefficient(su2double CurrentTime,
3691 su2double RampTime,
3692 const CConfig *config) { return 0.0; }
3693
3694 /*!
3695 * \brief A virtual member.
3696 * \param[in] geometry - Geometrical definition of the problem.
3697 * \param[in] numerics - Description of the numerical method.
3698 * \param[in] config - Definition of the particular problem.
3699 */
3700 inline virtual void Compute_StiffMatrix(CGeometry *geometry,
3701 CNumerics **numerics,
3702 const CConfig *config) { }
3703
3704 /*!
3705 * \brief A virtual member.
3706 * \param[in] geometry - Geometrical definition of the problem.
3707 * \param[in] numerics - Description of the numerical method.
3708 * \param[in] config - Definition of the particular problem.
3709 */
3710 inline virtual void Compute_StiffMatrix_NodalStressRes(CGeometry *geometry,
3711 CNumerics **numerics,
3712 const CConfig *config) { }
3713
3714 /*!
3715 * \brief A virtual member.
3716 * \param[in] geometry - Geometrical definition of the problem.
3717 * \param[in] numerics - Description of the numerical method.
3718 * \param[in] config - Definition of the particular problem.
3719 */
3720 inline virtual void Compute_MassMatrix(const CGeometry *geometry,
3721 CNumerics **numerics,
3722 const CConfig *config) { }
3723
3724 /*!
3725 * \brief A virtual member.
3726 * \param[in] geometry - Geometrical definition of the problem.
3727 * \param[in] numerics - Description of the numerical method.
3728 * \param[in] config - Definition of the particular problem.
3729 */
3730 inline virtual void Compute_MassRes(const CGeometry *geometry,
3731 CNumerics **numerics,
3732 const CConfig *config) { }
3733
3734 /*!
3735 * \brief A virtual member.
3736 * \param[in] geometry - Geometrical definition of the problem.
3737 * \param[in] numerics - Description of the numerical method.
3738 * \param[in] config - Definition of the particular problem.
3739 */
3740 inline virtual void Compute_NodalStressRes(CGeometry *geometry,
3741 CNumerics **numerics,
3742 const CConfig *config) { }
3743
3744 /*!
3745 * \brief A virtual member.
3746 * \param[in] geometry - Geometrical definition of the problem.
3747 * \param[in] numerics - Description of the numerical method.
3748 * \param[in] config - Definition of the particular problem.
3749 */
3750 inline virtual void Compute_BodyForces(CGeometry *geometry,
3751 CNumerics **numerics,
3752 const CConfig *config) { }
3753
3754 /*!
3755 * \brief A virtual member. Set the volumetric heat source
3756 * \param[in] geometry - Geometrical definition of the problem.
3757 * \param[in] config - Definition of the particular problem.
3758 */
3759 inline virtual void SetVolumetricHeatSource(CGeometry *geometry,
3760 CConfig *config) { }
3761
3762 /*!
3763 * \brief A virtual member.
3764 * \param[in] geometry - Geometrical definition of the problem.
3765 * \param[in] solver_container - Container vector with the solutions.
3766 * \param[in] config - Definition of the particular problem.
3767 */
3768 inline virtual void Solve_System(CGeometry *geometry, CConfig *config) { }
3769
3770 /*!
3771 * \brief A virtual member.
3772 */
3773 inline virtual void SetWAitken_Dyn_tn1() { }
3774
3775 /*!
3776 * \brief A virtual member.
3777 * \param[in] Index of the increment.
3778 * \param[in] Value of the load increment for nonlinear structural analysis.
3779 */
3780 inline virtual void SetLoad_Increment(unsigned long iInc, su2double loadInc) { }
3781
3782 /*!
3783 * \brief A virtual member.
3784 * \param[in] Value of the load increment for nonlinear structural analysis
3785 */
3786 inline virtual su2double GetLoad_Increment() const { return 0.0; }
3787
3788 /*!
3789 * \brief A virtual member.
3790 * \param[in] Value of freestream pressure.
3791 */
3792 inline virtual void SetPressure_Inf(su2double p_inf){}
3793
3794 /*!
3795 * \brief A virtual member.
3796 * \param[in] Value of freestream temperature.
3797 */
3798 inline virtual void SetTemperature_Inf(su2double t_inf){}
3799
3800 /*!
3801 * \brief A virtual member.
3802 * \param[in] Value of freestream density.
3803 */
3804 inline virtual void SetDensity_Inf(su2double rho_inf){}
3805
3806 /*!
3807 * \brief A virtual member.
3808 * \param[in] val_dim - Index of the velocity vector.
3809 * \param[in] val_velocity - Value of the velocity.
3810 */
3811 inline virtual void SetVelocity_Inf(unsigned short val_dim, su2double val_velocity) { }
3812
3813 /*!
3814 * \brief A virtual member.
3815 * \param[in] kind_recording - Kind of AD recording.
3816 */
3817 inline virtual void SetRecording(CGeometry *geometry, CConfig *config){}
3818
3819 /*!
3820 * \brief A virtual member.
3821 * \param[in] geometry - Geometrical definition of the problem.
3822 * \param[in] config - Definition of the particular problem.
3823 * \param[in] reset - If true reset variables to their initial values.
3824 */
3825 inline virtual void RegisterVariables(CGeometry *geometry,
3826 CConfig *config,
3827 bool reset = false) { }
3828
3829 /*!
3830 * \brief A virtual member.
3831 * \param[in] geometry - Geometrical definition of the problem.
3832 * \param[in] config - Definition of the particular problem.
3833 */
3834 inline virtual void ExtractAdjoint_Variables(CGeometry *geometry, CConfig *config) { }
3835
3836 /*!
3837 * \brief A virtual member.
3838 * \param[in] config - Definition of the particular problem.
3839 */
3840 inline virtual void SetFreeStream_Solution(const CConfig *config) { }
3841
3842 /*!
3843 * \brief A virtual member.
3844 */
3845 inline virtual su2double* GetVecSolDOFs(void) { return nullptr; }
3846
3847 /*!
3848 * \brief A virtual member.
3849 */
3850 inline virtual unsigned long GetnDOFsGlobal(void) const { return 0; }
3851
3852 /*!
3853 * \brief A virtual member.
3854 * \param[in] geometry - Geometrical definition of the problem.
3855 * \param[in] config - Definition of the particular problem.
3856 */
3857 inline virtual void InitTurboContainers(CGeometry *geometry, CConfig **config, unsigned short iZone) { }
3858
3859 /*!
3860 * \brief Get Primal variables for turbo performance computation
3861 * iteration can be executed by multiple threads.
3862 * \return returns Density, pressure and TurboVelocity (IN/OUTLET)
3863 */
3864 virtual vector<su2double> GetTurboPrimitive(unsigned short iBlade, unsigned short iSpan, bool Inlet) { return {}; }
3865
3866 /*!
3867 * \brief virtual member.
3868 * \param[in] geometry - Geometrical definition of the problem.
3869 * \param[in] solver_container - Container vector with all the solutions.
3870 * \param[in] config - Definition of the particular problem.
3871 * \param[in] val_marker - Surface marker where the average is evaluated.
3872 */
3873 inline virtual void PreprocessAverage(CSolver **solver,
3874 CGeometry *geometry,
3875 CConfig *config,
3876 unsigned short marker_flag) { }
3877
3878 /*!
3879 * \brief virtual member.
3880 * \param[in] geometry - Geometrical definition of the problem.
3881 * \param[in] solver_container - Container vector with all the solutions.
3882 * \param[in] config - Definition of the particular problem.
3883 * \param[in] val_marker - Surface marker where the average is evaluated.
3884 */
3885 inline virtual void TurboAverageProcess(CSolver **solver,
3886 CGeometry *geometry,
3887 CConfig *config,
3888 unsigned short marker_flag) { }
3889
3890 /*!
3891 * \brief virtual member.
3892 * \param[in] config - Definition of the particular problem.
3893 * \param[in] geometry - Geometrical definition of the problem.
3894 */
3895 inline virtual void GatherInOutAverageValues(CConfig *config, CGeometry *geometry) { }
3896
3897 inline virtual void ComputeTurboBladePerformance(CGeometry* geometry, CConfig* config, unsigned short iBlade) { };
3898
3899 /*!
3900 * \brief A virtual member.
3901 * \param[in] val_marker - bound marker.
3902 * \return Value of the Average Density on the surface <i>val_marker</i>.
3903 */
3904 inline virtual su2double GetAverageDensity(unsigned short valMarker, unsigned short valSpan) const { return 0.0; }
3905
3906 /*!
3907 * \brief virtual member
3908 * \param[in] val_marker - boundary marker
3909 * \return Value of the mass flow rate on the surface <i>val_marker</i>
3910 */
3911 inline virtual su2double GetAverageMassFlowRate(unsigned short valMarker) const {return 0.0; }
3912
3913 /*!
3914 * \brief A virtual member.
3915 * \param[in] val_marker - bound marker.
3916 * \return Value of the Average Pressure on the surface <i>val_marker</i>.
3917 */
3918 inline virtual su2double GetAveragePressure(unsigned short valMarker, unsigned short valSpan) const { return 0.0; }
3919
3920 /*!
3921 * \brief A virtual member.
3922 * \param[in] val_marker - bound marker.
3923 * \return Value of the Average Total Pressure on the surface <i>val_marker</i>.
3924 */
3925 inline virtual const su2double* GetAverageTurboVelocity(unsigned short valMarker, unsigned short valSpan) const { return nullptr; }
3926
3927 /*!
3928 * \brief A virtual member.
3929 * \param[in] val_marker - bound marker.
3930 * \return Value of the Average Nu on the surface <i>val_marker</i>.
3931 */
3932 inline virtual su2double GetAverageNu(unsigned short valMarker, unsigned short valSpan) const { return 0.0; }
3933
3934 /*!
3935 * \brief A virtual member.
3936 * \param[in] val_marker - bound marker.
3937 * \return Value of the Average Kine on the surface <i>val_marker</i>.
3938 */
3939 inline virtual su2double GetAverageKine(unsigned short valMarker, unsigned short valSpan) const { return 0.0; }
3940
3941 /*!
3942 * \brief A virtual member.
3943 * \param[in] val_marker - bound marker.
3944 * \return Value of the Average Omega on the surface <i>val_marker</i>.
3945 */
3946 inline virtual su2double GetAverageOmega(unsigned short valMarker, unsigned short valSpan) const { return 0.0; }
3947
3948 /*!
3949 * \brief A virtual member.
3950 * \param[in] inMarkerTP - bound marker.
3951 * \return Value of the inlet density.
3952 */
3953 inline virtual su2double GetDensityIn(unsigned short inMarkerTP, unsigned short valSpan) const {return 0;}
3954
3955 /*!
3956 * \brief A virtual member.
3957 * \param[in] inMarkerTP - bound marker.
3958 * \return Value of inlet pressure.
3959 */
3960 inline virtual su2double GetPressureIn(unsigned short inMarkerTP, unsigned short valSpan) const {return 0;}
3961
3962 /*!
3963 * \brief A virtual member.
3964 * \param[in] inMarkerTP - bound marker.
3965 * \return Value of the inlet normal velocity.
3966 */
3967 inline virtual const su2double* GetTurboVelocityIn(unsigned short inMarkerTP, unsigned short valSpan) const {return nullptr;}
3968
3969 /*!
3970 * \brief A virtual member.
3971 * \param[in] inMarkerTP - bound marker.
3972 * \return Value of the outlet density.
3973 */
3974 inline virtual su2double GetDensityOut(unsigned short inMarkerTP, unsigned short valSpan) const {return 0;}
3975
3976 /*!
3977 * \brief A virtual member.
3978 * \param[in] inMarkerTP - bound marker.
3979 * \return Value of the outlet pressure.
3980 */
3981 inline virtual su2double GetPressureOut(unsigned short inMarkerTP, unsigned short valSpan) const {return 0;}
3982
3983 /*!
3984 * \brief A virtual member.
3985 * \param[in] inMarkerTP - bound marker.
3986 * \return Value of the outlet normal velocity.
3987 */
3988 inline virtual const su2double* GetTurboVelocityOut(unsigned short inMarkerTP, unsigned short valSpan) const {return nullptr;}
3989
3990 /*!
3991 * \brief A virtual member.
3992 * \param[in] inMarkerTP - bound marker.
3993 * \return Value of the inlet density.
3994 */
3995 inline virtual su2double GetKineIn(unsigned short inMarkerTP, unsigned short valSpan) const {return 0;}
3996
3997 /*!
3998 * \brief A virtual member.
3999 * \param[in] inMarkerTP - bound marker.
4000 * \return Value of the inlet density.
4001 */
4002 inline virtual su2double GetOmegaIn(unsigned short inMarkerTP, unsigned short valSpan) const {return 0;}
4003
4004 /*!
4005 * \brief A virtual member.
4006 * \param[in] inMarkerTP - bound marker.
4007 * \return Value of the inlet density.
4008 */
4009 inline virtual su2double GetNuIn(unsigned short inMarkerTP, unsigned short valSpan) const {return 0;}
4010
4011 /*!
4012 * \brief A virtual member.
4013 * \param[in] inMarkerTP - bound marker.
4014 * \return Value of the inlet density.
4015 */
4016 inline virtual su2double GetKineOut(unsigned short inMarkerTP, unsigned short valSpan) const {return 0;}
4017
4018 /*!
4019 * \brief A virtual member.
4020 * \param[in] inMarkerTP - bound marker.
4021 * \return Value of the inlet density.
4022 */
4023 inline virtual su2double GetOmegaOut(unsigned short inMarkerTP, unsigned short valSpan) const {return 0;}
4024
4025 /*!
4026 * \brief A virtual member.
4027 * \param[in] inMarkerTP - bound marker.
4028 * \return Value of the inlet density.
4029 */
4030 inline virtual su2double GetNuOut(unsigned short inMarkerTP, unsigned short valSpan) const {return 0;}
4031
4032 /*!
4033 * \brief A virtual member.
4034 * \param[in] value - turboperformance value to set.
4035 * \param[in] inMarkerTP - turboperformance marker.
4036 */
4037 inline virtual void SetDensityIn(su2double value,
4038 unsigned short inMarkerTP,
4039 unsigned short valSpan) { }
4040
4041 /*!
4042 * \brief A virtual member.
4043 * \param[in] value - turboperformance value to set.
4044 * \param[in] inMarkerTP - turboperformance marker.
4045 */
4046 inline virtual void SetPressureIn(su2double value,
4047 unsigned short inMarkerTP,
4048 unsigned short valSpan) { }
4049
4050 /*!
4051 * \brief A virtual member.
4052 * \param[in] value - turboperformance value to set.
4053 * \param[in] inMarkerTP - turboperformance marker.
4054 */
4055 inline virtual void SetTurboVelocityIn(const su2double *value,
4056 unsigned short inMarkerTP,
4057 unsigned short valSpan) { }
4058
4059 /*!
4060 * \brief A virtual member.
4061 * \param[in] value - turboperformance value to set.
4062 * \param[in] inMarkerTP - turboperformance marker.
4063 */
4064 inline virtual void SetDensityOut(su2double value,
4065 unsigned short inMarkerTP,
4066 unsigned short valSpan) { }
4067
4068 /*!
4069 * \brief A virtual member.
4070 * \param[in] value - turboperformance value to set.
4071 * \param[in] inMarkerTP - turboperformance marker.
4072 */
4073 inline virtual void SetPressureOut(su2double value,
4074 unsigned short inMarkerTP,
4075 unsigned short valSpan) { }
4076
4077 /*!
4078 * \brief A virtual member.
4079 * \param[in] value - turboperformance value to set.
4080 * \param[in] inMarkerTP - turboperformance marker.
4081 */
4082 inline virtual void SetTurboVelocityOut(const su2double *value,
4083 unsigned short inMarkerTP,
4084 unsigned short valSpan) { }
4085
4086 /*!
4087 * \brief A virtual member.
4088 * \param[in] value - turboperformance value to set.
4089 * \param[in] inMarkerTP - turboperformance marker.
4090 */
4091 inline virtual void SetKineIn(su2double value,
4092 unsigned short inMarkerTP,
4093 unsigned short valSpan) { }
4094
4095 /*!
4096 * \brief A virtual member.
4097 * \param[in] value - turboperformance value to set.
4098 * \param[in] inMarkerTP - turboperformance marker.
4099 */
4100 inline virtual void SetOmegaIn(su2double value,
4101 unsigned short inMarkerTP,
4102 unsigned short valSpan) { }
4103
4104 /*!
4105 * \brief A virtual member.
4106 * \param[in] value - turboperformance value to set.
4107 * \param[in] inMarkerTP - turboperformance marker.
4108 */
4109 inline virtual void SetNuIn(su2double value,
4110 unsigned short inMarkerTP,
4111 unsigned short valSpan) { }
4112
4113 /*!
4114 * \brief A virtual member.
4115 * \param[in] value - turboperformance value to set.
4116 * \param[in] inMarkerTP - turboperformance marker.
4117 */
4118 inline virtual void SetKineOut(su2double value,
4119 unsigned short inMarkerTP,
4120 unsigned short valSpan) { }
4121
4122 /*!
4123 * \brief A virtual member.
4124 * \param[in] value - turboperformance value to set.
4125 * \param[in] inMarkerTP - turboperformance marker.
4126 */
4127 inline virtual void SetOmegaOut(su2double value,
4128 unsigned short inMarkerTP,
4129 unsigned short valSpan) { }
4130
4131 /*!
4132 * \brief A virtual member.
4133 * \param[in] value - turboperformance value to set.
4134 * \param[in] inMarkerTP - turboperformance marker.
4135 */
4136 inline virtual void SetNuOut(su2double value,
4137 unsigned short inMarkerTP,
4138 unsigned short valSpan) { }
4139
4140 /*!
4141 * \brief A virtual member.
4142 * \param[in] config - Definition of the particular problem.
4143 */
4144 inline virtual void SetFreeStream_TurboSolution(CConfig *config) { }
4145
4146 /*!
4147 * \brief A virtual member.
4148 * \param[in] geometry - Geometrical definition.
4149 * \param[in] config - Definition of the particular problem.
4150 * \param[in] referenceCoord - Determine if the mesh is deformed from the reference or from the current coordinates.
4151 */
4152 inline virtual void DeformMesh(CGeometry **geometry,
4153 CNumerics **numerics,
4154 CConfig *config) { }
4155
4156 /*!
4157 * \brief A virtual member.
4158 * \param[in] geometry - Geometrical definition.
4159 * \param[in] config - Definition of the particular problem.
4160 * \param[in] referenceCoord - Determine if the mesh is deformed from the reference or from the current coordinates.
4161 */
4162 inline virtual void DeformMesh(CGeometry *geometry,
4163 CNumerics **numerics,
4164 CConfig *config) { }
4165
4166 /*!
4167 * \brief A virtual member.
4168 * \param[in] config - Definition of the particular problem.
4169 * \param[in] referenceCoord - Determine if the mesh is deformed from the reference or from the current coordinates.
4170 */
4171 inline virtual void SetMesh_Stiffness(CNumerics **numerics,
4172 CConfig *config) { }
4173
4174 /*!
4175 * \brief A virtual member.
4176 * \param[in] geometry - Geometrical definition.
4177 * \param[in] solver - the discrete adjoint flow solver corresponding to the problem.
4178 * \param[in] numerics - the numerics for this problem.
4179 * \param[in] config - Definition of the particular problem.
4180 */
4181 virtual void ApplyGradientSmoothingVolume(CGeometry* geometry, CNumerics* numerics, const CConfig* config) {}
4182
4183 /*!
4184 * \brief A virtual member.
4185 * \param[in] geometry - Geometrical definition.
4186 * \param[in] solver - the discrete adjoint flow solver corresponding to the problem.
4187 * \param[in] numerics - the numerics for this problem.
4188 * \param[in] config - Definition of the particular problem.
4189 *
4190 */
4191 virtual void ApplyGradientSmoothingSurface(CGeometry* geometry, CNumerics* numerics, const CConfig* config) {}
4192
4193 /*!
4194 * \brief All steps required for smoothing the whole system on DV level in an iterative way
4195 */
4196 virtual void ApplyGradientSmoothingDV(CGeometry *geometry,
4197 CNumerics *numerics,
4198 CSurfaceMovement *surface_movement,
4199 CVolumetricMovement *grid_movement,
4200 CConfig *config,
4201 su2double** Gradient) { }
4202
4203 /*!
4204 * \brief A virtual member.
4205 * \param[in] geometry - Geometrical definition.
4206 * \param[in] config - Definition of the particular problem.
4207 */
4209 CSurfaceMovement *surface_movement,
4210 CVolumetricMovement *grid_movement,
4211 CConfig *config,
4212 su2double** Gradient) { }
4213
4214 /*!
4215 * \brief A virtual member.
4216 * \param[in] geometry - Geometrical definition of the problem.
4217 */
4218 virtual void ReadSensFromGeometry(const CGeometry* geometry) {}
4219
4220 /*!
4221 * \brief A virtual member.
4222 * \param[in] geometry - Geometrical definition of the problem.
4223 * \param[in] config - Definition of the particular problem.
4224 */
4225 virtual void WriteSensToGeometry(CGeometry* geometry) const {}
4226
4227 /*!
4228 * \brief Routine that sets the flag controlling implicit treatment for periodic BCs.
4229 * \param[in] val_implicit_periodic - Flag controlling implicit treatment for periodic BCs.
4230 */
4231 inline void SetImplicitPeriodic(bool val_implicit_periodic) { implicit_periodic = val_implicit_periodic; }
4232
4233 /*!
4234 * \brief Routine that sets the flag controlling solution rotation for periodic BCs.
4235 * \param[in] val_implicit_periodic - Flag controlling solution rotation for periodic BCs.
4236 */
4237 inline void SetRotatePeriodic(bool val_rotate_periodic) { rotate_periodic = val_rotate_periodic; }
4238
4239 /*!
4240 * \brief Storage for the limiters with rotational periodicity: the min and max, over the edges of the periodic
4241 * matches of each point, of the reconstruction increments (communicated with PERIODIC_LIM_PRIM_1).
4242 * \param[in] geometry - Periodic receive points of this mesh level.
4243 * \param[in] config - Definition of the particular problem.
4244 * \return The matrix (unique periodic receive points x 2*nPrimVarGrad, min then max), nullptr without rotation.
4245 */
4246 su2activematrix* GetPeriodicProjections(const CGeometry& geometry, const CConfig& config);
4247
4248 /*! \brief Reconstruction increment bounds for a periodic receive point, nullptr for other points. */
4249 inline su2double* GetPeriodicProjection(unsigned long iPoint) {
4250 const auto& indices = PeriodicProjIndex;
4251 const auto it = indices.find(iPoint);
4252 return it == indices.end() ? nullptr : PeriodicProj[it->second];
4253 }
4254
4255 /*!
4256 * \brief Retrieve the solver name for output purposes.
4257 * \returns Name of the solver.
4258 */
4259 inline const string& GetSolverName() const { return SolverName; }
4260
4261 /*!
4262 * \brief Get the solution fields.
4263 * \return A vector containing the solution fields.
4264 */
4265 inline vector<string> GetSolutionFields() const{return fields;}
4266
4267 /*!
4268 * \brief A virtual member.
4269 * \param[in] geometry - Geometrical definition.
4270 * \param[in] config - Definition of the particular problem.
4271 */
4272 inline virtual void ComputeVerificationError(CGeometry *geometry, CConfig *config) { }
4273
4274 /*!
4275 * \brief Compute the tractions at the vertices.
4276 * \param[in] geometry - Geometrical definition.
4277 * \param[in] config - Definition of the particular problem.
4278 */
4279 void ComputeVertexTractions(CGeometry *geometry, const CConfig *config);
4280
4281 /*!
4282 * \brief Set the adjoints of the vertex tractions.
4283 * \param[in] iMarker - Index of the marker
4284 * \param[in] iVertex - Index of the relevant vertex
4285 * \param[in] iDim - Dimension
4286 */
4287 inline su2double GetVertexTractions(unsigned short iMarker, unsigned long iVertex, unsigned short iDim) const {
4288 return VertexTraction[iMarker][iVertex][iDim];
4289 }
4290
4291 /*!
4292 * \brief Register the vertex tractions as output.
4293 * \param[in] geometry - Geometrical definition.
4294 * \param[in] config - Definition of the particular problem.
4295 */
4296 void RegisterVertexTractions(CGeometry *geometry, const CConfig *config);
4297
4298 /*!
4299 * \brief Store the adjoints of the vertex tractions.
4300 * \param[in] iMarker - Index of the marker
4301 * \param[in] iVertex - Index of the relevant vertex
4302 * \param[in] iDim - Dimension
4303 * \param[in] val_adjoint - Value received for the adjoint (from another solver)
4304 */
4305 inline void StoreVertexTractionsAdjoint(unsigned short iMarker,
4306 unsigned long iVertex,
4307 unsigned short iDim,
4308 su2double val_adjoint){
4309 VertexTractionAdjoint[iMarker][iVertex][iDim] = val_adjoint;
4310 }
4311
4312 /*!
4313 * \brief Set the adjoints of the vertex tractions to the AD structure.
4314 * \param[in] geometry - Geometrical definition.
4315 * \param[in] config - Definition of the particular problem.
4316 */
4317 void SetVertexTractionsAdjoint(CGeometry *geometry, const CConfig *config);
4318
4319 /*!
4320 * \brief Get minimun volume in the mesh
4321 * \return
4322 */
4323 virtual su2double GetMinimum_Volume() const { return 0.0; }
4324
4325 /*!
4326 * \brief Get maximum volume in the mesh
4327 * \return
4328 */
4329 virtual su2double GetMaximum_Volume() const { return 0.0; }
4330
4331 /*!
4332 * \brief Whether the methods of the solver called by multi/single-grid
4333 * iteration can be executed by multiple threads.
4334 * \return Should return true if "yes", false if "no".
4335 */
4336 inline virtual bool GetHasHybridParallel() const { return false; }
4337
4338 /*!
4339 * \brief Get values for streamwise periodic flow: delta P, m_dot, inlet T, integrated heat, etc.
4340 * \return Struct holding streamwise periodic values.
4341 */
4343
4344 /*!
4345 * \brief A virtual member
4346 * \param[in] geometry - Geometrical definition of the problem.
4347 * \param[in] solver_container - Container with all the solutions.
4348 * \param[in] config - Definition of the particular problem.
4349 * \param[in] periodic - Flag for periodic boundary conditions.
4350 * \param[in] iMesh - Index of the mesh in multigrid computations.
4351 */
4352 inline virtual void SetMomCoeff(CGeometry *geometry, CSolver **solver_container, CConfig *config, bool periodic, unsigned short iMesh) { }
4353
4354 /*!
4355 * \brief A virtual member
4356 * \param[in] geometry - Geometrical definition of the problem.
4357 * \param[in] solver_container - Container with all the solutions.
4358 * \param[in] config - Definition of the particular problem.
4359 * \param[in] iMesh - Index of the mesh in multigrid computations.
4360 */
4361 inline virtual void ComputeHbyA(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh) { }
4362
4363 /*!
4364 * \brief Save snapshot or POD data using libROM
4365 * \param[in] geometry - Geometrical definition of the problem.
4366 * \param[in] config - Definition of the particular problem.
4367 * \param[in] converged - Whether or not solution has converged.
4368 */
4369 void SavelibROM(CGeometry *geometry, CConfig *config, bool converged);
4370
4371 /*!
4372 * \brief Interpolate variables to a coarser grid level.
4373 * \note Halo values are not communicated in this function.
4374 * \param[in] geoFine - Fine grid.
4375 * \param[in] varsFine - Matrix of variables on the fine grid.
4376 * \param[in] geoCoarse - Coarse grid.
4377 * \param[in] varsCoarse - Matrix of variables interpolated to the coarse grid.
4378 */
4379 inline static void MultigridRestriction(const CGeometry& geoFine, const su2activematrix& varsFine,
4380 const CGeometry& geoCoarse, su2activematrix& varsCoarse) {
4382 for (auto iPointCoarse = 0ul; iPointCoarse < geoCoarse.GetnPointDomain(); ++iPointCoarse) {
4383
4384 for (auto iVar = 0ul; iVar < varsCoarse.cols(); iVar++) {
4385 varsCoarse(iPointCoarse, iVar) = 0.0;
4386 }
4387 const su2double scale = 1 / geoCoarse.nodes->GetVolume(iPointCoarse);
4388
4389 for (auto iChildren = 0ul; iChildren < geoCoarse.nodes->GetnChildren_CV(iPointCoarse); ++iChildren) {
4390 const auto iPointFine = geoCoarse.nodes->GetChildren_CV(iPointCoarse, iChildren);
4391 const su2double w = geoFine.nodes->GetVolume(iPointFine) * scale;
4392 for (auto iVar = 0ul; iVar < varsCoarse.cols(); ++iVar) {
4393 varsCoarse(iPointCoarse, iVar) += w * varsFine(iPointFine, iVar);
4394 }
4395 }
4396 }
4398 }
4399
4400inline void CustomSourceResidual(CGeometry *geometry, CSolver **solver_container,
4401 CNumerics **numerics_container, CConfig *config, unsigned short iMesh) {
4402
4404
4406 for (auto iPoint = 0ul; iPoint < nPointDomain; iPoint++) {
4407 /*--- Get control volume size. ---*/
4408 su2double Volume = geometry->nodes->GetVolume(iPoint);
4409 /*--- Compute the residual for this control volume and subtract. ---*/
4410 for (auto iVar = 0ul; iVar < nVar; iVar++) {
4411 LinSysRes(iPoint,iVar) -= base_nodes->GetUserDefinedSource()(iPoint, iVar) * Volume;
4412 }
4413 }
4415
4417}
4418
4419protected:
4420 /*!
4421 * \brief Allocate the memory for the verification solution, if necessary.
4422 * \param[in] nDim - Number of dimensions of the problem.
4423 * \param[in] nVar - Number of variables of the problem.
4424 * \param[in] config - Definition of the particular problem.
4425 */
4426 void SetVerificationSolution(unsigned short nDim,
4427 unsigned short nVar,
4428 CConfig *config);
4429
4430 /*!
4431 * \brief "Add" residual at (iPoint,iVar) to residual variables local to the thread.
4432 * \param[in] iPoint - Point index.
4433 * \param[in] iVar - Variable index.
4434 * \param[in] res - Residual at (iPoint,iVar), e.g. LinSysRes(iPoint,iVar)
4435 * \param[in,out] resRMS - increases by pow(Residual, 2)
4436 * \param[in,out] resMax - increases to max(resMax, Residual)
4437 * \param[in,out] idxMax - changes when resMax increases
4438 */
4439 static inline void ResidualReductions_PerThread(unsigned long iPoint, unsigned short iVar, su2double res, su2double* resRMS, su2double* resMax,
4440 unsigned long* idxMax) {
4441 res = fabs(res);
4442 resRMS[iVar] += res * res;
4443 if (res > resMax[iVar]) {
4444 resMax[iVar] = res;
4445 idxMax[iVar] = iPoint;
4446 }
4447 }
4448
4449 /*!
4450 * \brief "Add" local residual variables of all threads to compute global residual variables.
4451 */
4452 inline void ResidualReductions_FromAllThreads(const CGeometry* geometry, const CConfig* config, const su2double* resRMS, const su2double* resMax,
4453 const unsigned long* idxMax){
4454 SetResToZero();
4455
4457 for (unsigned short iVar = 0; iVar < nVar; iVar++) {
4458 Residual_RMS[iVar] += resRMS[iVar];
4459 AddRes_Max(iVar, resMax[iVar], geometry->nodes->GetGlobalIndex(idxMax[iVar]), geometry->nodes->GetCoord(idxMax[iVar]));
4460 }
4463
4464 /*--- Compute the root mean square residual ---*/
4465 SetResidual_RMS(geometry, config);
4466 }
4467
4468 /*!
4469 * \brief Set the RMS and MAX residual to zero.
4470 */
4471 inline void SetResToZero() {
4473 for (auto& r : Residual_RMS) r = 0;
4474 for (auto& r : Residual_Max) r = 0;
4475 for (auto& p : Point_Max) p = 0;
4476 }
4478 }
4479
4480 /*!
4481 * \brief Adds the maximal residual, this is useful for the convergence history.
4482 * \param[in] val_var - Index of the variable.
4483 * \param[in] val_residual - Value of the residual to store in the position <i>val_var</i>.
4484 * \param[in] val_point - Value of the point index for the max residual.
4485 * \param[in] val_coord - Location (x, y, z) of the max residual point.
4486 */
4487 inline void AddRes_Max(unsigned short val_var,
4488 su2double val_residual,
4489 unsigned long val_point,
4490 const su2double* val_coord) {
4491 if (val_residual > Residual_Max[val_var]) {
4492 Residual_Max[val_var] = val_residual;
4493 Point_Max[val_var] = val_point;
4494 for (unsigned short iDim = 0; iDim < nDim; iDim++)
4495 Point_Max_Coord[val_var][iDim] = val_coord[iDim];
4496 }
4497 }
4498
4499 /*!
4500 * \brief Adds the maximal residual for BGS subiterations.
4501 * \param[in] val_var - Index of the variable.
4502 * \param[in] val_residual - Value of the residual to store in the position <i>val_var</i>.
4503 * \param[in] val_point - Value of the point index for the max residual.
4504 * \param[in] val_coord - Location (x, y, z) of the max residual point.
4505 */
4506 inline void AddRes_Max_BGS(unsigned short val_var,
4507 su2double val_residual,
4508 unsigned long val_point,
4509 const su2double* val_coord) {
4510 if (val_residual > Residual_Max_BGS[val_var]) {
4511 Residual_Max_BGS[val_var] = val_residual;
4512 Point_Max_BGS[val_var] = val_point;
4513 for (unsigned short iDim = 0; iDim < nDim; iDim++)
4514 Point_Max_Coord_BGS[val_var][iDim] = val_coord[iDim];
4515 }
4516 }
4517
4518};
#define A(I, J)
A templated matrix/vector-like object.
Definition C2DContainer.hpp:374
Index_t cols() const noexcept
Definition C2DContainer.hpp:222
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
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
CPoint * nodes
Node vector (dual grid information).
Definition CGeometry.hpp:253
unsigned long GetnPointDomain() const
Get number of real points (that belong to the domain).
Definition CGeometry.hpp:593
Class for defining the numerical methods.
Definition CNumerics.hpp:48
unsigned long GetChildren_CV(unsigned long iPoint, unsigned short nchildren_CV) const
Get the children control volume of an agglomerated control volume.
Definition CPoint.hpp:681
unsigned long GetGlobalIndex(unsigned long iPoint) const
Get the global index in a parallel computation.
Definition CPoint.hpp:452
su2double GetCoord(unsigned long iPoint, unsigned long iDim) const
Get the coordinates dor the control volume.
Definition CPoint.hpp:158
su2double & GetVolume(unsigned long iPoint)
Get area or volume of the control volume.
Definition CPoint.hpp:557
unsigned short GetnChildren_CV(unsigned long iPoint) const
Get the number of children of an agglomerated control volume.
Definition CPoint.hpp:721
Definition CSolver.hpp:71
virtual void BC_ActDisk(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker, bool val_inlet_surface)
A virtual member.
Definition CSolver.hpp:1010
virtual su2double GetInletFlowDir(unsigned short val_marker, unsigned long val_vertex, unsigned short val_dim) const
A virtual member.
Definition CSolver.hpp:2932
vector< string > fields
Definition CSolver.hpp:209
virtual su2double GetSurface_CMx_Mnt(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2144
void Read_SU2_Restart_Binary(CGeometry *geometry, const CConfig *config, string val_filename)
Read a native SU2 restart file in binary format.
Definition CSolver.cpp:3142
virtual su2double GetTotal_CFz() const
A virtual member.
Definition CSolver.hpp:2600
virtual void BC_Smoluchowski_Maxwell(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1320
bool HasPeriodicRotation(const CConfig &config) const
Definition CSolver.cpp:342
virtual void SetMixingState(unsigned short val_marker, unsigned long val_span, unsigned short val_state, su2double component)
Set a component of the donor-side averaged state at a mixing plane interface nodes.
Definition CSolver.hpp:1352
virtual void TurboAverageProcess(CSolver **solver, CGeometry *geometry, CConfig *config, unsigned short marker_flag)
virtual member.
Definition CSolver.hpp:3885
virtual void SetTotal_IDC(su2double val_Total_IDC)
A virtual member.
Definition CSolver.hpp:1766
virtual void SetTotal_MFR(su2double val_Total_MFR)
A virtual member.
Definition CSolver.hpp:1736
su2double GetTotal_ComboObj() const
Provide the total "combo" objective (weighted sum of other values).
Definition CSolver.hpp:1851
virtual su2double GetSurface_CMx(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1927
virtual void SetUniformInlet(const CConfig *config, unsigned short iMarker)
A virtual member.
Definition CSolver.hpp:3000
unsigned long GetPoint_Max(unsigned short val_var) const
Get the maximal residual, this is useful for the convergence history.
Definition CSolver.hpp:494
virtual void SetTotal_CD(su2double val_Total_CD)
A virtual member.
Definition CSolver.hpp:1700
virtual void CheckTimeSynchronization(CConfig *config, const su2double TimeSync, su2double &timeEvolved, bool &syncTimeReached)
A virtual member.
Definition CSolver.hpp:655
virtual void SetForceCoeff(su2double val_forcecoeff_history)
A virtual member.
Definition CSolver.hpp:3381
virtual su2double GetAllBound_CFx_Mnt() const
A virtual member.
Definition CSolver.hpp:2821
virtual su2double GetTotal_OFDiscreteness() const
Retrieve the value of the discreteness objective function.
Definition CSolver.hpp:2380
void GaussElimination(su2double **A, su2double *rhs, unsigned short nVar)
Gauss method for solving a linear system.
Definition CSolver.cpp:2501
virtual su2double GetSurface_CFz_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2060
virtual su2double GetTotal_CSF() const
A virtual member.
Definition CSolver.hpp:2279
virtual su2double GetHeatFlux(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:3058
virtual bool FixedCL_Convergence(CConfig *config, bool convergence)
A virtual member.
Definition CSolver.hpp:2187
virtual void SetNuOut(su2double value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4136
virtual su2double GetDensity_Energy_Inf(void) const
A virtual member.
Definition CSolver.hpp:3218
virtual su2double GetAverageMassFlowRate(unsigned short valMarker) const
virtual member
Definition CSolver.hpp:3911
su2activematrix Point_Max_Coord_BGS
Vector with pointers to the coords of the maximal residual for each variable.
Definition CSolver.hpp:105
CSysMatrix< su2mixedfloat > Jacobian
Complete sparse Jacobian structure for implicit computations.
Definition CSolver.hpp:201
virtual su2double GetTotal_MaxHeatFlux() const
A virtual member.
Definition CSolver.hpp:2309
unsigned short GetnVar(void) const
Get the number of variables of the problem.
Definition CSolver.hpp:416
virtual void SetInletFlowDir(unsigned short val_marker, unsigned long val_vertex, unsigned short val_dim, su2double val_flowdir)
A virtual member.
Definition CSolver.hpp:2973
void Add_External_To_Solution()
Add External to Solution vector.
Definition CSolver.cpp:2428
virtual void ApplyGradientSmoothingSurface(CGeometry *geometry, CNumerics *numerics, const CConfig *config)
A virtual member.
Definition CSolver.hpp:4191
virtual su2double GetSurface_CD_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1955
virtual void SetFreeStream_Solution(const CConfig *config)
A virtual member.
Definition CSolver.hpp:3840
su2double ** Jacobian_jj
Auxiliary matrices for storing point to point Jacobians.
Definition CSolver.hpp:133
virtual su2double GetKineOut(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:4016
virtual su2double GetSurface_CMy(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1934
virtual void ImplicitEuler_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config)
A virtual member.
Definition CSolver.hpp:1490
virtual su2double GetTotal_Sens_E(unsigned short iVal) const
A virtual member.
Definition CSolver.hpp:3279
unsigned short GetIterLinSolver(void) const
Get number of linear solver iterations.
Definition CSolver.hpp:365
unsigned short nPrimVarGrad
Number of primitive variables of the problem in the gradient computation.
Definition CSolver.hpp:87
virtual su2double GetTotal_SolidCD() const
A virtual member.
Definition CSolver.hpp:2486
su2double ** Jacobian_j
Auxiliary matrices for storing point to point Jacobians at point j.
Definition CSolver.hpp:129
virtual void Compute_MassMatrix(const CGeometry *geometry, CNumerics **numerics, const CConfig *config)
A virtual member.
Definition CSolver.hpp:3720
void SetRotatingFrame_GCL(CGeometry *geometry, const CConfig *config)
Set Value of the residual due to the Geometric Conservation Law (GCL) for steady rotating frame probl...
Definition CSolver.cpp:2263
virtual void SetOmegaIn(su2double value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4100
virtual su2double GetCPressureTarget(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:2855
vector< unsigned long > nVertex
Store nVertex at each marker for deallocation.
Definition CSolver.hpp:146
virtual void GeneralizedAlpha_UpdateLoads(const CGeometry *geometry, const CConfig *config)
A virtual member.
Definition CSolver.hpp:1578
void SolveTypicalSectionWingModel(CGeometry *geometry, su2double Cl, su2double Cm, CConfig *config, unsigned short val_Marker, vector< su2double > &displacements)
Solve the typical section wing model.
Definition CSolver.cpp:2696
virtual su2double GetTotal_IDC() const
A virtual member.
Definition CSolver.hpp:2528
virtual su2double GetTotal_CoPy() const
A virtual member.
Definition CSolver.hpp:2576
virtual su2double GetTotal_AeroCD() const
A virtual member.
Definition CSolver.hpp:2333
virtual void SetPrimitive_Limiter(CGeometry *geometry, const CConfig *config)
A virtual member.
Definition CSolver.hpp:591
vector< unsigned long > Point_Max_BGS
Vector with the maximal residual for each variable.
Definition CSolver.hpp:103
void Read_SU2_Restart_Metadata(CGeometry *geometry, CConfig *config, bool adjoint_run, const string &val_filename) const
Read the metadata from a native SU2 restart file (ASCII or binary).
Definition CSolver.cpp:3602
void Restart_OldGeometry(CGeometry *geometry, CConfig *config) const
Load the geometries at the previous time states n and nM1.
Definition CSolver.cpp:2819
su2activematrix Point_Max_Coord
Vector with pointers to the coords of the maximal residual for each variable.
Definition CSolver.hpp:104
virtual su2double GetSurface_CMx_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2067
virtual void BC_Supersonic_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1226
su2double GetResLinSolver(void) const
Get the final linear solver residual.
Definition CSolver.hpp:371
virtual su2double GetTotal_CMx() const
A virtual member.
Definition CSolver.hpp:2552
virtual su2double GetTotal_Sens_ModVel() const
A virtual member.
Definition CSolver.hpp:3200
virtual su2double GetSlidingState(unsigned short val_marker, unsigned long val_vertex, unsigned short val_state, unsigned long donor_index) const
Get the outer state for fluid interface nodes.
Definition CSolver.hpp:1365
virtual void SetWAitken_Dyn_tn1()
A virtual member.
Definition CSolver.hpp:3773
virtual void Inviscid_Sensitivity(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config)
A virtual member.
Definition CSolver.hpp:1817
virtual su2double GetCL_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1864
void InitiatePeriodicComms(CGeometry *geometry, const CConfig *config, unsigned short val_periodic_index, unsigned short commType)
Routine to load a solver quantity into the data structures for MPI periodic communication and to laun...
Definition CSolver.cpp:368
void SetRotatePeriodic(bool val_rotate_periodic)
Routine that sets the flag controlling solution rotation for periodic BCs.
Definition CSolver.hpp:4237
virtual su2double GetInletPtotal(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:2923
virtual su2double GetInletTtotal(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:2915
su2double GetVertexTractions(unsigned short iMarker, unsigned long iVertex, unsigned short iDim) const
Set the adjoints of the vertex tractions.
Definition CSolver.hpp:4287
virtual su2double GetTotal_CoPz() const
A virtual member.
Definition CSolver.hpp:2582
virtual void SetTotal_HeatFlux(su2double val_Total_Heat)
A virtual member.
Definition CSolver.hpp:1802
virtual su2double GetTotal_Sens_Press() const
Set the total farfield pressure sensitivity coefficient.
Definition CSolver.hpp:3173
virtual void CompleteImplicitIteration(CGeometry *geometry, CSolver **solver_container, CConfig *config)
A virtual member.
Definition CSolver.hpp:1480
virtual void SetTotal_AeroCD(su2double val_aerocd)
A virtual member.
Definition CSolver.hpp:2410
virtual void SetSlidingState(unsigned short val_marker, unsigned long val_vertex, unsigned short val_state, unsigned long donor_index, su2double component)
Set the outer state for fluid interface nodes.
Definition CSolver.hpp:1385
su2double * Residual_j
Auxiliary nVar vector for storing the residual at point j.
Definition CSolver.hpp:114
void BasicLoadRestart(CGeometry *geometry, const CConfig *config, const string &filename, unsigned long skipVars)
Loads the solution from the restart file.
Definition CSolver.cpp:4472
virtual void BC_Sym_Plane(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
Impose via the residual the Euler boundary condition.
Definition CSolver.hpp:1085
virtual su2double GetAllBound_CEff_Visc() const
A virtual member.
Definition CSolver.hpp:2702
virtual void ComputeHbyA(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh)
A virtual member.
Definition CSolver.hpp:4361
virtual void SetAitken_Relaxation(CGeometry *geometry, const CConfig *config)
A virtual member.
Definition CSolver.hpp:3449
virtual su2double GetAllBound_CoPz_Visc() const
A virtual member.
Definition CSolver.hpp:2738
CSysSolve< su2mixedfloat > System
Linear solver/smoother.
Definition CSolver.hpp:202
virtual su2double GetTotal_CL() const
A virtual member.
Definition CSolver.hpp:2462
su2double GetMax_Delta_Time(void) const
Get the value of the maximum delta time.
Definition CSolver.hpp:377
unsigned short nDim
Number of dimensions of the problem.
Definition CSolver.hpp:90
virtual su2double GetRelaxCoeff(void) const
A virtual member.
Definition CSolver.hpp:3406
su2double ** Jacobian_i
Auxiliary matrices for storing point to point Jacobians at point i.
Definition CSolver.hpp:128
virtual su2double GetAllBound_CoPx_Visc() const
A virtual member.
Definition CSolver.hpp:2726
virtual su2double GetSurface_Buffet_Metric(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2088
void Add_Solution_To_External()
Add the current Solution vector to External.
Definition CSolver.cpp:2437
virtual su2double GetTotal_Sens_Temp() const
Set the total farfield temperature sensitivity coefficient.
Definition CSolver.hpp:3180
virtual void SetTotal_Poly_Eff(su2double val_Total_Poly_Eff)
A virtual member.
Definition CSolver.hpp:1760
virtual su2double GetAllBound_CoPy_Inv() const
A virtual member.
Definition CSolver.hpp:2654
virtual su2double GetTotal_Power() const
A virtual member.
Definition CSolver.hpp:2480
virtual void SetTotal_CT(su2double val_Total_CT)
A virtual member.
Definition CSolver.hpp:1790
virtual void SetDensityIn(su2double value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4037
su2double Min_Delta_Time
Minimum value of the delta time for all the control volumes.
Definition CSolver.hpp:94
virtual su2double GetTotal_CEquivArea() const
A virtual member.
Definition CSolver.hpp:2327
virtual su2double GetTotal_OFStressPenalty() const
A virtual member.
Definition CSolver.hpp:2392
su2double Total_Custom_ObjFunc
Total custom objective function.
Definition CSolver.hpp:107
virtual su2double GetOmegaOut(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:4023
virtual void SetTotal_IDR(su2double val_Total_IDR)
A virtual member.
Definition CSolver.hpp:1778
virtual void RegisterOutput(CGeometry *geometry_container, CConfig *config)
A virtual member.
Definition CSolver.hpp:3616
const CVariable * GetNodes() const
Definition CSolver.hpp:233
virtual su2double GetSurface_CL_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1948
void StoreVertexTractionsAdjoint(unsigned short iMarker, unsigned long iVertex, unsigned short iDim, su2double val_adjoint)
Store the adjoints of the vertex tractions.
Definition CSolver.hpp:4305
virtual su2double GetTotal_CT() const
A virtual member.
Definition CSolver.hpp:2291
void SetGridVel_Gradient(CGeometry *geometry, const CConfig *config) const
Compute the Least Squares gradient of the grid velocity.
Definition CSolver.cpp:2473
void AddRes_Max_BGS(unsigned short val_var, su2double val_residual, unsigned long val_point, const su2double *val_coord)
Adds the maximal residual for BGS subiterations.
Definition CSolver.hpp:4506
virtual su2double GetCD_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2172
virtual su2double GetSurface_CD_Mnt(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2102
virtual void RegisterSolution(CGeometry *geometry_container, CConfig *config)
A virtual member.
Definition CSolver.hpp:3609
virtual void UpdateCustomBoundaryConditions(CGeometry **geometry_container, CSolver ***solver_container, CConfig *config)
Update the multi-grid structure for the customized boundary conditions.
Definition CSolver.hpp:3029
virtual su2double GetTotal_CEff() const
A virtual member.
Definition CSolver.hpp:2285
virtual void BC_Periodic(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config)
A virtual member.
Definition CSolver.hpp:949
virtual su2double GetAllBound_CFx_Inv() const
A virtual member.
Definition CSolver.hpp:2666
su2double MUSCL_Reconstruction(const su2double *grad, const su2double *vector_ij, su2double delta_ij, su2double kappa, su2double ramp_val) const
Compute the projection of a variable for MUSCL reconstruction.
Definition CSolver.hpp:609
virtual void ExtractAdjoint_SolutionExtra(su2activevector &adj_sol, const CConfig *config)
Extract the adjoint of the extra solution at the input.
Definition CSolver.hpp:3654
void Read_SU2_Restart_ASCII(CGeometry *geometry, const CConfig *config, string val_filename)
Read a native SU2 restart file in ASCII format.
Definition CSolver.cpp:2979
virtual void SetTotal_CL(su2double val_Total_CL)
A virtual member.
Definition CSolver.hpp:1706
virtual void ComputeVerificationError(CGeometry *geometry, CConfig *config)
A virtual member.
Definition CSolver.hpp:4272
su2double GetRes_RMS(unsigned short val_var) const
Get the maximal residual, this is useful for the convergence history.
Definition CSolver.hpp:459
string * OutputHeadingNames
vector of strings to store the headings for the exra variables
Definition CSolver.hpp:205
virtual CFluidModel * GetFluidModel(void) const
Compute the pressure at the infinity.
Definition CSolver.hpp:359
virtual void SetTotal_CEquivArea(su2double val_cequivarea)
A virtual member.
Definition CSolver.hpp:2404
virtual su2double GetTotal_Sens_Rho(unsigned short iVal) const
A virtual member.
Definition CSolver.hpp:3291
virtual void PrepareImplicitIteration(CGeometry *geometry, CSolver **solver_container, CConfig *config)
A virtual member.
Definition CSolver.hpp:1470
virtual void Solve_System(CGeometry *geometry, CConfig *config)
A virtual member.
Definition CSolver.hpp:3768
virtual void BC_Dir_Load(CGeometry *geometry, const CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:917
su2double * Residual_i
Auxiliary nVar vector for storing the residual at point i.
Definition CSolver.hpp:113
virtual void LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo)
A virtual member.
Definition CSolver.hpp:3472
virtual su2double GetAllBound_CFy_Inv() const
A virtual member.
Definition CSolver.hpp:2672
virtual su2double GetIntermittency_Inf() const
Get value of the Intermittency.
Definition CSolver.hpp:3267
virtual void Smooth_Sensitivity(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config)
A virtual member.
Definition CSolver.hpp:1829
virtual su2double GetSurface_CSF_Mnt(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2109
virtual void SetCustomBoundaryScalar(unsigned short val_marker, unsigned long val_vertex, vector< passivedouble > val_customBoundaryScalar)
Set the value of the customized normal scalar values/flux at a specified vertex on a specified marker...
Definition CSolver.hpp:2942
vector< int > Restart_Vars
Auxiliary structure for holding the number of variables and points in a restart.
Definition CSolver.hpp:140
virtual su2double GetTotal_AvgTemperature() const
A virtual member.
Definition CSolver.hpp:2315
virtual void BC_Riemann(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1101
virtual void DeformMesh(CGeometry **geometry, CNumerics **numerics, CConfig *config)
A virtual member.
Definition CSolver.hpp:4152
virtual su2double GetAllBound_CFz_Inv() const
A virtual member.
Definition CSolver.hpp:2678
virtual su2double GetAllBound_CMz_Mnt() const
A virtual member.
Definition CSolver.hpp:2797
virtual su2double GetTotal_NetThrust() const
A virtual member.
Definition CSolver.hpp:2474
virtual void SetMesh_Stiffness(CNumerics **numerics, CConfig *config)
A virtual member.
Definition CSolver.hpp:4171
su2double ** Jacobian_ii
Auxiliary matrices for storing point to point Jacobians.
Definition CSolver.hpp:130
void SetAuxVar_Gradient_LS(CGeometry *geometry, const CConfig *config)
Compute the Least Squares gradient of the auxiliary variable.
Definition CSolver.cpp:2336
virtual su2double GetTotal_HeatFluxDiff() const
A virtual member.
Definition CSolver.hpp:2345
void CompleteComms(CGeometry *geometry, const CConfig *config, MPI_QUANTITIES commType)
Routine to complete the set of non-blocking communications launched by InitiateComms() and unpacking ...
Definition CSolver.cpp:1724
virtual su2double GetTotal_HeatFlux() const
A virtual member.
Definition CSolver.hpp:2303
virtual void Compute_StiffMatrix(CGeometry *geometry, CNumerics **numerics, const CConfig *config)
A virtual member.
Definition CSolver.hpp:3700
CVerificationSolution * VerificationSolution
Verification solution class used within the solver.
Definition CSolver.hpp:207
virtual su2double GetPhi_Inf(unsigned short val_dim) const
A virtual member.
Definition CSolver.hpp:3145
virtual void SetTotal_CNearFieldOF(su2double val_cnearfieldpress)
A virtual member.
Definition CSolver.hpp:2446
virtual void Postprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh)
A virtual member.
Definition CSolver.hpp:708
virtual void ExtractAdjoint_Solution(CGeometry *geometry, CConfig *config, bool CrossTerm)
A virtual member.
Definition CSolver.hpp:3632
virtual su2double GetOmegaIn(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:4002
int size
MPI Size.
Definition CSolver.hpp:76
virtual void SetSlidingStateStructure(unsigned short val_marker, unsigned long val_vertex)
Allocates the final pointer of SlidingState depending on how many donor vertex donate to it....
Definition CSolver.hpp:1375
virtual su2double GetTotal_Sens_Geo() const
A virtual member.
Definition CSolver.hpp:3152
virtual void SetTotal_IDC_Mach(su2double val_Total_IDC_Mach)
A virtual member.
Definition CSolver.hpp:1772
virtual su2double GetPsiRho_Inf(void) const
A virtual member.
Definition CSolver.hpp:3132
CSysVector< su2double > LinSysSol
vector to store iterative solution of implicit linear system.
Definition CSolver.hpp:199
unsigned short GetnPrimVarGrad(void) const
Get the number of variables of the problem.
Definition CSolver.hpp:426
virtual int GetnSlidingStates(unsigned short val_marker, unsigned long val_vertex) const
Get the number of outer states for fluid interface nodes.
Definition CSolver.hpp:1396
virtual su2double GetTotal_ReverseFlow() const
A virtual member.
Definition CSolver.hpp:2492
su2double * Res_Conv_i
Auxiliary vector for storing the convective residual at point i.
Definition CSolver.hpp:124
vector< passivedouble > Restart_Data
Auxiliary structure for holding the data values from a restart.
Definition CSolver.hpp:142
virtual su2double GetPressureOut(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3981
virtual void BC_Engine_Inflow(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1274
virtual su2double GetReferenceDynamicPressure() const
Get the reference dynamic pressure, for Cp, Cf, etc.
Definition CSolver.hpp:2456
virtual su2double GetTotal_IDC_Mach() const
A virtual member.
Definition CSolver.hpp:2534
virtual void SetSurface_Sensitivity(CGeometry *geometry, CConfig *config)
A virtual member.
Definition CSolver.hpp:3661
virtual su2double GetCSF_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2245
virtual su2double GetSurface_MaxHF_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2266
virtual void ClassicalRK4_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep)
A virtual member.
Definition CSolver.hpp:1449
virtual su2double GetModVelocity_Inf(void) const
A virtual member.
Definition CSolver.hpp:3212
virtual su2double GetSurface_CFx_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2046
virtual void SetTotal_HeatFluxDiff(su2double val_heat)
A virtual member.
Definition CSolver.hpp:2422
virtual su2double GetAverageKine(unsigned short valMarker, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3939
virtual su2double GetSurface_CFz(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1920
virtual void ProcessTaskList_DG(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config, unsigned short iMesh)
A virtual member.
Definition CSolver.hpp:668
virtual su2double GetKineIn(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3995
vector< su2activematrix > VertexTraction
Definition CSolver.hpp:155
virtual su2double GetInflow_Mach(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2238
virtual void SetTotal_Power(su2double val_Total_Power)
A virtual member.
Definition CSolver.hpp:1718
static void ResidualReductions_PerThread(unsigned long iPoint, unsigned short iVar, su2double res, su2double *resRMS, su2double *resMax, unsigned long *idxMax)
"Add" residual at (iPoint,iVar) to residual variables local to the thread.
Definition CSolver.hpp:4439
virtual void Heat_Fluxes(CGeometry *geometry, CSolver **solver_container, CConfig *config)
A virtual member.
Definition CSolver.hpp:1608
virtual void SetTotal_DC60(su2double val_Total_DC60)
A virtual member.
Definition CSolver.hpp:1784
su2double * Res_Conv
Auxiliary nVar vector for storing the convective residual.
Definition CSolver.hpp:121
virtual void SetNuIn(su2double value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4109
vector< su2double > Residual_BGS
Vector with the mean residual for each variable for BGS subiterations.
Definition CSolver.hpp:100
virtual su2double GetAllBound_CMz_Inv() const
A virtual member.
Definition CSolver.hpp:2642
virtual bool GetHasHybridParallel() const
Whether the methods of the solver called by multi/single-grid iteration can be executed by multiple t...
Definition CSolver.hpp:4336
virtual su2double GetAllBound_CSF_Inv() const
A virtual member.
Definition CSolver.hpp:2618
su2double * Res_Sour
Auxiliary nVar vector for storing the viscous residual.
Definition CSolver.hpp:123
virtual void IdentifySolutionOutliers(const CConfig *config, unsigned long iter)
Identify points where the solution is an outlier (physics-specific concept) so that solvers can try t...
Definition CSolver.hpp:1509
void SetIterLinSolver(unsigned short val_iterlinsolver)
Set number of linear solver iterations.
Definition CSolver.hpp:316
void SetResidual_BGS(const CGeometry *geometry, const CConfig *config)
Communicate the value of the max residual and RMS residual.
Definition CSolver.cpp:2220
virtual su2double GetCD_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2273
virtual su2double GetCSkinFriction(unsigned short val_marker, unsigned long val_vertex, unsigned short val_dim) const
A virtual member.
Definition CSolver.hpp:3039
unsigned long nPoint
Number of points of the computational grid.
Definition CSolver.hpp:91
virtual void SetTotal_MaxHeatFlux(su2double val_Total_MaxHeat)
A virtual member.
Definition CSolver.hpp:1808
virtual su2double GetInflow_MassFlow(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2179
virtual su2double GetAveragePressure(unsigned short valMarker, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3918
virtual su2double GetSurface_CFy_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1983
virtual void Set_OldSolution()
Set the old solution variables to the current solution value for Runge-Kutta iteration....
Definition CSolver.hpp:619
virtual su2double GetDensityOut(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3974
virtual void LoadRestart_FSI(CGeometry *geometry, CConfig *config, int val_iter)
A virtual member.
Definition CSolver.hpp:3532
bool rotate_periodic
Flag that controls whether the periodic solution needs to be rotated for the solver.
Definition CSolver.hpp:148
virtual su2double GetTotal_OFVolFrac() const
A virtual member.
Definition CSolver.hpp:2375
virtual su2double GetTotal_Sens_Density() const
A virtual member.
Definition CSolver.hpp:3194
su2double GetMax_CFL_Local(void) const
Get the value of the maximum local CFL number.
Definition CSolver.hpp:389
virtual void GeneralizedAlpha_UpdateDisp(const CGeometry *geometry, const CConfig *config)
A virtual member.
Definition CSolver.hpp:1560
virtual su2double GetTotal_CNearFieldOF() const
A virtual member.
Definition CSolver.hpp:2357
su2double * Res_Visc_i
Auxiliary vector for storing the viscous residual at point i.
Definition CSolver.hpp:125
virtual su2double GetAllBound_CL_Visc() const
A virtual member.
Definition CSolver.hpp:2684
virtual vector< su2double > GetTurboPrimitive(unsigned short iBlade, unsigned short iSpan, bool Inlet)
Get Primal variables for turbo performance computation iteration can be executed by multiple threads.
Definition CSolver.hpp:3864
void SetResLinSolver(su2double val_reslinsolver)
Set the final linear solver residual.
Definition CSolver.hpp:322
virtual void PredictStruct_Displacement(CGeometry *geometry, const CConfig *config)
A virtual member.
Definition CSolver.hpp:3431
void ComputeResidual_Multizone(const CGeometry *geometry, const CConfig *config)
Set the value of the max residual and RMS residual.
Definition CSolver.cpp:4422
virtual su2double GetTotal_CoPx() const
A virtual member.
Definition CSolver.hpp:2570
su2double * GetPeriodicProjection(unsigned long iPoint)
Reconstruction increment bounds for a periodic receive point, nullptr for other points.
Definition CSolver.hpp:4249
virtual void SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration)
A virtual member.
Definition CSolver.hpp:641
virtual su2double GetAllBound_CD_Visc() const
A virtual member.
Definition CSolver.hpp:2690
virtual void SetSensitivity(CGeometry *geometry, CConfig *config, CSolver *target_solver=nullptr)
A virtual member. Extract and set the geometrical sensitivity.
Definition CSolver.hpp:3669
vector< su2double > Residual_Max
Vector with the maximal residual for each variable.
Definition CSolver.hpp:99
void SetImplicitPeriodic(bool val_implicit_periodic)
Routine that sets the flag controlling implicit treatment for periodic BCs.
Definition CSolver.hpp:4231
virtual ~CSolver(void)
Destructor of the class.
Definition CSolver.cpp:126
virtual void SetCSensitivity(unsigned short val_marker, unsigned long val_vertex, su2double val_sensitivity)
A virtual member.
Definition CSolver.hpp:1682
virtual su2double GetUTau(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:3100
virtual su2double GetAllBound_CEff_Mnt() const
A virtual member.
Definition CSolver.hpp:2780
vector< su2activematrix > VertexTractionAdjoint
Definition CSolver.hpp:156
virtual void SetTotal_Adiab_Eff(su2double val_Total_Adiab_Eff)
A virtual member.
Definition CSolver.hpp:1754
virtual su2double GetSurface_CMz_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2081
virtual su2double GetAllBound_CD_Inv() const
A virtual member.
Definition CSolver.hpp:2612
int rank
MPI Rank.
Definition CSolver.hpp:75
void SavelibROM(CGeometry *geometry, CConfig *config, bool converged)
Save snapshot or POD data using libROM.
Definition CSolver.cpp:4519
virtual su2double GetStrainMag_Max(void) const
A virtual member.
Definition CSolver.hpp:3120
virtual void Pressure_Forces(const CGeometry *geometry, const CConfig *config)
A virtual member.
Definition CSolver.hpp:1586
virtual void SetPressureIn(su2double value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4046
virtual const su2activevector * GetEdgeMassFluxes() const
A virtual member.
Definition CSolver.hpp:3114
virtual su2double GetSurface_CFx_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1976
virtual su2double GetTotal_Sens_DVFEA(unsigned short iDVFEA) const
A virtual member.
Definition CSolver.hpp:3309
virtual void SetCPressureTarget(unsigned short val_marker, unsigned long val_vertex, su2double val_pressure)
A virtual member.
Definition CSolver.hpp:2863
virtual void Momentum_Forces(const CGeometry *geometry, const CConfig *config)
A virtual member.
Definition CSolver.hpp:1593
virtual void BC_Normal_Displacement(CGeometry *geometry, CNumerics *numerics, const CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:896
virtual su2double GetTotal_CFy() const
A virtual member.
Definition CSolver.hpp:2594
virtual void GeneralizedAlpha_Iteration(const CGeometry *geometry, CNumerics **numerics, const CConfig *config)
A virtual member.
Definition CSolver.hpp:1550
void SetSolution_Gradient_LS(CGeometry *geometry, const CConfig *config, short idxVel, bool reconstruction=false)
Compute the Least Squares gradient of the solution.
Definition CSolver.cpp:2358
virtual void BC_Clamped(CGeometry *geometry, const CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:855
virtual void SetFSI_Residual(su2double val_FSI_residual)
A virtual member.
Definition CSolver.hpp:3394
virtual su2double GetTotal_CMy() const
A virtual member.
Definition CSolver.hpp:2558
virtual su2double GetSurface_CMz(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1941
virtual su2double GetEddyViscWall(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:3108
virtual void BC_ActDisk_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:993
virtual void Set_NewSolution()
Set the new solution variables to the current solution value for classical RK.
Definition CSolver.hpp:624
unsigned short MGLevel
Multigrid level of this solver object.
Definition CSolver.hpp:78
virtual su2double GetAllBound_CoPy_Visc() const
A virtual member.
Definition CSolver.hpp:2732
su2double * Res_Visc
Auxiliary nVar vector for storing the viscous residual.
Definition CSolver.hpp:122
virtual su2double GetVal_Rho(unsigned short iVal) const
A virtual member.
Definition CSolver.hpp:3327
virtual void Viscous_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep)
A virtual member.
Definition CSolver.hpp:1641
unsigned short nVar
Number of variables of the problem.
Definition CSolver.hpp:85
virtual su2double GetSurface_CFy(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1913
virtual unsigned long GetDonorGlobalIndex(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:2885
void CompletePeriodicComms(CGeometry *geometry, const CConfig *config, unsigned short val_periodic_index, unsigned short commType)
Routine to complete the set of non-blocking periodic communications launched by InitiatePeriodicComms...
Definition CSolver.cpp:1113
virtual su2double GetDensity_Inf(void) const
A virtual member.
Definition CSolver.hpp:3206
void SetSolution_Limiter(CGeometry *geometry, const CConfig *config)
Compute slope limiter.
Definition CSolver.cpp:2486
virtual su2double GetTotal_CMerit() const
A virtual member.
Definition CSolver.hpp:2321
virtual void PreprocessBC_Giles(CGeometry *geometry, CConfig *config, CNumerics *conv_numerics, unsigned short marker_flag)
It computes Fourier transformation for the needed quantities along the pitch for each span in turboma...
Definition CSolver.hpp:1131
virtual void SetTotal_Prop_Eff(su2double val_Total_Prop_Eff)
A virtual member.
Definition CSolver.hpp:1742
virtual void Compute_MassRes(const CGeometry *geometry, CNumerics **numerics, const CConfig *config)
A virtual member.
Definition CSolver.hpp:3730
virtual void RegisterVariables(CGeometry *geometry, CConfig *config, bool reset=false)
A virtual member.
Definition CSolver.hpp:3825
virtual void ImplicitNewmark_Iteration(const CGeometry *geometry, CNumerics **numerics, const CConfig *config)
A virtual member.
Definition CSolver.hpp:1522
virtual su2double GetSurface_CFz_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1990
virtual void SetTemperature_Inf(su2double t_inf)
A virtual member.
Definition CSolver.hpp:3798
virtual void SetFSI_ConvValue(unsigned short val_index, su2double val_criteria)
A virtual member.
Definition CSolver.hpp:3675
virtual su2double GetPrevious_AoA(void) const
A virtual member.
Definition CSolver.hpp:2211
virtual void SetnSlidingStates(unsigned short val_marker, unsigned long val_vertex, int value)
Set the number of outer states for fluid interface nodes.
Definition CSolver.hpp:1404
virtual unsigned short Get_iElem_iDe(unsigned long iElem) const
A virtual member.
Definition CSolver.hpp:3541
virtual su2double GetAllBound_CSF_Mnt() const
A virtual member.
Definition CSolver.hpp:2774
su2double * Vector
Auxiliary nDim vector.
Definition CSolver.hpp:118
virtual unsigned long GetnDOFsGlobal(void) const
A virtual member.
Definition CSolver.hpp:3850
virtual void SetConjugateHeatVariable(unsigned short val_marker, unsigned long val_vertex, unsigned short pos_var, su2double relaxation_factor, su2double val_var)
Set the conjugate heat variables.
Definition CSolver.hpp:1414
virtual su2double GetSurface_CEff(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1899
su2double * Res_Visc_j
Auxiliary vector for storing the viscous residual at point j.
Definition CSolver.hpp:127
void SetSolution_Gradient_GG(CGeometry *geometry, const CConfig *config, short idxVel, bool reconstruction=false)
Compute the Green-Gauss gradient of the solution.
Definition CSolver.cpp:2348
unsigned short GetnOutputVariables(void) const
Get the number of variables of the problem.
Definition CSolver.hpp:436
virtual void SetLoad_Increment(unsigned long iInc, su2double loadInc)
A virtual member.
Definition CSolver.hpp:3780
virtual su2double GetOmega_Max(void) const
A virtual member.
Definition CSolver.hpp:3126
virtual void SetRecording(CGeometry *geometry, CConfig *config)
A virtual member.
Definition CSolver.hpp:3817
virtual su2double GetTotal_Adiab_Eff() const
A virtual member.
Definition CSolver.hpp:2516
virtual StreamwisePeriodicValues GetStreamwisePeriodicValues() const
Get values for streamwise periodic flow: delta P, m_dot, inlet T, integrated heat,...
Definition CSolver.hpp:4342
virtual su2double GetSurface_CD_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2025
virtual void Set_DV_Val(su2double val_EField, unsigned short i_DV)
A virtual member.
Definition CSolver.hpp:3548
unsigned short nOutputVariables
Number of variables to write.
Definition CSolver.hpp:143
CSysVector< su2double > LinSysRes
vector to store iterative residual of implicit linear system.
Definition CSolver.hpp:200
virtual su2double GetSurface_CL(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1878
virtual void BC_Sine_Load(CGeometry *geometry, const CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:928
virtual unsigned short GetnEField(void) const
A virtual member.
Definition CSolver.hpp:3339
virtual void SetForceProj_Vector(CGeometry *geometry, CSolver **solver_container, CConfig *config)
A virtual member.
Definition CSolver.hpp:1692
virtual void BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1043
unsigned short GetnPrimVar(void) const
Get the number of variables of the problem.
Definition CSolver.hpp:421
void AdaptCFLNumber(CGeometry **geometry, CSolver ***solver_container, CConfig *config)
Adapt the CFL number based on the local under-relaxation parameters computed for each nonlinear itera...
Definition CSolver.cpp:1903
virtual su2double GetReThetaT_Inf() const
Get value of the momentum thickness Reynolds number.
Definition CSolver.hpp:3273
string SolverName
Store the name of the solver for output purposes.
Definition CSolver.hpp:160
virtual su2double GetInletAtVertex(unsigned short iMarker, unsigned long iVertex, const CGeometry *geometry, su2double *val_inlet) const
Get the set of values imposed at an inlet.
Definition CSolver.hpp:3020
void SetResToZero()
Set the RMS and MAX residual to zero.
Definition CSolver.hpp:4471
virtual void Upwind_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh)
A virtual member.
Definition CSolver.hpp:749
virtual su2double GetNuIn(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:4009
virtual void BC_Inlet_Turbo(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1179
virtual void SetAdjoint_SolutionExtra(const su2activevector &adj_sol, const CConfig *config)
Seed the adjoint of the extra solution at the output.
Definition CSolver.hpp:3647
virtual su2double GetAllBound_CD_Mnt() const
A virtual member.
Definition CSolver.hpp:2768
virtual su2double GetConjugateHeatVariable(unsigned short val_marker, unsigned long val_vertex, unsigned short pos_var) const
Set the conjugate heat variables.
Definition CSolver.hpp:1426
virtual su2double GetNuTilde_Inf(void) const
A virtual member.
Definition CSolver.hpp:3249
virtual su2double GetSurface_CL_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2018
virtual su2double GetAllBound_CMy_Visc() const
A virtual member.
Definition CSolver.hpp:2714
virtual void Friction_Forces(const CGeometry *geometry, const CConfig *config)
A virtual member.
Definition CSolver.hpp:1600
virtual su2double GetLoad_Increment() const
A virtual member.
Definition CSolver.hpp:3786
virtual void SetDualTime_Mesh(void)
Move the mesh in time.
Definition CSolver.hpp:347
virtual void Centered_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep)
A virtual member.
Definition CSolver.hpp:734
virtual su2double GetSurface_CFy_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2053
virtual su2double GetVal_Poisson(unsigned short iVal) const
A virtual member.
Definition CSolver.hpp:3321
su2double Max_Delta_Time
Maximum value of the delta time for all the control volumes.
Definition CSolver.hpp:93
virtual su2double GetAllBound_CoPz_Mnt() const
A virtual member.
Definition CSolver.hpp:2815
virtual su2double GetRes_FEM(unsigned short val_var) const
Get the residual for FEM structural analysis.
Definition CSolver.hpp:487
virtual const su2double * GetConstants() const
A virtual member.
Definition CSolver.hpp:3374
virtual void BC_HeatTransfer_Wall(const CGeometry *geometry, const CConfig *config, const unsigned short val_marker)
Impose a heat flux by prescribing a heat transfer coefficient and a temperature at infinity.
Definition CSolver.hpp:1056
void RegisterVertexTractions(CGeometry *geometry, const CConfig *config)
Register the vertex tractions as output.
Definition CSolver.cpp:4317
virtual su2double GetMinimum_Volume() const
Get minimun volume in the mesh.
Definition CSolver.hpp:4323
void SetUpTypicalSectionWingModel(vector< vector< su2double > > &PHI, vector< su2double > &w, CConfig *config)
Sets up the generalized eigenvectors and eigenvalues needed to solve the aeroelastic equations.
Definition CSolver.cpp:2617
virtual su2double GetBuffetSensor(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:3084
virtual su2double GetAllBound_CFz_Visc() const
A virtual member.
Definition CSolver.hpp:2756
virtual su2double GetAllBound_CFz_Mnt() const
A virtual member.
Definition CSolver.hpp:2833
virtual void BC_ActDisk_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:977
virtual su2double GetSurface_CEff_Mnt(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2116
virtual void SetPrimitive_Gradient_GG(CGeometry *geometry, const CConfig *config, bool reconstruction=false)
A virtual member.
Definition CSolver.hpp:1618
su2double Old_Func
Old value of the nonlinear residual indicator.
Definition CSolver.hpp:83
virtual void SetTotal_NetThrust(su2double val_Total_NetThrust)
A virtual member.
Definition CSolver.hpp:1712
virtual const su2double * GetAverageTurboVelocity(unsigned short valMarker, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3925
@ OMP_MIN_SIZE
Definition CSolver.hpp:73
virtual su2double GetTotal_CFEA() const
A virtual member.
Definition CSolver.hpp:2351
virtual su2double GetAllBound_CoPx_Mnt() const
A virtual member.
Definition CSolver.hpp:2803
virtual void BC_Fluid_Interface(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config)
Impose the interface state across sliding meshes.
Definition CSolver.hpp:962
virtual void MultigridProjectEulerWall(CGeometry *, const CConfig *, bool)
Enforce Euler wall BC on a restricted or prolongated multigrid solution by projecting the momentum to...
Definition CSolver.hpp:846
virtual su2double GetTotal_Prop_Eff() const
A virtual member.
Definition CSolver.hpp:2504
virtual void BC_Supersonic_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1210
void SetVertexTractionsAdjoint(CGeometry *geometry, const CConfig *config)
Set the adjoints of the vertex tractions to the AD structure.
Definition CSolver.cpp:4349
virtual su2double GetAllBound_CEff_Inv() const
A virtual member.
Definition CSolver.hpp:2624
virtual su2double GetTotal_Buffet_Metric() const
A virtual member.
Definition CSolver.hpp:2839
virtual su2double GetFSI_ConvValue(unsigned short val_index) const
A virtual member.
Definition CSolver.hpp:3682
virtual unsigned long RegisterSolutionExtra(bool input, const CConfig *config)
Register In- or Output.
Definition CSolver.hpp:3640
virtual void Compute_NodalStressRes(CGeometry *geometry, CNumerics **numerics, const CConfig *config)
A virtual member.
Definition CSolver.hpp:3740
virtual su2double GetAverageNu(unsigned short valMarker, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3932
virtual const su2double * GetTurboVelocityIn(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3967
virtual su2double GetSurface_CL_Mnt(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2095
const su2double * GetPoint_Max_Coord(unsigned short val_var) const
Get the location of the maximal residual, this is useful for the convergence history.
Definition CSolver.hpp:501
const su2double * GetPoint_Max_Coord_BGS(unsigned short val_var) const
Get the location of the maximal residual, this is useful for the convergence history.
Definition CSolver.hpp:515
virtual su2double GetTotal_Sens_EField(unsigned short iEField) const
A virtual member.
Definition CSolver.hpp:3303
virtual const su2double * GetTurboVelocityOut(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3988
virtual su2double Compute_LoadCoefficient(su2double CurrentTime, su2double RampTime, const CConfig *config)
A virtual member.
Definition CSolver.hpp:3690
void SetAuxVar_Gradient_GG(CGeometry *geometry, const CConfig *config)
Compute the Green-Gauss gradient of the auxiliary variable.
Definition CSolver.cpp:2326
virtual su2double GetTotal_Poly_Eff() const
A virtual member.
Definition CSolver.hpp:2522
virtual su2double GetPsiE_Inf(void) const
A virtual member.
Definition CSolver.hpp:3138
virtual su2double GetTotal_MFR() const
A virtual member.
Definition CSolver.hpp:2498
virtual void ApplyGradientSmoothingDV(CGeometry *geometry, CNumerics *numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config, su2double **Gradient)
All steps required for smoothing the whole system on DV level in an iterative way.
Definition CSolver.hpp:4196
virtual su2double GetTotal_Sens_Rho_DL(unsigned short iVal) const
A virtual member.
Definition CSolver.hpp:3297
virtual su2double GetCL_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1871
virtual void BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1163
virtual void PreprocessAverage(CSolver **solver, CGeometry *geometry, CConfig *config, unsigned short marker_flag)
virtual member.
Definition CSolver.hpp:3873
virtual void BC_ConjugateHeat_Interface(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1305
su2double GetRes_BGS(unsigned short val_var) const
Get the residual for BGS subiterations.
Definition CSolver.hpp:473
virtual su2double GetAverageOmega(unsigned short valMarker, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3946
virtual void BC_TurboRiemann(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1117
virtual void Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, CNumerics **numerics, unsigned short iMesh, unsigned long Iteration, unsigned short RunTime_EqSystem, bool Output)
A virtual member overloaded.
Definition CSolver.hpp:782
const string & GetSolverName() const
Retrieve the solver name for output purposes.
Definition CSolver.hpp:4259
su2activematrix * GetPeriodicProjections(const CGeometry &geometry, const CConfig &config)
Storage for the limiters with rotational periodicity: the min and max, over the edges of the periodic...
Definition CSolver.cpp:351
virtual su2double GetTotal_Sens_AoA() const
A virtual member.
Definition CSolver.hpp:3166
virtual void SetTotal_OFRefNode(su2double val_ofrefnode)
A virtual member.
Definition CSolver.hpp:2440
virtual void Compute_BodyForces(CGeometry *geometry, CNumerics **numerics, const CConfig *config)
A virtual member.
Definition CSolver.hpp:3750
virtual su2double GetSurface_CMz_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2011
su2double * Solution
Auxiliary nVar vector.
Definition CSolver.hpp:115
virtual void SetPrimitive_Gradient_LS(CGeometry *geometry, const CConfig *config, bool reconstruction=false)
A virtual member.
Definition CSolver.hpp:1628
virtual su2double GetCPressure(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:2847
virtual void Viscous_Sensitivity(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config)
A virtual member.
Definition CSolver.hpp:1841
virtual su2double * GetVecSolDOFs(void)
A virtual member.
Definition CSolver.hpp:3845
virtual void SetAdjoint_Output(CGeometry *geometry, CConfig *config)
A virtual member.
Definition CSolver.hpp:3623
virtual su2double GetSurface_CSF(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1892
virtual void GatherInOutAverageValues(CConfig *config, CGeometry *geometry)
virtual member.
Definition CSolver.hpp:3895
unsigned long nPointDomain
Number of points of the computational grid.
Definition CSolver.hpp:92
virtual void ComputeEdgeMassFluxesRhieChow(CGeometry *geometry, CSolver **solver_container, CConfig *config)
A virtual member.
Definition CSolver.hpp:797
virtual void BC_Inlet_MixingPlane(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1194
virtual su2double GetAllBound_CMy_Mnt() const
A virtual member.
Definition CSolver.hpp:2791
virtual su2double GetTotal_CMz() const
A virtual member.
Definition CSolver.hpp:2564
void SetResidual_RMS(const CGeometry *geometry, const CConfig *config, bool force=false)
Set the value of the max residual and RMS residual.
Definition CSolver.cpp:2149
virtual void SetTotal_CFEA(su2double val_cfea)
A virtual member.
Definition CSolver.hpp:2428
virtual su2double GetAllBound_CL_Inv() const
A virtual member.
Definition CSolver.hpp:2606
virtual unsigned short GetnDVFEA(void) const
A virtual member.
Definition CSolver.hpp:3345
virtual su2double GetTotal_OFCompliance() const
A virtual member.
Definition CSolver.hpp:2386
bool implicit_periodic
Flag that controls whether the implicit system should be treated by the periodic BC comms.
Definition CSolver.hpp:149
virtual void SetHeatFluxTarget(unsigned short val_marker, unsigned long val_vertex, su2double val_heat)
A virtual member.
Definition CSolver.hpp:3074
virtual su2double GetVal_EField(unsigned short iVal) const
A virtual member.
Definition CSolver.hpp:3351
su2double * Solution_j
Auxiliary nVar vector for storing the solution at point j.
Definition CSolver.hpp:117
virtual su2double GetSurface_HF_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2259
virtual su2double GetVal_Rho_DL(unsigned short iVal) const
A virtual member.
Definition CSolver.hpp:3333
su2double * Solution_i
Auxiliary nVar vector for storing the solution at point i.
Definition CSolver.hpp:116
virtual void SetMomCoeff(CGeometry *geometry, CSolver **solver_container, CConfig *config, bool periodic, unsigned short iMesh)
A virtual member.
Definition CSolver.hpp:4352
void SetCFL_Local_Stats(su2double val_cfl)
Set min/max/avg local CFL summary statistics.
Definition CSolver.hpp:407
virtual su2double GetVal_Young(unsigned short iVal) const
A virtual member.
Definition CSolver.hpp:3315
su2double Avg_CFL_Local
Average value of the CFL across all the control volumes.
Definition CSolver.hpp:97
su2double ResLinSolver
Final linear solver residual.
Definition CSolver.hpp:80
virtual void BC_Custom(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1242
virtual su2double GetVal_DVFEA(unsigned short iVal) const
A virtual member.
Definition CSolver.hpp:3357
void LoadInletProfile(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, unsigned short val_kind_solver, unsigned short val_kind_marker) const
Load a inlet profile data from file into a particular solver.
Definition CSolver.cpp:3807
virtual void SetVelocity_Inf(unsigned short val_dim, su2double val_velocity)
A virtual member.
Definition CSolver.hpp:3811
virtual su2double GetAllBound_CSF_Visc() const
A virtual member.
Definition CSolver.hpp:2696
virtual su2double Get_DV_Val(unsigned short i_DV) const
A virtual member.
Definition CSolver.hpp:3555
unsigned long GetPoint_Max_BGS(unsigned short val_var) const
Get the maximal residual, this is useful for the convergence history.
Definition CSolver.hpp:508
virtual void SetDonorGlobalIndex(unsigned short val_marker, unsigned long val_vertex, unsigned long val_index)
A virtual member.
Definition CSolver.hpp:2896
virtual su2double * GetVelocity_Inf(void)
A virtual member.
Definition CSolver.hpp:3237
void InitiateComms(CGeometry *geometry, const CConfig *config, MPI_QUANTITIES commType)
Routine to load a solver quantity into the data structures for MPI point-to-point communication and t...
Definition CSolver.cpp:1563
void Update_Cross_Term(CConfig *config, su2passivematrix &cross_term)
Update a given cross-term with relaxation and the running total (External).
Definition CSolver.cpp:2446
su2activevector iPoint_UndLapl
Auxiliary variable for the undivided Laplacians.
Definition CSolver.hpp:137
virtual su2double GetAverageDensity(unsigned short valMarker, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3904
virtual void SetDensityOut(su2double value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4064
virtual su2double GetTke_Inf(void) const
A virtual member.
Definition CSolver.hpp:3255
virtual bool GetEnd_AoA_FD(void) const
A virtual member.
Definition CSolver.hpp:2199
vector< su2double > Residual_Max_BGS
Vector with the maximal residual for each variable for BGS subiterations.
Definition CSolver.hpp:101
virtual su2double GetAllBound_CL_Mnt() const
A virtual member.
Definition CSolver.hpp:2762
virtual su2double GetTotal_CpDiff() const
A virtual member.
Definition CSolver.hpp:2339
virtual void ImplicitNewmark_Update(const CGeometry *geometry, const CConfig *config)
A virtual member.
Definition CSolver.hpp:1532
su2double GetRes_Max(unsigned short val_var) const
Get the maximal residual, this is useful for the convergence history.
Definition CSolver.hpp:466
virtual void SetResidual_DualTime(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep, unsigned short iMesh, unsigned short RunTime_EqSystem)
A virtual member.
Definition CSolver.hpp:447
virtual CVariable * GetBaseClassPointerToNodes()=0
Pure virtual function, all derived solvers MUST implement a method returning their "nodes".
su2double Total_ComboObj
Total 'combo' objective for all monitored boundaries.
Definition CSolver.hpp:108
virtual su2double GetSurface_CFz_Mnt(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2137
int Restart_ExtIter
Auxiliary structure for holding the external iteration offset from a restart.
Definition CSolver.hpp:141
void GetCommCountAndType(const CConfig *config, MPI_QUANTITIES commType, unsigned short &COUNT_PER_POINT, COMM_TYPE &MPI_TYPE) const
Helper function to define the type and number of variables per point for each communication type.
Definition CSolver.cpp:1460
virtual su2double GetYPlus(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:3092
unsigned short nPrimVar
Number of primitive variables of the problem.
Definition CSolver.hpp:86
virtual su2double GetSurface_CEff_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2039
virtual su2double GetSurface_CEff_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1969
virtual void ApplyPressureVelocityCorrection(CGeometry *geometry, CSolver **solver_container, CConfig *config)
A virtual member.
Definition CSolver.hpp:805
virtual void SetTotal_ByPassProp_Eff(su2double val_Total_ByPassProp_Eff)
A virtual member.
Definition CSolver.hpp:1748
virtual void WriteSensToGeometry(CGeometry *geometry) const
A virtual member.
Definition CSolver.hpp:4225
virtual su2double GetSurface_CMy_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2004
virtual su2double GetOmega_Inf(void) const
A virtual member.
Definition CSolver.hpp:3261
virtual void UpdateFarfieldVelocity(const CConfig *config)
Updates the components of the farfield velocity vector.
Definition CSolver.hpp:2981
virtual su2double GetAoA_inc(void) const
A virtual member.
Definition CSolver.hpp:2217
virtual void ApplyGradientSmoothingVolume(CGeometry *geometry, CNumerics *numerics, const CConfig *config)
A virtual member.
Definition CSolver.hpp:4181
virtual unsigned long GetIter_Update_AoA(void) const
A virtual member.
Definition CSolver.hpp:2205
virtual void GeneralizedAlpha_UpdateSolution(const CGeometry *geometry, const CConfig *config)
A virtual member.
Definition CSolver.hpp:1569
virtual su2double GetAllBound_CFx_Visc() const
A virtual member.
Definition CSolver.hpp:2744
std::unordered_map< unsigned long, size_t > PeriodicProjIndex
Local point to compact projection row.
Definition CSolver.hpp:151
virtual su2double GetAllBound_CFy_Mnt() const
A virtual member.
Definition CSolver.hpp:2827
vector< su2double > NonLinRes_Series
Vector holding the nonlinear residual indicator series.
Definition CSolver.hpp:82
virtual void SetVolumetricHeatSource(CGeometry *geometry, CConfig *config)
A virtual member. Set the volumetric heat source.
Definition CSolver.hpp:3759
virtual su2double GetExhaust_MassFlow(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2224
virtual su2double GetTotal_OFRefNode() const
A virtual member.
Definition CSolver.hpp:2369
bool GetAdjoint(void) const
Get information whether the initialization is an adjoint solver or not.
Definition CSolver.hpp:353
virtual std::shared_ptr< CTurboOutput > GetTurboBladePerformance() const
Definition CSolver.hpp:1152
su2double Min_CFL_Local
Minimum value of the CFL across all the control volumes.
Definition CSolver.hpp:96
virtual void BC_Giles(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1145
su2double GetMin_CFL_Local(void) const
Get the value of the minimum local CFL number.
Definition CSolver.hpp:395
virtual su2double GetTotal_DC60() const
A virtual member.
Definition CSolver.hpp:2546
virtual void ADER_SpaceTimeIntegration(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config, unsigned short iMesh, unsigned short RunTime_EqSystem)
A virtual member.
Definition CSolver.hpp:682
virtual void BC_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1258
su2double GetRes_Max_BGS(unsigned short val_var) const
Get the maximal residual for BGS subiterations.
Definition CSolver.hpp:480
virtual su2double GetAllBound_CoPz_Inv() const
A virtual member.
Definition CSolver.hpp:2660
virtual void BC_DispDir(CGeometry *geometry, const CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:885
virtual su2double GetDensityIn(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3953
vector< su2double > Residual_RMS
Vector with the mean residual for each variable.
Definition CSolver.hpp:98
virtual void BC_Normal_Load(CGeometry *geometry, const CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:907
virtual su2double GetVelocity_Inf(unsigned short val_dim) const
A virtual member.
Definition CSolver.hpp:3231
virtual void Compute_StiffMatrix_NodalStressRes(CGeometry *geometry, CNumerics **numerics, const CConfig *config)
A virtual member.
Definition CSolver.hpp:3710
bool dynamic_grid
Flag that determines whether the grid is dynamic (moving or deforming + grid velocities).
Definition CSolver.hpp:153
virtual su2double GetAllBound_CMz_Visc() const
A virtual member.
Definition CSolver.hpp:2720
virtual void ReadSensFromGeometry(const CGeometry *geometry)
A virtual member.
Definition CSolver.hpp:4218
virtual su2double GetSurface_CD(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1885
virtual void SetTurboVelocityOut(const su2double *value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4082
su2double GetAvg_CFL_Local(void) const
Get the value of the average local CFL number.
Definition CSolver.hpp:401
virtual void BC_Sym_Plane(CGeometry *geometry, const CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:875
virtual su2double GetViscosity_Inf(void) const
A virtual member.
Definition CSolver.hpp:3243
virtual su2double GetTotal_CFx() const
A virtual member.
Definition CSolver.hpp:2588
unsigned short NonLinRes_Counter
Number of elements of the nonlinear residual indicator series.
Definition CSolver.hpp:81
static void MultigridRestriction(const CGeometry &geoFine, const su2activematrix &varsFine, const CGeometry &geoCoarse, su2activematrix &varsCoarse)
Interpolate variables to a coarser grid level.
Definition CSolver.hpp:4379
virtual su2double GetHeatFluxTarget(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:3066
virtual su2double GetAllBound_CMx_Visc() const
A virtual member.
Definition CSolver.hpp:2708
virtual void ComputeTurboBladePerformance(CGeometry *geometry, CConfig *config, unsigned short iBlade)
Definition CSolver.hpp:3897
virtual void Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh)
A virtual member.
Definition CSolver.hpp:1656
virtual void SetInletAtVertex(const su2double *val_inlet, unsigned short iMarker, unsigned long iVertex)
A virtual member.
Definition CSolver.hpp:3008
virtual su2double GetTotal_IDR() const
A virtual member.
Definition CSolver.hpp:2540
virtual void SetTotal_ReverseFlow(su2double val_Total_ReverseFlow)
A virtual member.
Definition CSolver.hpp:1730
virtual su2double GetSurface_CSF_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1962
virtual void ComputeSpatialJacobian(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config, unsigned short iMesh, unsigned short RunTime_EqSystem)
A virtual member.
Definition CSolver.hpp:697
virtual bool IsElementBased(void) const
A virtual member.
Definition CSolver.hpp:2398
void ComputeVertexTractions(CGeometry *geometry, const CConfig *config)
Compute the tractions at the vertices.
Definition CSolver.cpp:4265
virtual su2double GetPressure_Inf(void) const
A virtual member.
Definition CSolver.hpp:3224
virtual void BC_Euler_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:832
su2activevector jPoint_UndLapl
Auxiliary variable for the undivided Laplacians.
Definition CSolver.hpp:138
virtual su2double GetAllBound_CMx_Mnt() const
A virtual member.
Definition CSolver.hpp:2786
virtual void SetInletPtotal(unsigned short val_marker, unsigned long val_vertex, su2double val_ptotal)
A virtual member.
Definition CSolver.hpp:2962
virtual void SetRelaxCoeff(su2double val_relaxcoeff_history)
A virtual member.
Definition CSolver.hpp:3387
virtual void SetPressureOut(su2double value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4073
virtual void Impose_Fixed_Values(const CGeometry *geometry, const CConfig *config)
Virtual function to apply something like a strong BC to the whole domain.
Definition CSolver.hpp:1333
virtual void BC_Engine_Exhaust(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1290
virtual su2double GetSurface_CMz_Mnt(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2158
unsigned short GetnSecondaryVar(void) const
Get the number of variables of the problem.
Definition CSolver.hpp:431
virtual void Evaluate_ObjFunc(const CConfig *config, CSolver **solver)
Compute weighted-sum "combo" objective output.
Definition CSolver.hpp:821
void SetBaseClassPointerToNodes()
Call this method to set "base_nodes" after the "nodes" variable of the derived solver is instantiated...
Definition CSolver.hpp:173
su2double New_Func
Current value of the nonlinear residual indicator.
Definition CSolver.hpp:84
virtual void SetTotal_SolidCD(su2double val_Total_SolidCD)
A virtual member.
Definition CSolver.hpp:1724
CVariable * GetNodes()
Allow outside access to the nodes of the solver, containing conservatives, primitives,...
Definition CSolver.hpp:229
su2double * Residual
Auxiliary nVar vector.
Definition CSolver.hpp:112
virtual su2double GetInflow_Pressure(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2231
virtual void ExplicitEuler_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config)
A virtual member.
Definition CSolver.hpp:1460
virtual su2double GetMixingState(unsigned short val_marker, unsigned long val_span, unsigned short val_state) const
Get a component of the donor-side averaged state at a mixing plane interface.
Definition CSolver.hpp:1341
virtual su2double GetAeroCoeffsReferenceForce() const
Get the reference force used to compute CL, CD, etc.
Definition CSolver.hpp:2451
virtual su2double GetFSI_Residual(void) const
A virtual member.
Definition CSolver.hpp:3412
virtual bool GetStart_AoA_FD(void) const
A virtual member.
Definition CSolver.hpp:2193
void SetVerificationSolution(unsigned short nDim, unsigned short nVar, CConfig *config)
Allocate the memory for the verification solution, if necessary.
Definition CSolver.cpp:4384
virtual void ComputeAitken_Coefficient(CGeometry *geometry, const CConfig *config, unsigned long iOuterIter)
A virtual member.
Definition CSolver.hpp:3440
virtual void RecordTapeAndCalculateOriginalGradient(CGeometry *geometry, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config, su2double **Gradient)
A virtual member.
Definition CSolver.hpp:4208
virtual su2double GetFlameThickness() const
A virtual member.
Definition CSolver.hpp:597
su2double GetMin_Delta_Time(void) const
Get the value of the minimum delta time.
Definition CSolver.hpp:383
void ResidualReductions_FromAllThreads(const CGeometry *geometry, const CConfig *config, const su2double *resRMS, const su2double *resMax, const unsigned long *idxMax)
"Add" local residual variables of all threads to compute global residual variables.
Definition CSolver.hpp:4452
virtual void SetTotal_CpDiff(su2double val_pressure)
A virtual member.
Definition CSolver.hpp:2416
virtual su2double GetMaximum_Volume() const
Get maximum volume in the mesh.
Definition CSolver.hpp:4329
virtual void Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output)
A virtual member.
Definition CSolver.hpp:764
virtual void ExtractAdjoint_Variables(CGeometry *geometry, CConfig *config)
A virtual member.
Definition CSolver.hpp:3834
virtual void SetInletTtotal(unsigned short val_marker, unsigned long val_vertex, su2double val_ttotal)
A virtual member.
Definition CSolver.hpp:2952
virtual void Source_Template(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short iMesh)
A virtual member.
Definition CSolver.hpp:1670
su2double ** Jacobian_ij
Auxiliary matrices for storing point to point Jacobians.
Definition CSolver.hpp:131
virtual su2double GetTotal_OFRefGeom() const
A virtual member.
Definition CSolver.hpp:2363
virtual void InitTurboContainers(CGeometry *geometry, CConfig **config, unsigned short iZone)
A virtual member.
Definition CSolver.hpp:3857
virtual su2double GetAllBound_CoPy_Mnt() const
A virtual member.
Definition CSolver.hpp:2809
virtual su2double * GetCharacPrimVar(unsigned short val_marker, unsigned long val_vertex)
A virtual member.
Definition CSolver.hpp:2906
void CustomSourceResidual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh)
Definition CSolver.hpp:4400
unsigned short IterLinSolver
Linear solver iterations.
Definition CSolver.hpp:79
virtual su2double GetNuOut(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:4030
su2double Max_CFL_Local
Maximum value of the CFL across all the control volumes.
Definition CSolver.hpp:95
virtual su2double GetTotal_CQ() const
A virtual member.
Definition CSolver.hpp:2297
virtual void Postprocessing(CGeometry *geometry, CConfig *config, CNumerics **numerics, bool of_comp_mode=false)
A virtual member, overloaded.
Definition CSolver.hpp:720
CSysVector< su2double > OutputVariables
vector to store the extra variables to be written.
Definition CSolver.hpp:204
virtual void SetOmegaOut(su2double value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4127
virtual void ExplicitRK_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep)
A virtual member.
Definition CSolver.hpp:1437
virtual su2double GetPressureIn(unsigned short inMarkerTP, unsigned short valSpan) const
A virtual member.
Definition CSolver.hpp:3960
virtual void SetTurboVelocityIn(const su2double *value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4055
void SetUndivided_Laplacian(CGeometry *geometry, const CConfig *config)
Compute the undivided laplacian for the solution variables.
Definition CSolver.cpp:2382
su2double * Res_Conv_j
Auxiliary vector for storing the convective residual at point j.
Definition CSolver.hpp:126
vector< string > GetSolutionFields() const
Get the solution fields.
Definition CSolver.hpp:4265
virtual su2double GetAllBound_CMy_Inv() const
A virtual member.
Definition CSolver.hpp:2636
virtual void SetPressure_Inf(su2double p_inf)
A virtual member.
Definition CSolver.hpp:3792
virtual su2double GetTotal_Sens_BPress() const
Get the total back pressure sensitivity coefficient.
Definition CSolver.hpp:3188
virtual void SetInitialCondition(CGeometry **geometry, CSolver ***solver_container, CConfig *config, unsigned long TimeIter)
A virtual member.
Definition CSolver.hpp:3421
virtual su2double GetSurface_CFy_Mnt(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2130
su2double ** Jacobian_ji
Auxiliary matrices for storing point to point Jacobians.
Definition CSolver.hpp:132
virtual su2double GetSurface_CSF_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2032
virtual su2double GetAllBound_CoPx_Inv() const
A virtual member.
Definition CSolver.hpp:2648
virtual su2double GetAllBound_CMx_Inv() const
A virtual member.
Definition CSolver.hpp:2630
virtual void SetDensity_Inf(su2double rho_inf)
A virtual member.
Definition CSolver.hpp:3804
virtual su2double GetForceCoeff(void) const
A virtual member.
Definition CSolver.hpp:3400
void GetPeriodicCommCountAndType(const CConfig *config, unsigned short commType, unsigned short &COUNT_PER_POINT, COMM_TYPE &MPI_TYPE, unsigned short &ICOUNT, unsigned short &JCOUNT) const
Helper function to define the type and number of variables per point for each communication type.
Definition CSolver.cpp:196
virtual void DeformMesh(CGeometry *geometry, CNumerics **numerics, CConfig *config)
A virtual member.
Definition CSolver.hpp:4162
virtual su2double GetSurface_CMy_Mnt(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2151
virtual void SetTotal_CQ(su2double val_Total_CQ)
A virtual member.
Definition CSolver.hpp:1796
void Aeroelastic(CSurfaceMovement *surface_movement, CGeometry *geometry, CConfig *config, unsigned long TimeIter)
Prepares and solves the aeroelastic equations.
Definition CSolver.cpp:2536
vector< unsigned long > Point_Max
Vector with the maximal residual for each variable.
Definition CSolver.hpp:102
virtual su2double GetAllBound_CFy_Visc() const
A virtual member.
Definition CSolver.hpp:2750
virtual su2double GetSurface_CMy_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2074
su2double * Vector_i
Auxiliary nDim vector to do the reconstruction of the variables at point i.
Definition CSolver.hpp:119
virtual void SetKineOut(su2double value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4118
virtual void SetKineIn(su2double value, unsigned short inMarkerTP, unsigned short valSpan)
A virtual member.
Definition CSolver.hpp:4091
virtual void SetTotal_OFRefGeom(su2double val_ofrefgeom)
A virtual member.
Definition CSolver.hpp:2434
virtual void ImplicitNewmark_Relaxation(const CGeometry *geometry, const CConfig *config)
A virtual member.
Definition CSolver.hpp:1541
virtual su2double GetTotal_Sens_Mach() const
A virtual member.
Definition CSolver.hpp:3159
void AddRes_Max(unsigned short val_var, su2double val_residual, unsigned long val_point, const su2double *val_coord)
Adds the maximal residual, this is useful for the convergence history.
Definition CSolver.hpp:4487
virtual void SetFreeStream_TurboSolution(CConfig *config)
A virtual member.
Definition CSolver.hpp:4144
virtual su2double GetSurface_CFx(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1906
su2double * Vector_j
Auxiliary nDim vector to do the reconstruction of the variables at point j.
Definition CSolver.hpp:120
void ResetCFLAdapt()
Reset the local CFL adaption variables.
Definition CSolver.cpp:1894
virtual su2double GetCEff_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2252
virtual su2double GetSurface_CFx_Mnt(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2123
virtual void SetInlet_TurbVar(unsigned short val_marker, unsigned long val_vertex, unsigned short val_dim, su2double val_turb_var)
A virtual member.
Definition CSolver.hpp:2990
std::shared_ptr< CTurboOutput > TurbomachineryPerformance
turbo performance calculator.
Definition CSolver.hpp:158
unsigned short nVarGrad
Number of variables for deallocating the LS Cvector.
Definition CSolver.hpp:89
virtual su2double GetTotal_Sens_Nu(unsigned short iVal) const
A virtual member.
Definition CSolver.hpp:3285
unsigned long nMarker
Total number of markers using the grid information.
Definition CSolver.hpp:145
virtual void BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1027
bool adjoint
Boolean to determine whether solver is initialized as a direct or an adjoint solver.
Definition CSolver.hpp:77
virtual void SetCharacPrimVar(unsigned short val_marker, unsigned long val_vertex, unsigned short val_var, su2double val_value)
A virtual member.
Definition CSolver.hpp:2874
virtual su2double GetCSensitivity(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:3365
virtual su2double GetSurface_CMx_Inv(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:1997
virtual void BC_Far_Field(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:1069
void SetTotal_Custom_ObjFunc(su2double value)
Sets the value of the custom objective function.
Definition CSolver.hpp:1857
unsigned short nSecondaryVar
Number of primitive variables of the problem.
Definition CSolver.hpp:88
virtual su2double GetCSF_Visc(unsigned short val_marker) const
A virtual member.
Definition CSolver.hpp:2165
virtual su2double GetTotal_ByPassProp_Eff() const
A virtual member.
Definition CSolver.hpp:2510
virtual su2double GetWallShearStress(unsigned short val_marker, unsigned long val_vertex) const
A virtual member.
Definition CSolver.hpp:3049
su2activematrix PeriodicProj
Min/max reconstruction increments at periodic receive points (for limiters).
Definition CSolver.hpp:150
virtual void BC_Damper(CGeometry *geometry, const CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:938
virtual void Set_Heatflux_Areas(CGeometry *geometry, CConfig *config)
A virtual member.
Definition CSolver.hpp:813
virtual void BC_Clamped_Post(CGeometry *geometry, const CConfig *config, unsigned short val_marker)
A virtual member.
Definition CSolver.hpp:865
virtual su2double GetTotal_CD() const
A virtual member.
Definition CSolver.hpp:2468
Class for moving the surface numerical grid.
Definition CSurfaceMovement.hpp:38
Main class for defining block-compressed-row-storage sparse matrices.
Definition CSysMatrix.hpp:256
Class for solving linear systems using classical and Krylov-subspace iterative methods.
Definition CSysSolve.hpp:86
Class for holding and manipulating vectors needed by linear solvers.
Definition CSysVector.hpp:195
Main class for defining the variables.
Definition CVariable.hpp:50
const MatrixType & GetUserDefinedSource() const
Get the entire User Define Source of the problem.
Definition CVariable.hpp:536
void Set_OldSolution()
Set old variables to the value of the current variables.
Definition CVariable.cpp:104
Class for holding verification PDE solutions, e.g., phi = phi(x,y,z,t), used for initial conditions,...
Definition CVerificationSolution.hpp:40
Class for moving the volumetric numerical grid.
Definition CVolumetricMovement.hpp:37
#define FORCEINLINE
Definition code_config.hpp:44
passivedouble su2double
Definition code_config.hpp:181
T DotProduct(Int nDim, const T *a, const T *b)
Definition geometry_toolbox.hpp:65
void StartNoSharedReading()
Begin a hybrid parallel adjoint evaluation mode that assumes an inherently safe reverse path.
Definition ad_structure.hpp:404
void EndNoSharedReading()
End the "no shared reading" adjoint evaluation mode.
Definition ad_structure.hpp:409
#define BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS
Definition omp_structure.hpp:187
constexpr int omp_get_num_threads()
Number of threads in current team.
Definition omp_structure.hpp:75
#define END_SU2_OMP_FOR
Definition omp_structure.hpp:158
constexpr size_t roundUpDiv(size_t numerator, size_t denominator)
Integer division rounding up.
Definition omp_structure.hpp:204
constexpr int omp_get_max_threads()
Maximum number of threads available.
Definition omp_structure.hpp:70
#define END_SU2_OMP_SAFE_GLOBAL_ACCESS
Definition omp_structure.hpp:192
#define SU2_OMP_BARRIER
Definition omp_structure.hpp:142
#define SU2_OMP_CRITICAL
Definition omp_structure.hpp:143
#define END_SU2_OMP_CRITICAL
Definition omp_structure.hpp:156
#define SU2_OMP_FOR_STAT(CHUNK)
Definition omp_structure.hpp:151
COMM_TYPE
Definition option_structure.hpp:116
MPI_QUANTITIES
Vertex-based quantities exchanged in MPI point-to-point communications.
Definition option_structure.hpp:2873
LINEAR_SOLVER_MODE
Type of operation for the linear system solver, changes the source of solver options.
Definition option_structure.hpp:3027
@ STANDARD
Operate in standard mode.
static FORCEINLINE Type umusclProjection(const Type &grad_proj, const Type &delta, const Type &kappa)
Definition CLimiterDetails.hpp:85
Container to hold Variables for streamwise Periodic flow as they are often used together in places.
Definition option_structure.hpp:3003