X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FTools%2FblocFissure%2Fgmu%2FinsereFissureElliptique.py;h=bf7bef0d246f237b26498797eca4d7359bfa6ced;hp=6b7a759131f0da12c2cf30880c69fa219a1b0139;hb=HEAD;hpb=591a1c9862203ee0d8358b33e2fa2c14459f185b diff --git a/src/Tools/blocFissure/gmu/insereFissureElliptique.py b/src/Tools/blocFissure/gmu/insereFissureElliptique.py index 6b7a75913..8ec19886a 100644 --- a/src/Tools/blocFissure/gmu/insereFissureElliptique.py +++ b/src/Tools/blocFissure/gmu/insereFissureElliptique.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2014-2020 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 @@ -22,14 +22,8 @@ import os import logging + import salome -from .geomsmesh import geompy -from .geomsmesh import geomPublish -from .geomsmesh import geomPublishInFather -from . import initLog -from .geomsmesh import smesh -import SMESH -import math from .partitionBlocDefaut import partitionBlocDefaut from .facesVolumesToriques import facesVolumesToriques @@ -44,23 +38,18 @@ 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): - """ - TODO: a completer - """ + """procedure complete fissure elliptique""" logging.info('start') - geometrieSaine = geometriesSaines[0] + #geometrieSaine = geometriesSaines[0] maillageSain = maillagesSains[0] isHexa = maillagesSains[1] - shapeDefaut = shapesFissure[0] - tailleDefaut = shapesFissure[2] - pipe0 = shapesFissure[4] + #shapeDefaut = shapesFissure[0] + #tailleDefaut = shapesFissure[2] + #pipe0 = shapesFissure[4] gener1 = shapesFissure[5] pipe1 = shapesFissure[6] facefis1 = shapesFissure[7] @@ -68,12 +57,12 @@ def insereFissureElliptique(geometriesSaines, maillagesSains, \ ellipsoide1 = shapesFissure[9] - demiGrandAxe = shapeFissureParams['demiGrandAxe'] - demiPetitAxe = shapeFissureParams['demiPetitAxe'] - orientation = shapeFissureParams['orientation'] + #demiGrandAxe = shapeFissureParams['demiGrandAxe'] + #demiPetitAxe = shapeFissureParams['demiPetitAxe'] + #orientation = shapeFissureParams['orientation'] nomRep = maillageFissureParams['nomRep'] - nomFicSain = maillageFissureParams['nomFicSain'] + #nomFicSain = maillageFissureParams['nomFicSain'] nomFicFissure = maillageFissureParams['nomFicFissure'] nbsegExt = maillageFissureParams['nbsegExt'] # 5 @@ -84,134 +73,140 @@ def insereFissureElliptique(geometriesSaines, maillagesSains, \ nbsegFis = maillageFissureParams['nbsegFis'] # 20 lensegEllipsoide = maillageFissureParams['lensegEllipso'] # 1.0 - fichierMaillageSain = os.path.join(nomRep, '{}.med'.format(nomFicSain)) + #fichierMaillageSain = os.path.join(nomRep, '{}.med'.format(nomFicSain)) fichierMaillageFissure = os.path.join(nomRep, '{}.med'.format(nomFicFissure)) facesDefaut = elementsDefaut[0] - centreDefaut = elementsDefaut[1] - normalDefaut = elementsDefaut[2] + #centreDefaut = elementsDefaut[1] + #normalDefaut = elementsDefaut[2] extrusionDefaut = elementsDefaut[3] dmoyen = elementsDefaut[4] - bordsPartages = elementsDefaut[5] - fillconts = elementsDefaut[6] - idFilToCont = elementsDefaut[7] - maillageSain = elementsDefaut[8] + #bordsPartages = elementsDefaut[5] + #fillconts = elementsDefaut[6] + #idFilToCont = elementsDefaut[7] + #maillageSain = elementsDefaut[8] internalBoundary = elementsDefaut[9] zoneDefaut = elementsDefaut[10] zoneDefaut_skin = elementsDefaut[11] 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, rayonTore) + ## --- 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, blocp, 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, volumeTore1, volumeTore2] = 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) - [genext, 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) - [facefissintore, facefissoutore, edgeint, 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) - [blocFaceFiss, blocFaceTore1, blocFaceTore2] = \ - 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, normfiss = 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 - [bloc1, 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()