Skip to content

Commit ceedff4

Browse files
authored
Merge pull request #1137 from su2code/geo_toolbox_updates
Update Area computations with the geometry toolbox
2 parents 987b825 + 7c4b6ff commit ceedff4

37 files changed

Lines changed: 158 additions & 378 deletions

Common/src/geometry/CMultiGridGeometry.cpp

Lines changed: 3 additions & 5 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

@@ -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;

SU2_CFD/include/solvers/CFVMFlowSolverBase.inl

Lines changed: 4 additions & 15 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

@@ -1794,11 +1790,7 @@ 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-
1793+
Area = GeometryToolbox::Norm(nDim, Normal);
18021794
MassFlow = 0.0;
18031795
su2double Velocity[MAXNDIM] = {0.0}, MomentDist[MAXNDIM] = {0.0};
18041796
for (iDim = 0; iDim < nDim; iDim++) {
@@ -2180,10 +2172,7 @@ void CFVMFlowSolverBase<V, FlowRegime>::Friction_Forces(const CGeometry* geometr
21802172
Grad_PrimVar = nodes->GetGradient_Primitive(iPoint);
21812173
}
21822174

2183-
Area = 0.0;
2184-
for (iDim = 0; iDim < nDim; iDim++) Area += Normal[iDim] * Normal[iDim];
2185-
Area = sqrt(Area);
2186-
2175+
Area = GeometryToolbox::Norm(nDim, Normal);
21872176
for (iDim = 0; iDim < nDim; iDim++) {
21882177
UnitNormal[iDim] = Normal[iDim] / Area;
21892178
}

SU2_CFD/src/interfaces/cht/CConjugateHeatInterface.cpp

Lines changed: 3 additions & 4 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) :
@@ -75,11 +76,9 @@ void CConjugateHeatInterface::GetDonor_Variable(CSolver *donor_solution, CGeomet
7576

7677
for (iDim = 0; iDim < nDim; iDim++) {
7778
Edge_Vector[iDim] = Coord_Normal[iDim] - Coord[iDim];
78-
dist2 += Edge_Vector[iDim]*Edge_Vector[iDim];
79-
Area += Normal[iDim]*Normal[iDim];
8079
}
81-
dist = sqrt(dist2);
82-
Area = sqrt(Area);
80+
dist = GeometryToolbox::Norm(nDim, Edge_Vector);
81+
Area = GeometryToolbox::Norm(nDim, Normal);
8382

8483
/*--- Retrieve temperature solution and its gradient ---*/
8584

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;

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

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

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

3031
CCentLax_NEMO::CCentLax_NEMO(unsigned short val_nDim,
3132
unsigned short val_nVar,
@@ -69,10 +70,7 @@ CNumerics::ResidualType<> CCentLax_NEMO::ComputeResidual(const CConfig *config)
6970
su2double ProjVel_i, ProjVel_j;
7071

7172
/*--- Calculate geometrical quantities ---*/
72-
Area = 0;
73-
for (iDim = 0; iDim < nDim; iDim++)
74-
Area += Normal[iDim]*Normal[iDim];
75-
Area = sqrt(Area);
73+
Area = GeometryToolbox::Norm(nDim, Normal);
7674

7775
for (iDim = 0; iDim < nDim; iDim++)
7876
UnitNormal[iDim] = Normal[iDim]/Area;
@@ -96,13 +94,12 @@ CNumerics::ResidualType<> CCentLax_NEMO::ComputeResidual(const CConfig *config)
9694
GetInviscidProjFlux(MeanU, MeanV, Normal, ProjFlux);
9795

9896
/*--- Compute the local spectral radius and the stretching factor ---*/
99-
ProjVel_i = 0; ProjVel_j = 0; Area = 0;
97+
ProjVel_i = 0; ProjVel_j = 0;
10098
for (iDim = 0; iDim < nDim; iDim++) {
10199
ProjVel_i += V_i[VEL_INDEX+iDim]*Normal[iDim];
102100
ProjVel_j += V_j[VEL_INDEX+iDim]*Normal[iDim];
103-
Area += Normal[iDim]*Normal[iDim];
104101
}
105-
Area = sqrt(Area);
102+
Area = GeometryToolbox::Norm(nDim, Normal);
106103

107104
/*--- Dissipation --*/
108105
Local_Lambda_i = (fabs(ProjVel_i)+a_i*Area);

0 commit comments

Comments
 (0)