Skip to content

Commit bced0cd

Browse files
authored
Merge branch 'develop' into feature_invalidGridPrevention
2 parents 8e0085b + 4f11b35 commit bced0cd

39 files changed

Lines changed: 214 additions & 462 deletions

Common/src/geometry/CMultiGridGeometry.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#include "../../include/geometry/CMultiGridGeometry.hpp"
2929
#include "../../include/geometry/CMultiGridQueue.hpp"
3030
#include "../../include/toolboxes/printing_toolbox.hpp"
31-
31+
#include "../../../Common/include/toolboxes/geometry_toolbox.hpp"
3232

3333
CMultiGridGeometry::CMultiGridGeometry(CGeometry **geometry, CConfig *config_container, unsigned short iMesh) : CGeometry() {
3434

@@ -1084,7 +1084,7 @@ void CMultiGridGeometry::SetControlVolume(CConfig *config, CGeometry *fine_grid,
10841084

10851085
unsigned long iFinePoint, iCoarsePoint, iEdge, iParent;
10861086
long FineEdge, CoarseEdge;
1087-
unsigned short iChildren, iDim;
1087+
unsigned short iChildren;
10881088
bool change_face_orientation;
10891089
su2double Coarse_Volume, Area;
10901090

@@ -1135,8 +1135,7 @@ void CMultiGridGeometry::SetControlVolume(CConfig *config, CGeometry *fine_grid,
11351135

11361136
for (iEdge = 0; iEdge < nEdge; iEdge++) {
11371137
const auto NormalFace = edges->GetNormal(iEdge);
1138-
Area = 0.0; for (iDim = 0; iDim < nDim; iDim++) Area += NormalFace[iDim]*NormalFace[iDim];
1139-
Area = sqrt(Area);
1138+
Area = GeometryToolbox::Norm(nDim, NormalFace);
11401139
if (Area == 0.0) {
11411140
su2double DefaultNormal[3] = {EPS*EPS};
11421141
edges->SetNormal(iEdge, DefaultNormal);
@@ -1181,8 +1180,7 @@ void CMultiGridGeometry::SetBoundControlVolume(CConfig *config, CGeometry *fine_
11811180
for (iMarker = 0; iMarker < nMarker; iMarker ++)
11821181
for (iVertex = 0; iVertex < nVertex[iMarker]; iVertex++) {
11831182
NormalFace = vertex[iMarker][iVertex]->GetNormal();
1184-
Area = 0.0; for (iDim = 0; iDim < nDim; iDim++) Area += NormalFace[iDim]*NormalFace[iDim];
1185-
Area = sqrt(Area);
1183+
Area = GeometryToolbox::Norm(nDim, NormalFace);
11861184
if (Area == 0.0) for (iDim = 0; iDim < nDim; iDim++) NormalFace[iDim] = EPS*EPS;
11871185
}
11881186

Common/src/geometry/CPhysicalGeometry.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4590,8 +4590,8 @@ void CPhysicalGeometry::SetPositive_ZArea(CConfig *config) {
45904590
if (axisymmetric) AxiFactor = 2.0*PI_NUMBER*nodes->GetCoord(iPoint, 1);
45914591
else AxiFactor = 1.0;
45924592

4593-
if (nDim == 2) WettedArea += AxiFactor * sqrt (Normal[0]*Normal[0] + Normal[1]*Normal[1]);
4594-
if (nDim == 3) WettedArea += sqrt (Normal[0]*Normal[0] + Normal[1]*Normal[1] + Normal[2]*Normal[2]);
4593+
if (nDim == 2) WettedArea = AxiFactor * GeometryToolbox::Norm(nDim, Normal);
4594+
if (nDim == 3) WettedArea = GeometryToolbox::Norm(nDim, Normal);
45954595

45964596
if (Normal[0] < 0) PositiveXArea -= Normal[0];
45974597
if (Normal[1] < 0) PositiveYArea -= Normal[1];
@@ -5633,10 +5633,8 @@ void CPhysicalGeometry::SetTurboVertex(CConfig *config, unsigned short val_iZone
56335633
/*--- compute the face area associated with the vertex ---*/
56345634
vertex[iMarker][iVertex]->GetNormal(NormalArea);
56355635
for (iDim = 0; iDim < nDim; iDim++) NormalArea[iDim] = -NormalArea[iDim];
5636-
Area = 0.0;
5637-
for (iDim = 0; iDim < nDim; iDim++)
5638-
Area += NormalArea[iDim]*NormalArea[iDim];
5639-
Area = sqrt(Area);
5636+
Area = GeometryToolbox::Norm(nDim, NormalArea);
5637+
56405638
for (iDim = 0; iDim < nDim; iDim++) NormalArea[iDim] /= Area;
56415639
/*--- store all the all the info into the auxiliary containers ---*/
56425640
disordered[jSpan][nVertexSpanHalo[jSpan]] = iPoint;
@@ -6814,8 +6812,7 @@ void CPhysicalGeometry::SetBoundControlVolume(CConfig *config, unsigned short ac
68146812
for (iMarker = 0; iMarker < nMarker; iMarker ++)
68156813
for (iVertex = 0; iVertex < nVertex[iMarker]; iVertex++) {
68166814
NormalFace = vertex[iMarker][iVertex]->GetNormal();
6817-
Area = 0.0; for (iDim = 0; iDim < nDim; iDim++) Area += NormalFace[iDim]*NormalFace[iDim];
6818-
Area = sqrt(Area);
6815+
Area = GeometryToolbox::Norm(nDim, NormalFace);
68196816
if (Area == 0.0) for (iDim = 0; iDim < nDim; iDim++) NormalFace[iDim] = EPS*EPS;
68206817
}
68216818

Common/src/interface_interpolation/CSlidingMesh.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -451,10 +451,7 @@ void CSlidingMesh::SetTransferCoeff(const CConfig* const* config) {
451451
target_geometry->vertex[markTarget][iVertex]->GetNormal(Normal);
452452

453453
/*--- The value of Area computed here includes also portion of boundary belonging to different marker ---*/
454-
Area = 0.0;
455-
for (iDim = 0; iDim < nDim; iDim++)
456-
Area += Normal[iDim]*Normal[iDim];
457-
Area = sqrt(Area);
454+
Area = GeometryToolbox::Norm(nDim, Normal);
458455

459456
for (iDim = 0; iDim < nDim; iDim++)
460457
Normal[iDim] /= Area;

Common/src/toolboxes/CSquareMatrixCM.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ void CSquareMatrixCM::MatMatMult(const char side,
8787
/*--- Left side: mat_out = this * mat_in. Set some sizes
8888
and allocate the memory for mat_out. ---*/
8989
const int M = Size(), N = mat_in.cols();
90-
assert(M == mat_in.rows());
90+
assert(M == static_cast<int>(mat_in.rows()));
9191

9292
mat_out.resize(M,N);
9393

@@ -117,7 +117,7 @@ void CSquareMatrixCM::MatMatMult(const char side,
117117
/*--- Right_side: mat_out = mat_in * this. Set some sizes
118118
and allocate the memory for mat_out. ---*/
119119
const int M = mat_in.rows(), N = Size();
120-
assert(N == mat_in.cols());
120+
assert(N == static_cast<int>(mat_in.cols()));
121121

122122
mat_out.resize(M,N);
123123

SU2_CFD/include/solvers/CFVMFlowSolverBase.inl

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -706,9 +706,7 @@ su2double CFVMFlowSolverBase<V, R>::GetInletAtVertex(su2double* val_inlet, unsig
706706
/*-- Compute boundary face area for this vertex. ---*/
707707

708708
geometry->vertex[iMarker][iVertex]->GetNormal(Normal);
709-
Area = 0.0;
710-
for (iDim = 0; iDim < nDim; iDim++) Area += Normal[iDim] * Normal[iDim];
711-
Area = sqrt(Area);
709+
Area = GeometryToolbox::Norm(nDim, Normal);
712710

713711
/*--- Access and store the inlet variables for this vertex. ---*/
714712

@@ -845,9 +843,7 @@ void CFVMFlowSolverBase<V, R>::BC_Sym_Plane(CGeometry* geometry, CSolver** solve
845843

846844
/*--- Compute unit normal, to be used for unit tangential, projected velocity and velocity
847845
component gradients. ---*/
848-
Area = 0.0;
849-
for (iDim = 0; iDim < nDim; iDim++) Area += Normal[iDim] * Normal[iDim];
850-
Area = sqrt(Area);
846+
Area = GeometryToolbox::Norm(nDim, Normal);
851847

852848
for (iDim = 0; iDim < nDim; iDim++) UnitNormal[iDim] = -Normal[iDim] / Area;
853849

@@ -1700,7 +1696,7 @@ template <class V, ENUM_REGIME FlowRegime>
17001696
void CFVMFlowSolverBase<V, FlowRegime>::Momentum_Forces(const CGeometry* geometry, const CConfig* config) {
17011697
unsigned long iVertex, iPoint;
17021698
unsigned short iDim, iMarker, Boundary, Monitoring, iMarker_Monitoring;
1703-
su2double Area, factor, RefVel2 = 0.0, RefTemp, RefDensity = 0.0, Mach2Vel, Mach_Motion, MassFlow, Density;
1699+
su2double factor, RefVel2 = 0.0, RefTemp, RefDensity = 0.0, Mach2Vel, Mach_Motion, MassFlow, Density;
17041700
const su2double *Normal = nullptr, *Coord = nullptr;
17051701
string Marker_Tag, Monitoring_Tag;
17061702
su2double AxiFactor;
@@ -1794,11 +1790,6 @@ void CFVMFlowSolverBase<V, FlowRegime>::Momentum_Forces(const CGeometry* geometr
17941790
Normal = geometry->vertex[iMarker][iVertex]->GetNormal();
17951791
Coord = geometry->nodes->GetCoord(iPoint);
17961792
Density = nodes->GetDensity(iPoint);
1797-
1798-
Area = 0.0;
1799-
for (iDim = 0; iDim < nDim; iDim++) Area += Normal[iDim] * Normal[iDim];
1800-
Area = sqrt(Area);
1801-
18021793
MassFlow = 0.0;
18031794
su2double Velocity[MAXNDIM] = {0.0}, MomentDist[MAXNDIM] = {0.0};
18041795
for (iDim = 0; iDim < nDim; iDim++) {
@@ -2180,10 +2171,7 @@ void CFVMFlowSolverBase<V, FlowRegime>::Friction_Forces(const CGeometry* geometr
21802171
Grad_PrimVar = nodes->GetGradient_Primitive(iPoint);
21812172
}
21822173

2183-
Area = 0.0;
2184-
for (iDim = 0; iDim < nDim; iDim++) Area += Normal[iDim] * Normal[iDim];
2185-
Area = sqrt(Area);
2186-
2174+
Area = GeometryToolbox::Norm(nDim, Normal);
21872175
for (iDim = 0; iDim < nDim; iDim++) {
21882176
UnitNormal[iDim] = Normal[iDim] / Area;
21892177
}

SU2_CFD/src/interfaces/cht/CConjugateHeatInterface.cpp

Lines changed: 19 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include "../../../include/interfaces/cht/CConjugateHeatInterface.hpp"
3030
#include "../../../Common/include/CConfig.hpp"
3131
#include "../../../Common/include/geometry/CGeometry.hpp"
32+
#include "../../../Common/include/toolboxes/geometry_toolbox.hpp"
3233
#include "../../../include/solvers/CSolver.hpp"
3334

3435
CConjugateHeatInterface::CConjugateHeatInterface(unsigned short val_nVar, unsigned short val_nConst) :
@@ -39,47 +40,28 @@ void CConjugateHeatInterface::GetDonor_Variable(CSolver *donor_solution, CGeomet
3940
const CConfig *donor_config, unsigned long Marker_Donor,
4041
unsigned long Vertex_Donor, unsigned long Point_Donor) {
4142

42-
unsigned short nDim, iDim;
43-
unsigned long iPoint, PointNormal;
43+
const auto nDim = donor_geometry->GetnDim();
4444

45-
su2double *Coord, *Coord_Normal, *Normal, *Edge_Vector, dist, dist2, Area,
46-
Twall, Tnormal, dTdn, rho_cp_solid, Prandtl_Lam, laminar_viscosity,
45+
su2double Twall, Tnormal, dTdn, rho_cp_solid, Prandtl_Lam, laminar_viscosity,
4746
thermal_diffusivity, thermal_conductivity=0.0, thermal_conductivityND,
4847
heat_flux_density=0.0, conductivity_over_dist=0.0;
4948

50-
nDim = donor_geometry->GetnDim();
49+
/*--- Check whether the current zone is a solid zone or a fluid zone ---*/
5150

52-
Edge_Vector = new su2double[nDim];
51+
const bool compressible_flow = (donor_config->GetKind_Regime() == COMPRESSIBLE);
52+
const bool incompressible_flow = (donor_config->GetKind_Regime() == INCOMPRESSIBLE) && donor_config->GetEnergy_Equation();
53+
const bool heat_equation = (donor_config->GetKind_Solver() == HEAT_EQUATION) ||
54+
(donor_config->GetKind_Solver() == DISC_ADJ_HEAT);
5355

54-
/*--- Check whether the current zone is a solid zone or a fluid zone ---*/
56+
const auto Coord = donor_geometry->nodes->GetCoord(Point_Donor);
57+
const auto PointNormal = donor_geometry->vertex[Marker_Donor][Vertex_Donor]->GetNormal_Neighbor();
58+
const auto Coord_Normal = donor_geometry->nodes->GetCoord(PointNormal);
5559

56-
bool compressible_flow = ((donor_config->GetKind_Solver() == NAVIER_STOKES)
57-
|| (donor_config->GetKind_Solver() == RANS)
58-
|| (donor_config->GetKind_Solver() == DISC_ADJ_NAVIER_STOKES)
59-
|| (donor_config->GetKind_Solver() == DISC_ADJ_RANS));
60-
bool incompressible_flow = (((donor_config->GetKind_Solver() == INC_NAVIER_STOKES)
61-
|| (donor_config->GetKind_Solver() == INC_RANS)
62-
|| (donor_config->GetKind_Solver() == DISC_ADJ_INC_NAVIER_STOKES)
63-
|| (donor_config->GetKind_Solver() == DISC_ADJ_INC_RANS))
64-
&& (donor_config->GetEnergy_Equation()));
65-
bool heat_equation = ((donor_config->GetKind_Solver() == HEAT_EQUATION)
66-
|| (donor_config->GetKind_Solver() == DISC_ADJ_HEAT));
67-
68-
Coord = donor_geometry->nodes->GetCoord(Point_Donor);
69-
70-
Normal = donor_geometry->vertex[Marker_Donor][Vertex_Donor]->GetNormal();
71-
PointNormal = donor_geometry->vertex[Marker_Donor][Vertex_Donor]->GetNormal_Neighbor();
72-
Coord_Normal = donor_geometry->nodes->GetCoord(PointNormal);
73-
74-
Twall = 0.0; Tnormal = 0.0; dTdn = 0.0; dist2 = 0.0; Area = 0.0;
75-
76-
for (iDim = 0; iDim < nDim; iDim++) {
77-
Edge_Vector[iDim] = Coord_Normal[iDim] - Coord[iDim];
78-
dist2 += Edge_Vector[iDim]*Edge_Vector[iDim];
79-
Area += Normal[iDim]*Normal[iDim];
80-
}
81-
dist = sqrt(dist2);
82-
Area = sqrt(Area);
60+
Twall = 0.0; Tnormal = 0.0; dTdn = 0.0;
61+
62+
su2double Edge_Vector[3] = {0.0};
63+
GeometryToolbox::Distance(nDim, Coord_Normal, Coord, Edge_Vector);
64+
su2double dist = GeometryToolbox::Norm(nDim, Edge_Vector);
8365

8466
/*--- Retrieve temperature solution and its gradient ---*/
8567

@@ -102,6 +84,8 @@ void CConjugateHeatInterface::GetDonor_Variable(CSolver *donor_solution, CGeomet
10284
Tnormal = donor_solution->GetNodes()->GetSolution(PointNormal,0);
10385

10486
// TODO: Check if these improve accuracy, if needed at all
87+
// const auto Normal = donor_geometry->vertex[Marker_Donor][Vertex_Donor]->GetNormal();
88+
// su2double Area = GeometryToolbox::Norm(nDim, Normal);
10589
// for (iDim = 0; iDim < nDim; iDim++) {
10690
// dTdn += (Twall - Tnormal)/dist * (Edge_Vector[iDim]/dist) * (Normal[iDim]/Area);
10791
// }
@@ -137,7 +121,7 @@ void CConjugateHeatInterface::GetDonor_Variable(CSolver *donor_solution, CGeomet
137121
}
138122
else if (incompressible_flow) {
139123

140-
iPoint = donor_geometry->vertex[Marker_Donor][Vertex_Donor]->GetNode();
124+
const auto iPoint = donor_geometry->vertex[Marker_Donor][Vertex_Donor]->GetNode();
141125

142126
thermal_conductivityND = donor_solution->GetNodes()->GetThermalConductivity(iPoint);
143127
heat_flux_density = thermal_conductivityND*dTdn;
@@ -189,10 +173,6 @@ void CConjugateHeatInterface::GetDonor_Variable(CSolver *donor_solution, CGeomet
189173
Donor_Variable[3] = Tnormal*donor_config->GetTemperature_Ref();
190174
}
191175

192-
193-
194-
delete [] Edge_Vector;
195-
196176
}
197177

198178
void CConjugateHeatInterface::SetTarget_Variable(CSolver *target_solution, CGeometry *target_geometry,

SU2_CFD/src/numerics/NEMO/NEMO_diffusion.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
*/
2828

2929
#include "../../../include/numerics/NEMO/NEMO_diffusion.hpp"
30+
#include "../../../Common/include/toolboxes/geometry_toolbox.hpp"
3031

3132
CAvgGrad_NEMO::CAvgGrad_NEMO(unsigned short val_nDim,
3233
unsigned short val_nVar,
@@ -90,10 +91,7 @@ CNumerics::ResidualType<> CAvgGrad_NEMO::ComputeResidual(const CConfig *config)
9091
unsigned short iSpecies, iVar, iDim;
9192

9293
/*--- Normalized normal vector ---*/
93-
Area = 0;
94-
for (iDim = 0; iDim < nDim; iDim++)
95-
Area += Normal[iDim]*Normal[iDim];
96-
Area = sqrt(Area);
94+
Area = GeometryToolbox::Norm(nDim, Normal);
9795

9896
for (iDim = 0; iDim < nDim; iDim++)
9997
UnitNormal[iDim] = Normal[iDim]/Area;
@@ -238,10 +236,7 @@ CNumerics::ResidualType<> CAvgGradCorrected_NEMO::ComputeResidual(const CConfig
238236
su2double dist_ij_2;
239237

240238
/*--- Normalized normal vector ---*/
241-
Area = 0;
242-
for (iDim = 0; iDim < nDim; iDim++)
243-
Area += Normal[iDim]*Normal[iDim];
244-
Area = sqrt(Area);
239+
Area = GeometryToolbox::Norm(nDim, Normal);
245240

246241
for (iDim = 0; iDim < nDim; iDim++)
247242
UnitNormal[iDim] = Normal[iDim]/Area;

SU2_CFD/src/numerics/NEMO/convection/ausm.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
*/
2727

2828
#include "../../../../include/numerics/NEMO/convection/ausm.hpp"
29+
#include "../../../Common/include/toolboxes/geometry_toolbox.hpp"
2930

3031
CUpwAUSM_NEMO::CUpwAUSM_NEMO(unsigned short val_nDim, unsigned short val_nVar,
3132
unsigned short val_nPrimVar,
@@ -70,10 +71,7 @@ CNumerics::ResidualType<> CUpwAUSM_NEMO::ComputeResidual(const CConfig *config)
7071
e_ve_i, e_ve_j, mL, mR, mLP, mRM, mF, pLP, pRM, pF, Phi;
7172

7273
/*--- Compute geometric quantities ---*/
73-
Area = 0;
74-
for (iDim = 0; iDim < nDim; iDim++)
75-
Area += Normal[iDim]*Normal[iDim];
76-
Area = sqrt(Area);
74+
Area = GeometryToolbox::Norm(nDim, Normal);
7775

7876
for (iDim = 0; iDim < nDim; iDim++)
7977
UnitNormal[iDim] = Normal[iDim]/Area;

SU2_CFD/src/numerics/NEMO/convection/ausmplusup2.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
*/
2727

2828
#include "../../../../include/numerics/NEMO/convection/ausmplusup2.hpp"
29+
#include "../../../Common/include/toolboxes/geometry_toolbox.hpp"
2930

3031
CUpwAUSMPLUSUP2_NEMO::CUpwAUSMPLUSUP2_NEMO(unsigned short val_nDim, unsigned short val_nVar,
3132
unsigned short val_nPrimVar,
@@ -109,10 +110,7 @@ CNumerics::ResidualType<> CUpwAUSMPLUSUP2_NEMO::ComputeResidual(const CConfig *c
109110
e_ve_i, e_ve_j, mL, mR, mLP, mRM, mF, pLP, pRM, pF, Phi, sq_veli, sq_velj;
110111

111112
/*--- Face area ---*/
112-
Area = 0.0;
113-
for (iDim = 0; iDim < nDim; iDim++)
114-
Area += Normal[iDim]*Normal[iDim];
115-
Area = sqrt(Area);
113+
Area = GeometryToolbox::Norm(nDim, Normal);
116114

117115
/*-- Unit Normal ---*/
118116
for (iDim = 0; iDim < nDim; iDim++)

SU2_CFD/src/numerics/NEMO/convection/ausmpwplus.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
*/
2727

2828
#include "../../../../include/numerics/NEMO/convection/ausmpwplus.hpp"
29+
#include "../../../Common/include/toolboxes/geometry_toolbox.hpp"
2930

3031
CUpwAUSMPWplus_NEMO::CUpwAUSMPWplus_NEMO(unsigned short val_nDim,
3132
unsigned short val_nVar,
@@ -75,10 +76,7 @@ CNumerics::ResidualType<> CUpwAUSMPWplus_NEMO::ComputeResidual(const CConfig *co
7576
Flux[iVar] = 0.0;
7677

7778
/*--- Calculate geometric quantities ---*/
78-
Area = 0.0;
79-
for (iDim = 0; iDim < nDim; iDim++)
80-
Area += Normal[iDim]*Normal[iDim];
81-
Area = sqrt(Area);
79+
Area = GeometryToolbox::Norm(nDim, Normal);
8280

8381
for (iDim = 0; iDim < nDim; iDim++)
8482
UnitNormal[iDim] = Normal[iDim]/Area;

0 commit comments

Comments
 (0)