@@ -539,10 +539,10 @@ void CConfig::addPeriodicOption(const string & name, unsigned short & nMarker_Pe
539539}
540540
541541void CConfig::addTurboPerfOption (const string & name, unsigned short & nMarker_TurboPerf,
542- string* & Marker_TurboBoundIn, string* & Marker_TurboBoundOut) {
542+ string* & Marker_TurboBoundIn, string* & Marker_TurboBoundOut, string* & Marker_Turbomachinery ) {
543543 assert (option_map.find (name) == option_map.end ());
544544 all_options.insert (pair<string, bool >(name, true ));
545- COptionBase* val = new COptionTurboPerformance (name, nMarker_TurboPerf, Marker_TurboBoundIn, Marker_TurboBoundOut);
545+ COptionBase* val = new COptionTurboPerformance (name, nMarker_TurboPerf, Marker_TurboBoundIn, Marker_TurboBoundOut, Marker_Turbomachinery );
546546 option_map.insert (pair<string, COptionBase *>(name, val));
547547}
548548
@@ -1037,6 +1037,7 @@ void CConfig::SetPointersNull() {
10371037 Marker_MixingPlaneInterface = nullptr ;
10381038 Marker_TurboBoundIn = nullptr ;
10391039 Marker_TurboBoundOut = nullptr ;
1040+ Marker_Turbomachinery = nullptr ;
10401041 Marker_Giles = nullptr ;
10411042 Marker_Shroud = nullptr ;
10421043
@@ -1633,8 +1634,8 @@ void CConfig::SetConfig_Options() {
16331634 addStringListOption (" MARKER_MIXINGPLANE_INTERFACE" , nMarker_MixingPlaneInterface, Marker_MixingPlaneInterface);
16341635 /* !\brief TURBULENT_MIXINGPLANE \n DESCRIPTION: Activate mixing plane also for turbulent quantities \ingroup Config*/
16351636 addBoolOption (" TURBULENT_MIXINGPLANE" , turbMixingPlane, false );
1636- /* !\brief MARKER_TURBOMACHINERY \n DESCRIPTION: Identify the inflow and outflow boundaries in which the turbomachinery settings are applied. \ingroup Config*/
1637- addTurboPerfOption (" MARKER_TURBOMACHINERY" , nMarker_Turbomachinery, Marker_TurboBoundIn, Marker_TurboBoundOut);
1637+ /* !\brief MARKER_TURBOMACHINERY \n DESCRIPTION: Identify the boundaries for which the turbomachinery settings are applied. \ingroup Config*/
1638+ addTurboPerfOption (" MARKER_TURBOMACHINERY" , nMarker_Turbomachinery, Marker_TurboBoundIn, Marker_TurboBoundOut, Marker_Turbomachinery );
16381639 /* !\brief NUM_SPANWISE_SECTIONS \n DESCRIPTION: Integer number of spanwise sections to compute 3D turbo BC and Performance for turbomachinery */
16391640 addUnsignedShortOption (" NUM_SPANWISE_SECTIONS" , nSpanWiseSections_User, 1 );
16401641 /* !\brief SPANWISE_KIND \n DESCRIPTION: type of algorithm to identify the span-wise sections at the turbo boundaries.
@@ -5663,6 +5664,7 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) {
56635664 Marker_All_Turbomachinery = new unsigned short [nMarker_All] (); // Store whether the boundary is in needed for Turbomachinery computations.
56645665 Marker_All_TurbomachineryFlag = new unsigned short [nMarker_All] (); // Store whether the boundary has a flag for Turbomachinery computations.
56655666 Marker_All_MixingPlaneInterface = new unsigned short [nMarker_All] (); // Store whether the boundary has a in the MixingPlane interface.
5667+ Marker_All_Giles = new unsigned short [nMarker_All] (); // Store whether the boundary has is a Giles boundary.
56665668 Marker_All_SobolevBC = new unsigned short [nMarker_All] (); // Store wether the boundary should apply to the gradient smoothing.
56675669
56685670 for (iMarker_All = 0 ; iMarker_All < nMarker_All; iMarker_All++) {
@@ -5688,6 +5690,7 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) {
56885690 Marker_CfgFile_Turbomachinery = new unsigned short [nMarker_CfgFile] ();
56895691 Marker_CfgFile_TurbomachineryFlag = new unsigned short [nMarker_CfgFile] ();
56905692 Marker_CfgFile_MixingPlaneInterface = new unsigned short [nMarker_CfgFile] ();
5693+ Marker_CfgFile_Giles = new unsigned short [nMarker_CfgFile] ();
56915694 Marker_CfgFile_PyCustom = new unsigned short [nMarker_CfgFile] ();
56925695 Marker_CfgFile_SobolevBC = new unsigned short [nMarker_CfgFile] ();
56935696
@@ -5808,7 +5811,7 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) {
58085811
58095812 for (iMarker_Fluid_InterfaceBound = 0 ; iMarker_Fluid_InterfaceBound < nMarker_Fluid_InterfaceBound; iMarker_Fluid_InterfaceBound++) {
58105813 Marker_CfgFile_TagBound[iMarker_CfgFile] = Marker_Fluid_InterfaceBound[iMarker_Fluid_InterfaceBound];
5811- Marker_CfgFile_KindBC[iMarker_CfgFile] = FLUID_INTERFACE;
5814+ Marker_CfgFile_KindBC[iMarker_CfgFile] = BC_TYPE:: FLUID_INTERFACE;
58125815 iMarker_CfgFile++;
58135816 }
58145817
@@ -6034,6 +6037,17 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) {
60346037 }
60356038 }
60366039
6040+ /* --- Idenftification fo Giles Markers ---*/
6041+ // This is seperate from MP and Turbomachinery Markers as all mixing plane markers are Giles,
6042+ // but not all Giles markers are mixing plane
6043+ for (iMarker_CfgFile = 0 ; iMarker_CfgFile < nMarker_CfgFile; iMarker_CfgFile++) {
6044+ Marker_CfgFile_Giles[iMarker_CfgFile] = NO;
6045+ for (iMarker_Giles = 0 ; iMarker_Giles < nMarker_Giles; iMarker_Giles++) {
6046+ if (Marker_CfgFile_TagBound[iMarker_CfgFile] == Marker_Giles[iMarker_Giles])
6047+ Marker_CfgFile_Giles[iMarker_CfgFile] = YES;
6048+ }
6049+ }
6050+
60376051 /* --- Identification of MixingPlane interface markers ---*/
60386052
60396053 for (iMarker_CfgFile = 0 ; iMarker_CfgFile < nMarker_CfgFile; iMarker_CfgFile++) {
@@ -6045,6 +6059,37 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) {
60456059 Marker_CfgFile_MixingPlaneInterface[iMarker_CfgFile] = indexMarker;
60466060 }
60476061
6062+ /* --- Once we have identified the MixingPlane and Turbomachinery markers
6063+ * we next need to determine what type of interface between zones is
6064+ * used. It is convenient to do this here as it tidies up the interface
6065+ * preproccesing in CDriver ---*/
6066+ if (nMarker_Turbomachinery != 0 ) {
6067+ nTurboInterfaces = (nMarker_Turbomachinery - 1 )*2 ; // Two markers per zone minus inlet & outlet
6068+ Kind_TurboInterface.resize (nTurboInterfaces);
6069+ /* --- Loop over all markers ---*/
6070+ for (iMarker_CfgFile = 0 ; iMarker_CfgFile < nMarker_CfgFile; iMarker_CfgFile++) {
6071+ /* --- Identify mixing plane markers ---*/
6072+ if (Marker_MixingPlaneInterface != nullptr ){ // Necessary in cases where no mixing plane interfaces are defined
6073+ if (Marker_CfgFile_MixingPlaneInterface[iMarker_CfgFile] != 0 ) { // Is a mixing plane
6074+ /* --- Find which list position this marker is in turbomachinery markers ---*/
6075+ const auto * target = std::find (Marker_Turbomachinery, &Marker_Turbomachinery[nMarker_Turbomachinery*2 -1 ], Marker_CfgFile_TagBound[iMarker_CfgFile]);
6076+ const auto target_index = target - Marker_Turbomachinery;
6077+ /* --- Assert that we find the marker within the turbomachienry markers ---*/
6078+ assert (target != &Marker_Turbomachinery[nMarker_Turbomachinery*2 -1 ]);
6079+ /* --- Assign the correct interface ---*/
6080+ Kind_TurboInterface[target_index-1 ] = TURBO_INTERFACE_KIND::MIXING_PLANE; // Need to subtract 1 from index as to not consider the inlet an interface
6081+ }
6082+ }
6083+ if (Marker_Fluid_InterfaceBound != nullptr ){ // No fluid interfaces are defined in the config file (nullptr if no interfaces defined)
6084+ if (Marker_CfgFile_KindBC[iMarker_CfgFile] == BC_TYPE::FLUID_INTERFACE) { // iMarker_CfgFile is a fluid interface
6085+ const auto * target = std::find (Marker_Turbomachinery, &Marker_Turbomachinery[nMarker_Turbomachinery*2 -1 ], Marker_CfgFile_TagBound[iMarker_CfgFile]);
6086+ const auto target_index = target - Marker_Turbomachinery;
6087+ Kind_TurboInterface[target_index-1 ] = TURBO_INTERFACE_KIND::FROZEN_ROTOR;
6088+ }
6089+ }
6090+ }
6091+ }
6092+
60486093 for (iMarker_CfgFile = 0 ; iMarker_CfgFile < nMarker_CfgFile; iMarker_CfgFile++) {
60496094 Marker_CfgFile_DV[iMarker_CfgFile] = NO;
60506095 for (iMarker_DV = 0 ; iMarker_DV < nMarker_DV; iMarker_DV++)
@@ -7938,6 +7983,13 @@ unsigned short CConfig::GetMarker_CfgFile_MixingPlaneInterface(const string& val
79387983 return Marker_CfgFile_MixingPlaneInterface[iMarker_CfgFile];
79397984}
79407985
7986+ unsigned short CConfig::GetMarker_CfgFile_Giles (const string& val_marker) const {
7987+ unsigned short iMarker_CfgFile;
7988+ for (iMarker_CfgFile = 0 ; iMarker_CfgFile < nMarker_CfgFile; iMarker_CfgFile++)
7989+ if (Marker_CfgFile_TagBound[iMarker_CfgFile] == val_marker) break ;
7990+ return Marker_CfgFile_Giles[iMarker_CfgFile];
7991+ }
7992+
79417993unsigned short CConfig::GetMarker_CfgFile_DV (const string& val_marker) const {
79427994 unsigned short iMarker_CfgFile;
79437995 for (iMarker_CfgFile = 0 ; iMarker_CfgFile < nMarker_CfgFile; iMarker_CfgFile++)
@@ -8125,6 +8177,9 @@ CConfig::~CConfig() {
81258177 delete[] Marker_CfgFile_TurbomachineryFlag;
81268178 delete[] Marker_All_TurbomachineryFlag;
81278179
8180+ delete[] Marker_CfgFile_Giles;
8181+ delete[] Marker_All_Giles;
8182+
81288183 delete[] Marker_CfgFile_MixingPlaneInterface;
81298184 delete[] Marker_All_MixingPlaneInterface;
81308185
@@ -8265,6 +8320,7 @@ CConfig::~CConfig() {
82658320
82668321 delete [] Marker_TurboBoundIn;
82678322 delete [] Marker_TurboBoundOut;
8323+ delete [] Marker_Turbomachinery;
82688324 delete [] Marker_Riemann;
82698325 delete [] Marker_Giles;
82708326
0 commit comments