Skip to content

Commit 5750252

Browse files
committed
correct Reducer accumulation
1 parent c0687bc commit 5750252

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

SU2_CFD/include/solvers/CScalarSolver.inl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ void CScalarSolver<VariableType>::SumEdgeFluxes(CGeometry* geometry) {
351351
else {
352352
LinSysRes.SubtractBlock(iPoint, EdgeFluxes.GetBlock(iEdge));
353353
if (EdgeFluxes_Diff.GetLocSize() > 0) {
354-
LinSysRes.AddBlock(iPoint, EdgeFluxes_Diff.GetBlock(iEdge));
354+
LinSysRes.SubtractBlock(iPoint, EdgeFluxes_Diff.GetBlock(iEdge));
355355
}
356356
}
357357
}

SU2_CFD/src/solvers/CTurbSASolver.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,14 @@ void CTurbSASolver::Viscous_Residual(const unsigned long iEdge, const CGeometry*
335335
EdgeFluxes.SubtractBlock(iEdge, residual_ij);
336336
EdgeFluxes_Diff.SetBlock(iEdge, residual_ij);
337337
if (implicit) {
338-
Jacobian.UpdateBlocksSub(iEdge, residual_ij.jacobian_i, residual_ij.jacobian_j);
338+
auto* Block_ij = Jacobian.GetBlock(iPoint, jPoint);
339+
auto* Block_ji = Jacobian.GetBlock(jPoint, iPoint);
340+
341+
for (int iVar=0; iVar<nVar; iVar++)
342+
for (int jVar=0; jVar<nVar; jVar++) {
343+
Block_ij[iVar*nVar + jVar] -= 0.5*SU2_TYPE::GetValue(residual_ij.jacobian_j[iVar][jVar]);
344+
Block_ji[iVar*nVar + jVar] += 0.5*SU2_TYPE::GetValue(residual_ij.jacobian_i[iVar][jVar]);
345+
}
339346
}
340347
}
341348
else {
@@ -361,8 +368,15 @@ void CTurbSASolver::Viscous_Residual(const unsigned long iEdge, const CGeometry*
361368
if (ReducerStrategy) {
362369
EdgeFluxes_Diff.AddBlock(iEdge, residual_ji);
363370
if (implicit) {
364-
Jacobian.UpdateBlocks(iEdge, residual_ji.jacobian_j, residual_ji.jacobian_i);
365-
}
371+
auto* Block_ij = Jacobian.GetBlock(iPoint, jPoint);
372+
auto* Block_ji = Jacobian.GetBlock(jPoint, iPoint);
373+
374+
for (int iVar=0; iVar<nVar; iVar++)
375+
for (int jVar=0; jVar<nVar; jVar++) {
376+
Block_ij[iVar*nVar + jVar] += 0.5*SU2_TYPE::GetValue(residual_ji.jacobian_i[iVar][jVar]);
377+
Block_ji[iVar*nVar + jVar] -= 0.5*SU2_TYPE::GetValue(residual_ji.jacobian_j[iVar][jVar]);
378+
}
379+
}
366380
}
367381
else {
368382
LinSysRes.SubtractBlock(jPoint, residual_ji);

0 commit comments

Comments
 (0)