Documentation 6b54b78464
Loading...
Searching...
No Matches
CDriver Class Reference

Parent class for driving an iteration of a single or multi-zone problem. More...

#include <CDriver.hpp>

Inheritance diagram for CDriver:
[legend]

Public Member Functions

 CDriver (char *confFile, unsigned short val_nZone, SU2_Comm MPICommunicator, bool dummy_geo)
 Constructor of the class.
 
 ~CDriver (void) override
 Destructor of the class.
 
void Run () override
 A virtual member.
 
template<class Container , bool Old = false>
void SetAllSolutions (unsigned short iZone, bool adjoint, const Container &solution)
 Set the solution of all solvers (adjoint or primal) in a zone.
 
template<class Container >
void SetAllSolutionsOld (unsigned short iZone, bool adjoint, const Container &solution)
 Set the "old solution" of all solvers (adjoint or primal) in a zone.
 
template<class Container >
void GetAllSolutions (unsigned short iZone, bool adjoint, Container &solution) const
 Get the solution of all solvers (adjoint or primal) in a zone.
 
unsigned short GetTotalNumberOfVariables (unsigned short iZone, bool adjoint) const
 Sum the number of primal or adjoint variables for all solvers in a given zone.
 
virtual void StartSolver ()
 Launch the computation for all zones and all physics.
 
void Finalize () override
 Deallocation routine.
 
virtual void Preprocess (unsigned long TimeIter)
 Perform some pre-processing before an iteration of the physics.
 
virtual bool Monitor (unsigned long TimeIter)
 Monitor the computation.
 
virtual void Output (unsigned long TimeIter)
 Output the solution in solution file.
 
virtual void DynamicMeshUpdate (unsigned long TimeIter)
 Perform a dynamic mesh deformation, including grid velocity computation and update of the multi-grid structure.
 
virtual void Update ()
 Update the dual-time solution.
 
virtual void SetInitialMesh ()
 Perform a mesh deformation as initial condition.
 
void BoundaryConditionsUpdate ()
 Process the boundary conditions and update the multi-grid structure.
 
unsigned long GetNumberTimeIter () const
 Get the number of time iterations.
 
unsigned long GetTimeIter () const
 Get the current time iteration.
 
passivedouble GetUnsteadyTimeStep () const
 Get the unsteady time step.
 
string GetSurfaceFileName () const
 Get the name of the output file for the surface.
 
void SetHeatSourcePosition (passivedouble alpha, passivedouble pos_x, passivedouble pos_y, passivedouble pos_z)
 Set the position of the heat source.
 
void SetInletAngle (unsigned short iMarker, passivedouble alpha)
 Set the direction of the inlet.
 
void SetFarFieldAoA (passivedouble alpha)
 Set the angle of attack of the farfield.
 
void SetFarFieldAoS (passivedouble beta)
 Set the angle of sideslip of the farfield.
 
void SetTranslationRate (passivedouble xDot, passivedouble yDot, passivedouble zDot)
 Set the dynamic mesh translation rates.
 
void SetRotationRate (passivedouble rot_x, passivedouble rot_y, passivedouble rot_z)
 Set the dynamic mesh rotation rates.
 
void SetMarkerRotationRate (unsigned short iMarker, passivedouble rot_x, passivedouble rot_y, passivedouble rot_z)
 Set the moving wall marker rotation rates.
 
void SetMarkerTranslationRate (unsigned short iMarker, passivedouble vel_x, passivedouble vel_y, passivedouble vel_z)
 Set the moving wall marker translation rates.
 
passivedouble GetDensityFreeStreamND () const
 Get the Freestream Density for nondimensionalization.
 
passivedouble GetForceRef () const
 Get the reference Body force for nondimensionalization.
 
- Public Member Functions inherited from CDriverBase
 CDriverBase (char *confFile, unsigned short val_nZone, SU2_Comm MPICommunicator)
 Constructor of the class.
 
virtual ~CDriverBase (void)
 Destructor of the class.
 
vector< string > GetOutputNames () const
 Get the list of available outputs.
 
passivedouble GetOutputValue (const std::string &output_name) const
 Get the value of one of the available history outputs.
 
vector< string > GetMarkerOutputNames () const
 Get the list of available surface outputs on both MARKER_MONITORING and MARKER_ANALYZE.
 
passivedouble GetMarkerMonitoringOutputValue (const std::string &output_name, const std::string &marker_monitoring) const
 Get the value of one of the available surface outputs at a given MARKER_MONITORING.
 
passivedouble GetMarkerAnalyzeOutputValue (const std::string &output_name, const std::string &marker_analyze) const
 Get the value of one of the available surface outputs at a given MARKER_ANALYZE.
 
unsigned short GetNumberDesignVariables () const
 Get the number of design variables.
 
unsigned short GetNumberFFDBoxes () const
 Get the number of FFD boxes.
 
unsigned long GetNumberDimensions () const
 Get the number of dimensions of the mesh.
 
unsigned long GetNumberElements () const
 Get the number of elements in the mesh.
 
unsigned long GetElementGlobalIndex (unsigned long iElem) const
 Get the global index of a mesh element.
 
vector< unsigned long > GetElementNodes (unsigned long iElem) const
 Get the node indices of a mesh element.
 
unsigned long GetNumberNodes () const
 Get the number of nodes in the mesh (including halos).
 
unsigned long GetNumberHaloNodes () const
 Get the number of halo nodes in the mesh.
 
unsigned long GetNodeGlobalIndex (unsigned long iPoint) const
 Get the global node index.
 
bool GetNodeDomain (unsigned long iPoint) const
 Get the halo flag of a mesh node.
 
CPyWrapperMatrixView InitialCoordinates () const
 Get a read-only view of the initial (undeformed) coordinates of all mesh nodes.
 
CPyWrapperMarkerMatrixView MarkerInitialCoordinates (unsigned short iMarker) const
 Get a read-only view of the initial (undeformed) coordinates of the mesh nodes of a marker.
 
CPyWrapperMatrixView Coordinates ()
 Get a read/write view of the current coordinates of all mesh nodes.
 
CPyWrapperMarkerMatrixView MarkerCoordinates (unsigned short iMarker)
 Get a read/write view of the current coordinates of the mesh nodes of a marker.
 
unsigned short GetNumberMarkers () const
 Get the number of markers in the mesh.
 
map< string, unsigned short > GetMarkerIndices () const
 Get all the boundary markers tags with their associated indices.
 
map< string, string > GetMarkerTypes () const
 Get all the boundary markers tags with their associated types.
 
vector< string > GetMarkerTags () const
 Get all the boundary marker tags.
 
vector< string > GetDeformableMarkerTags () const
 Get all the deformable boundary marker tags.
 
vector< string > GetCHTMarkerTags () const
 Get all the CHT boundary marker tags.
 
vector< string > GetInletMarkerTags () const
 Get all the inlet boundary marker tags.
 
unsigned long GetNumberMarkerElements (unsigned short iMarker) const
 Get the number of elements in the marker.
 
unsigned long GetMarkerElementGlobalIndex (unsigned short iMarker, unsigned long iElem) const
 Get the global index of a marker element.
 
vector< unsigned long > GetMarkerElementNodes (unsigned short iMarker, unsigned long iElem) const
 Get the node indices of a marker element.
 
unsigned long GetNumberMarkerNodes (unsigned short iMarker) const
 Get the number of nodes in the marker.
 
unsigned long GetMarkerNode (unsigned short iMarker, unsigned long iVertex) const
 Get the node index of a marker.
 
vector< passivedouble > GetMarkerVertexNormals (unsigned short iMarker, unsigned long iVertex, bool normalize=false) const
 Get the normal vector of a marker vertex.
 
vector< passivedouble > GetMarkerDisplacement (unsigned short iMarker, unsigned long iVertex) const
 Get the displacements currently imposed of a marker vertex.
 
void SetMarkerCustomDisplacement (unsigned short iMarker, unsigned long iVertex, vector< passivedouble > values)
 Set the mesh displacements of a marker vertex.
 
vector< passivedouble > GetMarkerMeshVelocity (unsigned short iMarker, unsigned long iVertex) const
 Get the mesh velocities currently imposed on a marker vertex.
 
void SetMarkerCustomMeshVelocity (unsigned short iMarker, unsigned long iVertex, vector< passivedouble > values)
 Set the velocities of a marker vertex.
 
void CommunicateMeshDisplacements (void)
 Communicate the boundary mesh displacements.
 
map< string, unsigned short > GetSolverIndices () const
 Get all the active solver names with their associated indices (which can be used to access their data).
 
map< string, unsigned short > GetFEASolutionIndices () const
 Get the structural solver solution variable names with their associated indices. These correspond to the column indices in the matrix returned by e.g. Solution().
 
CPyWrapperMatrixView Solution (unsigned short iSolver)
 Get a read/write view of the current solution on all mesh nodes of a solver.
 
CPyWrapper3DMatrixView Gradient (unsigned short iSolver)
 Get read/write view of the gradients of a solver variable in a point.
 
CPyWrapperMatrixView UserDefinedSource (unsigned short iSolver)
 Get a read/write view of the user defined source on all mesh nodes of a solver.
 
CPyWrapperMarkerMatrixView MarkerSolution (unsigned short iSolver, unsigned short iMarker)
 Get a read/write view of the current solution on the mesh nodes of a marker.
 
CPyWrapperMatrixView SolutionTimeN (unsigned short iSolver)
 Get a read/write view of the solution at time N on all mesh nodes of a solver.
 
CPyWrapperMarkerMatrixView MarkerSolutionTimeN (unsigned short iSolver, unsigned short iMarker)
 Get a read/write view of the solution at time N on the mesh nodes of a marker.
 
CPyWrapperMatrixView SolutionTimeN1 (unsigned short iSolver)
 Get a read/write view of the solution at time N-1 on all mesh nodes of a solver.
 
CPyWrapperMarkerMatrixView MarkerSolutionTimeN1 (unsigned short iSolver, unsigned short iMarker)
 Get a read/write view of the solution at time N-1 on the mesh nodes of a marker.
 
map< string, unsigned short > GetPrimitiveIndices () const
 Get the flow solver primitive variable names with their associated indices. These correspond to the column indices in the matrix returned by Primitives.
 
CPyWrapperMatrixView Primitives ()
 Get a read/write view of the current primitive variables on all mesh nodes of the flow solver.
 
CPyWrapperMarkerMatrixView MarkerPrimitives (unsigned short iMarker)
 Get a read/write view of the current primitive variables on the mesh nodes of a marker.
 
CPyWrapperMatrixView Sensitivity (unsigned short iSolver)
 Get a read-only view of the geometry sensitivity of a discrete adjoint solver.
 
void SetMarkerCustomTemperature (unsigned short iMarker, unsigned long iVertex, passivedouble WallTemp)
 Set the temperature of a vertex on a specified marker (MARKER_PYTHON_CUSTOM).
 
void SetMarkerCustomNormalHeatFlux (unsigned short iMarker, unsigned long iVertex, passivedouble WallHeatFlux)
 Set the wall normal heat flux at a vertex on a specified marker (MARKER_PYTHON_CUSTOM).
 
void SetMarkerCustomScalar (unsigned short iMarker, unsigned long iVertex, vector< passivedouble > WallScalar)
 Set the wall normal scalar values at a vertex on a specified marker (MARKER_PYTHON_CUSTOM).
 
void SelectZone (unsigned short iZone)
 Selects zone to be used for python driver operations.
 
unsigned short SelectedZone () const
 Returns the index of the zone selected for python driver operations.
 
passivedouble GetMarkerNormalHeatFlux (unsigned short iSolver, unsigned short iMarker, unsigned long iVertex) const
 Get the wall normal heat flux at a vertex on a specified marker of the flow or heat solver.
 
void SetMarkerCustomFEALoad (unsigned short iMarker, unsigned long iVertex, std::vector< passivedouble > force)
 Sets the nodal force for the structural solver at a vertex of a marker.
 
vector< passivedouble > GetMarkerFlowLoad (unsigned short iMarker, unsigned long iVertex) const
 Get the fluid force at a vertex of a solid wall marker of the flow solver.
 
void SetMarkerCustomFlowLoadAdjoint (unsigned short iMarker, unsigned long iVertex, vector< passivedouble > adjointLoad)
 Set the adjoint of the flow tractions of the flow solver.
 
vector< passivedouble > GetMarkerDisplacementSensitivity (unsigned short iMarker, unsigned long iVertex) const
 Get the sensitivities of the displacements of the mesh boundary vertices.
 
vector< passivedouble > GetMarkerFEALoadSensitivity (unsigned short iMarker, unsigned long iVertex) const
 Get the sensitivity of the FEA loads of the structural solver (via the adjoint structural solver).
 
void SetMarkerCustomFEADisplacementAdjoint (unsigned short iMarker, unsigned long iVertex, vector< passivedouble > adjointDisplacement)
 Set the adjoint of the structural displacements.
 
void SetMarkerCustomFEAVelocityAdjoint (unsigned short iMarker, unsigned long iVertex, vector< passivedouble > adjointVelocity)
 Set the adjoint of the structural velocities.
 
void SetMarkerCustomInletFlowVar0 (unsigned short iMarker, unsigned long iVertex, passivedouble value)
 Set the first variable in MARKER_INLET (usually temperature).
 
void SetMarkerCustomInletFlowVar1 (unsigned short iMarker, unsigned long iVertex, passivedouble value)
 Set the second variable in MARKER_INLET (usually total pressure).
 
void SetMarkerCustomInletFlowDirection (unsigned short iMarker, unsigned long iVertex, std::vector< passivedouble > values)
 Set the flow direction vector (does not need to be a unit vector).
 

Protected Member Functions

void InitializeContainers ()
 Initialize containers.
 
void PreprocessInput (CConfig **&config, CConfig *&driver_config)
 Read in the config and mesh files.
 
void InitializeGeometry (CConfig *config, CGeometry **&geometry, bool dummy)
 Construction of the edge-based data structure and the multi-grid structure.
 
void InitializeGeometryDGFEM (CConfig *config, CGeometry **&geometry)
 Do the geometrical preprocessing for the DG FEM solver.
 
void InitializeGeometryFVM (CConfig *config, CGeometry **&geometry)
 InitializeGeometryFVM.
 
void PreprocessIteration (CConfig *config, CIteration *&iteration) const
 Definition of the physics iteration class or within a single zone.
 
void InitializeSolver (CConfig *config, CGeometry **geometry, CSolver ***&solver)
 Definition and allocation of all solution classes.
 
void PreprocessInlet (CSolver ***solver, CGeometry **geometry, CConfig *config) const
 Preprocess the inlets via file input for all solvers.
 
void RestartSolver (CSolver ***solver, CGeometry **geometry, CConfig *config, bool update_geo)
 Restart of the solvers from the restart files.
 
void FinalizeSolver (CSolver ****solver, CGeometry **geometry, CConfig *config, unsigned short val_iInst)
 Definition and allocation of all solution classes.
 
void InitializeIntegration (CConfig *config, CSolver **solver, CIntegration **&integration) const
 Definition and allocation of all integration classes.
 
void FinalizeIntegration (CIntegration ***integration, CGeometry **geometry, CConfig *config, unsigned short val_iInst)
 Definition and allocation of all integration classes.
 
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.
 
void InitializeNumerics (CConfig *config, CGeometry **geometry, CSolver ***solver, CNumerics ****&numerics) const
 Definition and allocation of all solver classes.
 
template<class FlowIndices >
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.
 
template<class FlowIndices >
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.
 
template<class FlowIndices >
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.
 
void FinalizeNumerics (CNumerics *****numerics, CSolver ***solver, CGeometry **geometry, CConfig *config, unsigned short val_iInst)
 Definition and allocation of all solver classes.
 
void PreprocessDynamicMesh (CConfig *config, CGeometry **geometry, CSolver ***solver, CIteration *iteration, CVolumetricMovement *&grid_movement, CSurfaceMovement *&surface_movement) const
 GridMovement_Preprocessing.
 
void PreprocessPythonInterface (CConfig **config, CGeometry ****geometry, CSolver *****solver)
 Initialize Python interface functionalities. When using multigrid, it is important to call this after modifying custom boundary values.
 
void PreprocessOutput (CConfig **config, CConfig *driver_config, COutput **&output_container, COutput *&driver_output)
 Preprocess the output container.
 
void PreprocessStaticMesh (const CConfig *config, CGeometry **geometry)
 Initiate value for static mesh movement such as the gridVel for the ROTATING frame.
 
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.
 
void PreprocessTurboVertex (CConfig **config, CGeometry ****geometry, CSolver *****solver, CInterface ***interface, CIteration ***iteration, bool dummy)
 
virtual void PredictDisplacements (unsigned short donorZone, unsigned short targetZone)
 A virtual member.
 
virtual void PredictTractions (unsigned short donorZone, unsigned short targetZone)
 A virtual member.
 
virtual void TransferDisplacements (unsigned short donorZone, unsigned short targetZone)
 A virtual member.
 
virtual void TransferTractions (unsigned short donorZone, unsigned short targetZone)
 A virtual member.
 
virtual void RelaxationDisplacements (unsigned short donorZone, unsigned short targetZone, unsigned long iOuterIter)
 A virtual member.
 
virtual void RelaxationTractions (unsigned short donorZone, unsigned short targetZone, unsigned long iOuterIter)
 A virtual member.
 
void PrintDirectResidual (RECORDING kind_recording)
 Print out the direct residuals.
 
- Protected Member Functions inherited from CDriverBase
CSolver * GetSolverAndCheckMarker (unsigned short iSolver, unsigned short iMarker=std::numeric_limits< unsigned short >::max()) const
 Automates some boilerplate of accessing solution fields for the python wrapper.
 
void InitializeContainers ()
 Initialize containers.
 
void CommonFinalize ()
 Delete containers.
 
void InputPreprocessing (CConfig **&config, CConfig *&driver_config)
 Read in the config and mesh files.
 
void InitializeGeometry (CConfig *config, CGeometry **&geometry, bool dummy)
 Construction of the edge-based data structure and the multi-grid structure.
 
void InitializeSolver (CConfig *config, CGeometry **geometry, CSolver ***&solver)
 Definition and allocation of all solution classes.
 
void InitializeNumerics (CConfig *config, CGeometry **geometry, CSolver ***solver, CNumerics ****&numerics) const
 Definition and allocation of all solver classes.
 
void OutputPreprocessing (CConfig **config, CConfig *driver_config, COutput **&output_container, COutput *&driver_output)
 Preprocess the output container.
 

Protected Attributes

su2double UsedTimeOutput
 Elapsed time between Start and Stop point of the timer for tracking output phase.
 
su2double BandwidthSum
 Aggregate value of the bandwidth for writing restarts (to be average later).
 
unsigned long IterCount
 Iteration count stored for performance benchmarking.
 
unsigned long OutputCount
 Output count stored for performance benchmarking.
 
unsigned long DOFsPerPoint
 Number of unknowns at each vertex, i.e., number of equations solved.
 
su2double Mpoints
 Total number of grid points in millions in the calculation (including ghost points).
 
su2double MpointsDomain
 Total number of grid points in millions in the calculation (excluding ghost points).
 
su2double MDOFs
 Total number of DOFs in millions in the calculation (including ghost points).
 
su2double MDOFsDomain
 Total number of DOFs in millions in the calculation (excluding ghost points).
 
bool StopCalc
 Stop computation flag.
 
bool mixingplane
 mixing-plane simulation flag.
 
bool fsi
 FSI simulation flag.
 
bool fem_solver
 FEM fluid solver simulation flag.
 
CFreeFormDefBox *** FFDBox
 FFD FFDBoxes of the problem.
 
CIteration *** iteration_container
 Container vector with all the iteration methods.
 
CIntegration **** integration_container
 Container vector with all the integration methods.
 
vector< vector< unique_ptr< CInterpolator > > > interpolator_container
 Definition of the interpolation method between non-matching discretizations of the interface.
 
CInterface *** interface_container
 Definition of the interface of information and physics.
 
unsigned short ** interface_types
 Type of coupling between the distinct (physical) zones.
 
bool dry_run
 Flag if SU2_CFD was started as dry-run via "SU2_CFD -d <config>.cfg".
 
- Protected Attributes inherited from CDriverBase
int rank
 MPI Rank.
 
int size
 MPI Size.
 
char * config_file_name
 Configuration file name of the problem.
 
su2double StartTime
 Start point of the timer for performance benchmarking.
 
su2double StopTime
 Stop point of the timer for performance benchmarking.
 
su2double UsedTimePreproc
 Elapsed time between Start and Stop point of the timer for tracking preprocessing phase.
 
su2double UsedTimeCompute
 Elapsed time between Start and Stop point of the timer for tracking compute phase.
 
su2double UsedTime
 Elapsed time between Start and Stop point of the timer.
 
unsigned long TimeIter
 
unsigned short selected_zone = ZONE_0
 Selected zone for the driver. Defaults to ZONE_0.
 
unsigned short iMesh
 Iterator on mesh levels.
 
unsigned short iZone
 Iterator on zones.
 
unsigned short nZone
 Total number of zones in the problem.
 
unsigned short nDim
 Number of dimensions.
 
unsigned short iInst
 Iterator on instance levels.
 
unsigned short * nInst
 Total number of instances in the problem (per zone).
 
CConfig * driver_config = nullptr
 Definition of the driver configuration.
 
COutput * driver_output = nullptr
 Definition of the driver output.
 
CConfig ** config_container
 Definition of the particular problem.
 
COutput ** output_container
 Pointer to the COutput class.
 
CGeometry **** geometry_container
 Geometrical definition of the problem.
 
CSolver ***** solver_container
 Container vector with all the solutions.
 
CNumerics ****** numerics_container
 Description of the numerical method (the way in which the equations are solved).
 
CSurfaceMovement ** surface_movement
 Surface movement classes of the problem.
 
CVolumetricMovement *** grid_movement
 Volume grid movement classes of the problem.
 
CConfig * main_config = nullptr
 Reference to base (i.e. ZONE 0) configuration (used in driver API).
 
CGeometry * main_geometry = nullptr
 Reference to base (i.e. ZONE, INST, MESH 0) geometry (used in driver API).
 

Detailed Description

Parent class for driving an iteration of a single or multi-zone problem.

Author
T. Economon

Constructor & Destructor Documentation

◆ CDriver()

CDriver::CDriver ( char *  confFile,
unsigned short  val_nZone,
SU2_Comm  MPICommunicator,
bool  dummy_geo 
)

Constructor of the class.

Parameters
[in]confFile- Configuration file name.
[in]val_nZone- Total number of zones.
[in]MPICommunicator- MPI communicator for SU2.
[in]dummy_geo- Dummy geometric definition of the problem.

— Compute the wall distance again to correctly compute the derivatives if we are running direct diff mode —

◆ ~CDriver()

CDriver::~CDriver ( void  )
overridedefault

Destructor of the class.

Member Function Documentation

◆ DynamicMeshUpdate()

virtual void CDriver::DynamicMeshUpdate ( unsigned long  TimeIter)
inlinevirtual

Perform a dynamic mesh deformation, including grid velocity computation and update of the multi-grid structure.

Reimplemented in CFluidDriver, CMultizoneDriver, and CSinglezoneDriver.

◆ Finalize()

void CDriver::Finalize ( )
overridevirtual

Deallocation routine.

Reimplemented from CDriverBase.

◆ FinalizeIntegration()

void CDriver::FinalizeIntegration ( CIntegration ***  integration,
CGeometry **  geometry,
CConfig *  config,
unsigned short  val_iInst 
)
protected

Definition and allocation of all integration classes.

Parameters
[in]integration- Container vector with all the integration methods.
[in]geometry- Geometrical definition of the problem.
[in]config- Definition of the particular problem.
[in]val_iInst- Current solver instance.

◆ FinalizeNumerics()

void CDriver::FinalizeNumerics ( CNumerics *****  numerics,
CSolver ***  solver,
CGeometry **  geometry,
CConfig *  config,
unsigned short  val_iInst 
)
protected

Definition and allocation of all solver classes.

Parameters
[in]numerics- Description of the numerical method (the way in which the equations are solved).
[in]solver- Container vector with all the solutions.
[in]geometry- Geometrical definition of the problem.
[in]config- Definition of the particular problem.
[in]val_iInst- Current solver instance.

◆ FinalizeSolver()

void CDriver::FinalizeSolver ( CSolver ****  solver,
CGeometry **  geometry,
CConfig *  config,
unsigned short  val_iInst 
)
protected

Definition and allocation of all solution classes.

Parameters
[in]solver- Container vector with all the solutions.
[in]geometry- Geometrical definition of the problem.
[in]config- Definition of the particular problem.
[in]val_iInst- Current solver instance.

◆ GetAllSolutions()

template<class Container >
void CDriver::GetAllSolutions ( unsigned short  iZone,
bool  adjoint,
Container &  solution 
) const
inline

Get the solution of all solvers (adjoint or primal) in a zone.

Parameters
[in]iZone- Index of the zone.
[in]adjoint- True to consider adjoint solvers instead of primal.
[out]solution- Solution object with interface (iPoint,iVar).

◆ GetTotalNumberOfVariables()

unsigned short CDriver::GetTotalNumberOfVariables ( unsigned short  iZone,
bool  adjoint 
) const
inline

Sum the number of primal or adjoint variables for all solvers in a given zone.

Parameters
[in]iZone- Index of the zone.
[in]adjoint- True to consider adjoint solvers instead of primal.
Returns
Total number of solution variables.

◆ InitializeContainers()

void CDriver::InitializeContainers ( )
protected

Initialize containers.

◆ InitializeGeometry()

void CDriver::InitializeGeometry ( CConfig *  config,
CGeometry **&  geometry,
bool  dummy 
)
protected

Construction of the edge-based data structure and the multi-grid structure.

Parameters
[in]config- Definition of the particular problem.
[in]geometry- Geometrical definition of the problem.
[in]dummy- Definition of the dummy driver.

◆ InitializeGeometryDGFEM()

void CDriver::InitializeGeometryDGFEM ( CConfig *  config,
CGeometry **&  geometry 
)
protected

Do the geometrical preprocessing for the DG FEM solver.

Parameters
[in]config- Definition of the particular problem.
[in]geometry- Geometrical definition of the problem.

◆ InitializeGeometryFVM()

void CDriver::InitializeGeometryFVM ( CConfig *  config,
CGeometry **&  geometry 
)
protected

InitializeGeometryFVM.

Parameters
[in]config- Definition of the particular problem.
[in]geometry- Geometrical definition of the problem.

◆ InitializeIntegration()

void CDriver::InitializeIntegration ( CConfig *  config,
CSolver **  solver,
CIntegration **&  integration 
) const
protected

Definition and allocation of all integration classes.

Parameters
[in]config- Definition of the particular problem.
[in]solver- Container vector with all the solutions.
[in]integration- Container vector with all the integration methods.

◆ InitializeInterface()

void CDriver::InitializeInterface ( CConfig **  config,
CSolver *****  solver,
CGeometry ****  geometry,
unsigned short **  interface_types,
CInterface ***  interface,
vector< vector< unique_ptr< CInterpolator > > > &  interpolation 
)
protected

Definition and allocation of all interface classes.

Parameters
[in]config- Definition of the particular problem.
[in]solver- Container vector with all the solutions.
[in]geometry- Geometrical definition of the problem.
[in]interface_types- Type of coupling between the distinct (physical) zones.
[in]interface- Class defining the physical transfer of information.
[in]interpolation- Object defining the interpolation.

◆ InitializeNumerics()

void CDriver::InitializeNumerics ( CConfig *  config,
CGeometry **  geometry,
CSolver ***  solver,
CNumerics ****&  numerics 
) const
protected

Definition and allocation of all solver classes.

Parameters
[in]config- Definition of the particular problem.
[in]geometry- Geometrical definition of the problem.
[in]solver- Container vector with all the solutions.
[in]numerics- Description of the numerical method (the way in which the equations are solved).

◆ InitializeSolver()

void CDriver::InitializeSolver ( CConfig *  config,
CGeometry **  geometry,
CSolver ***&  solver 
)
protected

Definition and allocation of all solution classes.

Parameters
[in]config- Definition of the particular problem.
[in]geometry- Geometrical definition of the problem.
[in]solver- Container vector with all the solutions.

◆ InstantiateSpeciesNumerics()

template<class Indices >
void CDriver::InstantiateSpeciesNumerics ( unsigned short  nVar_Species,
int  offset,
const CConfig *  config,
const CSolver *  species_solver,
CNumerics ****&  numerics 
) const
protected

Helper to instantiate species transport numerics specialized for different flow solvers.

◆ InstantiateTransitionNumerics()

template<class Indices >
void CDriver::InstantiateTransitionNumerics ( unsigned short  nVar_Trans,
int  offset,
const CConfig *  config,
const CSolver *  trans_solver,
CNumerics ****&  numerics 
) const
protected

Helper to instantiate transition numerics specialized for different flow solvers.

◆ InstantiateTurbulentNumerics()

template<class Indices >
void CDriver::InstantiateTurbulentNumerics ( unsigned short  nVar_Turb,
int  offset,
const CConfig *  config,
const CSolver *  turb_solver,
CNumerics ****&  numerics 
) const
protected

Helper to instantiate turbulence numerics specialized for different flow solvers.

◆ Monitor()

virtual bool CDriver::Monitor ( unsigned long  TimeIter)
inlinevirtual

Monitor the computation.

Reimplemented in CFluidDriver, CMultizoneDriver, and CSinglezoneDriver.

◆ Output()

virtual void CDriver::Output ( unsigned long  TimeIter)
inlinevirtual

Output the solution in solution file.

Reimplemented in CFluidDriver, CMultizoneDriver, and CSinglezoneDriver.

◆ PredictDisplacements()

virtual void CDriver::PredictDisplacements ( unsigned short  donorZone,
unsigned short  targetZone 
)
inlineprotectedvirtual

A virtual member.

Parameters
[in]donorZone- zone in which the displacements will be predicted.
[in]targetZone- zone which receives the predicted displacements.

◆ PredictTractions()

virtual void CDriver::PredictTractions ( unsigned short  donorZone,
unsigned short  targetZone 
)
inlineprotectedvirtual

A virtual member.

Parameters
[in]donorZone- zone in which the tractions will be predicted.
[in]targetZone- zone which receives the predicted traction.

◆ Preprocess()

virtual void CDriver::Preprocess ( unsigned long  TimeIter)
inlinevirtual

Perform some pre-processing before an iteration of the physics.

Reimplemented in CFluidDriver, CDiscAdjMultizoneDriver, CDiscAdjSinglezoneDriver, CMultizoneDriver, and CSinglezoneDriver.

◆ PreprocessDynamicMesh()

void CDriver::PreprocessDynamicMesh ( CConfig *  config,
CGeometry **  geometry,
CSolver ***  solver,
CIteration *  iteration,
CVolumetricMovement *&  grid_movement,
CSurfaceMovement *&  surface_movement 
) const
protected

GridMovement_Preprocessing.

Parameters
[in]config- Definition of the particular problem.
[in]geometry- Geometrical definition of the problem.
[in]solver- Container vector with all the solutions.
[in]iteration- Container vector with all the iteration methods.
[in]grid_movement- Volume grid movement classes of the problem.
[in]surface_movement- Surface movement classes of the problem.

◆ PreprocessInlet()

void CDriver::PreprocessInlet ( CSolver ***  solver,
CGeometry **  geometry,
CConfig *  config 
) const
protected

Preprocess the inlets via file input for all solvers.

Parameters
[in]solver_container- Container vector with all the solutions.
[in]geometry- Geometrical definition of the problem.
[in]config- Definition of the particular problem.

◆ PreprocessInput()

void CDriver::PreprocessInput ( CConfig **&  config,
CConfig *&  driver_config 
)
protected

Read in the config and mesh files.

Parameters
[in]config- Definition of the particular problem.
[in]driver_config- Definition of the driver configuration.

◆ PreprocessIteration()

void CDriver::PreprocessIteration ( CConfig *  config,
CIteration *&  iteration 
) const
protected

Definition of the physics iteration class or within a single zone.

Parameters
[in]config- Definition of the particular problem.
[in]iteration- Pointer to the iteration container to be instantiated.

◆ PreprocessOutput()

void CDriver::PreprocessOutput ( CConfig **  config,
CConfig *  driver_config,
COutput **&  output_container,
COutput *&  driver_output 
)
protected

Preprocess the output container.

Parameters
[in]config- Definition of the particular problem.
[in]driver_config- Definition of the driver configuration.
[in]output_container- Container vector with all the outputs.
[in]driver_output- Definition of the driver output.

◆ PreprocessPythonInterface()

void CDriver::PreprocessPythonInterface ( CConfig **  config,
CGeometry ****  geometry,
CSolver *****  solver 
)
protected

Initialize Python interface functionalities. When using multigrid, it is important to call this after modifying custom boundary values.

Parameters
[in]config- Definition of the particular problem.
[in]geometry- Geometrical definition of the problem.
[in]solver- Container vector with all the solutions.

◆ PreprocessStaticMesh()

void CDriver::PreprocessStaticMesh ( const CConfig *  config,
CGeometry **  geometry 
)
protected

Initiate value for static mesh movement such as the gridVel for the ROTATING frame.

Parameters
[in]config- Definition of the particular problem.
[in]geometry- Geometrical definition of the problem.

◆ PreprocessTurbomachinery()

void CDriver::PreprocessTurbomachinery ( CConfig **  config,
CGeometry ****  geometry,
CSolver *****  solver,
CInterface ***  interface,
CIteration ***  iteration,
bool  dummy 
)
protected

Initiate value for static mesh movement such as the gridVel for the ROTATING frame.

Parameters
[in]config- Definition of the particular problem.
[in]geometry- Geometrical definition of the problem.
[in]solver- Container vector with all the solutions.
[in]interface- Class defining the physical transfer of information.
[in]iteration- Class defining the iteration strcuture.
[in]dummy- Definition of dummy driver

◆ PreprocessTurboVertex()

void CDriver::PreprocessTurboVertex ( CConfig **  config,
CGeometry ****  geometry,
CSolver *****  solver,
CInterface ***  interface,
CIteration ***  iteration,
bool  dummy 
)
protected

◆ PrintDirectResidual()

void CDriver::PrintDirectResidual ( RECORDING  kind_recording)
protected

Print out the direct residuals.

Parameters
[in]kind_recording- Type of recording (full list in ENUM_RECORDING, option_structure.hpp)

◆ RelaxationDisplacements()

virtual void CDriver::RelaxationDisplacements ( unsigned short  donorZone,
unsigned short  targetZone,
unsigned long  iOuterIter 
)
inlineprotectedvirtual

A virtual member.

Parameters
[in]donorZone- origin of the information.
[in]targetZone- destination of the information.
[in]iOuterIter- Fluid-Structure Interaction subiteration.

◆ RelaxationTractions()

virtual void CDriver::RelaxationTractions ( unsigned short  donorZone,
unsigned short  targetZone,
unsigned long  iOuterIter 
)
inlineprotectedvirtual

A virtual member.

Parameters
[in]donorZone- origin of the information.
[in]targetZone- destination of the information.
[in]iOuterIter- Fluid-Structure Interaction subiteration.

◆ RestartSolver()

void CDriver::RestartSolver ( CSolver ***  solver,
CGeometry **  geometry,
CConfig *  config,
bool  update_geo 
)
protected

Restart of the solvers from the restart files.

Parameters
[in]solver- Container vector with all the solutions.
[in]geometry- Geometrical definition of the problem.
[in]config- Definition of the particular problem.
[in]update_geo- Boolean to indicate if geometry should be updated.

◆ Run()

void CDriver::Run ( void  )
inlineoverridevirtual

A virtual member.

Reimplemented from CDriverBase.

Reimplemented in CFluidDriver, CHBDriver, CMultizoneDriver, and CSinglezoneDriver.

◆ SetAllSolutions()

template<class Container , bool Old = false>
void CDriver::SetAllSolutions ( unsigned short  iZone,
bool  adjoint,
const Container &  solution 
)
inline

Set the solution of all solvers (adjoint or primal) in a zone.

Parameters
[in]iZone- Index of the zone.
[in]adjoint- True to consider adjoint solvers instead of primal.
[in]solution- Solution object with interface (iPoint,iVar).
Template Parameters
Old- If true set "old solutions" instead.

◆ SetAllSolutionsOld()

template<class Container >
void CDriver::SetAllSolutionsOld ( unsigned short  iZone,
bool  adjoint,
const Container &  solution 
)
inline

Set the "old solution" of all solvers (adjoint or primal) in a zone.

◆ SetInitialMesh()

virtual void CDriver::SetInitialMesh ( )
inlinevirtual

Perform a mesh deformation as initial condition.

Reimplemented in CSinglezoneDriver.

◆ StartSolver()

virtual void CDriver::StartSolver ( )
inlinevirtual

Launch the computation for all zones and all physics.

Reimplemented in CDiscAdjMultizoneDriver, CFluidDriver, CDummyDriver, CMultizoneDriver, and CSinglezoneDriver.

◆ TransferDisplacements()

virtual void CDriver::TransferDisplacements ( unsigned short  donorZone,
unsigned short  targetZone 
)
inlineprotectedvirtual

A virtual member.

Parameters
[in]donorZone- zone in which the displacements will be transferred.
[in]targetZone- zone which receives the tractions transferred.

◆ TransferTractions()

virtual void CDriver::TransferTractions ( unsigned short  donorZone,
unsigned short  targetZone 
)
inlineprotectedvirtual

A virtual member.

Parameters
[in]donorZone- zone from which the tractions will be transferred.
[in]targetZone- zone which receives the tractions transferred.

◆ Update()

virtual void CDriver::Update ( )
inlinevirtual

Update the dual-time solution.

Reimplemented in CFluidDriver, CHBDriver, CMultizoneDriver, and CSinglezoneDriver.

Member Data Documentation

◆ BandwidthSum

su2double CDriver::BandwidthSum
protected
Initial value:
=
0.0

Aggregate value of the bandwidth for writing restarts (to be average later).

◆ DOFsPerPoint

unsigned long CDriver::DOFsPerPoint
protected

Number of unknowns at each vertex, i.e., number of equations solved.

◆ dry_run

bool CDriver::dry_run
protected

Flag if SU2_CFD was started as dry-run via "SU2_CFD -d <config>.cfg".

◆ fem_solver

bool CDriver::fem_solver
protected

FEM fluid solver simulation flag.

◆ FFDBox

CFreeFormDefBox*** CDriver::FFDBox
protected

FFD FFDBoxes of the problem.

◆ fsi

bool CDriver::fsi
protected

FSI simulation flag.

◆ integration_container

CIntegration**** CDriver::integration_container
protected

Container vector with all the integration methods.

◆ interface_container

CInterface*** CDriver::interface_container
protected

Definition of the interface of information and physics.

◆ interface_types

unsigned short** CDriver::interface_types
protected

Type of coupling between the distinct (physical) zones.

◆ interpolator_container

vector<vector<unique_ptr<CInterpolator> > > CDriver::interpolator_container
protected

Definition of the interpolation method between non-matching discretizations of the interface.

◆ iteration_container

CIteration*** CDriver::iteration_container
protected

Container vector with all the iteration methods.

◆ IterCount

unsigned long CDriver::IterCount
protected

Iteration count stored for performance benchmarking.

◆ MDOFs

su2double CDriver::MDOFs
protected

Total number of DOFs in millions in the calculation (including ghost points).

◆ MDOFsDomain

su2double CDriver::MDOFsDomain
protected

Total number of DOFs in millions in the calculation (excluding ghost points).

◆ mixingplane

bool CDriver::mixingplane
protected

mixing-plane simulation flag.

◆ Mpoints

su2double CDriver::Mpoints
protected

Total number of grid points in millions in the calculation (including ghost points).

◆ MpointsDomain

su2double CDriver::MpointsDomain
protected

Total number of grid points in millions in the calculation (excluding ghost points).

◆ OutputCount

unsigned long CDriver::OutputCount
protected

Output count stored for performance benchmarking.

◆ StopCalc

bool CDriver::StopCalc
protected

Stop computation flag.

◆ UsedTimeOutput

su2double CDriver::UsedTimeOutput
protected

Elapsed time between Start and Stop point of the timer for tracking output phase.


The documentation for this class was generated from the following files: