Salome HOME
[bos #40653][CEA] New mesh import export formats with meshio.
[modules/smesh.git] / src / Tools / blocFissure / gmu / insereFissureElliptique.py
index 3f1a60e07221cd2c8ffa683f8839b9d3f9968c66..8ec19886a3a6b19d981122afff2e33b4f78eb788 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021  EDF R&D
+# Copyright (C) 2014-2024  EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -24,7 +24,6 @@ import os
 import logging
 
 import salome
-import SMESH
 
 from .partitionBlocDefaut import partitionBlocDefaut
 from .facesVolumesToriques import facesVolumesToriques
@@ -39,9 +38,6 @@ from .enleveDefaut import enleveDefaut
 from .regroupeSainEtDefaut import RegroupeSainEtDefaut
 from .putName import putName
 
-# -----------------------------------------------------------------------------
-# --- procedure complete fissure elliptique
-
 def insereFissureElliptique(geometriesSaines, maillagesSains, \
                             shapesFissure, shapeFissureParams, \
                             maillageFissureParams, elementsDefaut, step=-1):
@@ -95,116 +91,122 @@ def insereFissureElliptique(geometriesSaines, maillagesSains, \
   zoneDefaut_internalFaces = elementsDefaut[12]
   zoneDefaut_internalEdges = elementsDefaut[13]
 
-  ## --- ellipse incomplete : generatrice
-  #if step == 5:
-    #return None
+  maillageComplet = None
+
+  while True:
+
+    ## --- ellipse incomplete : generatrice
+    #if step == 5:
+      #break
+
+    #allonge = demiGrandAxe/demiPetitAxe
+    #rayonTore = demiPetitAxe/5.0
+    #generatrice, FaceGenFiss, Pipe_1, FaceFissure, Plane_1, Pipe1Part = self.toreFissure(demiPetitAxe, allonge, rayonTore)
+    #ellipsoide = self.ellipsoideDefaut(demiPetitAxe, allonge)
 
-  #allonge = demiGrandAxe/demiPetitAxe
-  #rayonTore = demiPetitAxe/5.0
-  #generatrice, FaceGenFiss, Pipe_1, FaceFissure, Plane_1, Pipe1Part = self.toreFissure(demiPetitAxe, allonge, rayonTore)
-  #ellipsoide = self.ellipsoideDefaut(demiPetitAxe, allonge)
+    ## --- positionnement sur le bloc defaut de generatrice, tore et plan fissure
+    #if step == 6:
+      #break
 
-  ## --- positionnement sur le bloc defaut de generatrice, tore et plan fissure
-  #if step == 6:
-    #return None
+    #pipe0 = self.rotTrans(Pipe_1, orientation, centreDefaut, normalDefaut)
+    #gener1 = self.rotTrans(generatrice, orientation, centreDefaut, normalDefaut)
+    #pipe1 = self.rotTrans(Pipe1Part, orientation, centreDefaut, normalDefaut)
+    #facefis1 = self.rotTrans(FaceFissure, orientation, centreDefaut, normalDefaut)
+    #plane1 = self.rotTrans(Plane_1, orientation, centreDefaut, normalDefaut)
+    #ellipsoide1 = self.rotTrans(ellipsoide, orientation, centreDefaut, normalDefaut)
 
-  #pipe0 = self.rotTrans(Pipe_1, orientation, centreDefaut, normalDefaut)
-  #gener1 = self.rotTrans(generatrice, orientation, centreDefaut, normalDefaut)
-  #pipe1 = self.rotTrans(Pipe1Part, orientation, centreDefaut, normalDefaut)
-  #facefis1 = self.rotTrans(FaceFissure, orientation, centreDefaut, normalDefaut)
-  #plane1 = self.rotTrans(Plane_1, orientation, centreDefaut, normalDefaut)
-  #ellipsoide1 = self.rotTrans(ellipsoide, orientation, centreDefaut, normalDefaut)
+    #geomPublish(initLog.debug,  pipe0, 'pipe0' )
+    #geomPublish(initLog.debug,  gener1, 'gener1' )
+    #geomPublish(initLog.debug,  pipe1, 'pipe1' )
+    #geomPublish(initLog.debug,  facefis1, 'facefis1' )
+    #geomPublish(initLog.debug,  plane1, 'plane1' )
+    #geomPublish(initLog.debug,  ellipsoide1, 'ellipsoide1' )
 
-  #geomPublish(initLog.debug,  pipe0, 'pipe0' )
-  #geomPublish(initLog.debug,  gener1, 'gener1' )
-  #geomPublish(initLog.debug,  pipe1, 'pipe1' )
-  #geomPublish(initLog.debug,  facefis1, 'facefis1' )
-  #geomPublish(initLog.debug,  plane1, 'plane1' )
-  #geomPublish(initLog.debug,  ellipsoide1, 'ellipsoide1' )
+    # --- partition du bloc défaut par génératrice, tore et plan fissure
+    if step == 7:
+      break
 
-  # --- partition du bloc défaut par génératrice, tore et plan fissure
-  if step == 7:
-    return None
+    [ blocPartition, _, tore, \
+      faceFissure, facesExternes, facesExtBloc, facesExtElli,
+      aretesInternes, ellipsoidep, sharedFaces, sharedEdges, edgesBords] = \
+      partitionBlocDefaut(extrusionDefaut, facesDefaut, gener1, pipe1, facefis1, ellipsoide1)
+    if not isHexa:
+      edgesBords = None # maillage sain hexa ==> filling, et maillage edges Bords imposés du maillage sain
 
-  [ blocPartition, _, tore, \
-    faceFissure, facesExternes, facesExtBloc, facesExtElli,
-    aretesInternes, ellipsoidep, sharedFaces, sharedEdges, edgesBords] = \
-    partitionBlocDefaut(extrusionDefaut, facesDefaut, gener1, pipe1, facefis1, ellipsoide1)
-  if not isHexa:
-    edgesBords = None # maillage sain hexa ==> filling, et maillage edges Bords imposés du maillage sain
+    # --- TORE
+    # --- faces toriques du tore
+    if step == 8:
+      break
 
-  # --- TORE
-  # --- faces toriques du tore
-  if step == 8:
-    return None
+    [facetore1, facetore2, _, _] = facesVolumesToriques(tore, plane1, facesDefaut)
 
-  [facetore1, facetore2, _, _] = facesVolumesToriques(tore, plane1, facesDefaut)
+    # --- faces 1/2 circulaires et edges dans le plan de fissure
+    if step == 9:
+      break
 
-  # --- faces 1/2 circulaires et edges dans le plan de fissure
-  if step == 9:
-    return None
+    [faces, centres, edges, reverses] = facesCirculaires(extrusionDefaut, tore)
 
-  [faces, centres, edges, reverses] = facesCirculaires(extrusionDefaut, tore)
+    # --- recherche et classement des edges du tore par propagate
+    if step == 10:
+      break
 
-  # --- recherche et classement des edges du tore par propagate
-  if step == 10:
-    return None
+    [diams, circles, geners] = propagateTore(tore)
 
-  [diams, circles, geners] = propagateTore(tore)
+    # --- tri par longueur des 3 génératrices
+    if step == 11:
+      break
 
-  # --- tri par longueur des 3 génératrices
-  if step == 11:
-    return None
+    [_, genint, gencnt] = sortGeneratrices(tore, geners)
 
-  [_, genint, gencnt] = sortGeneratrices(tore, geners)
+    # --- faces fissure dans et hors tore, et edges face hors tore
+    if step == 12:
+      break
 
-  # --- faces fissure dans et hors tore, et edges face hors tore
-  if step == 12:
-    return None
+    [_, facefissoutore, _, edgeext, reverext] = \
+      facesFissure(ellipsoidep, faceFissure, extrusionDefaut, genint)
 
-  [_, facefissoutore, _, edgeext, reverext] = \
-    facesFissure(ellipsoidep, faceFissure, extrusionDefaut, genint)
+    # --- identification des faces tore et fissure dans le solide hors tore
+    if step == 13:
+      break
 
-  # --- identification des faces tore et fissure dans le solide hors tore
-  if step == 13:
-    return None
+    [_, _, _] = \
+      facesToreInBloc(ellipsoidep, facefissoutore, facetore1, facetore2)
 
-  [_, _, _] = \
-    facesToreInBloc(ellipsoidep, facefissoutore, facetore1, facetore2)
+    # --- identification des shapes modifiées par la duplication des noeuds de la face fissure (d'un coté de la face)
 
-  # --- identification des shapes modifiées par la duplication des noeuds de la face fissure (d'un coté de la face)
+    #shapesAModifier = self.shapesSurFissure(blocPartition, plane1 faceFissure, gencnt)
+    if step == 14:
+      break
 
-  #shapesAModifier = self.shapesSurFissure(blocPartition, plane1 faceFissure, gencnt)
-  if step == 14:
-    return None
+    extrusionFaceFissure, _ = shapeSurFissure(plane1)
 
-  extrusionFaceFissure, _ = shapeSurFissure(plane1)
+    # --- maillage du bloc partitionne
 
-  # --- maillage du bloc partitionne
+    if step == 15:
+      break
 
-  if step == 15:
-    return None
+    [_, blocComplet] = \
+      meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circles, faces, \
+                  gencnt, facefissoutore, edgeext, facesExternes, facesExtBloc, facesExtElli, \
+                  aretesInternes, internalBoundary, ellipsoidep, sharedFaces, sharedEdges, edgesBords, \
+                  nbsegExt, nbsegGen, nbsegRad, scaleRad, reverses, reverext, nbsegCercle, \
+                  nbsegFis, dmoyen, lensegEllipsoide)
+    if step == 16:
+      break
 
-  [_, blocComplet] = \
-    meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circles, faces, \
-                 gencnt, facefissoutore, edgeext, facesExternes, facesExtBloc, facesExtElli, \
-                 aretesInternes, internalBoundary, ellipsoidep, sharedFaces, sharedEdges, edgesBords, \
-                 nbsegExt, nbsegGen, nbsegRad, scaleRad, reverses, reverext, nbsegCercle,
-                 nbsegFis, dmoyen, lensegEllipsoide) \
+    maillageSain = enleveDefaut(maillageSain, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges)
+    if step == 17:
+      break
 
-  if step == 16:
-    return None
-  maillageSain = enleveDefaut(maillageSain, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges)
+    maillageComplet = RegroupeSainEtDefaut(maillageSain, blocComplet, extrusionFaceFissure, faceFissure, 'VOLUMES')
+    if step == 18:
+      break
 
-  if step == 17:
-    return None
-  maillageComplet = RegroupeSainEtDefaut(maillageSain, blocComplet, extrusionFaceFissure, faceFissure, 'VOLUMES')
+    maillageComplet.ExportMED(fichierMaillageFissure)
+    putName(maillageComplet, nomFicFissure)
+    logging.info("fichier maillage fissure : %s", fichierMaillageFissure)
 
-  if step == 18:
-    return None
-  maillageComplet.ExportMED(fichierMaillageFissure)
-  putName(maillageComplet, nomFicFissure)
-  logging.info("fichier maillage fissure : %s", fichierMaillageFissure)
+    break
 
   if salome.sg.hasDesktop():
     salome.sg.updateObjBrowser()