@@ -214,8 +214,8 @@ unsigned long CSysSolve<ScalarType>::CG_LinSolver(const CSysVector<ScalarType> &
214214 * do this since the working vectors are shared. ---*/
215215
216216 if (!cg_ready) {
217- SU2_OMP_BARRIER
218- SU2_OMP_MASTER {
217+ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS
218+ {
219219 auto nVar = b.GetNVar ();
220220 auto nBlk = b.GetNBlk ();
221221 auto nBlkDomain = b.GetNBlkDomain ();
@@ -227,8 +227,7 @@ unsigned long CSysSolve<ScalarType>::CG_LinSolver(const CSysVector<ScalarType> &
227227
228228 cg_ready = true ;
229229 }
230- END_SU2_OMP_MASTER
231- SU2_OMP_BARRIER
230+ END_SU2_OMP_SAFE_GLOBAL_ACCESS
232231 }
233232
234233 /* --- Calculate the initial residual, compute norm, and check if system is already solved ---*/
@@ -358,17 +357,16 @@ unsigned long CSysSolve<ScalarType>::FGMRES_LinSolver(const CSysVector<ScalarTyp
358357 /* --- Allocate if not allocated yet ---*/
359358
360359 if (W.size () <= m || (flexible && Z.size () <= m)) {
361- SU2_OMP_BARRIER
362- SU2_OMP_MASTER {
360+ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS
361+ {
363362 W.resize (m+1 );
364363 for (auto & w : W) w.Initialize (x.GetNBlk (), x.GetNBlkDomain (), x.GetNVar (), nullptr );
365364 if (flexible) {
366365 Z.resize (m+1 );
367366 for (auto & z : Z) z.Initialize (x.GetNBlk (), x.GetNBlkDomain (), x.GetNVar (), nullptr );
368367 }
369368 }
370- END_SU2_OMP_MASTER
371- SU2_OMP_BARRIER
369+ END_SU2_OMP_SAFE_GLOBAL_ACCESS
372370 }
373371
374372 /* --- Define various arrays. In parallel, each thread of each rank has and works
@@ -549,8 +547,8 @@ unsigned long CSysSolve<ScalarType>::BCGSTAB_LinSolver(const CSysVector<ScalarTy
549547 /* --- Allocate if not allocated yet ---*/
550548
551549 if (!bcg_ready) {
552- SU2_OMP_BARRIER
553- SU2_OMP_MASTER {
550+ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS
551+ {
554552 auto nVar = b.GetNVar ();
555553 auto nBlk = b.GetNBlk ();
556554 auto nBlkDomain = b.GetNBlkDomain ();
@@ -564,8 +562,7 @@ unsigned long CSysSolve<ScalarType>::BCGSTAB_LinSolver(const CSysVector<ScalarTy
564562
565563 bcg_ready = true ;
566564 }
567- END_SU2_OMP_MASTER
568- SU2_OMP_BARRIER
565+ END_SU2_OMP_SAFE_GLOBAL_ACCESS
569566 }
570567
571568 /* --- Calculate the initial residual, compute norm, and check if system is already solved ---*/
@@ -715,8 +712,8 @@ unsigned long CSysSolve<ScalarType>::Smoother_LinSolver(const CSysVector<ScalarT
715712 product (A_x), for the latter two this is done only on the first call to the method. ---*/
716713
717714 if (!smooth_ready) {
718- SU2_OMP_BARRIER
719- SU2_OMP_MASTER {
715+ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS
716+ {
720717 auto nVar = b.GetNVar ();
721718 auto nBlk = b.GetNBlk ();
722719 auto nBlkDomain = b.GetNBlkDomain ();
@@ -727,8 +724,7 @@ unsigned long CSysSolve<ScalarType>::Smoother_LinSolver(const CSysVector<ScalarT
727724
728725 smooth_ready = true ;
729726 }
730- END_SU2_OMP_MASTER
731- SU2_OMP_BARRIER
727+ END_SU2_OMP_SAFE_GLOBAL_ACCESS
732728 }
733729
734730 /* --- Compute the initial residual and check if the system is already solved (if in COMM_FULL mode). ---*/
@@ -972,9 +968,9 @@ unsigned long CSysSolve<ScalarType>::Solve(CSysMatrix<ScalarType> & Jacobian, co
972968 /* --- Start recording if it was stopped for the linear solver ---*/
973969#ifdef CODI_REVERSE_TYPE
974970 AD::StartRecording ();
975- SU2_OMP_BARRIER
976971
977- SU2_OMP_MASTER {
972+ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS
973+ {
978974 AD::SetExtFuncOut (&LinSysSol[0 ], LinSysSol.GetLocSize ());
979975 AD::FuncHelper->addUserData (&LinSysRes);
980976 AD::FuncHelper->addUserData (&LinSysSol);
@@ -983,8 +979,7 @@ unsigned long CSysSolve<ScalarType>::Solve(CSysMatrix<ScalarType> & Jacobian, co
983979 AD::FuncHelper->addUserData (config);
984980 AD::FuncHelper->addUserData (this );
985981 }
986- END_SU2_OMP_MASTER
987- SU2_OMP_BARRIER
982+ END_SU2_OMP_SAFE_GLOBAL_ACCESS
988983
989984 AD::FuncHelper->addToTape (CSysSolve_b<ScalarType>::Solve_b);
990985 SU2_OMP_BARRIER
0 commit comments