Commit Graph

135 Commits

Author SHA1 Message Date
eap
5f791c80a4 Optimize cleanSubMesh( SMESH_subMesh * subMesh ) a bit 2013-08-08 12:38:25 +00:00
eap
e97c496f7d 0022297: BR_new_bop3/Occdev_3f4689a163 => Faces are missing after an extrusion
Fix ConvertToQuadratic(): do not convert twice quadratic volumes
2013-08-08 12:36:02 +00:00
eap
9a4f5e4852 progress bar: fix for viscous layers 2013-08-05 12:30:05 +00:00
prascle
ef59152514 PR : merge from V7_2_1p1
memory leaks, bug in import 1D for cracks
M src/SMDS/SMDS_UnstructuredGrid.cxx
M src/SMESH/SMESH_MeshEditor.cxx
M src/SMESH/SMESH_MesherHelper.cxx
M src/SMESHUtils/SMESH_MeshAlgos.cxx
M src/SMESHUtils/SMESH_MeshAlgos.hxx
M src/SMESHUtils/SMESH_Octree.hxx
M src/SMESHUtils/SMESH_Tree.hxx
M src/SMESH_PY/smeshstudytools.py
M src/StdMeshers/StdMeshers_Import_1D.cxx
2013-08-03 11:11:12 +00:00
eap
04fe81eb47 SALOME Forum bug: structured mesh is not strictly rectilinear with Viscous Layers.
http://www.salome-platform.org/forum/forum_10/998544058

 class SMESH_2D_Algo
 {
+  /*!
+   * \brief Method in which an algorithm generating a structured mesh
+   *        fixes positions of in-face nodes after there movement
+   *        due to insertion of viscous layers.
+   */
+  virtual bool FixInternalNodes(const SMESH_ProxyMesh& mesh,
+                                const TopoDS_Face&     face);
2013-07-31 11:21:55 +00:00
eap
09020c0206 fix a comment 2013-07-31 11:18:51 +00:00
rnc
094287b4df BUG: EDF 2655: Hexa splitting into tetra low performance
A better fix has been found by improving the getNextFree() method in ObjectPool.hxx. When there is no "hole" in the ID list we don't iterate on the _freeList to find the next free ID. We jump straight to the last occupied ID.
This fix is simpler and can benefit to other methods of SMESH_Editor like QuadTo4Tri for example.
2013-07-22 08:46:57 +00:00
rnc
3f3beb8b95 BUG: EDF 2655: Low performance of hexa to tetra splitting
The whole procedure performance was almost O(n^2) due to insertion of for example 5 elements in a mesh with a free ID at the beginning. The second element is then inserted with a O(n) complexity.
The hexas are now removed after all tetra insertions, which guarantees a O(n) complexity for the whole procedure at a limited memory cost (transient additional cost of 1/5 of total memory occupation at the end).
2013-07-19 16:01:27 +00:00
eap
e7dbe802e0 22252: EDF 2684 SMESH: Extrusion along a path with a curvilinear edge
Some decorations in ExtrusionAlongTrack()
2013-07-16 14:30:30 +00:00
eap
c96730d0aa Compute Progress bar 2013-07-09 11:59:40 +00:00
eap
42d136bcdc Compute Progress bar
+  bool DependsOn( const SMESH_subMesh* other ) const;
+  int                   _realComputeCost; // _computeCost depending on presence of needed hypotheses
2013-07-09 11:59:18 +00:00
eap
a311b5af11 Compute Progress bar
-  int& GetComputeCost() { return _computeCost; }
+  std::vector<SMESH_subMesh*>& SubMeshesToCompute() { return _smToCompute; }
2013-07-09 11:58:41 +00:00
eap
e0f019ccf9 Compute Progress bar: ignore sub-meshes that are NOT_READY to compute 2013-07-08 11:27:16 +00:00
eap
8ead976689 Compute Progress bar
SMESH_subMeshIteratorPtr getDependsOnIterator(const bool includeSelf,
-                                                const bool complexShapeFirst) const;
+                                                const bool complexShapeFirst=false) const;

+  int GetComputeCost() const;

   TopoDS_Shape getCollection(SMESH_Gen * theGen,
                              SMESH_Algo* theAlgo,
                              bool &      theSubComputed,
                              bool &      theSubFailed,
+                             int  &      theComputeCost);

+  int                   _computeCost; // how costly is to compute this sub-mesh
2013-07-03 16:12:38 +00:00
eap
ffa2f0be82 Compute Progress bar
+  double GetComputeProgress() const;
+  SMESH_Hypothesis * GetHypothesis(const int aHypID) const;
2013-07-03 16:10:31 +00:00
eap
1481fb61da - std::map < int, SMESH_Algo * >_mapAlgo;
-  std::map < int, SMESH_0D_Algo * >_map0D_Algo;
-  std::map < int, SMESH_1D_Algo * >_map1D_Algo;
-  std::map < int, SMESH_2D_Algo * >_map2D_Algo;
-  std::map < int, SMESH_3D_Algo * >_map3D_Algo;
2013-07-03 16:09:54 +00:00
eap
fad96c2870 Compute Progress bar
+  virtual double GetProgress() const;
+  double GetProgressByTic() const;
+  int& GetComputeCost() { return _computeCost; }

+  int           _computeCost;     //!< "compute cost" of shapes being Compute()d
+  int           _progressTic;     //!< counter of calls from SMESH_Mesh::GetComputeProgress()
+  double        _progress;        //!< progress of Compute() [0.,1.]
2013-07-03 16:09:28 +00:00
eap
dbf60372a6 CoTech decision: move MEDWrapper from MED to SMESH
-	$(MED_CXXFLAGS) \

+	-I$(srcdir)/../MEDWrapper/Base \
2013-06-24 10:07:19 +00:00
eap
9a93fe49f9 0022229: [CEA 829] Error "Edge multiple times in surface mesh"
Fix IsReversedSubMesh(), avoid getting uv on a faces at a singularity
point of sphere
2013-06-11 10:24:55 +00:00
eap
4fecefcc2b 0021952: Add an option to write planar meshes as 3D meshes in MED files 2013-06-05 15:13:53 +00:00
eap
973402fcd3 avoid compilation warnings in release mode 2013-06-05 09:39:43 +00:00
eap
a77a5a1a51 0022103: EDF 2550 SMESH : Allow viscous layer with 3D extrusion
= Allow viscous layers on boundary EDGEs of a 2D sub-mesh

Make const GetNodeU()
2013-06-04 14:58:08 +00:00
eap
e884e4cd7e 22222: [CEA 820] GHS3D in salome 7.2.0 ten times slower than in salome 6.6.0
Choose a compute event (COMPUTE or COMPUTE_SUBMESH) depending on an
explicit parameter aShapeOnly.

   bool Compute(::SMESH_Mesh &        aMesh,
                const TopoDS_Shape &  aShape,
+               const bool            aShapeOnly=false,
                const bool            anUpward=false,
                const ::MeshDimension aDim=::MeshDim_3D,
                TSetOfInt*            aShapesId=0);
2013-05-29 15:29:19 +00:00
eap
fec22e7699 0022108: EDF 2547 SMESH: Duplicate elements only
1)
+  void DoubleElements( const TIDSortedElemSet& theElements );

2)
+  template < class ELEM_SET >
+  SMDS_ElemIteratorPtr elemSetIterator( const ELEM_SET& elements );
2013-05-28 16:42:11 +00:00
eap
9d998b2291 0022108: EDF 2547 SMESH: Duplicate elements only
+  void DoubleElements( const TIDSortedElemSet& theElements );
2013-05-28 16:41:32 +00:00
eap
6b2c537fcd 0022216: EDF 2613 SMESH: Projection 1D with multi-dimensional algo (Netgen 1D-2D or BLSurf...)
int GetHypotheses(const TopoDS_Shape &                aSubShape,
                   const SMESH_HypoFilter&             aFilter,
                   list <const SMESHDS_Hypothesis * >& aHypList,
                   const bool                          andAncestors,
+                  list< TopoDS_Shape > *              assignedTo=0) const
2013-05-27 14:01:40 +00:00
eap
fce384ca68 Fix a typo nagate -> negate 2013-05-27 14:00:27 +00:00
eap
6a6b89f677 0022216: EDF 2613 SMESH: Projection 1D with multi-dimensional algo (Netgen 1D-2D or BLSurf...)
Fix checkConformIgnoredAlgos() to prevent warning on hiding a local
algo by a local all-dimensional algo of upper dim.
2013-05-27 13:59:56 +00:00
eap
4443257370 Make const GetAppliedHypothesis() and GetUsedHypothesis() 2013-05-27 13:56:30 +00:00
eap
10a6101340 0022172: [CEA 790] create the groups corresponding to domains
1) Reset _algo = 0 if ( event == REMOVE_ALGO || event == REMOVE_FATHER_ALGO )

2) Avoid erasing _computeError holding a WARNING is algo->Compute() returns true

-          if ( !_computeError || ( !ret && _computeError->IsOK() ) )
+          if ( !_computeError || (/* !ret && */_computeError->IsOK() ) )
             _computeError = algo->GetComputeError();

3) Fix notifyListenersOnEvent():

-      if ( !isDeletable || !_eventListeners.count( li_da.first ))
+      if ( !isDeletable || _eventListeners.count( li_da.first ))
         li_da.first->myBusySM.erase( this ); // a listener is hopefully not dead
2013-05-24 11:46:27 +00:00
eap
751d20eca2 0022106: EDF 2464 SMESH : Split quadrangles in 4 triangles
+  void QuadTo4Tri (TIDSortedElemSet & theElems);
2013-05-22 14:58:32 +00:00
eap
8506f58d10 0022106: EDF 2464 SMESH : Split quadrangles in 4 triangles
Fix position of a central node of a distorted bi-quadratic triangle

+   * \brief Return UV for the central node of a biquadratic triangle
+   */
+  static gp_XY GetCenterUV(const gp_XY& uv1,
+                           const gp_XY& uv2,
+                           const gp_XY& uv3,
+                           const gp_XY& uv12,
+                           const gp_XY& uv23,
+                           const gp_XY& uv31,
+                           bool *       isBadTria=0);
2013-05-22 14:58:06 +00:00
eap
46654775eb In GetSubMesh(), assure calling fillAncestorsMap() for each compound
(take into account that a compound can be added to SMESHDS_Mesh at
creation of group on geometry)
2013-05-20 09:11:12 +00:00
eap
96862daa25 arrange #include 2013-05-16 16:29:29 +00:00
eap
098ecf81c2 0022100: EDF 2413 SMESH: Take into account TRIA7
+  const SMDS_MeshNode* GetCentralNode(const SMDS_MeshNode* n1,
+                                      const SMDS_MeshNode* n2,
+                                      const SMDS_MeshNode* n3,
+                                      const SMDS_MeshNode* n12,
+                                      const SMDS_MeshNode* n23,
+                                      const SMDS_MeshNode* n31,
+                                      bool                 force3d);
2013-05-16 16:28:40 +00:00
eap
664ae5e033 1) 0022100: EDF 2413 SMESH: Take into account TRIA7
2) 0022098: EDF 2036 SMESH: Create groups from none conected parts of a mesh

Move SMESH_ElementSearcher to from SMESH/SMESH_MeshEditor.hxx SMESHUtils/SMESH_MeshAlgos.hxx
in order to make SMESH_ElementSearcher accessible from Controls/SMESH_Controls.cxx

-struct SMESH_NodeSearcher
-{
-struct SMESH_ElementSearcher
-{
-  SMESH_NodeSearcher* GetNodeSearcher();
-  SMESH_ElementSearcher* GetElementSearcher();
-  SMESH_ElementSearcher* GetElementSearcher( SMDS_ElemIteratorPtr elemIt );
-  static bool IsOut( const SMDS_MeshElement* element, const gp_Pnt& point, double tol );
-  static double GetDistance( const SMDS_MeshFace* face, const gp_Pnt& point );
-  static const SMDS_MeshElement* FindFaceInSet(const SMDS_MeshNode*    n1,
2013-05-16 16:27:06 +00:00
eap
68683b462f 0022100: EDF 2413 SMESH: Take into account TRIA7
+  int NbBiQuadTriangles() const throw(SALOME_Exception);
2013-05-16 16:23:11 +00:00
eap
36f9a5cb34 0022098: EDF 2036 SMESH: Create groups from none conected parts of a mesh
Move SMESH_ElementSearcher to from SMESH/SMESH_MeshEditor.hxx SMESHUtils/SMESH_MeshAlgos.hxx
in order to make SMESH_ElementSearcher accessible from Controls/SMESH_Controls.cxx

-  static bool FaceNormal(const SMDS_MeshElement* F, gp_XYZ& normal, bool normalized=true);
-  static std::vector< const SMDS_MeshNode*> GetCommonNodes(const SMDS_MeshElement* e1,
-                                                           const SMDS_MeshElement* e2);
2013-05-16 16:22:25 +00:00
eap
89682777f7 0022202: EDF SMESH: Regression in a script meshing prisms and hexaedrons
Fix notifyListenersOnEvent() for the case of removing an EventListener (attempt No.2)
2013-04-29 14:18:32 +00:00
eap
36550205e6 0022202: EDF SMESH: Regression in a script meshing prisms and hexaedrons
Fix notifyListenersOnEvent() for the case of removing an EventListener
2013-04-29 12:00:40 +00:00
eap
55e345e578 Regression of SMESH_TEST/Grids/smesh/imps7/H6
Unreachable deep idea

           bool subComputed = false, subFailed = false;
           if (!algo->OnlyUnaryInput()) {
-            if ( event == COMPUTE &&
-                 ( algo->NeedDiscreteBoundary() || algo->SupportSubmeshes() ))
+            if ( event == COMPUTE /*&&
+                 ( algo->NeedDiscreteBoundary() || algo->SupportSubmeshes() )*/)
               shape = getCollection( gen, algo, subComputed, subFailed );
             else
               subComputed = SubMeshesComputed( & subFailed );
2013-04-26 15:53:34 +00:00
eap
65c45fcb35 Regression of XSMESH_TEST/SMESHCOMMON/SMESH_TEST/Grids/smesh/bugs12/M6
Fix the ensuring stability of SMESH_MeshEditor::makeWalls().
2013-04-26 11:47:26 +00:00
eap
85cd604381 Regression of XSMESH_TEST/SMESHCOMMON/SMESH_TEST/Grids/smesh/bugs12/M6
To assure stability of makeWalls(), use maps sorted by ID, that are
declared in SMESH_TypeDefs.hxx

-typedef map<const SMDS_MeshElement*, list<const SMDS_MeshNode*> >    TElemOfNodeListMap;
-typedef map<const SMDS_MeshElement*, list<const SMDS_MeshElement*> > TElemOfElemListMap;
2013-04-24 12:59:33 +00:00
eap
b0fed15261 Regression of already fixed
0021406: EDF 1975 NETGENPLUGIN: Submesh hypothesis not taken into account

Correct the patch for
0021556: EDF 2222 SMESH: 3D mesh after projection impossible

-        smWithAlgoSupportingSubmeshes[0].push_back( shDim2smIt->second );
+        smWithAlgoSupportingSubmeshes[3].push_back( shDim2smIt->second );
2013-04-15 10:48:46 +00:00
vsr
ae86d2a1ab Merge from V6_main 12/04/2013 2013-04-12 14:40:29 +00:00
prascle
9c2ce3dffb PR: debug G. Nicolas (EDF 1967) 2013-04-05 15:19:53 +00:00
vsr
bd8f1aee7c Merge from V6_main 01/04/2013 2013-04-01 13:05:47 +00:00
vsr
31ca0b3e3b Merge from V6_main 15/03/2013 2013-03-15 14:59:29 +00:00
vsr
7aebb99e42 Merge from V6_main 06/03/2013 2013-03-06 13:57:01 +00:00
vsr
88b3dbe23b Merge from V6_main 28/02/2013 2013-02-28 15:07:35 +00:00