diff --git a/Geo/discreteDiskFace.cpp b/Geo/discreteDiskFace.cpp index b7724e6bea6804d6444d876541dacbdc4dfb7d8d..b52d22a38c2a3c99eca91c323b28fd65810a294b 100644 --- a/Geo/discreteDiskFace.cpp +++ b/Geo/discreteDiskFace.cpp @@ -284,12 +284,15 @@ discreteDiskFace::discreteDiskFace(GFace *gf, triangulation* diskTriangulation, _totLength = geoTriangulation->bord.rbegin()->first; _U0 = geoTriangulation->bord.rbegin()->second; orderVertices(_totLength, _U0, _coords); - parametrize(); + parametrize(false); buildOct(CAD); printParamMesh(); - if (_order > 1 && !checkOrientationUV()){ - Msg::Info("discreteDiskFace:: parametrization is not one-to-one; the parametric mesh is going to be corrected."); - optimize(); + if (!checkOrientationUV()){ + Msg::Info("discreteDiskFace:: parametrization is not one-to-one; it is going to be corrected."); + if(_order==1) + parametrize(true); + else + optimize(); buildOct(CAD); printParamMesh(); } @@ -336,7 +339,7 @@ void discreteDiskFace::buildOct(std::vector<GFace*> *CAD) const Octree_Arrange(oct); } -bool discreteDiskFace::parametrize()// const +bool discreteDiskFace::parametrize(bool one2one)// const { // #improveme @@ -349,7 +352,7 @@ bool discreteDiskFace::parametrize()// const dofManager<double> myAssemblerU(lsys_u); // hashing dofManager<double> myAssemblerV(lsys_v); - if(_order>1){ + if(!one2one){ for(size_t i = 0; i < _U0.size(); i++){ MVertex *v = _U0[i]; const double theta = 2 * M_PI * _coords[i]; @@ -389,7 +392,8 @@ bool discreteDiskFace::parametrize()// const } - if(_order==1){ + if(one2one){ + Msg::Info("discreteDiskFace::parametrize \t Modifying discrete system"); checklsys(lsys_u,&myAssemblerU,1); checklsys(lsys_v,&myAssemblerV,0); } diff --git a/Geo/discreteDiskFace.h b/Geo/discreteDiskFace.h index b5aed56fa930f0c7791b5ff736f73b2056aeda80..1719fe3d39591c718badd77f8df21d39e95f3b66 100644 --- a/Geo/discreteDiskFace.h +++ b/Geo/discreteDiskFace.h @@ -26,6 +26,7 @@ #include "linearSystemCSR.h" #include "dofManager.h" + inline int nodeLocalNum(MElement* e, MVertex* v) { for(int i=0; i<e->getNumVertices(); i++) @@ -219,7 +220,7 @@ class discreteDiskFaceTriangle { class discreteDiskFace : public GFace { GFace *_parent; void buildOct(std::vector<GFace*> *CAD = NULL) const; - bool parametrize();// const; + bool parametrize(bool);// const; void checklsys(linearSystemCSRTaucs<double>*,dofManager<double>*,int); void putOnView(bool,bool); bool checkOrientationUV();