Skip to content

Commit 2b67845

Browse files
committed
Fixed issue with test failue due to missing chemistry source residual term, addressed PR comments (spacing, initialization)
Signed-off-by: jtneedels <jneedels@stanford.edu>
1 parent 37ac145 commit 2b67845

3 files changed

Lines changed: 68 additions & 46 deletions

File tree

SU2_CFD/src/numerics/NEMO/NEMO_sources.cpp

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -342,43 +342,42 @@ CNumerics::ResidualType<> CSource_NEMO::ComputeAxisymmetric(const CConfig *confi
342342
residual[nSpecies+2] = yinv*rhov*H*Volume;
343343
residual[nSpecies+3] = yinv*rhov*U_i[nSpecies+nDim+1]/rho*Volume;
344344

345-
if (viscous) {
345+
if (viscous) {
346346

347-
if (!rans){ turb_ke_i = 0.0; }
347+
if (!rans){ turb_ke_i = 0.0; }
348348

349-
su2double sumJhs_y = 0.0;
350-
su2double sumJeve_y = 0.0;
351-
su2double Mass = 0.0;
349+
su2double sumJhs_y = 0.0;
350+
su2double sumJeve_y = 0.0;
351+
su2double Mass = 0.0;
352352

353-
for (iSpecies=0; iSpecies<nSpecies; iSpecies++)
354-
Mass += V_i[iSpecies]*Ms[iSpecies];
353+
for (iSpecies=0; iSpecies<nSpecies; iSpecies++)
354+
Mass += V_i[iSpecies]*Ms[iSpecies];
355355

356-
su2double heat_capacity_cp_i = V_i[RHOCVTR_INDEX]+Ru/Mass;
357-
su2double total_viscosity_i = Laminar_Viscosity_i + Eddy_Viscosity_i;
358-
su2double total_conductivity_i = ktr + kve + heat_capacity_cp_i*Eddy_Viscosity_i/Prandtl_Turb;
359-
su2double u = V_i[VEL_INDEX];
360-
su2double v = V_i[VEL_INDEX+1];
361-
362-
qy_ve = kve*GV[TVE_INDEX][1];
363-
364-
/*--- Enthalpy and vib-el energy transport due to y-direction diffusion---*/
365-
for (iSpecies = 0; iSpecies < nHeavy; iSpecies++) {
366-
sumJhs_y += (rho*Ds[iSpecies]*GV[RHOS_INDEX+iSpecies][1] - V_i[RHOS_INDEX+iSpecies]*Vector[1]) * hs[iSpecies];
367-
sumJeve_y += (rho*Ds[iSpecies]*GV[RHOS_INDEX+iSpecies][1] - V_i[RHOS_INDEX+iSpecies]*Vector[1]) * eve_i[iSpecies];
368-
}
369-
370-
for (iSpecies = 0; iSpecies < nSpecies; iSpecies++)
371-
residual[iSpecies] -= 0.0;
372-
residual[nSpecies] -= Volume*(yinv*total_viscosity_i*(PrimVar_Grad_i[nSpecies+2][1]+PrimVar_Grad_i[nSpecies+3][0])
356+
su2double heat_capacity_cp_i = V_i[RHOCVTR_INDEX]+Ru/Mass;
357+
su2double total_viscosity_i = Laminar_Viscosity_i + Eddy_Viscosity_i;
358+
su2double total_conductivity_i = ktr + kve + heat_capacity_cp_i*Eddy_Viscosity_i/Prandtl_Turb;
359+
su2double u = V_i[VEL_INDEX];
360+
su2double v = V_i[VEL_INDEX+1];
361+
su2double qy_ve = kve*GV[TVE_INDEX][1];
362+
363+
/*--- Enthalpy and vib-el energy transport due to y-direction diffusion---*/
364+
for (iSpecies = 0; iSpecies < nHeavy; iSpecies++) {
365+
sumJhs_y += (rho*Ds[iSpecies]*GV[RHOS_INDEX+iSpecies][1] - V_i[RHOS_INDEX+iSpecies]*Vector[1]) * hs[iSpecies];
366+
sumJeve_y += (rho*Ds[iSpecies]*GV[RHOS_INDEX+iSpecies][1] - V_i[RHOS_INDEX+iSpecies]*Vector[1]) * eve_i[iSpecies];
367+
}
368+
369+
for (iSpecies = 0; iSpecies < nSpecies; iSpecies++)
370+
residual[iSpecies] -= 0.0;
371+
residual[nSpecies] -= Volume*(yinv*total_viscosity_i*(PrimVar_Grad_i[nSpecies+2][1]+PrimVar_Grad_i[nSpecies+3][0])
373372
-TWO3*AuxVar_Grad_i[0][0]);
374-
residual[nSpecies+1] -= Volume*(yinv*total_viscosity_i*2*(PrimVar_Grad_i[nSpecies+3][1]-v*yinv)
373+
residual[nSpecies+1] -= Volume*(yinv*total_viscosity_i*2*(PrimVar_Grad_i[nSpecies+3][1]-v*yinv)
375374
-TWO3*AuxVar_Grad_i[0][1]);
376-
residual[nSpecies+2] -= Volume*(yinv*(- sumJhs_y + total_viscosity_i*(u*(PrimVar_Grad_i[nSpecies+3][0]+PrimVar_Grad_i[nSpecies+2][1])
375+
residual[nSpecies+2] -= Volume*(yinv*(- sumJhs_y + total_viscosity_i*(u*(PrimVar_Grad_i[nSpecies+3][0]+PrimVar_Grad_i[nSpecies+2][1])
377376
+v*TWO3*(2*PrimVar_Grad_i[nSpecies+2][1]-PrimVar_Grad_i[nSpecies+2][0]
378377
-v*yinv+rho*turb_ke_i))
379378
-total_conductivity_i*PrimVar_Grad_i[nSpecies][1])
380379
-TWO3*(AuxVar_Grad_i[1][1]+AuxVar_Grad_i[2][1]));
381-
residual[nSpecies+3] -= Volume*(yinv*(-sumJeve_y -qy_ve));
380+
residual[nSpecies+3] -= Volume*(yinv*(-sumJeve_y -qy_ve));
382381
}
383382

384383
// if (implicit) {

SU2_CFD/src/solvers/CNEMOEulerSolver.cpp

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,6 +1196,7 @@ void CNEMOEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_con
11961196
/*--- Set primitive variables for viscous terms and/or generalised source ---*/
11971197
numerics->SetPrimitive(nodes->GetPrimitive(iPoint), nodes->GetPrimitive(iPoint));
11981198

1199+
/*--- If necessary, set variables needed for viscous computation ---*/
11991200
if (viscous) {
12001201

12011202
/*--- Set gradient of primitive variables ---*/
@@ -1229,29 +1230,52 @@ void CNEMOEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_con
12291230
}
12301231
}
12311232

1232-
auto residual = numerics->ComputeAxisymmetric(config);
1233+
auto residual = numerics->ComputeAxisymmetric(config);
12331234

1234-
/*--- Check for errors before applying source to the linear system ---*/
1235-
err = false;
1235+
/*--- Check for errors before applying source to the linear system ---*/
1236+
err = false;
1237+
for (iVar = 0; iVar < nVar; iVar++)
1238+
if (residual[iVar] != residual[iVar]) err = true;
1239+
if (implicit)
12361240
for (iVar = 0; iVar < nVar; iVar++)
1237-
if (residual[iVar] != residual[iVar]) err = true;
1241+
for (jVar = 0; jVar < nVar; jVar++)
1242+
if (Jacobian_i[iVar][jVar] != Jacobian_i[iVar][jVar]) err = true;
1243+
1244+
/*--- Apply the update to the linear system ---*/
1245+
if (!err) {
1246+
LinSysRes.AddBlock(iPoint, residual);
12381247
if (implicit)
1239-
for (iVar = 0; iVar < nVar; iVar++)
1240-
for (jVar = 0; jVar < nVar; jVar++)
1241-
if (Jacobian_i[iVar][jVar] != Jacobian_i[iVar][jVar]) err = true;
1242-
1243-
/*--- Apply the update to the linear system ---*/
1244-
if (!err) {
1245-
LinSysRes.AddBlock(iPoint, residual);
1246-
if (implicit)
1247-
Jacobian.AddBlock(iPoint, iPoint, Jacobian_i);
1248-
}
1249-
else
1250-
eAxi_local++;
1248+
Jacobian.AddBlock(iPoint, iPoint, Jacobian_i);
1249+
}else
1250+
eAxi_local++;
12511251
}
12521252

12531253
}
12541254

1255+
if(!monoatomic){
1256+
if(!frozen){
1257+
/*--- Compute the non-equilibrium chemistry ---*/
1258+
auto residual = numerics->ComputeChemistry(config);
1259+
1260+
/*--- Check for errors before applying source to the linear system ---*/
1261+
err = false;
1262+
for (iVar = 0; iVar < nVar; iVar++)
1263+
if (residual[iVar] != residual[iVar]) err = true;
1264+
//if (implicit)
1265+
// for (iVar = 0; iVar < nVar; iVar++)
1266+
// for (jVar = 0; jVar < nVar; jVar++)
1267+
// if (Jacobian_i[iVar][jVar] != Jacobian_i[iVar][jVar]) err = true;
1268+
1269+
/*--- Apply the chemical sources to the linear system ---*/
1270+
if (!err) {
1271+
LinSysRes.SubtractBlock(iPoint, residual);
1272+
//if (implicit)
1273+
// Jacobian.SubtractBlock(iPoint, iPoint, Jacobian_i);
1274+
} else
1275+
eChm_local++;
1276+
}
1277+
}
1278+
12551279
/*--- Compute vibrational energy relaxation ---*/
12561280
/// NOTE: Jacobians don't account for relaxation time derivatives
12571281

SU2_CFD/src/variables/CNEMOEulerVariable.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,8 @@ CNEMOEulerVariable::CNEMOEulerVariable(su2double val_pressure,
7878

7979
Res_TruncError.resize(nPoint,nVar) = su2double(0.0);
8080

81-
/*--- Size Grad_AuxVar for axiysmmetric ---*/
82-
83-
if (config->GetAxisymmetric()){
81+
/*--- Size Grad_AuxVar for axiysmmetric ---*/
82+
if (config->GetAxisymmetric()){
8483
nAuxVar = 3;
8584
Grad_AuxVar.resize(nPoint,nAuxVar,nDim,0.0);
8685
AuxVar.resize(nPoint,nAuxVar) = su2double(0.0);

0 commit comments

Comments
 (0)