Skip to content

Commit be6e95f

Browse files
Made sure initial density and energy are set for all relevant boundary conditions in the compressible flow solvers
1 parent e248138 commit be6e95f

6 files changed

Lines changed: 63 additions & 24 deletions

File tree

Common/include/CConfig.hpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -521,11 +521,11 @@ class CConfig {
521521
Kind_TimeIntScheme_Heat, /*!< \brief Time integration for the wave equations. */
522522
Kind_TimeStep_Heat, /*!< \brief Time stepping method for the (fvm) heat equation. */
523523
n_Datadriven_files;
524-
ENUM_DATADRIVEN_METHOD Kind_DataDriven_Method; /*!< \brief Method used for datset regression in datadriven fluid models. */
524+
ENUM_DATADRIVEN_METHOD Kind_DataDriven_Method; /*!< \brief Method used for datset regression in data-driven fluid models. */
525525

526-
su2double DataDriven_Relaxation_Factor, /*!< \brief Relaxation factor for Newton solvers in datadriven fluid models. */
527-
DataDriven_initial_density, /*!< \brief Initial density value for Newton solvers in datadriven fluid models. */
528-
DataDriven_initial_energy; /*!< \brief Initial static energy value for Newton solvers in datadriven fluid models. */
526+
su2double DataDriven_Relaxation_Factor, /*!< \brief Relaxation factor for Newton solvers in data-driven fluid models. */
527+
DataDriven_initial_density, /*!< \brief Initial density value for Newton solvers in data-driven fluid models. */
528+
DataDriven_initial_energy; /*!< \brief Initial static energy value for Newton solvers in data-driven fluid models. */
529529

530530
STRUCT_TIME_INT Kind_TimeIntScheme_FEA; /*!< \brief Time integration for the FEA equations. */
531531
STRUCT_SPACE_ITE Kind_SpaceIteScheme_FEA; /*!< \brief Iterative scheme for nonlinear structural analysis. */
@@ -806,7 +806,7 @@ class CConfig {
806806
SurfSens_FileName, /*!< \brief Output file for the sensitivity on the surface (discrete adjoint). */
807807
VolSens_FileName, /*!< \brief Output file for the sensitivity in the volume (discrete adjoint). */
808808
ObjFunc_Hess_FileName, /*!< \brief Hessian approximation obtained by the Sobolev smoothing solver. */
809-
*DataDriven_Method_FileNames; /*!< \brief Dataset information for datadriven fluid models. */
809+
*DataDriven_Method_FileNames; /*!< \brief Dataset information for data-driven fluid models. */
810810

811811
bool
812812
Wrt_Performance, /*!< \brief Write the performance summary at the end of a calculation. */
@@ -3789,7 +3789,7 @@ class CConfig {
37893789

37903790
/*!
37913791
* \brief Get number of listed look-up table or multi-layer perceptron input files.
3792-
* \return Number of listed datadriven method input files.
3792+
* \return Number of listed data-driven method input files.
37933793
*/
37943794
unsigned short GetNDataDriven_Files(void) const { return n_Datadriven_files; }
37953795

Common/src/CConfig.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4922,6 +4922,11 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i
49224922
}
49234923
}
49244924

4925+
/*--- Data-driven fluid model is currently only supported for compressible flow problems. ---*/
4926+
if ((Kind_Solver == MAIN_SOLVER::INC_EULER || Kind_Solver == MAIN_SOLVER::INC_NAVIER_STOKES || Kind_Solver == MAIN_SOLVER::INC_RANS) && (Kind_FluidModel == DATADRIVEN_FLUID)) {
4927+
SU2_MPI::Error("Data-driven fluid model can only be used for compressible flows.", CURRENT_FUNCTION);
4928+
}
4929+
49254930
if ((Kind_Solver == MAIN_SOLVER::INC_EULER || Kind_Solver == MAIN_SOLVER::INC_NAVIER_STOKES || Kind_Solver == MAIN_SOLVER::INC_RANS) && (Kind_FluidModel == INC_IDEAL_GAS_POLY)) {
49264931
su2double sum = 0.0;
49274932
for (unsigned short iVar = 0; iVar < N_POLY_COEFFS; iVar++) {

SU2_CFD/include/variables/CEulerVariable.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ class CEulerVariable : public CFlowVariable {
7575
MatrixType WindGustDer; /*! < \brief Wind gust derivatives value */
7676

7777
bool DataDrivenFluid = false; /*!< \brief Usage of data-driven fluid model. DatasetExtrapolation and FluidEntropy will not be sized if disabled. */
78-
su2vector<unsigned short> DatasetExtrapolation; /*!< \brief Stores instances of dataset bounds violation when using datadriven fluid models. */
79-
su2vector<unsigned long> NIterNewtonsolver; /*!< \brief Stores number of Newton solver iterations when using datadriven fluid models. */
80-
VectorType FluidEntropy; /*!< \brief Stores the fluid entropy value as computed by the datadriven fluid model. */
78+
su2vector<unsigned short> DatasetExtrapolation; /*!< \brief Stores instances of dataset bounds violation when using data-driven fluid models. */
79+
su2vector<unsigned long> NIterNewtonsolver; /*!< \brief Stores number of Newton solver iterations when using data-driven fluid models. */
80+
VectorType FluidEntropy; /*!< \brief Stores the fluid entropy value as computed by the data-driven fluid model. */
8181

8282
public:
8383
/*!

SU2_CFD/src/solvers/CEulerSolver.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5672,7 +5672,8 @@ void CEulerSolver::PreprocessBC_Giles(CGeometry *geometry, CConfig *config, CNum
56725672
su2double Velocity2_i = GeometryToolbox::SquaredNorm(nDim, Velocity_i);
56735673
su2double Energy_i = nodes->GetEnergy(iPoint);
56745674
su2double StaticEnergy_i = Energy_i - 0.5*Velocity2_i;
5675-
GetFluidModel()->SetTDState_rhoe(AverageDensity[iMarker][iSpan], StaticEnergy_i);
5675+
GetFluidModel()->SetInitialDensity(AverageDensity[iMarker][iSpan]);
5676+
GetFluidModel()->SetInitialEnergy(StaticEnergy_i);
56765677
}
56775678

56785679
ComputeTurboVelocity(Velocity_i, turboNormal, turboVelocity, marker_flag, config->GetKind_TurboMachinery(iZone));
@@ -7910,6 +7911,11 @@ void CEulerSolver::BC_ActDisk(CGeometry *geometry, CSolver **solver_container, C
79107911
/*--- Subsonic outlet ---*/
79117912

79127913
else {
7914+
/* Set initial guesses for density and static energy in case of data-driven fluid model. */
7915+
if (config->GetKind_FluidModel() == DATADRIVEN_FLUID) {
7916+
GetFluidModel()->SetInitialDensity(config->GetDensity_Init_DataDriven());
7917+
GetFluidModel()->SetInitialEnergy(config->GetEnergy_Init_DataDriven());
7918+
}
79137919

79147920
GetFluidModel()->SetTDState_PT(P_static, T_static);
79157921
SoS_outlet = GetFluidModel()->GetSoundSpeed();
@@ -8440,6 +8446,11 @@ void CEulerSolver::SetFreeStream_TurboSolution(CConfig *config) {
84408446

84418447
auto turboNormal = config->GetFreeStreamTurboNormal();
84428448

8449+
/* Set initial guess for static energy in case of data-driven fluid model. */
8450+
if (config->GetKind_FluidModel() == DATADRIVEN_FLUID) {
8451+
GetFluidModel()->SetInitialEnergy(config->GetEnergy_Init_DataDriven());
8452+
}
8453+
84438454
GetFluidModel()->SetTDState_Prho(Pressure_Inf, Density_Inf);
84448455
SoundSpeed = GetFluidModel()->GetSoundSpeed();
84458456

@@ -8925,6 +8936,11 @@ void CEulerSolver::TurboAverageProcess(CSolver **solver, CGeometry *geometry, CC
89258936
AverageTurboNormal = geometry->GetAverageTurboNormal(iMarker,iSpan);
89268937
nVert = geometry->GetnTotVertexSpan(iMarker,iSpan);
89278938

8939+
/* Set initial guess for static energy in case of data-driven fluid model. */
8940+
if (config->GetKind_FluidModel() == DATADRIVEN_FLUID) {
8941+
GetFluidModel()->SetInitialEnergy(config->GetEnergy_Init_DataDriven());
8942+
}
8943+
89288944
/*--- compute normal Mach number as a check for massflow average and mixedout average ---*/
89298945
GetFluidModel()->SetTDState_Prho(TotalAreaPressure/TotalArea, TotalAreaDensity / TotalArea);
89308946
soundSpeed = GetFluidModel()->GetSoundSpeed();
@@ -9244,6 +9260,11 @@ void CEulerSolver::MixedOut_Average (CConfig *config, su2double val_init_pressur
92449260

92459261
pressure_mix = val_init_pressure;
92469262

9263+
/* Set initial guess for static energy in case of data-driven fluid model. */
9264+
if (config->GetKind_FluidModel() == DATADRIVEN_FLUID) {
9265+
GetFluidModel()->SetInitialEnergy(config->GetEnergy_Init_DataDriven());
9266+
}
9267+
92479268
/*--- Newton-Raphson's method with central difference formula ---*/
92489269

92499270
while ( iter <= maxiter ) {

SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7789,8 +7789,16 @@ void CFEM_DG_EulerSolver::BoundaryStates_Riemann(CConfig *confi
77897789
P_Total /= config->GetPressure_Ref();
77907790
T_Total /= config->GetTemperature_Ref();
77917791

7792+
/* Set initial guesses for density and static energy in case of
7793+
data-driven fluid model. */
7794+
if (config->GetKind_FluidModel() == DATADRIVEN_FLUID) {
7795+
FluidModel->SetInitialDensity(config->GetDensity_Init_DataDriven());
7796+
FluidModel->SetInitialEnergy(config->GetEnergy_Init_DataDriven());
7797+
}
7798+
77927799
/* Compute the total enthalpy and entropy from these values. */
77937800
FluidModel->SetTDState_PT(P_Total, T_Total);
7801+
77947802
const su2double Enthalpy_e = FluidModel->GetStaticEnergy()
77957803
+ FluidModel->GetPressure()/FluidModel->GetDensity();
77967804
const su2double Entropy_e = FluidModel->GetEntropy();
@@ -7850,6 +7858,13 @@ void CFEM_DG_EulerSolver::BoundaryStates_Riemann(CConfig *confi
78507858
P_static /= config->GetPressure_Ref();
78517859
T_static /= config->GetTemperature_Ref();
78527860

7861+
/* Set initial guesses for density and static energy in case of
7862+
data-driven fluid model. */
7863+
if (config->GetKind_FluidModel() == DATADRIVEN_FLUID) {
7864+
FluidModel->SetInitialDensity(config->GetDensity_Init_DataDriven());
7865+
FluidModel->SetInitialEnergy(config->GetEnergy_Init_DataDriven());
7866+
}
7867+
78537868
/* Compute the prescribed density, static energy per unit mass
78547869
and speed of sound. */
78557870
FluidModel->SetTDState_PT(P_static, T_static);
@@ -7901,6 +7916,12 @@ void CFEM_DG_EulerSolver::BoundaryStates_Riemann(CConfig *confi
79017916
P_static /= config->GetPressure_Ref();
79027917
Rho_static /= config->GetDensity_Ref();
79037918

7919+
/* Set initial guess for static energy in case of
7920+
data-driven fluid model. */
7921+
if (config->GetKind_FluidModel() == DATADRIVEN_FLUID) {
7922+
FluidModel->SetInitialEnergy(config->GetEnergy_Init_DataDriven());
7923+
}
7924+
79047925
/* Compute the prescribed pressure, static energy per unit mass
79057926
and speed of sound. */
79067927
FluidModel->SetTDState_Prho(P_static, Rho_static);
@@ -7986,6 +8007,12 @@ void CFEM_DG_EulerSolver::BoundaryStates_Riemann(CConfig *confi
79868007
const su2double Pressure_e = config->GetRiemann_Var1(Marker_Tag)
79878008
/ config->GetPressure_Ref();
79888009

8010+
/* Set initial guesses for density and static energy in case of
8011+
data-driven fluid model. */
8012+
if (config->GetKind_FluidModel() == DATADRIVEN_FLUID) {
8013+
FluidModel->SetInitialDensity(config->GetDensity_Init_DataDriven());
8014+
FluidModel->SetInitialEnergy(config->GetEnergy_Init_DataDriven());
8015+
}
79898016
/* Loop over the faces that are treated simultaneously. */
79908017
for(unsigned short l=0; l<nFaceSimul; ++l) {
79918018
const unsigned short llNVar = l*nVar;

SU2_CFD/src/solvers/CIncEulerSolver.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
#include "../../include/fluid/CConstantDensity.hpp"
3131
#include "../../include/fluid/CIncIdealGas.hpp"
3232
#include "../../include/fluid/CIncIdealGasPolynomial.hpp"
33-
#include "../../include/fluid/CDataDrivenFluid.hpp"
3433
#include "../../include/variables/CIncNSVariable.hpp"
3534
#include "../../include/limiters/CLimiterDetails.hpp"
3635
#include "../../../Common/include/toolboxes/geometry_toolbox.hpp"
@@ -329,14 +328,6 @@ void CIncEulerSolver::SetNondimensionalization(CConfig *config, unsigned short i
329328
auxFluidModel->SetTDState_T(Temperature_FreeStream, config->GetSpecies_Init());
330329
break;
331330

332-
case DATADRIVEN_FLUID:
333-
334-
auxFluidModel = new CDataDrivenFluid(config);
335-
auxFluidModel->SetTDState_T(Temperature_FreeStream);
336-
Pressure_Thermodynamic = auxFluidModel->GetPressure();
337-
config->SetPressure_Thermodynamic(Pressure_Thermodynamic);
338-
break;
339-
340331
default:
341332

342333
SU2_MPI::Error("Fluid model not implemented for incompressible solver.", CURRENT_FUNCTION);
@@ -499,11 +490,6 @@ void CIncEulerSolver::SetNondimensionalization(CConfig *config, unsigned short i
499490
fluidModel->SetTDState_T(Temperature_FreeStreamND);
500491
break;
501492

502-
case DATADRIVEN_FLUID:
503-
fluidModel = new CDataDrivenFluid(config, false);
504-
fluidModel->SetTDState_T(Temperature_FreeStreamND);
505-
break;
506-
507493
}
508494

509495
if (viscous) {

0 commit comments

Comments
 (0)