diff --git a/Numeric/JacobianBasis.h b/Numeric/JacobianBasis.h index 5aa77258dca7432f05553b2177dd22e9af5745ed..31890fc5f0d69c636b706aea668b744ffb0d6f9a 100644 --- a/Numeric/JacobianBasis.h +++ b/Numeric/JacobianBasis.h @@ -62,7 +62,7 @@ class JacobianBasis { inline void primJac2Jac(const fullVector<double> &primJac, fullVector<double> &jac) const { matrixPrimJac2Jac.mult(primJac,jac); } - inline void subDivisor(const fullVector<double> &bez, fullVector<double> &result) const { + inline void subdivideBezierCoeff(const fullVector<double> &bez, fullVector<double> &result) const { bezier->subDivisor.mult(bez,result); } diff --git a/Numeric/bezierBasis.cpp b/Numeric/bezierBasis.cpp index cf2d14c8e413d63e9b30f4c83ba82de74c950fc6..c7ea74ce3cd9844e89658b0c4b29df63bede5ead 100644 --- a/Numeric/bezierBasis.cpp +++ b/Numeric/bezierBasis.cpp @@ -287,6 +287,14 @@ static std::vector< fullMatrix<double> > generateSubPointsPyr(int order) prox.add(.5); for (int i = 0; i < 8; ++i) { + if (i == 0) { + for (int j = 0; j < nPts; ++j) { + const double factor = (1. - 2*subPoints[i](j, 2)); + subPoints[i](j, 0) = subPoints[i](j, 0) * factor; + subPoints[i](j, 1) = subPoints[i](j, 1) * factor; + } + continue; + } for (int j = 0; j < nPts; ++j) { const double factor = (1. - subPoints[i](j, 2)); subPoints[i](j, 0) = subPoints[i](j, 0) * factor; diff --git a/Plugin/AnalyseCurvedMesh.cpp b/Plugin/AnalyseCurvedMesh.cpp index 182e76d5dabcd734618d2e971d7be0b86efcef48..58f3d04685dd8d4d79fca6f8bbf09acf1719aca8 100644 --- a/Plugin/AnalyseCurvedMesh.cpp +++ b/Plugin/AnalyseCurvedMesh.cpp @@ -336,7 +336,7 @@ int GMSH_AnalyseCurvedMeshPlugin::subDivision(const JacobianBasis *jb, int depth) { fullVector<double> newJacobian(jb->getNumSubNodes()); - jb->subDivisor(jacobian, newJacobian); + jb->subdivideBezierCoeff(jacobian, newJacobian); for (int i = 0; i < jb->getNumDivisions(); i++) for (int j = 0; j < jb->getNumLagCoeff(); j++) diff --git a/Plugin/AnalyseCurvedMesh.h b/Plugin/AnalyseCurvedMesh.h index 5f8ed131251eab1b13f519718e3170a1526f85d2..46c4d0d3a7cf95bb1a461cec55e438b950865597 100644 --- a/Plugin/AnalyseCurvedMesh.h +++ b/Plugin/AnalyseCurvedMesh.h @@ -72,7 +72,7 @@ private: public: BezierJacobian(fullVector<double> &, const JacobianBasis *, int depth); void subDivisions(fullVector<double> &vect) const - {_jfs->subDivisor(_jacBez, vect);} + {_jfs->subdivideBezierCoeff(_jacBez, vect);} inline int depth() const {return _depthSub;} inline double minJ() const {return _minJ;}