@@ -1055,96 +1055,42 @@ void CMultiGridGeometry::SetCoord(CGeometry *geometry) {
10551055 END_SU2_OMP_FOR
10561056}
10571057
1058- void CMultiGridGeometry::SetMultiGridWallHeatFlux (CGeometry *geometry, unsigned short val_marker){
1058+ void CMultiGridGeometry::SetMultiGridWallHeatFlux (const CGeometry *geometry, unsigned short val_marker) {
10591059
1060- unsigned long Point_Fine, Point_Coarse, iVertex;
1061- unsigned short iChildren;
1062- long Vertex_Fine;
1063- su2double Area_Parent, Area_Children;
1064- su2double WallHeatFlux_Fine, WallHeatFlux_Coarse;
1065- bool isVertex;
1066- int numberVertexChildren;
1067-
1068- for (iVertex=0 ; iVertex < nVertex[val_marker]; iVertex++){
1069- Point_Coarse = vertex[val_marker][iVertex]->GetNode ();
1070- if (nodes->GetDomain (Point_Coarse)){
1071- Area_Parent = 0.0 ;
1072- WallHeatFlux_Coarse = 0.0 ;
1073- numberVertexChildren = 0 ;
1074- /* --- Compute area parent by taking into account only volumes that are on the marker ---*/
1075- for (iChildren=0 ; iChildren < nodes->GetnChildren_CV (Point_Coarse); iChildren++){
1076- Point_Fine = nodes->GetChildren_CV (Point_Coarse, iChildren);
1077- isVertex = (nodes->GetDomain (Point_Fine) && geometry->nodes ->GetVertex (Point_Fine, val_marker) != -1 );
1078- if (isVertex){
1079- numberVertexChildren += 1 ;
1080- Area_Parent += geometry->nodes ->GetVolume (Point_Fine);
1081- }
1082- }
1060+ struct {
1061+ const CGeometry* fine_grid;
1062+ unsigned short marker;
1063+ su2double* target;
10831064
1084- /* --- Loop again and propagate values to the coarser level ---*/
1085- for (iChildren=0 ; iChildren < nodes->GetnChildren_CV (Point_Coarse); iChildren++){
1086- Point_Fine = nodes->GetChildren_CV (Point_Coarse, iChildren);
1087- Vertex_Fine = geometry->nodes ->GetVertex (Point_Fine, val_marker);
1088- isVertex = (nodes->GetDomain (Point_Fine) && Vertex_Fine != -1 );
1089- if (isVertex){
1090- Area_Children = geometry->nodes ->GetVolume (Point_Fine);
1091- // Get the customized BC values on fine level and compute the values at coarse level
1092- WallHeatFlux_Fine = geometry->GetCustomBoundaryHeatFlux (val_marker, Vertex_Fine);
1093- WallHeatFlux_Coarse += WallHeatFlux_Fine*Area_Children/Area_Parent;
1094- }
1065+ su2double Get (unsigned long iVertex) { return fine_grid->GetCustomBoundaryHeatFlux (marker, iVertex); }
1066+ void Set (unsigned long iVertex, const su2double& val) { target[iVertex] = val; }
10951067
1096- }
1097- // Set the customized BC values at coarse level
1098- CustomBoundaryHeatFlux[val_marker][iVertex] = WallHeatFlux_Coarse ;
1099- }
1100- }
1068+ } wall_heat_flux;
1069+
1070+ wall_heat_flux. fine_grid = geometry ;
1071+ wall_heat_flux. marker = val_marker;
1072+ wall_heat_flux. target = CustomBoundaryHeatFlux[val_marker];
11011073
1074+ SetMultiGridWallQuantity (geometry, val_marker, wall_heat_flux);
11021075}
11031076
1104- void CMultiGridGeometry::SetMultiGridWallTemperature (CGeometry *geometry, unsigned short val_marker){
1077+ void CMultiGridGeometry::SetMultiGridWallTemperature (const CGeometry *geometry, unsigned short val_marker){
11051078
1106- unsigned long Point_Fine, Point_Coarse, iVertex;
1107- unsigned short iChildren;
1108- long Vertex_Fine;
1109- su2double Area_Parent, Area_Children;
1110- su2double WallTemperature_Fine, WallTemperature_Coarse;
1111- bool isVertex;
1112- int numberVertexChildren;
1113-
1114- for (iVertex=0 ; iVertex < nVertex[val_marker]; iVertex++){
1115- Point_Coarse = vertex[val_marker][iVertex]->GetNode ();
1116- if (nodes->GetDomain (Point_Coarse)){
1117- Area_Parent = 0.0 ;
1118- WallTemperature_Coarse = 0.0 ;
1119- numberVertexChildren = 0 ;
1120- /* --- Compute area parent by taking into account only volumes that are on the marker ---*/
1121- for (iChildren=0 ; iChildren < nodes->GetnChildren_CV (Point_Coarse); iChildren++){
1122- Point_Fine = nodes->GetChildren_CV (Point_Coarse, iChildren);
1123- isVertex = (nodes->GetDomain (Point_Fine) && geometry->nodes ->GetVertex (Point_Fine, val_marker) != -1 );
1124- if (isVertex){
1125- numberVertexChildren += 1 ;
1126- Area_Parent += geometry->nodes ->GetVolume (Point_Fine);
1127- }
1128- }
1079+ struct {
1080+ const CGeometry* fine_grid;
1081+ unsigned short marker;
1082+ su2double* target;
11291083
1130- /* --- Loop again and propagate values to the coarser level ---*/
1131- for (iChildren=0 ; iChildren < nodes->GetnChildren_CV (Point_Coarse); iChildren++){
1132- Point_Fine = nodes->GetChildren_CV (Point_Coarse, iChildren);
1133- Vertex_Fine = geometry->nodes ->GetVertex (Point_Fine, val_marker);
1134- isVertex = (nodes->GetDomain (Point_Fine) && Vertex_Fine != -1 );
1135- if (isVertex){
1136- Area_Children = geometry->nodes ->GetVolume (Point_Fine);
1137- // Get the customized BC values on fine level and compute the values at coarse level
1138- WallTemperature_Fine = geometry->GetCustomBoundaryTemperature (val_marker, Vertex_Fine);
1139- WallTemperature_Coarse += WallTemperature_Fine*Area_Children/Area_Parent;
1140- }
1084+ su2double Get (unsigned long iVertex) { return fine_grid->GetCustomBoundaryTemperature (marker, iVertex); }
1085+ void Set (unsigned long iVertex, const su2double& val) { target[iVertex] = val; }
11411086
1142- }
1143- // Set the customized BC values at coarse level
1144- CustomBoundaryTemperature[val_marker][iVertex] = WallTemperature_Coarse ;
1145- }
1146- }
1087+ } wall_temperature;
1088+
1089+ wall_temperature. fine_grid = geometry ;
1090+ wall_temperature. marker = val_marker;
1091+ wall_temperature. target = CustomBoundaryTemperature[val_marker];
11471092
1093+ SetMultiGridWallQuantity (geometry, val_marker, wall_temperature);
11481094}
11491095
11501096void CMultiGridGeometry::SetRestricted_GridVelocity (CGeometry *fine_mesh, const CConfig *config) {
0 commit comments