Salome HOME
22483: EDF 2772 SMESH: Define several 3D viscous layer hypotheses on the same Geometry
[modules/smesh.git] / src / SMESH_SWIG / smesh_algorithm.py
index 546b71dda54dda59dfbc94e444ddca3e4e3c68e0..3623b51764acc807ff104349556ca42f6a423920 100644 (file)
@@ -195,21 +195,14 @@ class Mesh_Algorithm:
         if geom is None and mesh.mesh.HasShapeToMesh():
             raise RuntimeError, "Attemp to create " + algo + " algoritm on None shape"
         self.mesh = mesh
-        name = ""
         if not geom or geom.IsSame( mesh.geom ):
             self.geom = mesh.geom
         else:
             self.geom = geom
             AssureGeomPublished( mesh, geom )
-            try:
-                name = GetName(geom)
-                pass
-            except:
-                pass
             self.subm = mesh.mesh.GetSubMesh(geom, algo.GetName())
         self.algo = algo
-        status = mesh.mesh.AddHypothesis(self.geom, self.algo)
-        TreatHypoStatus( status, algo.GetName(), name, True )
+        status = mesh.AddHypothesis(self.algo, self.geom)
         return
 
     def CompareHyp (self, hyp, args):
@@ -221,7 +214,7 @@ class Mesh_Algorithm:
 
     ## Private method
     def Hypothesis (self, hyp, args=[], so="libStdMeshersEngine.so",
-                    UseExisting=0, CompareMethod=""):
+                    UseExisting=0, CompareMethod="", toAdd=True):
         from salome.smesh.smeshBuilder import TreatHypoStatus, GetName
         hypo = None
         if UseExisting:
@@ -250,8 +243,9 @@ class Mesh_Algorithm:
         geomName=""
         if self.geom:
             geomName = GetName(self.geom)
-        status = self.mesh.mesh.AddHypothesis(self.geom, hypo)
-        TreatHypoStatus( status, GetName(hypo), geomName, 0 )
+        if toAdd:
+            status = self.mesh.mesh.AddHypothesis(self.geom, hypo)
+            TreatHypoStatus( status, GetName(hypo), geomName, 0, self.mesh )
         return hypo
 
     ## Returns entry of the shape to mesh in the study
@@ -282,11 +276,13 @@ class Mesh_Algorithm:
         if faces and isinstance( faces[0], geomBuilder.GEOM._objref_GEOM_Object ):
             faces = [ self.mesh.geompyD.GetSubShapeID(self.mesh.geom, f) for f in faces ]
         hyp = self.Hypothesis("ViscousLayers",
-                              [thickness, numberOfLayers, stretchFactor, faces])
+                              [thickness, numberOfLayers, stretchFactor, faces, isFacesToIgnore],
+                              toAdd=False)
         hyp.SetTotalThickness(thickness)
         hyp.SetNumberLayers(numberOfLayers)
         hyp.SetStretchFactor(stretchFactor)
         hyp.SetFaces(faces, isFacesToIgnore)
+        self.mesh.AddHypothesis( hyp, self.geom )
         return hyp
 
     ## Defines "ViscousLayers2D" hypothesis to give parameters of layers of quadrilateral
@@ -310,12 +306,13 @@ class Mesh_Algorithm:
         if edges and isinstance( edges[0], geomBuilder.GEOM._objref_GEOM_Object ):
             edges = [ self.mesh.geompyD.GetSubShapeID(self.mesh.geom, f) for f in edges ]
         hyp = self.Hypothesis("ViscousLayers2D",
-                              [thickness, numberOfLayers, stretchFactor,
-                               edges, isEdgesToIgnore])
+                              [thickness, numberOfLayers, stretchFactor, edges, isEdgesToIgnore],
+                              toAdd=False)
         hyp.SetTotalThickness(thickness)
         hyp.SetNumberLayers(numberOfLayers)
         hyp.SetStretchFactor(stretchFactor)
         hyp.SetEdges(edges, isEdgesToIgnore)
+        self.mesh.AddHypothesis( hyp, self.geom )
         return hyp
 
     ## Transform a list of either edges or tuples (edge, 1st_vertex_of_edge)