@@ -770,20 +770,65 @@ void CHeatSolver::Set_Heatflux_Areas(CGeometry *geometry, CConfig *config) {
770770void 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