Skip to content

Commit 3ea3f98

Browse files
committed
race condition, reduce testcase duration, cleanup
1 parent ddb38d4 commit 3ea3f98

9 files changed

Lines changed: 26 additions & 26 deletions

File tree

Common/include/CConfig.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
#pragma once
3030

31-
#include "./parallelization/mpi_structure.hpp"
31+
#include "parallelization/mpi_structure.hpp"
3232

3333
#include <iostream>
3434
#include <cstdlib>

Common/include/linear_algebra/CSysMatrix.hpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828

2929
#pragma once
3030

31-
#include "../../include/parallelization/mpi_structure.hpp"
32-
#include "../../include/parallelization/omp_structure.hpp"
33-
#include "../../include/parallelization/vectorization.hpp"
31+
#include "../../include/CConfig.hpp"
3432
#include "CSysVector.hpp"
3533
#include "CPastixWrapper.hpp"
3634

@@ -75,7 +73,6 @@ struct mkl_jit_wrapper<float> {
7573
#endif
7674
#endif
7775

78-
class CConfig;
7976
class CGeometry;
8077

8178
struct CSysMatrixComms {
@@ -88,7 +85,8 @@ struct CSysMatrixComms {
8885
* \param[in] commType - Enumerated type for the quantity to be communicated.
8986
*/
9087
template<class T>
91-
static void Initiate(const CSysVector<T>& x, CGeometry *geometry, const CConfig *config, unsigned short commType);
88+
static void Initiate(const CSysVector<T>& x, CGeometry *geometry, const CConfig *config,
89+
unsigned short commType = SOLUTION_MATRIX);
9290

9391
/*!
9492
* \brief Routine to complete the set of non-blocking communications launched by
@@ -99,7 +97,8 @@ struct CSysMatrixComms {
9997
* \param[in] commType - Enumerated type for the quantity to be unpacked.
10098
*/
10199
template<class T>
102-
static void Complete(CSysVector<T>& x, CGeometry *geometry, const CConfig *config, unsigned short commType);
100+
static void Complete(CSysVector<T>& x, CGeometry *geometry, const CConfig *config,
101+
unsigned short commType = SOLUTION_MATRIX);
103102
};
104103

105104
/*!

Common/src/grid_movement/CVolumetricMovement.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,11 +168,11 @@ void CVolumetricMovement::SetVolume_Deformation(CGeometry *geometry, CConfig *co
168168
so that all nodes have the same solution and r.h.s. entries
169169
across all partitions. ---*/
170170

171-
CSysMatrixComms::Initiate(LinSysSol, geometry, config, SOLUTION_MATRIX);
172-
CSysMatrixComms::Complete(LinSysSol, geometry, config, SOLUTION_MATRIX);
171+
CSysMatrixComms::Initiate(LinSysSol, geometry, config);
172+
CSysMatrixComms::Complete(LinSysSol, geometry, config);
173173

174-
CSysMatrixComms::Initiate(LinSysRes, geometry, config, SOLUTION_MATRIX);
175-
CSysMatrixComms::Complete(LinSysRes, geometry, config, SOLUTION_MATRIX);
174+
CSysMatrixComms::Initiate(LinSysRes, geometry, config);
175+
CSysMatrixComms::Complete(LinSysRes, geometry, config);
176176

177177
/*--- Definition of the preconditioner matrix vector multiplication, and linear solver ---*/
178178

Common/src/linear_algebra/CSysMatrix.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
#include "../../include/linear_algebra/CSysMatrix.inl"
2929

3030
#include "../../include/geometry/CGeometry.hpp"
31-
#include "../../include/CConfig.hpp"
32-
#include "../../include/parallelization/omp_structure.hpp"
3331
#include "../../include/toolboxes/allocation_toolbox.hpp"
3432

3533
#include <cmath>

SU2_CFD/src/integration/CNewtonIntegration.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,11 @@ void CNewtonIntegration::MultiGrid_Iteration(CGeometry ****geometry_, CSolver **
222222
bool endStartup = false;
223223

224224
if (startupPeriod) {
225-
SU2_OMP_MASTER
226-
firstResidual = max(firstResidual, residual);
225+
SU2_OMP_MASTER {
226+
firstResidual = max(firstResidual, residual);
227+
if (startupIters) startupIters -= 1;
228+
}
227229
SU2_OMP_BARRIER
228-
if (startupIters) startupIters -= 1;
229230
endStartup = (startupIters == 0) && (residual - firstResidual < startupResidual);
230231
}
231232

@@ -328,8 +329,8 @@ void CNewtonIntegration::MatrixFreeProduct(const CSysVector<Scalar>& u, CSysVect
328329
}
329330
}
330331

331-
CSysMatrixComms::Initiate(v, geometry, config, SOLUTION_MATRIX);
332-
CSysMatrixComms::Complete(v, geometry, config, SOLUTION_MATRIX);
332+
CSysMatrixComms::Initiate(v, geometry, config);
333+
CSysMatrixComms::Complete(v, geometry, config);
333334
}
334335

335336
void CNewtonIntegration::Preconditioner(const CSysVector<Scalar>& u, CSysVector<Scalar>& v) const {
@@ -350,7 +351,7 @@ void CNewtonIntegration::Preconditioner(const CSysVector<Scalar>& u, CSysVector<
350351
v(iPoint,iVar) = SU2_TYPE::GetValue(delta) * u(iPoint,iVar);
351352
}
352353

353-
CSysMatrixComms::Initiate(v, geometry, config, SOLUTION_MATRIX);
354-
CSysMatrixComms::Complete(v, geometry, config, SOLUTION_MATRIX);
354+
CSysMatrixComms::Initiate(v, geometry, config);
355+
CSysMatrixComms::Complete(v, geometry, config);
355356
}
356357
}

SU2_CFD/src/solvers/CFEASolver.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2544,8 +2544,8 @@ void CFEASolver::GeneralizedAlpha_UpdateLoads(const CGeometry *geometry, const C
25442544
void CFEASolver::Solve_System(CGeometry *geometry, CConfig *config) {
25452545

25462546
/*--- Enforce solution at some halo points possibly not covered by essential BC markers. ---*/
2547-
CSysMatrixComms::Initiate(LinSysSol, geometry, config, SOLUTION_MATRIX);
2548-
CSysMatrixComms::Complete(LinSysSol, geometry, config, SOLUTION_MATRIX);
2547+
CSysMatrixComms::Initiate(LinSysSol, geometry, config);
2548+
CSysMatrixComms::Complete(LinSysSol, geometry, config);
25492549

25502550
for (auto iPoint : ExtraVerticesToEliminate) {
25512551
Jacobian.EnforceSolutionAtNode(iPoint, LinSysSol.GetBlock(iPoint), LinSysRes);

TestCases/hybrid_regression.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,8 @@ def main():
182182
turb_oneram6_nk = TestCase('turb_oneram6_nk')
183183
turb_oneram6_nk.cfg_dir = "rans/oneram6"
184184
turb_oneram6_nk.cfg_file = "turb_ONERAM6_nk.cfg"
185-
turb_oneram6_nk.test_iter = 100
186-
turb_oneram6_nk.test_vals = [-7.015278, -6.587369, -10.394193, 0.271661, 0.019845, 4, -0.626403, 2.8101e+02]
185+
turb_oneram6_nk.test_iter = 20
186+
turb_oneram6_nk.test_vals = [-4.893470, -4.511977, -11.437109, 0.221926, 0.045766, 2, -0.893674, 31.384]
187187
test_list.append(turb_oneram6_nk)
188188

189189
# NACA0012 (SA, FUN3D finest grid results: CL=1.0983, CD=0.01242)

TestCases/rans/oneram6/turb_ONERAM6_nk.cfg

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ LINEAR_SOLVER_ERROR= 0.25
2828
% The tolerance for NK iterations is initially relaxed by factor "ft", and reaches
2929
% LINEAR_SOLVER_ERROR after "rf" residual reduction (additional to "r0").
3030
% The Jacobian-free products are based on finite differences with step "e".
31-
NEWTON_KRYLOV_IPARAM= (0, 3, 2) % n0, np, ft
32-
NEWTON_KRYLOV_DPARAM= (-1.0, 0.1, -6.0, 1e-5) % r0, tp, rf, e
31+
NEWTON_KRYLOV_IPARAM= (10, 3, 2) % n0, np, ft
32+
NEWTON_KRYLOV_DPARAM= (1.0, 0.1, -6.0, 1e-5) % r0, tp, rf, e
3333

3434
CFL_ADAPT= YES % it's needed
3535
CFL_NUMBER= 10

config_template.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,6 +1093,8 @@ CENTRAL_JACOBIAN_FIX_FACTOR= 4.0
10931093
TIME_DISCRE_FLOW= EULER_IMPLICIT
10941094
%
10951095
% Use a Newton-Krylov method on the flow equations, see TestCases/rans/oneram6/turb_ONERAM6_nk.cfg
1096+
% For multizone discrete adjoint it will use FGMRES on inner iterations with restart frequency
1097+
% equal to "QUASI_NEWTON_NUM_SAMPLES".
10961098
NEWTON_KRYLOV= NO
10971099

10981100
% ------------------- FEM FLOW NUMERICAL METHOD DEFINITION --------------------%

0 commit comments

Comments
 (0)