Skip to content

Commit f517cb7

Browse files
author
shbhmexe
committed
Fix solver initialization and multigrid logic bugs
- CTransLMSolver: Add EdgeFluxesDiff init, VelocityMag protection - CTurbSSTSolver: Add wall_dist and FrictionVelocity protection - CSpeciesSolver: Fix multigrid loop using wrong mesh level Signed-off-by: shbhmexe <shubhushukla586@gmail.com>
1 parent d758134 commit f517cb7

3 files changed

Lines changed: 12 additions & 11 deletions

File tree

SU2_CFD/src/solvers/CSpeciesSolver.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,9 +275,9 @@ void CSpeciesSolver::LoadRestart(CGeometry** geometry, CSolver*** solver, CConfi
275275
false);
276276

277277
if (config->GetKind_Turb_Model() != TURB_MODEL::NONE)
278-
solver[iMesh][TURB_SOL]->Postprocessing(geometry[MESH_0], solver[MESH_0], config, MESH_0);
278+
solver[iMesh][TURB_SOL]->Postprocessing(geometry[iMesh], solver[iMesh], config, iMesh);
279279

280-
solver[iMesh][SPECIES_SOL]->Preprocessing(geometry[MESH_0], solver[MESH_0], config, MESH_0, NO_RK_ITER,
280+
solver[iMesh][SPECIES_SOL]->Preprocessing(geometry[iMesh], solver[iMesh], config, iMesh, NO_RK_ITER,
281281
RUNTIME_SPECIES_SYS, false);
282282
}
283283

SU2_CFD/src/solvers/CTransLMSolver.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,10 @@ CTransLMSolver::CTransLMSolver(CGeometry *geometry, CConfig *config, unsigned sh
8484
LinSysRes.Initialize(nPoint, nPointDomain, nVar, 0.0);
8585
System.SetxIsZero(true);
8686

87-
if (ReducerStrategy)
87+
if (ReducerStrategy) {
8888
EdgeFluxes.Initialize(geometry->GetnEdge(), geometry->GetnEdge(), nVar, nullptr);
89+
EdgeFluxesDiff.Initialize(geometry->GetnEdge(), geometry->GetnEdge(), nVar, nullptr);
90+
}
8991

9092
/*--- Initialize the BGS residuals in multizone problems. ---*/
9193
if (multizone){
@@ -214,7 +216,7 @@ void CTransLMSolver::Postprocessing(CGeometry *geometry, CSolver **solver_contai
214216
const su2double vel_u = flowNodes->GetVelocity(iPoint, 0);
215217
const su2double vel_v = flowNodes->GetVelocity(iPoint, 1);
216218
const su2double vel_w = (nDim ==3) ? flowNodes->GetVelocity(iPoint, 2) : 0.0;
217-
const su2double VelocityMag = sqrt(vel_u*vel_u + vel_v*vel_v + vel_w*vel_w);
219+
const su2double VelocityMag = max(sqrt(vel_u*vel_u + vel_v*vel_v + vel_w*vel_w), 1e-10);
218220
su2double omega = 0.0;
219221
su2double k = 0.0;
220222
if(TurbFamily == TURB_FAMILY::KW){
@@ -253,8 +255,8 @@ void CTransLMSolver::Postprocessing(CGeometry *geometry, CSolver **solver_contai
253255
su2double Intermittency_Sep = 2.0*max(0.0, Re_v/(3.235*Corr_Rec)-1.0)*f_reattach;
254256
Intermittency_Sep = min(Intermittency_Sep,2.0)*f_theta;
255257
Intermittency_Sep = min(max(0.0, Intermittency_Sep), 2.0);
256-
nodes -> SetIntermittencySep(iPoint, Intermittency_Sep);
257-
nodes -> SetIntermittencyEff(iPoint, Intermittency_Sep);
258+
nodes->SetIntermittencySep(iPoint, Intermittency_Sep);
259+
nodes->SetIntermittencyEff(iPoint, Intermittency_Sep);
258260

259261
}
260262
END_SU2_OMP_FOR
@@ -282,7 +284,6 @@ void CTransLMSolver::Source_Residual(CGeometry *geometry, CSolver **solver_conta
282284
const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT);
283285

284286
auto* flowNodes = su2staticcast_p<CFlowVariable*>(solver_container[FLOW_SOL]->GetNodes());
285-
//auto* turbNodes = su2staticcast_p<CFlowVariable*>(solver_container[TURB_SOL]->GetNodes());
286287
CVariable* turbNodes = solver_container[TURB_SOL]->GetNodes();
287288

288289
/*--- Pick one numerics object per thread. ---*/
@@ -547,8 +548,8 @@ void CTransLMSolver::LoadRestart(CGeometry** geometry, CSolver*** solver, CConfi
547548

548549
const auto index = counter * Restart_Vars[1] + skipVars;
549550
for (auto iVar = 0u; iVar < nVar; iVar++) nodes->SetSolution(iPoint_Local, iVar, Restart_Data[index + iVar]);
550-
nodes ->SetIntermittencySep(iPoint_Local, Restart_Data[index + 2]);
551-
nodes ->SetIntermittencyEff(iPoint_Local, Restart_Data[index + 3]);
551+
nodes->SetIntermittencySep(iPoint_Local, Restart_Data[index + 2]);
552+
nodes->SetIntermittencyEff(iPoint_Local, Restart_Data[index + 3]);
552553

553554
/*--- Increment the overall counter for how many points have been loaded. ---*/
554555
counter++;

SU2_CFD/src/solvers/CTurbSSTSolver.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,10 +272,10 @@ void CTurbSSTSolver::Postprocessing(CGeometry *geometry, CSolver **solver_contai
272272
}
273273
shearStress = sqrt(shearStress);
274274

275-
const su2double FrictionVelocity = sqrt(shearStress/flowNodes->GetDensity(iPoint));
275+
const su2double FrictionVelocity = max(sqrt(shearStress/flowNodes->GetDensity(iPoint)), 1e-10);
276276
const su2double wall_dist = geometry->vertex[iMarker][iVertex]->GetNearestNeighborDistance();
277277

278-
const su2double Derivative = flowNodes->GetLaminarViscosity(jPoint) * pow(nodes->GetSolution(jPoint, 0), 0.673) / wall_dist;
278+
const su2double Derivative = flowNodes->GetLaminarViscosity(jPoint) * pow(nodes->GetSolution(jPoint, 0), 0.673) / max(wall_dist, EPS);
279279
const su2double turbulence_index = 6.1 * Derivative / pow(FrictionVelocity, 2.346);
280280

281281
nodes->SetTurbIndex(iPoint, turbulence_index);

0 commit comments

Comments
 (0)