Salome HOME
pb du addToStudy() failed
[modules/smesh.git] / src / Tools / blocFissure / gmu / insereFissureLongue_c.py
index ce6d0b25b25f347dff3fb0179142b544843af386..c8b8578d42891deb8a775a31fa46c9f8c021cbaf 100644 (file)
@@ -22,7 +22,6 @@
 import logging
 import math
 
-import salome
 from salome.smesh import smeshBuilder
 import SMESH
 
@@ -36,53 +35,60 @@ from .distance2 import distance2
 def insereFissureLongue_c (pipeFondFiss, disques, rayons, demiCercles, demiCerclesPeau, generatrices, \
                            VerticesEndPipeFiss, verticesEdgePeauFiss, \
                            groupFaceFissInPipe, groupEdgeFondFiss, groupsDemiCerclesPipe, groupGenerFiss, \
-                           profondeur, rayonPipe):
+                           profondeur, rayonPipe, \
+                           nro_cas=None):
   """maillage pipe fond fissure"""
   logging.info('start')
+  logging.info("Maillage pour le cas n°%s", nro_cas)
 
   meshFondFiss = smesh.Mesh(pipeFondFiss)
-  algo2d = meshFondFiss.Quadrangle(algo=smeshBuilder.QUADRANGLE)
+  putName(meshFondFiss, "pipeFondFiss", i_pref=nro_cas)
+
   algo3d = meshFondFiss.Prism()
-  putName(algo3d.GetSubMesh(), "pipe")
-  putName(algo3d, "algo3d_pipe")
-  putName(algo2d, "algo2d_pipe")
+  putName(algo3d.GetSubMesh(), "pipe", i_pref=nro_cas)
+  putName(algo3d, "Prism", i_pref=nro_cas)
+
+  algo2d = meshFondFiss.Quadrangle(algo=smeshBuilder.QUADRANGLE)
+  putName(algo2d, "QUADRANGLE", i_pref=nro_cas)
 
-  for i, face in enumerate(disques):
+  for i_aux, face in enumerate(disques):
+    #print (i_aux)
+    # la commande suivante entraîne addToStudy() failed
     algo2d = meshFondFiss.Quadrangle(algo=smeshBuilder.RADIAL_QUAD,geom=face)
-    putName(algo2d.GetSubMesh(), "disque", i)
-    putName(algo2d, "algo2d_disque", i)
+    putName(algo2d.GetSubMesh(), "disque", i_aux, nro_cas)
+    putName(algo2d, "RADIAL_QUAD", i_aux, nro_cas)
 
-  for i, edge in enumerate(rayons):
+  for i_aux, edge in enumerate(rayons):
     algo1d = meshFondFiss.Segment(geom=edge)
     hypo1d = algo1d.NumberOfSegments(4)
-    putName(algo1d.GetSubMesh(), "rayon", i)
-    putName(algo1d, "algo1d_rayon", i)
-    putName(hypo1d, "hypo1d_rayon", i)
+    putName(algo1d.GetSubMesh(), "rayon", i_aux, nro_cas)
+    putName(algo1d, "algo1d_rayon", i_aux, nro_cas)
+    putName(hypo1d, "hypo1d_rayon", i_aux, nro_cas)
 
-  for i, edge in enumerate(demiCercles):
+  for i_aux, edge in enumerate(demiCercles):
     algo1d = meshFondFiss.Segment(geom=edge)
     hypo1d = algo1d.NumberOfSegments(6)
-    putName(algo1d.GetSubMesh(), "demiCercle", i)
-    putName(algo1d, "algo1d_demiCercle", i)
-    putName(hypo1d, "hypo1d_demiCercle", i)
+    putName(algo1d.GetSubMesh(), "demiCercle", i_aux, nro_cas)
+    putName(algo1d, "algo1d_demiCercle", i_aux, nro_cas)
+    putName(hypo1d, "hypo1d_demiCercle", i_aux, nro_cas)
 
   generSorted, minlg, maxlg = sortEdges(generatrices)
   nbSegGenLong = int(math.sqrt(3.0)*maxlg/(profondeur - rayonPipe)) # on veut 2 triangles equilateraux dans la largeur de la face
   nbSegGenBout = 6
   logging.info("min %s, max %s, nombre de segments %s, nombre de generatrices %s", minlg, maxlg, nbSegGenLong, len(generSorted))
-  for i, edge in enumerate(generSorted):
+  for i_aux, edge in enumerate(generSorted):
     algo1d = meshFondFiss.Segment(geom=edge)
-    if i < 6:
+    if i_aux < 6:
       hypo1d = algo1d.NumberOfSegments(nbSegGenBout)
     else:
       hypo1d = algo1d.NumberOfSegments(nbSegGenLong)
-    putName(algo1d.GetSubMesh(), "generatrice", i)
-    putName(algo1d, "algo1d_generatrice", i)
-    putName(hypo1d, "hypo1d_generatrice", i)
+    putName(algo1d.GetSubMesh(), "generatrice", i_aux, nro_cas)
+    putName(algo1d, "algo1d_generatrice", i_aux, nro_cas)
+    putName(hypo1d, "hypo1d_generatrice", i_aux, nro_cas)
 
   disks = list()
-  for i, face in enumerate(disques[:4]):
-    name = "disk%d"%i
+  for i_aux, face in enumerate(disques[:4]):
+    name = "disk{}".format(i_aux)
     disks.append(meshFondFiss.GroupOnGeom(face, name, SMESH.FACE))
   _ = meshFondFiss.GetMesh().UnionListOfGroups( disks, 'PEAUEXT' )
 
@@ -95,10 +101,10 @@ def insereFissureLongue_c (pipeFondFiss, disques, rayons, demiCercles, demiCercl
 
   groups_demiCercles = list()
   groupnodes_demiCercles = list()
-  for i, group in enumerate(groupsDemiCerclesPipe):
-    name = "Cercle%d"%i
+  for i_aux, group in enumerate(groupsDemiCerclesPipe):
+    name = "Cercle{}".format(i_aux)
     groups_demiCercles.append(meshFondFiss.GroupOnGeom(group, name, SMESH.EDGE))
-    name = "nCercle%d"%i
+    name = "nCercle{}".format(i_aux)
     groupnodes_demiCercles.append(meshFondFiss.GroupOnGeom(group, name, SMESH.NODE))
   group_generFiss = meshFondFiss.GroupOnGeom(groupGenerFiss, "GenFiss", SMESH.EDGE)
   groupnode_generFiss = meshFondFiss.GroupOnGeom(groupGenerFiss, "GenFiss", SMESH.NODE)
@@ -134,12 +140,12 @@ def insereFissureLongue_c (pipeFondFiss, disques, rayons, demiCercles, demiCercl
       minDist = 100000
       minCoord = None
       imin = -1
-      for i, edge in enumerate(demiCerclesPeau):
+      for i_aux, edge in enumerate(demiCerclesPeau):
         discoord = geompy.MinDistanceComponents(vertex, edge)
         if discoord[0] <minDist:
           minDist = discoord[0]
           minCoord = discoord[1:]
-          imin = i
+          imin = i_aux
       if imin >= 0 and minDist > 1.E-6:
         logging.debug("node id moved : %s distance=%s", idNode, minDist)
         meshFondFiss.MoveNode(idNode, coordMesh[0] + minCoord[0], coordMesh[1] + minCoord[1], coordMesh[2] + minCoord[2])