Skip to content

Commit a38005e

Browse files
committed
Merge remote-tracking branch 'origin/develop' into symmetry_jacobian
2 parents a537aa1 + c9f098d commit a38005e

File tree

10 files changed

+338
-1
lines changed

10 files changed

+338
-1
lines changed

SU2_CFD/include/solvers/CTurbSolver.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,11 @@ class CTurbSolver : public CScalarSolver<CTurbVariable> {
140140
Inlet_TurbVars[val_marker][val_vertex][val_dim] = val_turb_var;
141141
}
142142

143+
/*!
144+
* \brief Register additional In- or Outputs for RANS.
145+
* \param[in] input - Boolean whether In- or Output should be registered.
146+
* \param[in] config - The particular config.
147+
* \returns The number of extra variables.
148+
*/
149+
unsigned long RegisterSolutionExtra(bool input, const CConfig* config) final;
143150
};

SU2_CFD/include/variables/CTurbVariable.hpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,9 @@ class CTurbVariable : public CScalarVariable {
100100
*/
101101
inline void SetIntermittency(unsigned long iPoint, su2double val_intermittency) final { intermittency(iPoint) = val_intermittency; }
102102

103+
/*!
104+
* \brief Register eddy viscosity (muT) as Input or Output of an AD recording.
105+
* \param[in] input - Boolean whether In- or Output should be registered.
106+
*/
107+
void RegisterEddyViscosity(bool input);
103108
};
104-

SU2_CFD/include/variables/CVariable.hpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,20 @@ class CVariable {
137137
RegisterContainer(input, variable, &ad_index);
138138
}
139139

140+
void RegisterContainer(bool input, su2activevector& variable, su2vector<int>* ad_index = nullptr) {
141+
const auto nPoint = variable.rows();
142+
SU2_OMP_FOR_STAT(roundUpDiv(nPoint,omp_get_num_threads()))
143+
for (unsigned long iPoint = 0; iPoint < nPoint; ++iPoint) {
144+
145+
if (input) AD::RegisterInput(variable(iPoint));
146+
else AD::RegisterOutput(variable(iPoint));
147+
148+
if (ad_index) AD::SetIndex((*ad_index)(iPoint), variable(iPoint));
149+
150+
}
151+
END_SU2_OMP_FOR
152+
}
153+
140154
public:
141155
/*--- Disable copy and assignment. ---*/
142156
CVariable(const CVariable&) = delete;

SU2_CFD/src/solvers/CDiscAdjSolver.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ void CDiscAdjSolver::RegisterSolution(CGeometry *geometry, CConfig *config) {
162162
/*--- Boolean true indicates that an input is registered ---*/
163163
direct_solver->GetNodes()->RegisterSolution(true);
164164

165+
/*--- Register quantities that are no solver variables but further inputs/outputs of the (outer) iteration. ---*/
165166
direct_solver->RegisterSolutionExtra(true, config);
166167

167168
if (time_n_needed)

SU2_CFD/src/solvers/CTurbSolver.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,3 +236,12 @@ void CTurbSolver::Impose_Fixed_Values(const CGeometry *geometry, const CConfig *
236236
}
237237

238238
}
239+
240+
unsigned long CTurbSolver::RegisterSolutionExtra(bool input, const CConfig* config) {
241+
242+
/*--- Register muT as input/output of a RANS iteration. ---*/
243+
nodes->RegisterEddyViscosity(input);
244+
245+
/*--- We don't need to save adjoint values for muT. ---*/
246+
return 0;
247+
}

SU2_CFD/src/variables/CNSVariable.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ void CNSVariable::SetRoe_Dissipation_FD(unsigned long iPoint, su2double val_wall
114114
AD::SetPreaccIn(Primitive(iPoint, indices.EddyViscosity()));
115115
/*--- Laminar viscosity --- */
116116
AD::SetPreaccIn(Primitive(iPoint, indices.LaminarViscosity()));
117+
/*--- Density; GetDensity reads from Solution (not Primitive) at index 0 ---*/
118+
AD::SetPreaccIn(Solution(iPoint, 0));
117119

118120
su2double uijuij = 0.0;
119121

SU2_CFD/src/variables/CTurbVariable.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,7 @@ CTurbVariable::CTurbVariable(unsigned long npoint, unsigned long ndim, unsigned
3636
intermittency.resize(nPoint) = su2double(1.0);
3737

3838
}
39+
40+
void CTurbVariable::RegisterEddyViscosity(bool input) {
41+
RegisterContainer(input, muT);
42+
}

TestCases/vandv.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,22 @@ def main():
8585
swbli_sst.test_vals = [-11.502801, -10.850953, -11.573565, -10.370903, -11.405169, -3.864744, 0.001794, -1.451606, -3.606886, 10.000000]
8686
test_list.append(swbli_sst)
8787

88+
# DSMA661 - SA
89+
dsma661_sa = TestCase('dsma661_sa')
90+
dsma661_sa.cfg_dir = "vandv/rans/dsma661"
91+
dsma661_sa.cfg_file = "dsma661_sa_config.cfg"
92+
dsma661_sa.test_iter = 5
93+
dsma661_sa.test_vals = [-11.013046, -8.140606, -8.989695, -5.978550, -10.593381, 0.155689, 0.024173]
94+
test_list.append(dsma661_sa)
95+
96+
# DSMA661 - SST-V2003m
97+
dsma661_sst = TestCase('dsma661_sst')
98+
dsma661_sst.cfg_dir = "vandv/rans/dsma661"
99+
dsma661_sst.cfg_file = "dsma661_sst_config.cfg"
100+
dsma661_sst.test_iter = 5
101+
dsma661_sst.test_vals = [-11.010713, -8.424971, -9.045546, -5.969005, -10.556865, -8.053764, 0.155948, 0.023353]
102+
test_list.append(dsma661_sst)
103+
88104
##########################
89105
### Incompressible RANS ###
90106
##########################
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
% ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------%
2+
%
3+
% Solver type (EULER, NAVIER_STOKES, RANS,
4+
% INC_EULER, INC_NAVIER_STOKES, INC_RANS,
5+
% NEMO_EULER, NEMO_NAVIER_STOKES,
6+
% FEM_EULER, FEM_NAVIER_STOKES, FEM_RANS, FEM_LES,
7+
% HEAT_EQUATION_FVM, ELASTICITY)
8+
SOLVER= RANS
9+
MATH_PROBLEM= DIRECT
10+
RESTART_SOL= YES
11+
DISCARD_INFILES= NO
12+
SYSTEM_MEASUREMENTS= SI
13+
KIND_TURB_MODEL= SA % (NONE, SA, SST)
14+
SA_OPTIONS= NONE
15+
%
16+
% ------------------------------- SOLVER CONTROL ------------------------------%
17+
%
18+
ITER= 1000000
19+
CONV_FIELD= RMS_DENSITY
20+
CONV_RESIDUAL_MINVAL= -11
21+
CONV_STARTITER= 10
22+
CONV_CAUCHY_ELEMS= 100
23+
CONV_CAUCHY_EPS= 1E-11
24+
%
25+
% ---------------------- REFERENCE VALUE DEFINITION ---------------------------%
26+
%
27+
REF_ORIGIN_MOMENT_X = 0.00
28+
REF_ORIGIN_MOMENT_Y = 0.00
29+
REF_ORIGIN_MOMENT_Z = 0.00
30+
REF_LENGTH= 1.0
31+
REF_VELOCITY= 1.0
32+
REF_VISCOSITY= 1.0
33+
REF_AREA= 1.0
34+
%
35+
% -------------------- COMPRESSIBLE FREE-STREAM DEFINITION --------------------%
36+
%
37+
MACH_NUMBER= 0.088
38+
AOA= 0
39+
INIT_OPTION= REYNOLDS
40+
FREESTREAM_OPTION= TEMPERATURE_FS
41+
FREESTREAM_TEMPERATURE= 300
42+
FREESTREAM_DENSITY= 1.2886
43+
FREESTREAM_VELOCITY= ( 30.5552677, 0.00, 0.00 )
44+
FREESTREAM_VISCOSITY= 1.853E-5
45+
FREESTREAM_NU_FACTOR= 3
46+
REYNOLDS_NUMBER= 1.2e6
47+
REYNOLDS_LENGTH= 1.0
48+
REF_DIMENSIONALIZATION= DIMENSIONAL
49+
%
50+
% --------------------------- VISCOSITY MODEL ---------------------------------%
51+
%
52+
% Viscosity model (SUTHERLAND, CONSTANT_VISCOSITY, POLYNOMIAL_VISCOSITY, FLAMELET).
53+
VISCOSITY_MODEL= SUTHERLAND
54+
MU_CONSTANT= 1.716E-5
55+
MU_REF= 1.716E-5
56+
MU_T_REF= 273.15
57+
SUTHERLAND_CONSTANT= 110.4
58+
%
59+
% -------------------- BOUNDARY CONDITION DEFINITION --------------------------%
60+
%
61+
% Navier-Stokes (no-slip), constant heat flux wall marker(s) (NONE = no marker)
62+
% Format: ( marker name, constant heat flux (J/m^2), ... )
63+
MARKER_HEATFLUX= (airfoil, 0.0)
64+
MARKER_FAR= (farfield)
65+
MARKER_PLOTTING = ( airfoil )
66+
MARKER_MONITORING = ( airfoil )
67+
MARKER_ANALYZE_AVERAGE = AREA
68+
%
69+
% ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------%
70+
%
71+
% Numerical method for spatial gradients (GREEN_GAUSS, WEIGHTED_LEAST_SQUARES)
72+
NUM_METHOD_GRAD= GREEN_GAUSS
73+
CFL_NUMBER= 1000.0 %For coarser meshes 1000 converges fast; for finer meshes 10-100 works well
74+
CFL_ADAPT= NO
75+
CFL_ADAPT_PARAM= ( 0.95, 1.05, 0.001, 10000, 0.00001 )
76+
%
77+
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
78+
%
79+
CONV_NUM_METHOD_FLOW= ROE
80+
MUSCL_FLOW= YES
81+
SLOPE_LIMITER_FLOW= VAN_ALBADA_EDGE
82+
TIME_DISCRE_FLOW= EULER_IMPLICIT
83+
%
84+
% -------------------- TURBULENT NUMERICAL METHOD DEFINITION ------------------%
85+
%
86+
CONV_NUM_METHOD_TURB= SCALAR_UPWIND
87+
MUSCL_TURB= NO
88+
SLOPE_LIMITER_TURB= VENKATAKRISHNAN
89+
TIME_DISCRE_TURB= EULER_IMPLICIT
90+
%
91+
% ------------------------ LINEAR SOLVER DEFINITION ---------------------------%
92+
%
93+
% Linear solver for implicit formulations (BCGSTAB, FGMRES)
94+
LINEAR_SOLVER= FGMRES
95+
LINEAR_SOLVER_PREC= ILU
96+
LINEAR_SOLVER_ILU_FILL_IN= 0
97+
LINEAR_SOLVER_ERROR= 1E-3
98+
LINEAR_SOLVER_ITER= 20
99+
%
100+
% ------------------------- SCREEN/HISTORY VOLUME OUTPUT --------------------------%
101+
%
102+
SCREEN_OUTPUT= (INNER_ITER, WALL_TIME, RMS_RES, LIFT, DRAG)
103+
HISTORY_OUTPUT= (INNER_ITER, WALL_TIME, RMS_RES, AERO_COEFF, FLOW_COEFF)
104+
VOLUME_OUTPUT = (COORDINATES, SOLUTION, PRIMITIVE, VORTEX_IDENTIFICATION, CFL_NUMBER, MESH_QUALITY, RESIDUALS)
105+
SCREEN_WRT_FREQ_INNER= 1
106+
HISTORY_WRT_FREQ_INNER= 1
107+
OUTPUT_WRT_FREQ= 200
108+
WRT_PERFORMANCE= YES
109+
WRT_AD_STATISTICS= YES
110+
WRT_RESTART_OVERWRITE= YES
111+
WRT_SURFACE_OVERWRITE= YES
112+
WRT_VOLUME_OVERWRITE= YES
113+
WRT_FORCES_BREAKDOWN= YES
114+
%
115+
% ------------------------- INPUT/OUTPUT FILE INFORMATION --------------------------%
116+
%
117+
MESH_FILENAME= mesh_turb_dsma661_65.su2 % mesh_turb_dsma661_65.su2, mesh_turb_dsma661_129.su2,
118+
%mesh_turb_dsma661_257.su2, mesh_turb_dsma661_513.su2, mesh_turb_dsma661_1025.su2
119+
MESH_FORMAT= SU2
120+
% 149_29, 297_57, 593_113, 1185_225, 2369_449,
121+
RESTART_FILENAME= restart_flow-149_29.dat
122+
VOLUME_FILENAME= flow-149_29
123+
BREAKDOWN_FILENAME= forces_breakdown-149_29.dat
124+
CONV_FILENAME= history-149_29
125+
SURFACE_FILENAME= suface-149_29
126+
127+
MESH_OUT_FILENAME= mesh_out.su2
128+
SOLUTION_FILENAME= sa_restart_flow-149_29.dat
129+
TABULAR_FORMAT= CSV
130+
OUTPUT_PRECISION= 15
131+
% Files to output
132+
% Possible formats : (TECPLOT_ASCII, TECPLOT, SURFACE_TECPLOT_ASCII,
133+
% SURFACE_TECPLOT, CSV, SURFACE_CSV, PARAVIEW_ASCII, PARAVIEW_LEGACY, SURFACE_PARAVIEW_ASCII,
134+
% SURFACE_PARAVIEW_LEGACY, PARAVIEW, SURFACE_PARAVIEW, RESTART_ASCII, RESTART, CGNS, SURFACE_CGNS, STL_ASCII, STL_BINARY)
135+
% default : (RESTART, PARAVIEW, SURFACE_PARAVIEW)
136+
OUTPUT_FILES= (RESTART, PARAVIEW, SURFACE_PARAVIEW)
137+
VALUE_OBJFUNC_FILENAME= of_eval.dat
138+
READ_BINARY_RESTART= YES
139+
REORIENT_ELEMENTS= YES
140+
%
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
% ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------%
2+
%
3+
% Solver type (EULER, NAVIER_STOKES, RANS,
4+
% INC_EULER, INC_NAVIER_STOKES, INC_RANS,
5+
% NEMO_EULER, NEMO_NAVIER_STOKES,
6+
% FEM_EULER, FEM_NAVIER_STOKES, FEM_RANS, FEM_LES,
7+
% HEAT_EQUATION_FVM, ELASTICITY)
8+
SOLVER= RANS
9+
MATH_PROBLEM= DIRECT
10+
RESTART_SOL= YES
11+
DISCARD_INFILES= NO
12+
SYSTEM_MEASUREMENTS= SI
13+
KIND_TURB_MODEL= SST % (NONE, SA, SST)
14+
SST_OPTIONS= V2003m
15+
%
16+
% ------------------------------- SOLVER CONTROL ------------------------------%
17+
%
18+
ITER= 1000000
19+
CONV_FIELD= RMS_DENSITY
20+
CONV_RESIDUAL_MINVAL= -11
21+
CONV_STARTITER= 10
22+
CONV_CAUCHY_ELEMS= 100
23+
CONV_CAUCHY_EPS= 1E-11
24+
%
25+
% ---------------------- REFERENCE VALUE DEFINITION ---------------------------%
26+
%
27+
REF_ORIGIN_MOMENT_X = 0.00
28+
REF_ORIGIN_MOMENT_Y = 0.00
29+
REF_ORIGIN_MOMENT_Z = 0.00
30+
REF_LENGTH= 1.0
31+
REF_VELOCITY= 1.0
32+
REF_VISCOSITY= 1.0
33+
REF_AREA= 1.0
34+
%
35+
% -------------------- COMPRESSIBLE FREE-STREAM DEFINITION --------------------%
36+
%
37+
MACH_NUMBER= 0.088
38+
AOA= 0
39+
INIT_OPTION= REYNOLDS
40+
FREESTREAM_OPTION= TEMPERATURE_FS
41+
FREESTREAM_TEMPERATURE= 300
42+
FREESTREAM_DENSITY= 1.2886
43+
FREESTREAM_VELOCITY= ( 30.5552677, 0.00, 0.00 )
44+
FREESTREAM_VISCOSITY= 1.853E-5
45+
FREESTREAM_NU_FACTOR= 3
46+
REYNOLDS_NUMBER= 1.2e6
47+
REYNOLDS_LENGTH= 1.0
48+
REF_DIMENSIONALIZATION= DIMENSIONAL
49+
%
50+
% --------------------------- VISCOSITY MODEL ---------------------------------%
51+
%
52+
% Viscosity model (SUTHERLAND, CONSTANT_VISCOSITY, POLYNOMIAL_VISCOSITY, FLAMELET).
53+
VISCOSITY_MODEL= SUTHERLAND
54+
MU_CONSTANT= 1.716E-5
55+
MU_REF= 1.716E-5
56+
MU_T_REF= 273.15
57+
SUTHERLAND_CONSTANT= 110.4
58+
%
59+
% -------------------- BOUNDARY CONDITION DEFINITION --------------------------%
60+
%
61+
% Navier-Stokes (no-slip), constant heat flux wall marker(s) (NONE = no marker)
62+
% Format: ( marker name, constant heat flux (J/m^2), ... )
63+
MARKER_HEATFLUX= (airfoil, 0.0)
64+
MARKER_FAR= (farfield)
65+
MARKER_PLOTTING = ( airfoil )
66+
MARKER_MONITORING = ( airfoil )
67+
MARKER_ANALYZE_AVERAGE = AREA
68+
%
69+
% ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------%
70+
%
71+
% Numerical method for spatial gradients (GREEN_GAUSS, WEIGHTED_LEAST_SQUARES)
72+
NUM_METHOD_GRAD= GREEN_GAUSS
73+
CFL_NUMBER= 1000.0 %For coarser meshes 1000 converges fast; for finer meshes 10-100 works well
74+
CFL_ADAPT= NO
75+
CFL_ADAPT_PARAM= ( 0.95, 1.05, 0.001, 10000, 0.00001 )
76+
%
77+
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
78+
%
79+
CONV_NUM_METHOD_FLOW= ROE
80+
MUSCL_FLOW= YES
81+
SLOPE_LIMITER_FLOW= VAN_ALBADA_EDGE
82+
TIME_DISCRE_FLOW= EULER_IMPLICIT
83+
%
84+
% -------------------- TURBULENT NUMERICAL METHOD DEFINITION ------------------%
85+
%
86+
CONV_NUM_METHOD_TURB= SCALAR_UPWIND
87+
MUSCL_TURB= NO
88+
SLOPE_LIMITER_TURB= VENKATAKRISHNAN
89+
TIME_DISCRE_TURB= EULER_IMPLICIT
90+
%
91+
% ------------------------ LINEAR SOLVER DEFINITION ---------------------------%
92+
%
93+
% Linear solver for implicit formulations (BCGSTAB, FGMRES)
94+
LINEAR_SOLVER= FGMRES
95+
LINEAR_SOLVER_PREC= LU_SGS
96+
LINEAR_SOLVER_ILU_FILL_IN= 0
97+
LINEAR_SOLVER_ERROR= 1E-3
98+
LINEAR_SOLVER_ITER= 20
99+
%
100+
% ------------------------- SCREEN/HISTORY VOLUME OUTPUT --------------------------%
101+
%
102+
SCREEN_OUTPUT= (INNER_ITER, WALL_TIME, RMS_RES, LIFT, DRAG)
103+
HISTORY_OUTPUT= (INNER_ITER, WALL_TIME, RMS_RES, RMS_NU_TILDE, AERO_COEFF, FLOW_COEFF)
104+
VOLUME_OUTPUT = (COORDINATES, SOLUTION, PRIMITIVE, VORTEX_IDENTIFICATION, CFL_NUMBER, MESH_QUALITY, RESIDUALS)
105+
SCREEN_WRT_FREQ_INNER= 1
106+
HISTORY_WRT_FREQ_INNER= 1
107+
OUTPUT_WRT_FREQ= 500
108+
WRT_PERFORMANCE= YES
109+
WRT_AD_STATISTICS= YES
110+
WRT_RESTART_OVERWRITE= YES
111+
WRT_SURFACE_OVERWRITE= YES
112+
WRT_VOLUME_OVERWRITE= YES
113+
WRT_FORCES_BREAKDOWN= YES
114+
%
115+
% ------------------------- INPUT/OUTPUT FILE INFORMATION --------------------------%
116+
%
117+
MESH_FILENAME= mesh_turb_dsma661_65.su2 % mesh_turb_dsma661_65.su2, mesh_turb_dsma661_129.su2,
118+
%mesh_turb_dsma661_257.su2, mesh_turb_dsma661_513.su2, mesh_turb_dsma661_1025.su2
119+
MESH_FORMAT= SU2
120+
% 149_29, 297_57, 593_113, 1185_225, 2369_449,
121+
RESTART_FILENAME= restart_flow-149_29.dat
122+
VOLUME_FILENAME= flow-149_29
123+
BREAKDOWN_FILENAME= forces_breakdown-149_29.dat
124+
CONV_FILENAME= history-149_29
125+
SURFACE_FILENAME= suface-149_29
126+
127+
MESH_OUT_FILENAME= mesh_out.su2
128+
SOLUTION_FILENAME= sst_restart_flow-149_29.dat
129+
TABULAR_FORMAT= CSV
130+
OUTPUT_PRECISION= 15
131+
% Files to output
132+
% Possible formats : (TECPLOT_ASCII, TECPLOT, SURFACE_TECPLOT_ASCII,
133+
% SURFACE_TECPLOT, CSV, SURFACE_CSV, PARAVIEW_ASCII, PARAVIEW_LEGACY, SURFACE_PARAVIEW_ASCII,
134+
% SURFACE_PARAVIEW_LEGACY, PARAVIEW, SURFACE_PARAVIEW, RESTART_ASCII, RESTART, CGNS, SURFACE_CGNS, STL_ASCII, STL_BINARY)
135+
% default : (RESTART, PARAVIEW, SURFACE_PARAVIEW)
136+
OUTPUT_FILES= (RESTART, PARAVIEW, SURFACE_PARAVIEW)
137+
VALUE_OBJFUNC_FILENAME= of_eval.dat
138+
READ_BINARY_RESTART= YES
139+
REORIENT_ELEMENTS= YES
140+
%

0 commit comments

Comments
 (0)