Salome HOME
Copyright update 2020
[modules/smesh.git] / src / SMESHUtils / SMESH_Block.cxx
index 271ef8b0a682fb6a9b7ee13369a9facc6e6d2269..92fc3b3193c6f023b921b9ad8ce6852824a1c72f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -166,7 +166,7 @@ void SMESH_Block::TFace::Set( const int          faceID,
   // pcurves
   vector< int > edgeIdVec;
   GetFaceEdgesIDs( faceID, edgeIdVec );
-  for ( int iE = 0; iE < edgeIdVec.size(); iE++ ) // loop on 4 edges
+  for ( size_t iE = 0; iE < edgeIdVec.size(); iE++ ) // loop on 4 edges
   {
     myCoordInd[ iE ] = GetCoordIndOnEdge( edgeIdVec[ iE ] );
     if ( myC2d[ iE ]) delete myC2d[ iE ];
@@ -596,6 +596,7 @@ Standard_Boolean SMESH_Block::Values(const math_Vector& theXYZ,
       if ( mag > DBL_MIN )
         dPi /= mag;
       drv[ iP - 1 ] = dPi;
+      // drv[ iP - 1 ] = dPi / 0.001;
     }
     for ( int iP = 0; iP < 3; iP++ ) {
 #if 1
@@ -719,13 +720,13 @@ bool SMESH_Block::ComputeParameters(const gp_Pnt& thePoint,
   const bool isOnFace = IsFaceID( theShapeID );
   double * coef = GetShapeCoef( theShapeID );
 
-  // Find the first guess paremeters
+  // Find the first guess parameters
 
   gp_XYZ start(0, 0, 0);
 
   bool hasHint = ( 0 <= theParamsHint.X() && theParamsHint.X() <= 1 &&
                    0 <= theParamsHint.Y() && theParamsHint.Y() <= 1 &&
-                   0 <= theParamsHint.Y() && theParamsHint.Y() <= 1 );
+                   0 <= theParamsHint.Z() && theParamsHint.Z() <= 1 );
   if ( !hasHint && !myGridComputed )
   {
     // define the first guess by thePoint projection on lines
@@ -929,6 +930,7 @@ void SMESH_Block::refineParametersOnFace( const gp_Pnt& thePoint,
 {
   // find UV of thePoint on the FACE
   Standard_Real U,V;
+  U=V=0;
 
   const TFace& tface = myFace[ theFaceID - ID_FirstF ];
   if ( !tface.Surface() ) return;
@@ -1027,7 +1029,7 @@ bool SMESH_Block::findUVByHalfDivision( const gp_Pnt&             thePoint,
       dy *= 1.2;
       xSol = 0.5 * (xMax + xMin) ;
       ySol = 0.5 * (yMax + yMin) ;
-      if ( xMin == 0. && yMin == 0. && xMax == 1. && yMax == 1. ) // avoid infinit loop
+      if ( xMin == 0. && yMin == 0. && xMax == 1. && yMax == 1. ) // avoid infinite loop
       {
 #ifdef _DEBUG_REFINE_
         cout << "SMESH_Block::refineParametersOnFace(): tface.IsUVInQuad() fails" << endl;
@@ -1038,7 +1040,7 @@ bool SMESH_Block::findUVByHalfDivision( const gp_Pnt&             thePoint,
     }
   }
 
-  // refine solution using half-division technic
+  // refine solution using half-division technique
 
   gp_XYZ sol = theParams;
 
@@ -1112,7 +1114,7 @@ bool SMESH_Block::findUVByHalfDivision( const gp_Pnt&             thePoint,
     if ( saveBetterSolution( sol, theParams, thePoint.SquareDistance( tface.Point( sol ))))
     {
 #ifdef _DEBUG_REFINE_
-      cout << "SMESH_Block::refineParametersOnFace(): dividing suceeded" << endl;
+      cout << "SMESH_Block::refineParametersOnFace(): dividing succeeded" << endl;
       cout << " nbGetUV = " << nbGetUV << endl;
 #endif
         return true;
@@ -1583,7 +1585,7 @@ int SMESH_Block::GetOrderedEdges (const TopoDS_Face&   theFace,
 }
 //================================================================================
 /*!
- * \brief Call it after geometry initialisation
+ * \brief Call it after geometry initialization
  */
 //================================================================================
 
@@ -1606,7 +1608,6 @@ bool SMESH_Block::LoadMeshBlock(const SMDS_MeshVolume*        theVolume,
                                 const int                     theNode001Index,
                                 vector<const SMDS_MeshNode*>& theOrderedNodes)
 {
-  MESSAGE(" ::LoadMeshBlock()");
   init();
 
   SMDS_VolumeTool vTool;
@@ -1726,7 +1727,7 @@ bool SMESH_Block::LoadMeshBlock(const SMDS_MeshVolume*        theVolume,
 //function : LoadBlockShapes
 //purpose  : Initialize block geometry with theShell,
 //           add sub-shapes of theBlock to theShapeIDMap so that they get
-//           IDs acoording to enum TShapeID
+//           IDs according to enum TShapeID
 //=======================================================================
 
 bool SMESH_Block::LoadBlockShapes(const TopoDS_Shell&         theShell,
@@ -1734,7 +1735,6 @@ bool SMESH_Block::LoadBlockShapes(const TopoDS_Shell&         theShell,
                                   const TopoDS_Vertex&        theVertex001,
                                   TopTools_IndexedMapOfOrientedShape& theShapeIDMap )
 {
-  MESSAGE(" ::LoadBlockShapes()");
   return ( FindBlockShapes( theShell, theVertex000, theVertex001, theShapeIDMap ) &&
            LoadBlockShapes( theShapeIDMap ));
 }
@@ -1742,7 +1742,7 @@ bool SMESH_Block::LoadBlockShapes(const TopoDS_Shell&         theShell,
 //=======================================================================
 //function : LoadBlockShapes
 //purpose  : add sub-shapes of theBlock to theShapeIDMap so that they get
-//           IDs acoording to enum TShapeID
+//           IDs according to enum TShapeID
 //=======================================================================
 
 bool SMESH_Block::FindBlockShapes(const TopoDS_Shell&         theShell,
@@ -1750,8 +1750,6 @@ bool SMESH_Block::FindBlockShapes(const TopoDS_Shell&         theShell,
                                   const TopoDS_Vertex&        theVertex001,
                                   TopTools_IndexedMapOfOrientedShape& theShapeIDMap )
 {
-  MESSAGE(" ::FindBlockShapes()");
-
   // 8 vertices
   TopoDS_Shape V000, V100, V010, V110, V001, V101, V011, V111;
   // 12 edges
@@ -1777,7 +1775,7 @@ bool SMESH_Block::FindBlockShapes(const TopoDS_Shell&         theShell,
 
   if ( V000.IsNull() ) {
     // find vertex 000 - the one with smallest coordinates
-    double minVal = DBL_MAX, minX, val;
+    double minVal = DBL_MAX, minX = DBL_MAX, val;
     for ( int i = 1; i <= 8; i++ ) {
       const TopoDS_Vertex& v = TopoDS::Vertex( vfMap.FindKey( i ));
       gp_Pnt P = BRep_Tool::Pnt( v );
@@ -1798,8 +1796,11 @@ bool SMESH_Block::FindBlockShapes(const TopoDS_Shell&         theShell,
     for (  ; eIt.More(); eIt.Next() ) {
       const TopoDS_Edge& e = TopoDS::Edge( eIt.Value() );
       TopoDS_Vertex v = TopExp::FirstVertex( e );
-      if ( v.IsSame( V000 ))
+      if ( v.IsSame( V000 )) {
         v = TopExp::LastVertex( e );
+        if ( v.IsSame( V000 ))
+          return false;
+      }
       val = dir001 * gp_Vec( p000, BRep_Tool::Pnt( v )).Normalized();
       if ( val > maxVal ) {
         V001 = v;
@@ -1818,7 +1819,7 @@ bool SMESH_Block::FindBlockShapes(const TopoDS_Shell&         theShell,
     return false;
   }
   TopTools_ListIteratorOfListOfShape f001It, f000It ( f000List );
-  int i, j, iFound1, iFound2;
+  int i, j, iFound1=0, iFound2=0;
   for ( j = 0; f000It.More(); f000It.Next(), j++ )
   {
     if ( NB_FACES_BY_VERTEX == 6 && j % 2 ) continue; // each face encounters twice
@@ -2079,7 +2080,7 @@ bool SMESH_Block::LoadFace(const TopoDS_Face& theFace,
   bool isForward[4];
   vector< int > edgeIdVec;
   GetFaceEdgesIDs( theFaceID, edgeIdVec );
-  for ( int iE = 0; iE < edgeIdVec.size(); iE++ ) // loop on 4 edges
+  for ( size_t iE = 0; iE < edgeIdVec.size(); iE++ ) // loop on 4 edges
   {
     if ( edgeIdVec[ iE ] > theShapeIDMap.Extent() )
       return false;