Engine mass-flow rate coupling for zero-thrust simulation by m-minervino · Pull Request #2753 · su2code/SU2 · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions Common/include/CConfig.hpp
2 changes: 2 additions & 0 deletions Common/src/CConfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1793,6 +1793,8 @@ void CConfig::SetConfig_Options() {
addEnumOption("ENGINE_INFLOW_TYPE", Kind_Engine_Inflow, Engine_Inflow_Map, FAN_FACE_MACH);
/* DESCRIPTION: Evaluate a problem with engines */
addBoolOption("ENGINE", Engine, false);
/* DESCRIPTION: Use exhaust mass flow as inlet mass flow. */
addBoolOption("ENGINE_EXHAUST_TO_INLET", out2in_mdot_engine, false);

/* DESCRIPTION: Sharpness coefficient for the buffet sensor */
addDoubleOption("BUFFET_K", Buffet_k, 10.0);
Expand Down
11 changes: 11 additions & 0 deletions SU2_CFD/src/solvers/CEulerSolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7622,6 +7622,17 @@ void CEulerSolver::BC_Engine_Inflow(CGeometry *geometry, CSolver **solver_contai

Target_Inflow_MassFlow = config->GetEngineInflow_Target(Marker_Tag) / (config->GetDensity_Ref() * config->GetVelocity_Ref());

if (config->GetExhaustToInlet_Engine()) {
su2double Outlet_MF = 0.0;
unsigned short nMarker_Global = config->GetnMarker_CfgFile();
for (unsigned short iMarker_Global = 0; iMarker_Global < nMarker_Global; iMarker_Global++) {
if (config->GetMarker_CfgFile_KindBC(config->GetMarker_CfgFile_TagBound(iMarker_Global)) == ENGINE_EXHAUST) {
Outlet_MF = Outlet_MF + config->GetExhaust_MassFlow(config->GetMarker_CfgFile_TagBound(iMarker_Global));
}
}
Target_Inflow_MassFlow = Outlet_MF;
}

if (config->GetSystemMeasurements() == US) Target_Inflow_MassFlow /= 32.174;

if (Engine_HalfModel) Target_Inflow_MassFlow /= 2.0;
Expand Down
106 changes: 106 additions & 0 deletions TestCases/euler/turbofan_MFR_coupling/MFR_coupling.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% SU2 configuration file %
% Case description: Turbofan with outlets-to-inlet mass-flow rate coupling___ %
% Author: Angelo Passariello and Mauro Minervino_____________________________ %
% Institution: Italian Aerospace Research Centre (CIRA)______________________ %
% Date: 16/03/2026 %
% File Version 8.4.0 "Harrier" %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------%
%
SOLVER= EULER
MATH_PROBLEM= DIRECT
RESTART_SOL= NO
%
% ------------------------------- SOLVER CONTROL ------------------------------%
%
ITER= 10000
CONV_FIELD= RMS_DENSITY
CONV_RESIDUAL_MINVAL= -15
CONV_STARTITER= 10
%
% -------------------- COMPRESSIBLE FREE-STREAM DEFINITION --------------------%
%
MACH_NUMBER= 0.16719966920674
AOA= 0.0
INIT_OPTION= TD_CONDITIONS
FREESTREAM_OPTION= DENSITY_FS
FREESTREAM_PRESSURE= 101325.0
FREESTREAM_TEMPERATURE= 288.15
REYNOLDS_NUMBER= 3.8951057985067e+6
FREESTREAM_DENSITY= 1.225
FREESTREAM_VELOCITY= ( 56.897550640000, 0.0, 0.0 )
FREESTREAM_VISCOSITY= 1.78938027807758E-05
REF_DIMENSIONALIZATION= DIMENSIONAL
%
% ---------------------- REFERENCE VALUE DEFINITION ---------------------------%
%
% Reference origin for moment computation (m or in)
REF_ORIGIN_MOMENT_X = 0.00
REF_ORIGIN_MOMENT_Y = 0.00
REF_ORIGIN_MOMENT_Z = 0.00
REF_LENGTH= 1.0
REF_AREA= 1.0
SEMI_SPAN= 1.0
%
% -------------------- BOUNDARY CONDITION DEFINITION --------------------------%
%
MARKER_EULER= ( INTAKE, NOZZLE_TE, PLUG_TE, PLUG, NACELLE_TE, SPINNER, LIP, NOZZLE_INNER, NOZZLE, NACELLE_INNER, COWL )
MARKER_FAR= ( FF )
ENGINE_INFLOW_TYPE= FAN_FACE_MDOT
ENGINE_EXHAUST_TO_INLET= YES
DAMP_ENGINE_INFLOW= 0.01
MARKER_ENGINE_INFLOW= ( FAN_IN, 140.0 )
MARKER_ENGINE_EXHAUST= ( FAN_OUT, 289.761088684333, 103321.726628227, CORE_OUT, 289.761088684333, 103321.726628227 )
%
% ------------------------ SURFACES IDENTIFICATION ----------------------------%
%
MARKER_PLOTTING = ( NOZZLE_TE, PLUG_TE, PLUG, NACELLE_TE, SPINNER, LIP, INTAKE, NOZZLE_INNER, NOZZLE, NACELLE_INNER, COWL, FAN_IN, FAN_OUT, CORE_OUT )
MARKER_MONITORING = ( NACELLE_TE, LIP, COWL )
MARKER_ANALYZE = ( FAN_IN, FAN_OUT, CORE_OUT )
MARKER_ANALYZE_AVERAGE = MASSFLUX
%
% ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------%
%
NUM_METHOD_GRAD= GREEN_GAUSS
NUM_METHOD_GRAD_RECON = GREEN_GAUSS
CFL_NUMBER= 1.0
%
% ----------- SLOPE LIMITER AND DISSIPATION SENSOR DEFINITION -----------------%
%
MUSCL_FLOW= NO
MUSCL_TURB= YES
%
% ------------------------ LINEAR SOLVER DEFINITION ---------------------------%
%
LINEAR_SOLVER= FGMRES
LINEAR_SOLVER_ITER= 5
%
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
%
CONV_NUM_METHOD_FLOW= JST
LOW_MACH_PREC= YES
ENTROPY_FIX_COEFF= 0.001
%
% ------------------------- SCREEN/HISTORY VOLUME OUTPUT --------------------------%
%
SCREEN_OUTPUT= (INNER_ITER, RMS_DENSITY, LIFT, DRAG, SURFACE_MASSFLOW)
HISTORY_OUTPUT= (ITER, AERO_COEFF, RMS_RES, AOA, NONPHYSICAL_POINTS, SURFACE_MASSFLOW, SURFACE_STATIC_PRESSURE)
VOLUME_OUTPUT= (COORDINATES, SOLUTION, PRIMITIVE)
OUTPUT_WRT_FREQ= 1000
WRT_FORCES_BREAKDOWN= YES
%
% ------------------------- INPUT/OUTPUT FILE INFORMATION --------------------------%
%
SURFACE_FILENAME= surface_flow
VOLUME_FILENAME= flow
RESTART_FILENAME= restart_flow.dat
MESH_FILENAME= engine-alone.cgns
MESH_FORMAT= CGNS
TABULAR_FORMAT= TECPLOT
OUTPUT_FILES= (RESTART, TECPLOT, SURFACE_TECPLOT)
READ_BINARY_RESTART= YES
REORIENT_ELEMENTS= YES
8 changes: 8 additions & 0 deletions TestCases/parallel_regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,14 @@ def main():
ramp_msw.test_vals = [-7.522451, -1.791193, -0.077520, 0.054427]
test_list.append(ramp_msw)

# MFR_coupling
MFR_coupling = TestCase('MFR_coupling')
MFR_coupling.cfg_dir = "euler/turbofan_MFR_coupling"
MFR_coupling.cfg_file = "MFR_coupling.cfg"
MFR_coupling.test_iter = 100
MFR_coupling.test_vals = [-2.1124e+02, 1.5003e+02, 2.0151e+01]
test_list.append(MFR_coupling)

##########################
### Compressible N-S ###
##########################
Expand Down
3 changes: 3 additions & 0 deletions config_template.cfg