From 70f1496786b8c44bf8779157e78bfa80be30f6da Mon Sep 17 00:00:00 2001 From: Amaury Johnan <amjohnen@gmail.com> Date: Thu, 31 Oct 2013 13:55:52 +0000 Subject: [PATCH] fix barycenter and lagPointFast in 2D (not tested) --- Geo/MElement.cpp | 12 ++++++------ Numeric/ElementType.cpp | 2 -- Numeric/JacobianBasis.cpp | 5 +++-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp index fbca931698..6457df851b 100644 --- a/Geo/MElement.cpp +++ b/Geo/MElement.cpp @@ -1464,11 +1464,11 @@ MElement *MElementFactory::create(int type, std::vector<MVertex*> &v, case MSH_PRI_18: return new MPrism18(v, num, part); case MSH_PRI_40: return new MPrismN(v, 3, num, part); case MSH_PRI_75: return new MPrismN(v, 4, num, part); - case MSH_PRI_126: return new MPrismN(v, 5, num, part); - case MSH_PRI_196: return new MPrismN(v, 6, num, part); - case MSH_PRI_288: return new MPrismN(v, 7, num, part); - case MSH_PRI_405: return new MPrismN(v, 8, num, part); - case MSH_PRI_550: return new MPrismN(v, 9, num, part); + case MSH_PRI_126: return new MPrismN(v, 5, num, part); + case MSH_PRI_196: return new MPrismN(v, 6, num, part); + case MSH_PRI_288: return new MPrismN(v, 7, num, part); + case MSH_PRI_405: return new MPrismN(v, 8, num, part); + case MSH_PRI_550: return new MPrismN(v, 9, num, part); case MSH_PRI_24: return new MPrismN(v, 3, num, part); case MSH_PRI_33: return new MPrismN(v, 4, num, part); case MSH_PRI_42: return new MPrismN(v, 5, num, part); @@ -1476,7 +1476,7 @@ MElement *MElementFactory::create(int type, std::vector<MVertex*> &v, case MSH_PRI_60: return new MPrismN(v, 7, num, part); case MSH_PRI_69: return new MPrismN(v, 8, num, part); case MSH_PRI_78: return new MPrismN(v, 9, num, part); - case MSH_PRI_1: return new MPrismN(v, 0, num, part); + case MSH_PRI_1: return new MPrismN(v, 0, num, part); case MSH_TET_20: return new MTetrahedronN(v, 3, num, part); case MSH_TET_35: return new MTetrahedronN(v, 4, num, part); case MSH_TET_56: return new MTetrahedronN(v, 5, num, part); diff --git a/Numeric/ElementType.cpp b/Numeric/ElementType.cpp index 92444c0314..dbfbd8f8d4 100644 --- a/Numeric/ElementType.cpp +++ b/Numeric/ElementType.cpp @@ -98,7 +98,6 @@ int ElementType::ParentTypeFromTag(int tag) int ElementType::OrderFromTag(int tag) { - switch (tag) { case MSH_PNT : return 0; case MSH_LIN_1 : return 0; @@ -228,7 +227,6 @@ int ElementType::OrderFromTag(int tag) Msg::Error("Unknown element tag %d, assuming order 1.",tag); return 1; } - } int ElementType::DimensionFromTag(int tag) diff --git a/Numeric/JacobianBasis.cpp b/Numeric/JacobianBasis.cpp index 3caa50265f..bec6e56d98 100644 --- a/Numeric/JacobianBasis.cpp +++ b/Numeric/JacobianBasis.cpp @@ -101,7 +101,7 @@ JacobianBasis::JacobianBasis(int tag) double xBar = 0., yBar = 0., zBar = 0.; double barycenter[3] = {0., 0., 0.}; for (int i = 0; i < numPrimMapNodes; i++) { - for (int j = 0; i < primMapBasis->points.size2(); ++i) { + for (int j = 0; j < primMapBasis->points.size2(); ++j) { barycenter[j] += primMapBasis->points(i, j); } } @@ -126,7 +126,8 @@ JacobianBasis::JacobianBasis(int tag) // Compute "fast" Jacobian evaluation matrices (at 1st order nodes + barycenter) numJacNodesFast = numPrimMapNodes+1; fullMatrix<double> lagPointsFast(numJacNodesFast,3); // Sampling points - lagPointsFast.copy(primMapBasis->points,0,numPrimMapNodes,0,3,0,0); // 1st order nodes + lagPointsFast.copy(primMapBasis->points,0,numPrimMapNodes, + 0,primMapBasis->points.size2(),0,0); // 1st order nodes lagPointsFast(numPrimMapNodes,0) = barycenter[0]; // Last point = barycenter lagPointsFast(numPrimMapNodes,1) = barycenter[1]; lagPointsFast(numPrimMapNodes,2) = barycenter[2]; -- GitLab