31#include "../../../Common/include/geometry/CGeometry.hpp"
32#include "../../../Common/include/parallelization/mpi_structure.hpp"
33#include "../integration/CIntegration.hpp"
34#include "../interfaces/CInterface.hpp"
35#include "../solvers/CSolver.hpp"
76 vector<vector<unique_ptr<CInterpolator>>>
91 CDriver(
char* confFile,
unsigned short val_nZone,
SU2_Comm MPICommunicator,
bool dummy_geo);
195 unsigned short val_iInst);
208 vector<vector<unique_ptr<CInterpolator>>>& interpolation);
222 template <
class FlowIndices>
229 template <
class FlowIndices>
235 template <
class FlowIndices>
248 unsigned short val_iInst);
345 virtual void RelaxationTractions(
unsigned short donorZone,
unsigned short targetZone,
unsigned long iOuterIter) {}
361 template <
class Container,
bool Old = false>
364 for (
auto iSol = 0u, offset = 0u; iSol <
MAX_SOLS; ++iSol) {
366 if (!solver || solver->GetAdjoint() != adjoint)
continue;
367 for (
auto iPoint = 0ul; iPoint < nPoint; ++iPoint)
368 for (
auto iVar = 0ul; iVar < solver->GetnVar(); ++iVar)
372 solver->GetNodes()->SetSolution_Old(iPoint, iVar, solution(iPoint, offset + iVar));
374 offset += solver->GetnVar();
381 template <
class Container>
383 SetAllSolutions<Container, true>(
iZone, adjoint, solution);
392 template <
class Container>
395 for (
auto iSol = 0u, offset = 0u; iSol <
MAX_SOLS; ++iSol) {
397 if (!solver || solver->GetAdjoint() != adjoint)
continue;
399 for (
auto iPoint = 0ul; iPoint < nPoint; ++iPoint)
400 for (
auto iVar = 0ul; iVar < solver->GetnVar(); ++iVar)
402 offset += solver->GetnVar();
413 unsigned short nVar = 0;
414 for (
auto iSol = 0u; iSol <
MAX_SOLS; iSol++) {
416 if (solver && (solver->GetAdjoint() == adjoint)) nVar += solver->
GetnVar();
593 void TransferData(
unsigned short donorZone,
unsigned short targetZone);
619 void Output(
unsigned long InnerIter)
override;
624 bool Monitor(
unsigned long ExtIter)
override;
646 unsigned short nInstHB;
654 void SetHarmonicBalance(
unsigned short iZone);
660 void StabilizeHarmonicBalance();
666 void ComputeHBOperator();
Base class for all drivers.
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
Base class for all drivers.
Definition CDriverBase.hpp:43
CSolver ***** solver_container
Container vector with all the solutions.
Definition CDriverBase.hpp:71
COutput * driver_output
Definition of the driver output.
Definition CDriverBase.hpp:66
CConfig * driver_config
Definition of the driver configuration.
Definition CDriverBase.hpp:65
CVolumetricMovement *** grid_movement
Volume grid movement classes of the problem.
Definition CDriverBase.hpp:75
CSurfaceMovement ** surface_movement
Surface movement classes of the problem.
Definition CDriverBase.hpp:74
unsigned long TimeIter
Definition CDriverBase.hpp:56
CGeometry **** geometry_container
Geometrical definition of the problem.
Definition CDriverBase.hpp:70
unsigned short iZone
Iterator on zones.
Definition CDriverBase.hpp:59
COutput ** output_container
Pointer to the COutput class.
Definition CDriverBase.hpp:69
Parent class for driving an iteration of a single or multi-zone problem.
Definition CDriver.hpp:51
void GetAllSolutions(unsigned short iZone, bool adjoint, Container &solution) const
Get the solution of all solvers (adjoint or primal) in a zone.
Definition CDriver.hpp:393
unsigned short GetTotalNumberOfVariables(unsigned short iZone, bool adjoint) const
Sum the number of primal or adjoint variables for all solvers in a given zone.
Definition CDriver.hpp:412
void FinalizeNumerics(CNumerics *****numerics, CSolver ***solver, CGeometry **geometry, CConfig *config, unsigned short val_iInst)
Definition and allocation of all solver classes.
Definition CDriver.cpp:2332
void InitializeGeometry(CConfig *config, CGeometry **&geometry, bool dummy)
Construction of the edge-based data structure and the multi-grid structure.
Definition CDriver.cpp:591
virtual void Preprocess(unsigned long TimeIter)
Perform some pre-processing before an iteration of the physics.
Definition CDriver.hpp:434
void PreprocessDynamicMesh(CConfig *config, CGeometry **geometry, CSolver ***solver, CIteration *iteration, CVolumetricMovement *&grid_movement, CSurfaceMovement *&surface_movement) const
GridMovement_Preprocessing.
Definition CDriver.cpp:2361
virtual void TransferDisplacements(unsigned short donorZone, unsigned short targetZone)
A virtual member.
Definition CDriver.hpp:322
virtual void DynamicMeshUpdate(unsigned long TimeIter)
Perform a dynamic mesh deformation, including grid velocity computation and update of the multi-grid ...
Definition CDriver.hpp:450
bool dry_run
Flag if SU2_CFD was started as dry-run via "SU2_CFD -d <config>.cfg".
Definition CDriver.hpp:81
su2double MDOFs
Total number of DOFs in millions in the calculation (including ghost points).
Definition CDriver.hpp:64
~CDriver(void) override
Destructor of the class.
CFreeFormDefBox *** FFDBox
FFD FFDBoxes of the problem.
Definition CDriver.hpp:72
void PreprocessPythonInterface(CConfig **config, CGeometry ****geometry, CSolver *****solver)
Initialize Python interface functionalities. When using multigrid, it is important to call this after...
Definition python_wrapper_structure.cpp:32
virtual void PredictTractions(unsigned short donorZone, unsigned short targetZone)
A virtual member.
Definition CDriver.hpp:315
virtual void Output(unsigned long TimeIter)
Output the solution in solution file.
Definition CDriver.hpp:444
virtual void StartSolver()
Launch the computation for all zones and all physics.
Definition CDriver.hpp:424
void SetAllSolutionsOld(unsigned short iZone, bool adjoint, const Container &solution)
Set the "old solution" of all solvers (adjoint or primal) in a zone.
Definition CDriver.hpp:382
void InitializeIntegration(CConfig *config, CSolver **solver, CIntegration **&integration) const
Definition and allocation of all integration classes.
Definition CDriver.cpp:1223
su2double MpointsDomain
Total number of grid points in millions in the calculation (excluding ghost points).
Definition CDriver.hpp:63
CInterface *** interface_container
Definition of the interface of information and physics.
Definition CDriver.hpp:79
void FinalizeIntegration(CIntegration ***integration, CGeometry **geometry, CConfig *config, unsigned short val_iInst)
Definition and allocation of all integration classes.
Definition CDriver.cpp:1235
void PreprocessStaticMesh(const CConfig *config, CGeometry **geometry)
Initiate value for static mesh movement such as the gridVel for the ROTATING frame.
Definition CDriver.cpp:2564
CIteration *** iteration_container
Container vector with all the iteration methods.
Definition CDriver.hpp:74
su2double UsedTimeOutput
Elapsed time between Start and Stop point of the timer for tracking output phase.
Definition CDriver.hpp:54
void InitializeNumerics(CConfig *config, CGeometry **geometry, CSolver ***solver, CNumerics ****&numerics) const
Definition and allocation of all solver classes.
Definition CDriver.cpp:1404
void PrintDirectResidual(RECORDING kind_recording)
Print out the direct residuals.
Definition CDriver.cpp:2763
void PreprocessTurboVertex(CConfig **config, CGeometry ****geometry, CSolver *****solver, CInterface ***interface, CIteration ***iteration, bool dummy)
Definition CDriver.cpp:2649
unsigned long IterCount
Iteration count stored for performance benchmarking.
Definition CDriver.hpp:58
virtual void Update()
Update the dual-time solution.
Definition CDriver.hpp:455
bool mixingplane
mixing-plane simulation flag.
Definition CDriver.hpp:68
void InstantiateTurbulentNumerics(unsigned short nVar_Turb, int offset, const CConfig *config, const CSolver *turb_solver, CNumerics ****&numerics) const
Helper to instantiate turbulence numerics specialized for different flow solvers.
Definition CDriver.cpp:1247
void PreprocessInput(CConfig **&config, CConfig *&driver_config)
Read in the config and mesh files.
Definition CDriver.cpp:538
void InitializeInterface(CConfig **config, CSolver *****solver, CGeometry ****geometry, unsigned short **interface_types, CInterface ***interface, vector< vector< unique_ptr< CInterpolator > > > &interpolation)
Definition and allocation of all interface classes.
Definition CDriver.cpp:2404
void PreprocessTurbomachinery(CConfig **config, CGeometry ****geometry, CSolver *****solver, CInterface ***interface, CIteration ***iteration, bool dummy)
Initiate value for static mesh movement such as the gridVel for the ROTATING frame.
Definition CDriver.cpp:2682
su2double MDOFsDomain
Total number of DOFs in millions in the calculation (excluding ghost points).
Definition CDriver.hpp:65
void Finalize() override
Deallocation routine.
Definition CDriver.cpp:338
bool StopCalc
Stop computation flag.
Definition CDriver.hpp:67
void InstantiateTransitionNumerics(unsigned short nVar_Trans, int offset, const CConfig *config, const CSolver *trans_solver, CNumerics ****&numerics) const
Helper to instantiate transition numerics specialized for different flow solvers.
Definition CDriver.cpp:1321
void SetAllSolutions(unsigned short iZone, bool adjoint, const Container &solution)
Set the solution of all solvers (adjoint or primal) in a zone.
Definition CDriver.hpp:362
unsigned short ** interface_types
Type of coupling between the distinct (physical) zones.
Definition CDriver.hpp:80
virtual void SetInitialMesh()
Perform a mesh deformation as initial condition.
Definition CDriver.hpp:460
virtual bool Monitor(unsigned long TimeIter)
Monitor the computation.
Definition CDriver.hpp:439
void FinalizeSolver(CSolver ****solver, CGeometry **geometry, CConfig *config, unsigned short val_iInst)
Definition and allocation of all solution classes.
Definition CDriver.cpp:1208
bool fsi
FSI simulation flag.
Definition CDriver.hpp:69
CIntegration **** integration_container
Container vector with all the integration methods.
Definition CDriver.hpp:75
su2double BandwidthSum
Aggregate value of the bandwidth for writing restarts (to be average later).
Definition CDriver.hpp:56
virtual void RelaxationDisplacements(unsigned short donorZone, unsigned short targetZone, unsigned long iOuterIter)
A virtual member.
Definition CDriver.hpp:337
su2double Mpoints
Total number of grid points in millions in the calculation (including ghost points).
Definition CDriver.hpp:61
unsigned long DOFsPerPoint
Number of unknowns at each vertex, i.e., number of equations solved.
Definition CDriver.hpp:60
virtual void RelaxationTractions(unsigned short donorZone, unsigned short targetZone, unsigned long iOuterIter)
A virtual member.
Definition CDriver.hpp:345
void PreprocessOutput(CConfig **config, CConfig *driver_config, COutput **&output_container, COutput *&driver_output)
Preprocess the output container.
Definition CDriver.cpp:2610
bool fem_solver
FEM fluid solver simulation flag.
Definition CDriver.hpp:70
void InstantiateSpeciesNumerics(unsigned short nVar_Species, int offset, const CConfig *config, const CSolver *species_solver, CNumerics ****&numerics) const
Helper to instantiate species transport numerics specialized for different flow solvers.
Definition CDriver.cpp:1363
unsigned long OutputCount
Output count stored for performance benchmarking.
Definition CDriver.hpp:59
void PreprocessInlet(CSolver ***solver, CGeometry **geometry, CConfig *config) const
Preprocess the inlets via file input for all solvers.
Definition CDriver.cpp:1081
void PreprocessIteration(CConfig *config, CIteration *&iteration) const
Definition of the physics iteration class or within a single zone.
Definition CDriver.cpp:2351
virtual void PredictDisplacements(unsigned short donorZone, unsigned short targetZone)
A virtual member.
Definition CDriver.hpp:308
void InitializeSolver(CConfig *config, CGeometry **geometry, CSolver ***&solver)
Definition and allocation of all solution classes.
Definition CDriver.cpp:1049
void Run() override
A virtual member.
Definition CDriver.hpp:101
void RestartSolver(CSolver ***solver, CGeometry **geometry, CConfig *config, bool update_geo)
Restart of the solvers from the restart files.
Definition CDriver.cpp:1153
void InitializeGeometryFVM(CConfig *config, CGeometry **&geometry)
InitializeGeometryFVM.
Definition CDriver.cpp:679
void InitializeGeometryDGFEM(CConfig *config, CGeometry **&geometry)
Do the geometrical preprocessing for the DG FEM solver.
Definition CDriver.cpp:956
vector< vector< unique_ptr< CInterpolator > > > interpolator_container
Definition of the interpolation method between non-matching discretizations of the interface.
Definition CDriver.hpp:77
virtual void TransferTractions(unsigned short donorZone, unsigned short targetZone)
A virtual member.
Definition CDriver.hpp:329
void InitializeContainers()
Initialize containers.
Definition CDriver.cpp:291
Class for driving an iteration of the physics within multiple zones.
Definition CDriver.hpp:578
void Preprocess(unsigned long Iter) override
Perform some pre-processing before an iteration of the physics.
Definition CDriver.cpp:2933
~CFluidDriver(void) override
Destructor of the class.
void DynamicMeshUpdate(unsigned long TimeIter) override
Perform a dynamic mesh deformation, included grid velocity computation and the update of the multi-gr...
Definition CDriver.cpp:3049
void TransferData(unsigned short donorZone, unsigned short targetZone)
Transfer data among different zones (multiple zone).
Definition CDriver.cpp:3021
bool Monitor(unsigned long ExtIter) override
Monitor the computation.
Definition CDriver.cpp:3064
unsigned long Max_Iter
Definition CDriver.hpp:580
void Run() override
Run a single iteration of the physics within multiple zones.
Definition CDriver.cpp:2961
void StartSolver() override
Launch the computation for all zones and all physics.
Definition CDriver.cpp:2880
void Update() override
Update the dual-time solution within multiple zones.
Definition CDriver.cpp:3040
void Output(unsigned long InnerIter) override
Output the solution in solution file.
Definition CDriver.cpp:3088
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition CGeometry.hpp:75
unsigned long GetnPoint() const
Get number of points.
Definition CGeometry.hpp:587
Class for driving an iteration of Harmonic Balance (HB) method problem using multiple time zones.
Definition CDriver.hpp:644
~CHBDriver(void) override
Destructor of the class.
Definition CDriver.cpp:3120
void Update() override
Update the solution for the Harmonic Balance.
Definition CDriver.cpp:3154
void Run() override
Run a single iteration of a Harmonic Balance problem.
Definition CDriver.cpp:3131
Main class for doing the space integration, time integration, and monitoring of a system of Partial D...
Definition CIntegration.hpp:47
Main class for defining the physical transfer of information.
Definition CInterface.hpp:60
Main class for defining the interpolator, it requires a child class for each particular interpolation...
Definition CInterpolator.hpp:47
Parent class for defining a single iteration of a physics problem.
Definition CIteration.hpp:50
Class for defining the numerical methods.
Definition CNumerics.hpp:48
Class for writing the convergence history and to write solution data to file.
Definition COutput.hpp:68
Definition CSolver.hpp:71
unsigned short GetnVar(void) const
Get the number of variables of the problem.
Definition CSolver.hpp:416
CVariable * GetNodes()
Allow outside access to the nodes of the solver, containing conservatives, primitives,...
Definition CSolver.hpp:229
Class for moving the surface numerical grid.
Definition CSurfaceMovement.hpp:38
void SetSolution(unsigned long iPoint, const su2double *solution)
Set the value of the solution, all variables.
Definition CVariable.hpp:198
su2double GetSolution(unsigned long iPoint, unsigned long iVar) const
Get the solution.
Definition CVariable.hpp:248
Class for moving the volumetric numerical grid.
Definition CVolumetricMovement.hpp:37
double passivedouble
Definition code_config.hpp:129
passivedouble su2double
Definition code_config.hpp:181
void SetFarFieldAoA(passivedouble alpha)
Set the angle of attack of the farfield.
Definition python_wrapper_structure.cpp:104
passivedouble GetDensityFreeStreamND() const
Get the Freestream Density for nondimensionalization.
Definition python_wrapper_structure.cpp:61
void SetMarkerRotationRate(unsigned short iMarker, passivedouble rot_x, passivedouble rot_y, passivedouble rot_z)
Set the moving wall marker rotation rates.
Definition python_wrapper_structure.cpp:170
unsigned long GetNumberTimeIter() const
Get the number of time iterations.
Definition python_wrapper_structure.cpp:59
void SetHeatSourcePosition(passivedouble alpha, passivedouble pos_x, passivedouble pos_y, passivedouble pos_z)
Set the position of the heat source.
Definition python_wrapper_structure.cpp:81
void SetMarkerTranslationRate(unsigned short iMarker, passivedouble vel_x, passivedouble vel_y, passivedouble vel_z)
Set the moving wall marker translation rates.
Definition python_wrapper_structure.cpp:176
passivedouble GetUnsteadyTimeStep() const
Get the unsteady time step.
Definition python_wrapper_structure.cpp:71
void BoundaryConditionsUpdate()
Process the boundary conditions and update the multi-grid structure.
Definition python_wrapper_structure.cpp:143
unsigned long GetTimeIter() const
Get the current time iteration.
Definition python_wrapper_structure.cpp:69
passivedouble GetForceRef() const
Get the reference Body force for nondimensionalization.
Definition python_wrapper_structure.cpp:65
void SetRotationRate(passivedouble rot_x, passivedouble rot_y, passivedouble rot_z)
Set the dynamic mesh rotation rates.
Definition python_wrapper_structure.cpp:164
void SetInletAngle(unsigned short iMarker, passivedouble alpha)
Set the direction of the inlet.
Definition python_wrapper_structure.cpp:91
string GetSurfaceFileName() const
Get the name of the output file for the surface.
Definition python_wrapper_structure.cpp:75
void SetTranslationRate(passivedouble xDot, passivedouble yDot, passivedouble zDot)
Set the dynamic mesh translation rates.
Definition python_wrapper_structure.cpp:158
void SetFarFieldAoS(passivedouble beta)
Set the angle of sideslip of the farfield.
Definition python_wrapper_structure.cpp:109
int SU2_Comm
Definition mpi_structure.hpp:619
passivedouble GetValue(const su2double &data)
Get the (primitive) value of the datatype (needs to be specialized for active types).
Definition datatype_structure.hpp:113
const unsigned int INST_0
Definition of the first instance per grid level.
Definition option_structure.hpp:92
@ MAX_SOLS
Definition option_structure.hpp:80
const unsigned int MESH_0
Definition of the finest grid level.
Definition option_structure.hpp:88
RECORDING
Definition option_structure.hpp:2820