@@ -357,8 +357,7 @@ void CGeometry::AllocateP2PComms(unsigned short countPerPoint) {
357357
358358 if (countPerPoint <= maxCountPerPoint) return ;
359359
360- SU2_OMP_BARRIER
361- SU2_OMP_MASTER {
360+ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS {
362361
363362 /* --- Store the larger packet size to the class data. ---*/
364363
@@ -379,8 +378,7 @@ void CGeometry::AllocateP2PComms(unsigned short countPerPoint) {
379378 bufS_P2PRecv = new unsigned short [maxCountPerPoint*nPoint_P2PRecv[nP2PRecv]] ();
380379
381380 }
382- END_SU2_OMP_MASTER
383- SU2_OMP_BARRIER
381+ END_SU2_OMP_SAFE_GLOBAL_ACCESS
384382
385383}
386384
@@ -763,10 +761,7 @@ void CGeometry::CompleteComms(CGeometry *geometry,
763761 /* --- For efficiency, recv the messages dynamically based on
764762 the order they arrive. ---*/
765763
766- SU2_OMP_MASTER
767- SU2_MPI::Waitany (nP2PRecv, req_P2PRecv, &ind, &status);
768- END_SU2_OMP_MASTER
769- SU2_OMP_BARRIER
764+ SU2_OMP_SAFE_GLOBAL_ACCESS (SU2_MPI::Waitany (nP2PRecv, req_P2PRecv, &ind, &status);)
770765
771766 /* --- Once we have recv'd a message, get the source rank. ---*/
772767
@@ -831,12 +826,8 @@ void CGeometry::CompleteComms(CGeometry *geometry,
831826 data in the loop above at this point. ---*/
832827
833828#ifdef HAVE_MPI
834- SU2_OMP_MASTER
835- SU2_MPI::Waitall (nP2PSend, req_P2PSend, MPI_STATUS_IGNORE);
836- END_SU2_OMP_MASTER
829+ SU2_OMP_SAFE_GLOBAL_ACCESS (SU2_MPI::Waitall (nP2PSend, req_P2PSend, MPI_STATUS_IGNORE);)
837830#endif
838- SU2_OMP_BARRIER
839-
840831}
841832
842833void CGeometry::PreprocessPeriodicComms (CGeometry *geometry,
@@ -1186,8 +1177,7 @@ void CGeometry::AllocatePeriodicComms(unsigned short countPerPeriodicPoint) {
11861177
11871178 if (countPerPeriodicPoint <= maxCountPerPeriodicPoint) return ;
11881179
1189- SU2_OMP_BARRIER
1190- SU2_OMP_MASTER {
1180+ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS {
11911181
11921182 /* --- Store the larger packet size to the class data. ---*/
11931183
@@ -1213,8 +1203,7 @@ void CGeometry::AllocatePeriodicComms(unsigned short countPerPeriodicPoint) {
12131203 bufS_PeriodicRecv = new unsigned short [nRecv] ();
12141204
12151205 }
1216- END_SU2_OMP_MASTER
1217- SU2_OMP_BARRIER
1206+ END_SU2_OMP_SAFE_GLOBAL_ACCESS
12181207}
12191208
12201209void CGeometry::PostPeriodicRecvs (CGeometry *geometry,
@@ -1409,6 +1398,7 @@ void CGeometry::SetEdges(void) {
14091398 }
14101399 }
14111400 }
1401+ edges->SetPaddingNodes ();
14121402}
14131403
14141404void CGeometry::SetFaces (void ) {
@@ -2506,38 +2496,41 @@ void CGeometry::UpdateCustomBoundaryConditions(CGeometry **geometry_container, C
25062496}
25072497
25082498void CGeometry::ComputeSurfaceAreaCfgFile (const CConfig *config) {
2509- const auto nMarker_Global = config->GetnMarker_CfgFile ();
2510- SurfaceAreaCfgFile.resize (nMarker_Global);
2511- vector<su2double> LocalSurfaceArea (nMarker_Global, 0.0 );
2499+ SU2_OMP_MASTER
2500+ {
2501+ const auto nMarker_Global = config->GetnMarker_CfgFile ();
2502+ SurfaceAreaCfgFile.resize (nMarker_Global);
2503+ vector<su2double> LocalSurfaceArea (nMarker_Global, 0.0 );
25122504
2513- /* --- Loop over all local markers ---*/
2514- for (unsigned short iMarker = 0 ; iMarker < nMarker; iMarker++) {
2505+ /* --- Loop over all local markers ---*/
2506+ for (unsigned short iMarker = 0 ; iMarker < nMarker; iMarker++) {
25152507
2516- const auto Local_TagBound = config->GetMarker_All_TagBound (iMarker);
2508+ const auto Local_TagBound = config->GetMarker_All_TagBound (iMarker);
25172509
2518- /* --- Loop over all global markers, and find the local-global pair via
2519- matching unique string tags. ---*/
2520- for (unsigned short iMarker_Global = 0 ; iMarker_Global < nMarker_Global; iMarker_Global++) {
2510+ /* --- Loop over all global markers, and find the local-global pair via
2511+ matching unique string tags. ---*/
2512+ for (unsigned short iMarker_Global = 0 ; iMarker_Global < nMarker_Global; iMarker_Global++) {
25212513
2522- const auto Global_TagBound = config->GetMarker_CfgFile_TagBound (iMarker_Global);
2523- if (Local_TagBound == Global_TagBound) {
2514+ const auto Global_TagBound = config->GetMarker_CfgFile_TagBound (iMarker_Global);
2515+ if (Local_TagBound == Global_TagBound) {
25242516
2525- for (auto iVertex = 0ul ; iVertex < nVertex[iMarker]; iVertex++ ) {
2517+ for (auto iVertex = 0ul ; iVertex < nVertex[iMarker]; iVertex++ ) {
25262518
2527- const auto iPoint = vertex[iMarker][iVertex]->GetNode ();
2519+ const auto iPoint = vertex[iMarker][iVertex]->GetNode ();
25282520
2529- if (!nodes->GetDomain (iPoint)) continue ;
2521+ if (!nodes->GetDomain (iPoint)) continue ;
25302522
2531- const auto AreaNormal = vertex[iMarker][iVertex]->GetNormal ();
2532- const auto Area = GeometryToolbox::Norm (nDim, AreaNormal);
2523+ const auto AreaNormal = vertex[iMarker][iVertex]->GetNormal ();
2524+ const auto Area = GeometryToolbox::Norm (nDim, AreaNormal);
25332525
2534- LocalSurfaceArea[iMarker_Global] += Area;
2535- }// for iVertex
2536- }// if Local == Global
2537- }// for iMarker_Global
2538- }// for iMarker
2526+ LocalSurfaceArea[iMarker_Global] += Area;
2527+ }// for iVertex
2528+ }// if Local == Global
2529+ }// for iMarker_Global
2530+ }// for iMarker
25392531
2540- SU2_MPI::Allreduce (LocalSurfaceArea.data (), SurfaceAreaCfgFile.data (), SurfaceAreaCfgFile.size (), MPI_DOUBLE, MPI_SUM, SU2_MPI::GetComm ());
2532+ SU2_MPI::Allreduce (LocalSurfaceArea.data (), SurfaceAreaCfgFile.data (), SurfaceAreaCfgFile.size (), MPI_DOUBLE, MPI_SUM, SU2_MPI::GetComm ());
2533+ } END_SU2_OMP_MASTER
25412534}
25422535
25432536su2double CGeometry::GetSurfaceArea (const CConfig *config, unsigned short val_marker) const {
@@ -3133,7 +3126,7 @@ void CGeometry::FilterValuesAtElementCG(const vector<su2double> &filter_radius,
31333126 END_SU2_OMP_FOR
31343127
31353128 /* --- Share with all processors ---*/
3136- SU2_OMP_MASTER
3129+ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS
31373130 {
31383131 su2double* dbl_buffer = new su2double [Global_nElemDomain*nDim];
31393132 SU2_MPI::Allreduce (cg_elem,dbl_buffer,Global_nElemDomain*nDim,MPI_DOUBLE,MPI_SUM,SU2_MPI::GetComm ());
@@ -3147,8 +3140,7 @@ void CGeometry::FilterValuesAtElementCG(const vector<su2double> &filter_radius,
31473140 MPI_Allreduce (halo_detect.data (),char_buffer.data (),Global_nElemDomain,MPI_CHAR,MPI_SUM,SU2_MPI::GetComm ());
31483141 halo_detect.swap (char_buffer);
31493142 }
3150- END_SU2_OMP_MASTER
3151- SU2_OMP_BARRIER
3143+ END_SU2_OMP_SAFE_GLOBAL_ACCESS
31523144
31533145 SU2_OMP_FOR_STAT (256 )
31543146 for (auto iElem=0ul ; iElem<Global_nElemDomain; ++iElem) {
@@ -3187,14 +3179,13 @@ void CGeometry::FilterValuesAtElementCG(const vector<su2double> &filter_radius,
31873179
31883180#ifdef HAVE_MPI
31893181 /* --- Share with all processors ---*/
3190- SU2_OMP_MASTER
3182+ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS
31913183 {
31923184 su2double *buffer = new su2double [Global_nElemDomain];
31933185 SU2_MPI::Allreduce (work_values,buffer,Global_nElemDomain,MPI_DOUBLE,MPI_SUM,SU2_MPI::GetComm ());
31943186 swap (buffer, work_values); delete [] buffer;
31953187 }
3196- END_SU2_OMP_MASTER
3197- SU2_OMP_BARRIER
3188+ END_SU2_OMP_SAFE_GLOBAL_ACCESS
31983189
31993190 /* --- Account for duplication ---*/
32003191 SU2_OMP_FOR_STAT (256 )
0 commit comments