Skip to content

Commit fc23554

Browse files
maxaehleMax Aehle
authored andcommitted
Separate marker lists for MARKER_ACTDISK_BEM_CG, ..._AXIS
This helps to avoid memory leaks and double frees from the respective COptionActDisk instances, and allows to check that identical marker lists were supplied.
1 parent 094f369 commit fc23554

3 files changed

Lines changed: 44 additions & 20 deletions

File tree

Common/include/CConfig.hpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,10 @@ class CConfig {
183183
nMarker_NearFieldBound, /*!< \brief Number of near field boundary markers. */
184184
nMarker_ActDiskInlet, /*!< \brief Number of actuator disk inlet markers. */
185185
nMarker_ActDiskOutlet, /*!< \brief Number of actuator disk outlet markers. */
186-
nMarker_ActDiskBemInlet, /*!< \brief Number of actuator disk BEM inlet markers. */
187-
nMarker_ActDiskBemOutlet, /*!< \brief Number of actuator disk BEM outlet markers. */
186+
nMarker_ActDiskBemInlet_CG, /*!< \brief Number of actuator disk BEM inlet markers passed to MARKER_ACTDISK_BEM_CG. */
187+
nMarker_ActDiskBemOutlet_CG, /*!< \brief Number of actuator disk BEM outlet markers passed to MARKER_ACTDISK_BEM_CG. */
188+
nMarker_ActDiskBemInlet_Axis, /*!< \brief Number of actuator disk BEM inlet markers passed to MARKER_ACTDISK_BEM_AXIS. */
189+
nMarker_ActDiskBemOutlet_Axis, /*!< \brief Number of actuator disk BEM outlet markers passed to MARKER_ACTDISK_BEM_AXIS. */
188190
nMarker_Deform_Mesh_Sym_Plane, /*!< \brief Number of markers with symmetric deformation */
189191
nMarker_Deform_Mesh, /*!< \brief Number of deformable markers at the boundary. */
190192
nMarker_Fluid_Load, /*!< \brief Number of markers in which the flow load is computed/employed. */
@@ -239,10 +241,12 @@ class CConfig {
239241
*Marker_Fluid_Load, /*!< \brief Markers in which the flow load is computed/employed. */
240242
*Marker_Fluid_InterfaceBound, /*!< \brief Fluid interface markers. */
241243
*Marker_CHTInterface, /*!< \brief Conjugate heat transfer interface markers. */
242-
*Marker_ActDiskInlet=nullptr, /*!< \brief Actuator disk inlet markers. */
243-
*Marker_ActDiskOutlet=nullptr, /*!< \brief Actuator disk outlet markers. */
244-
*Marker_ActDiskBemInlet=nullptr, /*!< \brief Actuator disk BEM inlet markers. */
245-
*Marker_ActDiskBemOutlet=nullptr, /*!< \brief Actuator disk BEM outlet markers. */
244+
*Marker_ActDiskInlet, /*!< \brief Actuator disk inlet markers. */
245+
*Marker_ActDiskOutlet, /*!< \brief Actuator disk outlet markers. */
246+
*Marker_ActDiskBemInlet_CG, /*!< \brief Actuator disk BEM inlet markers passed to MARKER_ACTDISK_BEM_CG. */
247+
*Marker_ActDiskBemOutlet_CG, /*!< \brief Actuator disk BEM outlet markers passed to MARKER_ACTDISK_BEM_CG. */
248+
*Marker_ActDiskBemInlet_Axis, /*!< \brief Actuator disk BEM inlet markers passed to MARKER_ACTDISK_BEM_AXIS. */
249+
*Marker_ActDiskBemOutlet_Axis, /*!< \brief Actuator disk BEM outlet markers passed to MARKER_ACTDISK_BEM_AXIS. */
246250
*Marker_Inlet, /*!< \brief Inlet flow markers. */
247251
*Marker_Inlet_Species, /*!< \brief Inlet species markers. */
248252
*Marker_Inlet_Turb, /*!< \brief Inlet turbulent markers. */

Common/include/option_structure.inl

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1698,9 +1698,9 @@ class COptionActDisk : public COptionBase {
16981698

16991699
~COptionActDisk() override {
17001700
for (int i = 0; i < this->inlet_size; i++) {
1701-
delete[] this->press_jump[i];
1702-
delete[] this->temp_jump[i];
1703-
delete[] this->omega[i];
1701+
if(this->press_jump) delete[] this->press_jump[i];
1702+
if(this->temp_jump) delete[] this->temp_jump[i];
1703+
if(this->omega) delete[] this->omega[i];
17041704
}
17051705
delete[] press_jump;
17061706
delete[] temp_jump;
@@ -1732,9 +1732,7 @@ class COptionActDisk : public COptionBase {
17321732
unsigned short nVals = totalVals / mod_num;
17331733
this->inlet_size = nVals;
17341734
this->outlet_size = nVals;
1735-
delete[] this->marker_inlet;
17361735
this->marker_inlet = new string[this->inlet_size];
1737-
delete[] this->marker_outlet;
17381736
this->marker_outlet = new string[this->outlet_size];
17391737

17401738
this->press_jump = new su2double*[this->inlet_size];

Common/src/CConfig.cpp

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1535,12 +1535,12 @@ void CConfig::SetConfig_Options() {
15351535

15361536
/*!\brief MARKER_ACTDISK_BEM_CG\n DESCRIPTION: Actuator disk CG for blade element momentum (BEM) method. \ingroup Config*/
15371537
addActDiskBemOption("MARKER_ACTDISK_BEM_CG",
1538-
nMarker_ActDiskBemInlet, nMarker_ActDiskBemOutlet, Marker_ActDiskBemInlet, Marker_ActDiskBemOutlet,
1538+
nMarker_ActDiskBemInlet_CG, nMarker_ActDiskBemOutlet_CG, Marker_ActDiskBemInlet_CG, Marker_ActDiskBemOutlet_CG,
15391539
ActDiskBem_CG[0], ActDiskBem_CG[1], ActDiskBem_CG[2]);
15401540

15411541
/*!\brief MARKER_ACTDISK_BEM_AXIS\n DESCRIPTION: Actuator disk axis for blade element momentum (BEM) method. \ingroup Config*/
15421542
addActDiskBemOption("MARKER_ACTDISK_BEM_AXIS",
1543-
nMarker_ActDiskBemInlet, nMarker_ActDiskBemOutlet, Marker_ActDiskBemInlet, Marker_ActDiskBemOutlet,
1543+
nMarker_ActDiskBemInlet_Axis, nMarker_ActDiskBemOutlet_Axis, Marker_ActDiskBemInlet_Axis, Marker_ActDiskBemOutlet_Axis,
15441544
ActDiskBem_Axis[0], ActDiskBem_Axis[1], ActDiskBem_Axis[2]);
15451545

15461546
/*!\brief ACTDISK_FILENAME \n DESCRIPTION: Input file for a specified actuator disk (w/ extension) \n DEFAULT: actdiskinput.dat \ingroup Config*/
@@ -3589,6 +3589,28 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i
35893589
|| (Kind_ActDisk == POWER))
35903590
ActDisk_Jump = RATIO;
35913591

3592+
if(Marker_ActDiskBemInlet_CG && Marker_ActDiskBemInlet_Axis){
3593+
if(nMarker_ActDiskBemInlet_CG != nMarker_ActDiskBemInlet_Axis){
3594+
SU2_MPI::Error("Marker lists supplied to MARKER_ACTDISK_BEM_CG and MARKER_ACTDISK_BEM_AXIS must be identical.", CURRENT_FUNCTION);
3595+
}
3596+
for(iMarker=0; iMarker<nMarker_ActDiskBemInlet_CG; iMarker++){
3597+
if(Marker_ActDiskBemInlet_CG[iMarker]!=Marker_ActDiskBemInlet_Axis[iMarker]){
3598+
SU2_MPI::Error("Marker lists supplied to MARKER_ACTDISK_BEM_CG and MARKER_ACTDISK_BEM_AXIS must be identical.", CURRENT_FUNCTION);
3599+
}
3600+
}
3601+
}
3602+
3603+
if(Marker_ActDiskBemOutlet_CG && Marker_ActDiskBemOutlet_Axis){
3604+
if(nMarker_ActDiskBemOutlet_CG != nMarker_ActDiskBemOutlet_Axis){
3605+
SU2_MPI::Error("Marker lists supplied to MARKER_ACTDISK_BEM_CG and MARKER_ACTDISK_BEM_AXIS must be identical.", CURRENT_FUNCTION);
3606+
}
3607+
for(iMarker=0; iMarker<nMarker_ActDiskBemOutlet_CG; iMarker++){
3608+
if(Marker_ActDiskBemOutlet_CG[iMarker]!=Marker_ActDiskBemOutlet_Axis[iMarker]){
3609+
SU2_MPI::Error("Marker lists supplied to MARKER_ACTDISK_BEM_CG and MARKER_ACTDISK_BEM_AXIS must be identical.", CURRENT_FUNCTION);
3610+
}
3611+
}
3612+
}
3613+
35923614
/*--- Error-catching and automatic array adjustments for objective, marker, and weights arrays --- */
35933615

35943616
/*--- If Kind_Obj has not been specified, these arrays need to take a default --*/
@@ -5559,7 +5581,7 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) {
55595581
nMarker_Custom + nMarker_Damper + nMarker_Fluid_Load +
55605582
nMarker_Clamped + nMarker_Load_Dir + nMarker_Disp_Dir +
55615583
nMarker_ActDiskInlet + nMarker_ActDiskOutlet +
5562-
nMarker_ActDiskBemInlet + nMarker_ActDiskBemOutlet +
5584+
nMarker_ActDiskBemInlet_CG + nMarker_ActDiskBemOutlet_CG +
55635585
nMarker_ZoneInterface;
55645586

55655587
/*--- Add the possible send/receive domains ---*/
@@ -8693,17 +8715,17 @@ su2double CConfig::GetActDisk_Omega(const string& val_marker, unsigned short val
86938715

86948716
su2double CConfig::GetActDiskBem_CG(unsigned short iDim, string val_marker, unsigned short val_value) const {
86958717
unsigned short iMarker_ActDisk;
8696-
for (iMarker_ActDisk = 0; iMarker_ActDisk < nMarker_ActDiskBemInlet; iMarker_ActDisk++)
8697-
if ((Marker_ActDiskBemInlet[iMarker_ActDisk] == val_marker) ||
8698-
(Marker_ActDiskBemOutlet[iMarker_ActDisk] == val_marker)) break;
8718+
for (iMarker_ActDisk = 0; iMarker_ActDisk < nMarker_ActDiskBemInlet_CG; iMarker_ActDisk++)
8719+
if ((Marker_ActDiskBemInlet_CG[iMarker_ActDisk] == val_marker) ||
8720+
(Marker_ActDiskBemOutlet_CG[iMarker_ActDisk] == val_marker)) break;
86998721
return ActDiskBem_CG[iDim][iMarker_ActDisk][val_value];
87008722
}
87018723

87028724
su2double CConfig::GetActDiskBem_Axis(unsigned short iDim, string val_marker, unsigned short val_value) const {
87038725
unsigned short iMarker_ActDisk;
8704-
for (iMarker_ActDisk = 0; iMarker_ActDisk < nMarker_ActDiskBemInlet; iMarker_ActDisk++)
8705-
if ((Marker_ActDiskBemInlet[iMarker_ActDisk] == val_marker) ||
8706-
(Marker_ActDiskBemOutlet[iMarker_ActDisk] == val_marker)) break;
8726+
for (iMarker_ActDisk = 0; iMarker_ActDisk < nMarker_ActDiskBemInlet_Axis; iMarker_ActDisk++)
8727+
if ((Marker_ActDiskBemInlet_Axis[iMarker_ActDisk] == val_marker) ||
8728+
(Marker_ActDiskBemOutlet_Axis[iMarker_ActDisk] == val_marker)) break;
87078729
return ActDiskBem_Axis[iDim][iMarker_ActDisk][val_value];
87088730
}
87098731

0 commit comments

Comments
 (0)