Skip to content

Commit b9d366d

Browse files
Merge branch 'develop' of https://github.com/su2code/SU2 into chore_cleanup_turbo_functions
2 parents 300224d + a8c5e15 commit b9d366d

19 files changed

Lines changed: 1471 additions & 19 deletions

Common/include/CConfig.hpp

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,8 @@ class CConfig {
184184
nMarker_NearFieldBound, /*!< \brief Number of near field boundary markers. */
185185
nMarker_ActDiskInlet, /*!< \brief Number of actuator disk inlet markers. */
186186
nMarker_ActDiskOutlet, /*!< \brief Number of actuator disk outlet markers. */
187+
nMarker_ActDiskBemInlet, /*!< \brief Number of actuator disk BEM inlet markers. */
188+
nMarker_ActDiskBemOutlet, /*!< \brief Number of actuator disk BEM outlet markers. */
187189
nMarker_Deform_Mesh_Sym_Plane, /*!< \brief Number of markers with symmetric deformation */
188190
nMarker_Deform_Mesh, /*!< \brief Number of deformable markers at the boundary. */
189191
nMarker_Fluid_Load, /*!< \brief Number of markers in which the flow load is computed/employed. */
@@ -242,6 +244,8 @@ class CConfig {
242244
*Marker_CHTInterface, /*!< \brief Conjugate heat transfer interface markers. */
243245
*Marker_ActDiskInlet, /*!< \brief Actuator disk inlet markers. */
244246
*Marker_ActDiskOutlet, /*!< \brief Actuator disk outlet markers. */
247+
*Marker_ActDiskBemInlet, /*!< \brief Actuator disk BEM inlet markers. */
248+
*Marker_ActDiskBemOutlet, /*!< \brief Actuator disk BEM outlet markers. */
245249
*Marker_Inlet, /*!< \brief Inlet flow markers. */
246250
*Marker_Inlet_Species, /*!< \brief Inlet species markers. */
247251
*Marker_Inlet_Turb, /*!< \brief Inlet turbulent markers. */
@@ -344,8 +348,16 @@ class CConfig {
344348
su2double *ActDiskOutlet_GrossThrust; /*!< \brief Specified outlet gross thrust for actuator disk. */
345349
su2double *ActDiskOutlet_Force; /*!< \brief Specified outlet force for actuator disk. */
346350
su2double *ActDiskOutlet_Power; /*!< \brief Specified outlet power for actuator disk. */
351+
su2double *ActDiskOutlet_Thrust_BEM; /*!< \brief Specified outlet thrust for actuator disk. */
352+
su2double *ActDiskOutlet_Torque_BEM; /*!< \brief Specified outlet torque for actuator disk. */
347353
su2double **ActDisk_PressJump,
348354
**ActDisk_TempJump, **ActDisk_Omega; /*!< \brief Specified deltas for actuator disk.*/
355+
su2double **ActDiskBem_CG[3]; /*!< \brief Specified center for actuator disk BEM.*/
356+
su2double **ActDiskBem_Axis[3]; /*!< \brief Specified axis for actuator disk BEM.*/
357+
su2double BEM_blade_angle; /*!< \brief Propeller blade angle.*/
358+
string BEM_prop_filename; /*!< \brief Propeller filename.*/
359+
unsigned short ActDiskBem_Frequency; /*!< \brief Frequency of updating actuator disk with BEM. */
360+
bool History_File_Append_Flag; /*!< \brief Flag to append history file.*/
349361
su2double *ActDisk_DeltaPress; /*!< \brief Specified pressure delta for actuator disk. */
350362
su2double *ActDisk_DeltaTemp; /*!< \brief Specified temperature delta for actuator disk. */
351363
su2double *ActDisk_TotalPressRatio; /*!< \brief Specified tot. pres. ratio for actuator disk. */
@@ -1365,6 +1377,10 @@ class CConfig {
13651377
unsigned short & nMarker_ActDiskInlet, unsigned short & nMarker_ActDiskOutlet, string* & Marker_ActDiskInlet, string* & Marker_ActDiskOutlet,
13661378
su2double** & ActDisk_PressJump, su2double** & ActDisk_TempJump, su2double** & ActDisk_Omega);
13671379

1380+
void addActDiskBemOption(const string& name,
1381+
unsigned short& nMarker_ActDiskBemInlet, unsigned short& nMarker_ActDiskBemOutlet, string*& Marker_ActDiskBemInlet, string*& Marker_ActDiskBemOutlet,
1382+
su2double**& ActDiskBem_X, su2double**& ActDiskBem_Y, su2double**& ActDiskBem_Z);
1383+
13681384
void addWallFunctionOption(const string &name, unsigned short &list_size,
13691385
string* &string_field, WALL_FUNCTIONS* &val_Kind_WF,
13701386
unsigned short** &val_IntInfo_WF, su2double** &val_DoubleInfo_WF);
@@ -6659,6 +6675,31 @@ class CConfig {
66596675
*/
66606676
su2double GetActDisk_Omega(const string& val_marker, unsigned short val_index) const;
66616677

6678+
/*!
6679+
* \brief Get the Center of the actuator disk with BEM.
6680+
*/
6681+
su2double GetActDiskBem_CG(unsigned short iDim, string val_marker, unsigned short val_index) const;
6682+
6683+
/*!
6684+
* \brief Get the axis of the actuator disk with BEM.
6685+
*/
6686+
su2double GetActDiskBem_Axis(unsigned short iDim, string val_marker, unsigned short val_index) const;
6687+
6688+
/*!
6689+
* \brief Get the frequency of updating the actuator disk with BEM.
6690+
*/
6691+
const unsigned short& GetActDiskBem_Frequency(void) const { return ActDiskBem_Frequency; }
6692+
6693+
/*!
6694+
* \brief Get the blade angle of the propeller.
6695+
*/
6696+
su2double GetBEM_blade_angle(void) const { return BEM_blade_angle; }
6697+
6698+
/*!
6699+
* \brief Get the filename of the propeller.
6700+
*/
6701+
const string& GetBEM_prop_filename(void) const { return BEM_prop_filename; }
6702+
66626703
/*!
66636704
* \brief Get Actuator Disk Outlet for boundary <i>val_marker</i> (actuator disk inlet).
66646705
* \return Actuator Disk Outlet from the config information for the marker <i>val_marker</i>.
@@ -8191,6 +8232,20 @@ class CConfig {
81918232
*/
81928233
su2double GetActDiskOutlet_Power(const string& val_marker) const;
81938234

8235+
/*!
8236+
* \brief Get the thrust at the actuator disk outlet boundary.
8237+
* \param[in] val_marker - Marker corresponding to the outlet (actuator disk) boundary.
8238+
* \return The outlet (actuator disk) thrust.
8239+
*/
8240+
su2double GetActDiskOutlet_Thrust_BEM(string val_marker) const;
8241+
8242+
/*!
8243+
* \brief Get the torque at the actuator disk outlet boundary.
8244+
* \param[in] val_marker - Marker corresponding to the outlet boundary.
8245+
* \return The outlet (actuator disk) torque.
8246+
*/
8247+
su2double GetActDiskOutlet_Torque_BEM(string val_marker) const;
8248+
81948249
/*!
81958250
* \brief Get the back pressure (static) at an outlet boundary.
81968251
* \param[in] val_index - Index corresponding to the outlet boundary.
@@ -8226,6 +8281,24 @@ class CConfig {
82268281
*/
82278282
void SetActDiskOutlet_Power(unsigned short val_marker, su2double val_actdisk_power) { ActDiskOutlet_Power[val_marker] = val_actdisk_power; }
82288283

8284+
/*!
8285+
* \brief Set the thrust at the outlet (actuator disk) boundary.
8286+
* \param[in] val_marker - Marker corresponding to the outlet (actuator disk) boundary.
8287+
* \param[in] val_actdisk_thrust_bem - Value of the actuator disk thrust.
8288+
*/
8289+
void SetActDiskOutlet_Thrust_BEM(unsigned short val_marker, su2double val_actdisk_thrust_bem) {
8290+
ActDiskOutlet_Thrust_BEM[val_marker] = val_actdisk_thrust_bem;
8291+
}
8292+
8293+
/*!
8294+
* \brief Get the back pressure (static) at an outlet boundary.
8295+
* \param[in] val_marker - Marker corresponding to the outlet boundary.
8296+
* \param[in] val_actdisk_torque_bem - Value of the actuator disk torque.
8297+
*/
8298+
void SetActDiskOutlet_Torque_BEM(unsigned short val_marker, su2double val_actdisk_torque_bem) {
8299+
ActDiskOutlet_Torque_BEM[val_marker] = val_actdisk_torque_bem;
8300+
}
8301+
82298302
/*!
82308303
* \brief Get the displacement value at an displacement boundary.
82318304
* \param[in] val_index - Index corresponding to the displacement boundary.

Common/include/basic_types/ad_structure.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,8 @@ FORCEINLINE void SetIndex(int& index, const su2double& data) { index = data.getI
396396

397397
// WARNING: For performance reasons, this method does not perform bounds checking.
398398
// When using it, please ensure sufficient adjoint vector size by a call to AD::ResizeAdjoints().
399+
// This method does not perform locking either.
400+
// It should be safeguarded by calls to AD::BeginUseAdjoints() and AD::EndUseAdjoints().
399401
FORCEINLINE void SetDerivative(int index, const double val) {
400402
if (index == 0) // Allow multiple threads to "set the derivative" of passive variables without causing data races.
401403
return;
@@ -406,6 +408,8 @@ FORCEINLINE void SetDerivative(int index, const double val) {
406408
// WARNING: For performance reasons, this method does not perform bounds checking.
407409
// If called after tape evaluations, the adjoints should exist.
408410
// Otherwise, please ensure sufficient adjoint vector size by a call to AD::ResizeAdjoints().
411+
// This method does not perform locking either.
412+
// It should be safeguarded by calls to AD::BeginUseAdjoints() and AD::EndUseAdjoints().
409413
FORCEINLINE double GetDerivative(int index) {
410414
return AD::getTape().getGradient(index, codi::AdjointsManagement::Manual);
411415
}

Common/include/option_structure.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1857,7 +1857,8 @@ enum ACTDISK_TYPE {
18571857
DRAG_MINUS_THRUST = 4, /*!< \brief User specifies the D-T. */
18581858
MASSFLOW = 5, /*!< \brief User specifies the massflow. */
18591859
POWER = 6, /*!< \brief User specifies the power. */
1860-
VARIABLE_LOAD = 7 /*!< \brief User specifies the load distribution. */
1860+
VARIABLE_LOAD = 7, /*!< \brief User specifies the load distribution. */
1861+
BLADE_ELEMENT = 8 /*!< \brief User specifies to use Blade element method. */
18611862
};
18621863
static const MapType<std::string, ACTDISK_TYPE> ActDisk_Map = {
18631864
MakePair("VARIABLES_JUMP", VARIABLES_JUMP)
@@ -1867,6 +1868,7 @@ static const MapType<std::string, ACTDISK_TYPE> ActDisk_Map = {
18671868
MakePair("MASSFLOW", MASSFLOW)
18681869
MakePair("POWER", POWER)
18691870
MakePair("VARIABLE_LOAD", VARIABLE_LOAD)
1871+
MakePair("BLADE_ELEMENT", BLADE_ELEMENT)
18701872
};
18711873

18721874
/*!

Common/src/CConfig.cpp

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,19 @@ void CConfig::addActDiskOption(const string & name, unsigned short & nMarker_Act
557557
option_map.insert(pair<string, COptionBase *>(name, val));
558558
}
559559

560+
void CConfig::addActDiskBemOption(const string& name,
561+
unsigned short& nMarker_ActDiskBemInlet, unsigned short& nMarker_ActDiskBemOutlet,
562+
string*& Marker_ActDiskBemInlet, string*& Marker_ActDiskBemOutlet,
563+
su2double**& ActDiskBem_X, su2double**& ActDiskBem_Y, su2double**& ActDiskBem_Z) {
564+
assert(option_map.find(name) == option_map.end());
565+
all_options.insert(pair<string, bool>(name, true));
566+
COptionBase* val = new COptionActDisk(name,
567+
nMarker_ActDiskBemInlet, nMarker_ActDiskBemOutlet,
568+
Marker_ActDiskBemInlet, Marker_ActDiskBemOutlet,
569+
ActDiskBem_X, ActDiskBem_Y, ActDiskBem_Z);
570+
option_map.insert(pair<string, COptionBase *>(name, val));
571+
}
572+
560573
void CConfig::addWallFunctionOption(const string &name, unsigned short &list_size, string* &string_field,
561574
WALL_FUNCTIONS* &val_Kind_WF, unsigned short** &val_IntInfo_WF,
562575
su2double** &val_DoubleInfo_WF) {
@@ -921,6 +934,9 @@ void CConfig::SetPointersNull() {
921934
ActDiskOutlet_Power = nullptr; ActDiskOutlet_Temperature = nullptr; ActDiskOutlet_TotalTemperature = nullptr;
922935
ActDiskOutlet_MassFlow = nullptr;
923936

937+
ActDiskOutlet_Thrust_BEM = nullptr;
938+
ActDiskOutlet_Torque_BEM = nullptr;
939+
924940
ActDisk_DeltaPress = nullptr; ActDisk_DeltaTemp = nullptr;
925941
ActDisk_TotalPressRatio = nullptr; ActDisk_TotalTempRatio = nullptr; ActDisk_StaticPressRatio = nullptr;
926942
ActDisk_StaticTempRatio = nullptr; ActDisk_NetThrust = nullptr; ActDisk_GrossThrust = nullptr;
@@ -1523,6 +1539,16 @@ void CConfig::SetConfig_Options() {
15231539
nMarker_ActDiskInlet, nMarker_ActDiskOutlet, Marker_ActDiskInlet, Marker_ActDiskOutlet,
15241540
ActDisk_PressJump, ActDisk_TempJump, ActDisk_Omega);
15251541

1542+
/*!\brief MARKER_ACTDISK_BEM_CG\n DESCRIPTION: Actuator disk CG for blade element momentum (BEM) method. \ingroup Config*/
1543+
addActDiskBemOption("MARKER_ACTDISK_BEM_CG",
1544+
nMarker_ActDiskBemInlet, nMarker_ActDiskBemOutlet, Marker_ActDiskBemInlet, Marker_ActDiskBemOutlet,
1545+
ActDiskBem_CG[0], ActDiskBem_CG[1], ActDiskBem_CG[2]);
1546+
1547+
/*!\brief MARKER_ACTDISK_BEM_AXIS\n DESCRIPTION: Actuator disk axis for blade element momentum (BEM) method. \ingroup Config*/
1548+
addActDiskBemOption("MARKER_ACTDISK_BEM_AXIS",
1549+
nMarker_ActDiskBemInlet, nMarker_ActDiskBemOutlet, Marker_ActDiskBemInlet, Marker_ActDiskBemOutlet,
1550+
ActDiskBem_Axis[0], ActDiskBem_Axis[1], ActDiskBem_Axis[2]);
1551+
15261552
/*!\brief ACTDISK_FILENAME \n DESCRIPTION: Input file for a specified actuator disk (w/ extension) \n DEFAULT: actdiskinput.dat \ingroup Config*/
15271553
addStringOption("ACTDISK_FILENAME", ActDisk_FileName, string("actdiskinput.dat"));
15281554

@@ -1648,6 +1674,16 @@ void CConfig::SetConfig_Options() {
16481674
addBoolOption("SUBSONIC_ENGINE", SubsonicEngine, false);
16491675
/* DESCRIPTION: Actuator disk double surface */
16501676
addBoolOption("ACTDISK_DOUBLE_SURFACE", ActDisk_DoubleSurface, false);
1677+
1678+
/* DESCRIPTION: Actuator disk BEM switch for history file appending.*/
1679+
addBoolOption("HISTORY_FILE_APPEND", History_File_Append_Flag, false);
1680+
/* DESCRIPTION: Propeller blade angle for actuator disk BEM.*/
1681+
addDoubleOption("BEM_PROP_BLADE_ANGLE", BEM_blade_angle, 23.9);
1682+
/* DESCRIPTION: Propeller file name for actuator disk BEM.*/
1683+
addStringOption("BEM_PROP_FILENAME", BEM_prop_filename, string("prop_geom_alfclcd_data.txt"));
1684+
/* DESCRIPTION: Frequency for updating actuator disk with BEM.*/
1685+
addUnsignedShortOption("BEM_FREQ", ActDiskBem_Frequency, 40);
1686+
16511687
/* DESCRIPTION: Only half engine is in the computational grid */
16521688
addBoolOption("ENGINE_HALF_MODEL", Engine_HalfModel, false);
16531689
/* DESCRIPTION: Actuator disk double surface */
@@ -4975,6 +5011,18 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i
49755011
SU2_MPI::Error("Vorticity confinement feature currently not supported for incompressible or non-equilibrium model or axisymmetric flows.", CURRENT_FUNCTION);
49765012
}
49775013

5014+
/*--- Actuator disk BEM method for propellers feature currently not supported for incompressible or non-equilibrium model or axisymmetric flows. ---*/
5015+
5016+
if ((Kind_Solver == MAIN_SOLVER::INC_EULER
5017+
|| Kind_Solver == MAIN_SOLVER::INC_NAVIER_STOKES
5018+
|| Kind_Solver == MAIN_SOLVER::INC_RANS
5019+
|| Kind_Solver == MAIN_SOLVER::NEMO_EULER
5020+
|| Kind_Solver == MAIN_SOLVER::NEMO_NAVIER_STOKES
5021+
|| Axisymmetric)
5022+
&& ActDisk_DoubleSurface) {
5023+
SU2_MPI::Error("Actuator disk BEM method for propellers feature currently not supported for incompressible or non-equilibrium model or axisymmetric flows.", CURRENT_FUNCTION);
5024+
}
5025+
49785026
/*--- Check the coefficients for the polynomial models. ---*/
49795027

49805028
if (Kind_Solver != MAIN_SOLVER::INC_EULER && Kind_Solver != MAIN_SOLVER::INC_NAVIER_STOKES && Kind_Solver != MAIN_SOLVER::INC_RANS) {
@@ -5527,7 +5575,9 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) {
55275575
nMarker_Supersonic_Inlet + nMarker_Supersonic_Outlet + nMarker_Displacement + nMarker_Load +
55285576
nMarker_FlowLoad + nMarker_Custom + nMarker_Damper + nMarker_Fluid_Load +
55295577
nMarker_Clamped + nMarker_Load_Sine + nMarker_Load_Dir + nMarker_Disp_Dir +
5530-
nMarker_ActDiskInlet + nMarker_ActDiskOutlet + nMarker_ZoneInterface;
5578+
nMarker_ActDiskInlet + nMarker_ActDiskOutlet +
5579+
nMarker_ActDiskBemInlet + nMarker_ActDiskBemOutlet +
5580+
nMarker_ZoneInterface;
55315581

55325582
/*--- Add the possible send/receive domains ---*/
55335583

@@ -5682,6 +5732,9 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) {
56825732
ActDiskOutlet_Force = new su2double[nMarker_ActDiskOutlet] ();
56835733
ActDiskOutlet_Power = new su2double[nMarker_ActDiskOutlet] ();
56845734

5735+
ActDiskOutlet_Thrust_BEM = new su2double[nMarker_ActDiskOutlet]();
5736+
ActDiskOutlet_Torque_BEM = new su2double[nMarker_ActDiskOutlet]();
5737+
56855738
for (iMarker_ActDiskOutlet = 0; iMarker_ActDiskOutlet < nMarker_ActDiskOutlet; iMarker_ActDiskOutlet++) {
56865739
Marker_CfgFile_TagBound[iMarker_CfgFile] = Marker_ActDiskOutlet[iMarker_ActDiskOutlet];
56875740
Marker_CfgFile_KindBC[iMarker_CfgFile] = ACTDISK_OUTLET;
@@ -7598,6 +7651,12 @@ void CConfig::SetOutput(SU2_COMPONENT val_software, unsigned short val_izone) {
75987651
}
75997652
}
76007653

7654+
if (nMarker_ActDiskOutlet != 0) {
7655+
if (GetKind_ActDisk() == BLADE_ELEMENT) {
7656+
cout << endl << "Actuator disk with blade element momentum (BEM) method." << endl;
7657+
cout << "Actuator disk BEM method propeller data read from file: " << GetBEM_prop_filename() << endl;
7658+
}
7659+
}
76017660
}
76027661

76037662
bool CConfig::TokenizeString(string & str, string & option_name,
@@ -8091,6 +8150,9 @@ CConfig::~CConfig() {
80918150
delete[] ActDiskOutlet_Force;
80928151
delete[] ActDiskOutlet_Power;
80938152

8153+
delete[] ActDiskOutlet_Thrust_BEM;
8154+
delete[] ActDiskOutlet_Torque_BEM;
8155+
80948156
delete[] Outlet_MassFlow;
80958157
delete[] Outlet_Density;
80968158
delete[] Outlet_Area;
@@ -8676,6 +8738,22 @@ su2double CConfig::GetActDisk_Omega(const string& val_marker, unsigned short val
86768738
return ActDisk_Omega[iMarker_ActDisk][val_value];;
86778739
}
86788740

8741+
su2double CConfig::GetActDiskBem_CG(unsigned short iDim, string val_marker, unsigned short val_value) const {
8742+
unsigned short iMarker_ActDisk;
8743+
for (iMarker_ActDisk = 0; iMarker_ActDisk < nMarker_ActDiskBemInlet; iMarker_ActDisk++)
8744+
if ((Marker_ActDiskBemInlet[iMarker_ActDisk] == val_marker) ||
8745+
(Marker_ActDiskBemOutlet[iMarker_ActDisk] == val_marker)) break;
8746+
return ActDiskBem_CG[iDim][iMarker_ActDisk][val_value];
8747+
}
8748+
8749+
su2double CConfig::GetActDiskBem_Axis(unsigned short iDim, string val_marker, unsigned short val_value) const {
8750+
unsigned short iMarker_ActDisk;
8751+
for (iMarker_ActDisk = 0; iMarker_ActDisk < nMarker_ActDiskBemInlet; iMarker_ActDisk++)
8752+
if ((Marker_ActDiskBemInlet[iMarker_ActDisk] == val_marker) ||
8753+
(Marker_ActDiskBemOutlet[iMarker_ActDisk] == val_marker)) break;
8754+
return ActDiskBem_Axis[iDim][iMarker_ActDisk][val_value];
8755+
}
8756+
86798757
su2double CConfig::GetOutlet_MassFlow(const string& val_marker) const {
86808758
unsigned short iMarker_Outlet;
86818759
for (iMarker_Outlet = 0; iMarker_Outlet < nMarker_Outlet; iMarker_Outlet++)
@@ -9452,6 +9530,20 @@ su2double CConfig::GetActDiskOutlet_Power(const string& val_marker) const {
94529530
return ActDiskOutlet_Power[iMarker_ActDiskOutlet];
94539531
}
94549532

9533+
su2double CConfig::GetActDiskOutlet_Thrust_BEM(string val_marker) const {
9534+
unsigned short iMarker_ActDiskOutlet;
9535+
for (iMarker_ActDiskOutlet = 0; iMarker_ActDiskOutlet < nMarker_ActDiskOutlet; iMarker_ActDiskOutlet++)
9536+
if (Marker_ActDiskOutlet[iMarker_ActDiskOutlet] == val_marker) break;
9537+
return ActDiskOutlet_Thrust_BEM[iMarker_ActDiskOutlet];
9538+
}
9539+
9540+
su2double CConfig::GetActDiskOutlet_Torque_BEM(string val_marker) const {
9541+
unsigned short iMarker_ActDiskOutlet;
9542+
for (iMarker_ActDiskOutlet = 0; iMarker_ActDiskOutlet < nMarker_ActDiskOutlet; iMarker_ActDiskOutlet++)
9543+
if (Marker_ActDiskOutlet[iMarker_ActDiskOutlet] == val_marker) break;
9544+
return ActDiskOutlet_Torque_BEM[iMarker_ActDiskOutlet];
9545+
}
9546+
94559547
su2double CConfig::GetActDiskInlet_Temperature(const string& val_marker) const {
94569548
unsigned short iMarker_ActDiskInlet;
94579549
for (iMarker_ActDiskInlet = 0; iMarker_ActDiskInlet < nMarker_ActDiskInlet; iMarker_ActDiskInlet++)

0 commit comments

Comments
 (0)