Skip to content

Commit bf50893

Browse files
committed
updated edge looping for SA Solver
1 parent 8b61921 commit bf50893

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

SU2_CFD/src/solvers/CTurbSASolver.cpp

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -301,9 +301,45 @@ void CTurbSASolver::Viscous_Residual(const unsigned long iEdge, const CGeometry*
301301
};
302302

303303
/*--- Now instantiate the generic implementation with the functor above. ---*/
304+
const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT);
305+
CFlowVariable* flowNodes = solver_container[FLOW_SOL] ?
306+
su2staticcast_p<CFlowVariable*>(solver_container[FLOW_SOL]->GetNodes()) : nullptr;
304307

305-
Viscous_Residual_impl(SolverSpecificNumerics, iEdge, geometry, solver_container, numerics, config);
306-
}
308+
/*--- Points in edge ---*/
309+
auto iPoint = geometry->edges->GetNode(iEdge, 0);
310+
auto jPoint = geometry->edges->GetNode(iEdge, 1);
311+
312+
/*--- Points coordinates, and normal vector ---*/
313+
numerics->SetCoord(geometry->nodes->GetCoord(iPoint), geometry->nodes->GetCoord(jPoint));
314+
numerics->SetNormal(geometry->edges->GetNormal(iEdge));
315+
316+
/*--- Conservative variables w/o reconstruction ---*/
317+
if (flowNodes) {
318+
numerics->SetPrimitive(flowNodes->GetPrimitive(iPoint), flowNodes->GetPrimitive(jPoint));
319+
}
320+
321+
/*--- Turbulent variables w/o reconstruction, and its gradients ---*/
322+
numerics->SetScalarVar(nodes->GetSolution(iPoint), nodes->GetSolution(jPoint));
323+
numerics->SetScalarVarGradient(nodes->GetGradient(iPoint), nodes->GetGradient(jPoint));
324+
325+
/*--- Call Numerics contribution which are Solver-Specifc. Implemented in the caller: Viscous_Residual. ---*/
326+
SolverSpecificNumerics(iPoint, jPoint);
327+
328+
/*--- Compute residual, and Jacobians ---*/
329+
numerics->ComputeResidual(Residual_i, Residual_j, Jacobian_ii, Jacobian_ij, Jacobian_ji, Jacobian_jj, const_cast<CConfig*>(config));
330+
331+
/*--- Accumulate residuals ---*/
332+
LinSysRes.AddBlock(iPoint, Residual_i);
333+
LinSysRes.AddBlock(jPoint, Residual_j);
334+
335+
/*--- Implicit Jacobian contributions ---*/
336+
if (implicit) {
337+
Jacobian.AddBlock2Diag(iPoint, Jacobian_ii);
338+
Jacobian.AddBlock(iPoint, jPoint, Jacobian_ij);
339+
Jacobian.AddBlock(jPoint, iPoint, Jacobian_ji);
340+
Jacobian.AddBlock2Diag(jPoint, Jacobian_jj);
341+
}
342+
};
307343

308344
void CTurbSASolver::Source_Residual(CGeometry *geometry, CSolver **solver_container,
309345
CNumerics **numerics_container, CConfig *config, unsigned short iMesh) {

0 commit comments

Comments
 (0)