From 15057cb23025ae8c81c6c1fe5a5de07121e1b86a Mon Sep 17 00:00:00 2001 From: Jonathan Lambrechts <jonathan.lambrechts@uclouvain.be> Date: Fri, 11 May 2012 13:18:24 +0000 Subject: [PATCH] OptHOM : remove 2 invalid read --- Common/Context.cpp | 1 + Numeric/polynomialBasis.h | 3 ++- contrib/HighOrderMeshOptimizer/OptHomMesh.cpp | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Common/Context.cpp b/Common/Context.cpp index 64cb56103c..a4fc1b82ae 100644 --- a/Common/Context.cpp +++ b/Common/Context.cpp @@ -81,6 +81,7 @@ CTX::CTX() mesh.numSubEdges = 0; mesh.colorCarousel = 0; mesh.ignorePartBound = 0; + mesh.saveTri = 1; color.mesh.tangents = color.mesh.tetrahedron = color.mesh.triangle = 0; color.mesh.prism = color.mesh.pyramid = color.mesh.hexahedron = 0; color.mesh.tangents = color.mesh.line = color.mesh.quadrangle = 0; diff --git a/Numeric/polynomialBasis.h b/Numeric/polynomialBasis.h index 9d502e9e7c..7b1988c4e8 100644 --- a/Numeric/polynomialBasis.h +++ b/Numeric/polynomialBasis.h @@ -154,8 +154,9 @@ class polynomialBasis double dfv[1256][3]; dfm.resize (coefficients.size1(), coord.size1() * 3, false); int ii = 0; + int dimCoord = coord.size2(); for (int iPoint=0; iPoint< coord.size1(); iPoint++) { - df(coord(iPoint,0), coord(iPoint, 1), coord(iPoint, 2), dfv); + df(coord(iPoint,0), dimCoord > 1 ? coord(iPoint, 1) : 0., dimCoord > 2 ? coord(iPoint, 2) : 0., dfv); for (int i = 0; i < coefficients.size1(); i++) { dfm(i, iPoint * 3 + 0) = dfv[i][0]; dfm(i, iPoint * 3 + 1) = dfv[i][1]; diff --git a/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp b/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp index f386ff6854..f8174b5eb3 100644 --- a/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp +++ b/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp @@ -297,9 +297,10 @@ void Mesh::distSqToStraight(std::vector<double> &dSq) for (int i = 0; i < nV1; ++i) { sxyz[_el2V[iEl][i]] = _vert[_el2V[iEl][i]]->point(); } + int dim = lagrange->points.size2(); for (int i = nV1; i < nV; ++i) { double f[256]; - lagrange1->f(lagrange->points(i, 0), lagrange->points(i, 1), lagrange->points(i, 2), f); + lagrange1->f(lagrange->points(i, 0), dim > 1 ? lagrange->points(i, 1) : 0., dim > 2 ? lagrange->points(i, 2) : 0., f); for (int j = 0; j < nV1; ++j) sxyz[_el2V[iEl][i]] += sxyz[_el2V[iEl][j]] * f[j]; } -- GitLab