Skip to content

Commit 85419fe

Browse files
committed
Merge remote-tracking branch 'origin/heat_solver_fixes' into heat_solver_fixes
2 parents 07cc322 + 0d48aca commit 85419fe

1 file changed

Lines changed: 55 additions & 10 deletions

File tree

SU2_CFD/src/solvers/CHeatSolver.cpp

Lines changed: 55 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -770,20 +770,65 @@ void CHeatSolver::Set_Heatflux_Areas(CGeometry *geometry, CConfig *config) {
770770
void CHeatSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config,
771771
unsigned short val_marker) {
772772

773-
const bool implicit = (config->GetKind_TimeIntScheme_Flow() == EULER_IMPLICIT);
774-
const auto Marker_Tag = config->GetMarker_All_TagBound(val_marker);
775-
const su2double Twall = config->GetIsothermal_Temperature(Marker_Tag)/config->GetTemperature_Ref();
773+
unsigned long iPoint, iVertex, Point_Normal;
774+
unsigned short iDim;
775+
su2double *Normal, *Coord_i, *Coord_j, Area, dist_ij, laminar_viscosity, thermal_diffusivity, Twall, dTdn, Prandtl_Lam;
776+
//su2double Prandtl_Turb;
777+
bool implicit = (config->GetKind_TimeIntScheme_Flow() == EULER_IMPLICIT);
778+
779+
bool flow = ((config->GetKind_Solver() == INC_NAVIER_STOKES)
780+
|| (config->GetKind_Solver() == INC_RANS)
781+
|| (config->GetKind_Solver() == DISC_ADJ_INC_NAVIER_STOKES)
782+
|| (config->GetKind_Solver() == DISC_ADJ_INC_RANS));
783+
784+
Prandtl_Lam = config->GetPrandtl_Lam();
785+
// Prandtl_Turb = config->GetPrandtl_Turb();
786+
laminar_viscosity = config->GetMu_ConstantND();
787+
//Prandtl_Turb = config->GetPrandtl_Turb();
788+
//laminar_viscosity = config->GetViscosity_FreeStreamND(); // TDE check for consistency for CHT
789+
790+
string Marker_Tag = config->GetMarker_All_TagBound(val_marker);
791+
792+
Twall = config->GetIsothermal_Temperature(Marker_Tag)/config->GetTemperature_Ref();
793+
794+
for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) {
795+
796+
iPoint = geometry->vertex[val_marker][iVertex]->GetNode();
797+
798+
if (geometry->nodes->GetDomain(iPoint)) {
799+
800+
Point_Normal = geometry->vertex[val_marker][iVertex]->GetNormal_Neighbor();
776801

777-
for (auto iVertex = 0u; iVertex < geometry->nVertex[val_marker]; iVertex++) {
778-
const auto iPoint = geometry->vertex[val_marker][iVertex]->GetNode();
802+
Normal = geometry->vertex[val_marker][iVertex]->GetNormal();
803+
Area = 0.0;
804+
for (iDim = 0; iDim < nDim; iDim++) Area += Normal[iDim]*Normal[iDim];
805+
Area = sqrt (Area);
779806

780-
if (!geometry->nodes->GetDomain(iPoint)) continue;
807+
Coord_i = geometry->nodes->GetCoord(iPoint);
808+
Coord_j = geometry->nodes->GetCoord(Point_Normal);
809+
dist_ij = 0;
810+
for (iDim = 0; iDim < nDim; iDim++)
811+
dist_ij += (Coord_j[iDim]-Coord_i[iDim])*(Coord_j[iDim]-Coord_i[iDim]);
812+
dist_ij = sqrt(dist_ij);
781813

782-
nodes->SetSolution_Old(iPoint,&Twall);
783-
LinSysRes(iPoint, 0) = 0.0;
784-
nodes->SetRes_TruncErrorZero(iPoint);
814+
dTdn = -(nodes->GetSolution(Point_Normal,0) - Twall)/dist_ij;
785815

786-
if (implicit) Jacobian.DeleteValsRowi(iPoint);
816+
if(flow) {
817+
thermal_diffusivity = laminar_viscosity/Prandtl_Lam;
818+
}
819+
else
820+
thermal_diffusivity = config->GetThermalDiffusivity_Solid();
821+
822+
Res_Visc[0] = thermal_diffusivity*dTdn*Area;
823+
824+
if(implicit) {
825+
826+
Jacobian_i[0][0] = -thermal_diffusivity/dist_ij * Area;
827+
}
828+
829+
LinSysRes.SubtractBlock(iPoint, Res_Visc);
830+
Jacobian.SubtractBlock2Diag(iPoint, Jacobian_i);
831+
}
787832
}
788833
}
789834

0 commit comments

Comments
 (0)