From dc3c466f6bc0c6c867eb7dee7e60de3fd7d3dbd8 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Mon, 18 Jan 2021 17:36:30 +0100 Subject: [PATCH 01/57] Utilisation d'une CAO sous xao avec des groupes --- src/Tools/blocFissure/gmu/casStandard.py | 26 +++-- .../blocFissure/ihm/fissureGenerale_plugin.py | 102 ++++++++++-------- 2 files changed, 77 insertions(+), 51 deletions(-) diff --git a/src/Tools/blocFissure/gmu/casStandard.py b/src/Tools/blocFissure/gmu/casStandard.py index 7f2994490..45c8a30bf 100644 --- a/src/Tools/blocFissure/gmu/casStandard.py +++ b/src/Tools/blocFissure/gmu/casStandard.py @@ -66,7 +66,7 @@ class casStandard(fissureGenerique): if 'reptrav' in self.dicoParams: self.reptrav = self.dicoParams['reptrav'] else: - self.reptrav = '.' + self.reptrav = '.' self.numeroCas = numeroCas if self.numeroCas != 0: self.nomCas = self.nomProbleme +"_%d"%(self.numeroCas) @@ -84,7 +84,7 @@ class casStandard(fissureGenerique): self.dicoParams['aretesVives'] = 0 if self.numeroCas == 0: # valeur par défaut : exécution immédiate, sinon execution différée dans le cas d'une liste de problèmes self.executeProbleme(step) - + # --------------------------------------------------------------------------- def genereMaillageSain(self, geometriesSaines, meshParams): logging.info("genereMaillageSain %s", self.nomCas) @@ -122,9 +122,22 @@ class casStandard(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP( self.dicoParams['brepFaceFissure']) + cao_file = self.dicoParams['brepFaceFissure'] + suffix = os.path.basename(cao_file).split(".")[-1] + if ( suffix.upper() == "BREP" ): + shellFiss = geompy.ImportBREP(cao_file) + elif ( suffix.upper() == "XAO" ): + (_, shellFiss, _, l_groups, _) = geompy.ImportXAO(cao_file) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) - geompy.UnionIDs(fondFiss, self.dicoParams['edgeFissIds'] ) + if isinstance(self.dicoParams['edgeFissIds'][0],int): + geompy.UnionIDs(fondFiss, self.dicoParams['edgeFissIds'] ) + else: + l_groups = geompy.GetGroups(shellFiss) + l_aux = list() + for group in l_groups: + if ( group.GetName() in self.dicoParams['edgeFissIds'] ): + l_aux.append(group) + geompy.UnionList(fondFiss, l_aux ) geomPublish(initLog.debug, shellFiss, 'shellFiss' ) geomPublishInFather(initLog.debug, shellFiss, fondFiss, 'fondFiss' ) @@ -153,8 +166,8 @@ class casStandard(fissureGenerique): def genereMaillageFissure(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step): - maillageFissure = construitFissureGenerale(maillagesSains, - shapesFissure, shapeFissureParams, + maillageFissure = construitFissureGenerale(maillagesSains, \ + shapesFissure, shapeFissureParams, \ maillageFissureParams, elementsDefaut, step) return maillageFissure @@ -171,4 +184,3 @@ class casStandard(fissureGenerique): Entity_Node = 0, Entity_Quad_Tetra = 0, Entity_Quad_Quadrangle = 0) - diff --git a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py index 973efdf1e..9dafcdf83 100644 --- a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py +++ b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py @@ -75,21 +75,21 @@ def fissureGeneraleDlg(context): self.ui.bb_OkCancel.accepted.connect(self.execute) def initDefaut(self): - self.defaut = dict( - nomCas = 'angleCube', - maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/CubeAngle.med'), - brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep"), - edgeFissIds = [4], - lgInfluence = 20, - meshBrep = (5,10), - rayonPipe = 5, - lenSegPipe = 2.5, - nbSegRad = 5, - nbSegCercle = 32, - areteFaceFissure = 10, - areteVives = 0, - reptrav = '.', - nomres = 'maillage_avec_fissure', + self.defaut = dict( \ + nomCas = 'angleCube', \ + maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/CubeAngle.med'), \ + brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep"), \ + edgeFissIds = [4], \ + lgInfluence = 20, \ + meshBrep = (5,10), \ + rayonPipe = 5, \ + lenSegPipe = 2.5, \ + nbSegRad = 5, \ + nbSegCercle = 32, \ + areteFaceFissure = 10, \ + areteVives = 0, \ + reptrav = '.', \ + nomres = 'maillage_avec_fissure', \ verbosite = 0) @@ -122,22 +122,37 @@ def fissureGeneraleDlg(context): incomplet = True else: self.ui.le_maillage.setPalette(self.blackPalette) - if not os.path.lexists(dico['brepFaceFissure']): + cao_file = dico['brepFaceFissure'] + if not os.path.lexists(cao_file): self.ui.le_facefiss.setPalette(self.redPalette) incomplet = True else: - self.ui.le_facefiss.setPalette(self.blackPalette) - edgeFissIdsOK=True - try: - l = dico['edgeFissIds'] - for i in l: - if not isinstance(i, int): - print("not isinstance(i, int)") + suffix = os.path.basename(cao_file).split(".")[-1] + if ( suffix.upper() not in ("BREP","XAO") ): + print ("Suffixe inconnu pour le fichier {}".format(cao_file)) + self.ui.le_facefiss.setPalette(self.redPalette) + incomplet = True + else: + self.ui.le_facefiss.setPalette(self.blackPalette) + if dico['edgeFissIds']: + edgeFissIdsOK=True + param_0 = dico['edgeFissIds'][0] + type_param_id = type(param_0) + for param in dico['edgeFissIds'][1:]: + if not isinstance(param,type_param_id): + print ("La donnée {} n'est pas du même type que la première de la liste : {}.".format(param,type(param))) incomplet = True edgeFissIdsOK=False - break - except: - print("except eval") + if edgeFissIdsOK: + if isinstance(param_0, int): + pass + elif isinstance(param_0, str): + pass + else: + print("Il faut une liste d'IDs d'arêtes ou une liste de noms de groupes d'arêtes.") + incomplet = True + edgeFissIdsOK=False + else: incomplet = True edgeFissIdsOK=False if edgeFissIdsOK: @@ -181,7 +196,7 @@ def fissureGeneraleDlg(context): def writeDefault(self, dico): filedef = self.fileDefault() with open(filedef, 'w') as f: - f.write(str(dico)) + f.write(str(dico)) def genereExemples(self): maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/CubeAngle.med') @@ -199,7 +214,7 @@ def fissureGeneraleDlg(context): filedef = self.fileDefault() if os.path.exists(filedef): with open(filedef, 'r') as f: - txt = f.read() + txt = f.read() dico = eval(txt) print(dico) self.initDialog(dico) @@ -306,21 +321,21 @@ def fissureGeneraleDlg(context): self.ui.le_nomres.setText(nomres) def creeDico(self): - dico = dict( - maillageSain = str(self.ui.le_maillage.text()), - brepFaceFissure = str(self.ui.le_facefiss.text()), - edgeFissIds = eval(str(self.ui.le_fondfiss.text())), - lgInfluence = self.ui.dsb_influence.value(), - meshBrep = [self.ui.dsb_meshBrepMin.value(),self.ui.dsb_meshBrepMax.value()], - rayonPipe = self.ui.dsb_rayonPipe.value(), - lenSegPipe = self.ui.dsb_lenSegPipe.value(), - nbSegRad = self.ui.sb_couronnes.value(), - nbSegCercle = self.ui.sb_secteurs.value(), - areteFaceFissure = self.ui.dsb_areteFaceFissure.value(), - aretesVives = self.ui.dsb_aretesVives.value(), - reptrav = str(self.ui.le_reptrav.text()), - nomres = str(self.ui.le_nomres.text()), - verbosite = self.ui.cb_log.currentIndex() + dico = dict( \ + maillageSain = str(self.ui.le_maillage.text()), \ + brepFaceFissure = str(self.ui.le_facefiss.text()), \ + edgeFissIds = eval(str(self.ui.le_fondfiss.text())), \ + lgInfluence = self.ui.dsb_influence.value(), \ + meshBrep = [self.ui.dsb_meshBrepMin.value(),self.ui.dsb_meshBrepMax.value()], \ + rayonPipe = self.ui.dsb_rayonPipe.value(), \ + lenSegPipe = self.ui.dsb_lenSegPipe.value(), \ + nbSegRad = self.ui.sb_couronnes.value(), \ + nbSegCercle = self.ui.sb_secteurs.value(), \ + areteFaceFissure = self.ui.dsb_areteFaceFissure.value(), \ + aretesVives = self.ui.dsb_aretesVives.value(), \ + reptrav = str(self.ui.le_reptrav.text()), \ + nomres = str(self.ui.le_nomres.text()), \ + verbosite = self.ui.cb_log.currentIndex() \ ) print(dico) return dico @@ -384,4 +399,3 @@ def fissureGeneraleDlg(context): else: print("dialog rejected, exit") pass - From 7a9c58ff8731a44b1baaf9f4448e93236af2369f Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Mon, 18 Jan 2021 18:02:50 +0100 Subject: [PATCH 02/57] =?UTF-8?q?erreur=20dans=20la=20valeur=20par=20d?= =?UTF-8?q?=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/ihm/fissureGenerale_plugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py index 9dafcdf83..2e20dd2ed 100644 --- a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py +++ b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py @@ -79,7 +79,7 @@ def fissureGeneraleDlg(context): nomCas = 'angleCube', \ maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/CubeAngle.med'), \ brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep"), \ - edgeFissIds = [4], \ + edgeFissIds = [3], \ lgInfluence = 20, \ meshBrep = (5,10), \ rayonPipe = 5, \ From faac17b7643460cd02c5b9612fc4e37d2601c616 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 20 Jan 2021 15:49:50 +0100 Subject: [PATCH 03/57] =?UTF-8?q?pr=C3=A9cision?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/doc/testcases.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tools/blocFissure/doc/testcases.rst b/src/Tools/blocFissure/doc/testcases.rst index f468d6696..9c56b9d8d 100644 --- a/src/Tools/blocFissure/doc/testcases.rst +++ b/src/Tools/blocFissure/doc/testcases.rst @@ -146,7 +146,7 @@ There is no need to generate them again. 2) **To execute only selected test cases**: -modify the file ``execution_Cas.py`` and change:: +modify the file ``CasTests/execution_Cas.py`` and change:: runall = False. #old : True From 53443734745aa6d3453a6db166d5258ae6842920 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 20 Jan 2021 17:17:56 +0100 Subject: [PATCH 04/57] =?UTF-8?q?Mise=20=C3=A0=20jour=20des=20r=C3=A9f?= =?UTF-8?q?=C3=A9rences?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/CasTests/cubeAngle.py | 18 ++++++++++-------- src/Tools/blocFissure/CasTests/cubeAngle2.py | 18 ++++++++++-------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/cubeAngle.py b/src/Tools/blocFissure/CasTests/cubeAngle.py index dd2559d16..9fb109722 100644 --- a/src/Tools/blocFissure/CasTests/cubeAngle.py +++ b/src/Tools/blocFissure/CasTests/cubeAngle.py @@ -110,12 +110,14 @@ class cubeAngle(fissureGenerique): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 204, - Entity_Quad_Triangle = 336, - Entity_Quad_Edge = 278, - Entity_Quad_Penta = 96, - Entity_Quad_Hexa = 3651, - Entity_Node = 20490, - Entity_Quad_Tetra = 1877, - Entity_Quad_Quadrangle = 1702) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 1630, \ + Entity_Quad_Hexa = 3523, \ + Entity_Node = 18874, \ + Entity_Quad_Edge = 261, \ + Entity_Quad_Triangle = 190, \ + Entity_Quad_Tetra = 1322, \ + Entity_Quad_Pyramid = 172, \ + Entity_Quad_Penta = 64 \ + ) diff --git a/src/Tools/blocFissure/CasTests/cubeAngle2.py b/src/Tools/blocFissure/CasTests/cubeAngle2.py index 1e65d9de4..a3d526980 100644 --- a/src/Tools/blocFissure/CasTests/cubeAngle2.py +++ b/src/Tools/blocFissure/CasTests/cubeAngle2.py @@ -49,12 +49,14 @@ class cubeAngle2(cubeAngle): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 748, - Entity_Quad_Triangle = 1228, - Entity_Quad_Edge = 351, - Entity_Quad_Penta = 640, - Entity_Quad_Hexa = 5827, - Entity_Node = 42865, - Entity_Quad_Tetra = 9216, - Entity_Quad_Quadrangle = 2518) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 2350, \ + Entity_Quad_Hexa = 5315, \ + Entity_Node = 38196, \ + Entity_Quad_Edge = 345, \ + Entity_Quad_Triangle = 1214, \ + Entity_Quad_Tetra = 7772, \ + Entity_Quad_Pyramid = 620, \ + Entity_Quad_Penta = 512 + ) From bc7bb7e1993edce7216bec1edf60304db387bab6 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 20 Jan 2021 19:15:58 +0100 Subject: [PATCH 05/57] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20r=C3=A9f?= =?UTF-8?q?=C3=A9rences?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/CasTests/cubeAngle.py | 2 +- src/Tools/blocFissure/CasTests/cubeAngle2.py | 2 +- .../blocFissure/CasTests/cubeTransverse.py | 18 ++++++++++-------- src/Tools/blocFissure/CasTests/cylindre.py | 18 ++++++++++-------- src/Tools/blocFissure/CasTests/ellipse_1.py | 18 ++++++++++-------- src/Tools/blocFissure/CasTests/ellipse_2.py | 18 ++++++++++-------- .../blocFissure/CasTests/eprouvetteCourbe.py | 18 ++++++++++-------- .../blocFissure/CasTests/eprouvetteDroite.py | 18 ++++++++++-------- .../blocFissure/CasTests/eprouvetteDroite_2.py | 18 ++++++++++-------- src/Tools/blocFissure/CasTests/faceGauche.py | 18 ++++++++++-------- src/Tools/blocFissure/CasTests/faceGauche_2.py | 6 ++++-- .../blocFissure/CasTests/fissure_Coude.py | 18 ++++++++++-------- 12 files changed, 96 insertions(+), 76 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/cubeAngle.py b/src/Tools/blocFissure/CasTests/cubeAngle.py index 9fb109722..eb7b73222 100644 --- a/src/Tools/blocFissure/CasTests/cubeAngle.py +++ b/src/Tools/blocFissure/CasTests/cubeAngle.py @@ -119,5 +119,5 @@ class cubeAngle(fissureGenerique): Entity_Quad_Tetra = 1322, \ Entity_Quad_Pyramid = 172, \ Entity_Quad_Penta = 64 \ - ) + ) diff --git a/src/Tools/blocFissure/CasTests/cubeAngle2.py b/src/Tools/blocFissure/CasTests/cubeAngle2.py index a3d526980..3f379333e 100644 --- a/src/Tools/blocFissure/CasTests/cubeAngle2.py +++ b/src/Tools/blocFissure/CasTests/cubeAngle2.py @@ -57,6 +57,6 @@ class cubeAngle2(cubeAngle): Entity_Quad_Triangle = 1214, \ Entity_Quad_Tetra = 7772, \ Entity_Quad_Pyramid = 620, \ - Entity_Quad_Penta = 512 + Entity_Quad_Penta = 512 \ ) diff --git a/src/Tools/blocFissure/CasTests/cubeTransverse.py b/src/Tools/blocFissure/CasTests/cubeTransverse.py index 268cc505f..c3b45860d 100644 --- a/src/Tools/blocFissure/CasTests/cubeTransverse.py +++ b/src/Tools/blocFissure/CasTests/cubeTransverse.py @@ -35,12 +35,14 @@ dicoParams = dict(nomCas = 'cubeTransverse', # --------------------------------------------------------------------------- -referencesMaillageFissure = dict(Entity_Quad_Pyramid = 0, - Entity_Quad_Triangle = 0, - Entity_Quad_Edge = 0, - Entity_Quad_Penta = 0, - Entity_Quad_Hexa = 0, - Entity_Node = 0, - Entity_Quad_Tetra = 0, - Entity_Quad_Quadrangle = 0) +referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 2900, \ + Entity_Quad_Hexa = 7000, \ + Entity_Node = 58430, \ + Entity_Quad_Edge = 390, \ + Entity_Quad_Triangle = 1228, \ + Entity_Quad_Tetra = 17567, \ + Entity_Quad_Pyramid = 780, \ + Entity_Quad_Penta = 200 \ + ) diff --git a/src/Tools/blocFissure/CasTests/cylindre.py b/src/Tools/blocFissure/CasTests/cylindre.py index 90b45fdda..fea83e8fa 100644 --- a/src/Tools/blocFissure/CasTests/cylindre.py +++ b/src/Tools/blocFissure/CasTests/cylindre.py @@ -114,12 +114,14 @@ class cylindre(fissureGenerique): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 1270, - Entity_Quad_Triangle = 1260, - Entity_Quad_Edge = 758, - Entity_Quad_Penta = 496, - Entity_Quad_Hexa = 18814, - Entity_Node = 113313, - Entity_Quad_Tetra = 20469, - Entity_Quad_Quadrangle = 7280) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 6920, \ + Entity_Quad_Hexa = 18174, \ + Entity_Node = 104349, \ + Entity_Quad_Edge = 718, \ + Entity_Quad_Triangle = 952, \ + Entity_Quad_Tetra = 16691, \ + Entity_Quad_Pyramid = 1110, \ + Entity_Quad_Penta = 336 \ + ) diff --git a/src/Tools/blocFissure/CasTests/ellipse_1.py b/src/Tools/blocFissure/CasTests/ellipse_1.py index 94e8f0bd3..26465ab71 100644 --- a/src/Tools/blocFissure/CasTests/ellipse_1.py +++ b/src/Tools/blocFissure/CasTests/ellipse_1.py @@ -118,12 +118,14 @@ class ellipse_1(fissureGenerique): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 175, - Entity_Quad_Triangle = 298, - Entity_Quad_Edge = 248, - Entity_Quad_Penta = 96, - Entity_Quad_Hexa = 3699, - Entity_Node = 20741, - Entity_Quad_Tetra = 1979, - Entity_Quad_Quadrangle = 1694) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 1748, \ + Entity_Quad_Hexa = 3795, \ + Entity_Node = 21939, \ + Entity_Quad_Edge = 256, \ + Entity_Quad_Triangle = 360, \ + Entity_Quad_Tetra = 2425, \ + Entity_Quad_Pyramid = 199, \ + Entity_Quad_Penta = 120 \ + ) diff --git a/src/Tools/blocFissure/CasTests/ellipse_2.py b/src/Tools/blocFissure/CasTests/ellipse_2.py index 4947fbbd2..1596e27d0 100644 --- a/src/Tools/blocFissure/CasTests/ellipse_2.py +++ b/src/Tools/blocFissure/CasTests/ellipse_2.py @@ -67,11 +67,13 @@ class ellipse_2(ellipse_1): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 159, - Entity_Quad_Triangle = 438, - Entity_Quad_Edge = 249, - Entity_Quad_Penta = 80, - Entity_Quad_Hexa = 3635, - Entity_Node = 20519, - Entity_Quad_Tetra = 1973, - Entity_Quad_Quadrangle = 1658) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 1748, \ + Entity_Quad_Hexa = 3795, \ + Entity_Node = 22219, \ + Entity_Quad_Edge = 258, \ + Entity_Quad_Triangle = 434, \ + Entity_Quad_Tetra = 2574, \ + Entity_Quad_Pyramid = 199, \ + Entity_Quad_Penta = 120 \ + ) diff --git a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py index 5ed364725..e7530c23d 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py @@ -112,12 +112,14 @@ class eprouvetteCourbe(fissureGenerique): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 618, - Entity_Quad_Triangle = 1224, - Entity_Quad_Edge = 578, - Entity_Quad_Penta = 168, - Entity_Quad_Hexa = 18342, - Entity_Node = 98170, - Entity_Quad_Tetra = 10809, - Entity_Quad_Quadrangle = 5408) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 5318, \ + Entity_Quad_Hexa = 18182, \ + Entity_Node = 94472, \ + Entity_Quad_Edge = 539, \ + Entity_Quad_Triangle = 828, \ + Entity_Quad_Tetra = 9024, \ + Entity_Quad_Pyramid = 578, \ + Entity_Quad_Penta = 128 \ + ) diff --git a/src/Tools/blocFissure/CasTests/eprouvetteDroite.py b/src/Tools/blocFissure/CasTests/eprouvetteDroite.py index b33da9ee8..1ecb81162 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteDroite.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteDroite.py @@ -114,12 +114,14 @@ class eprouvetteDroite(fissureGenerique): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 368, - Entity_Quad_Triangle = 798, - Entity_Quad_Edge = 491, - Entity_Quad_Penta = 88, - Entity_Quad_Hexa = 9692, - Entity_Node = 52652, - Entity_Quad_Tetra = 5093, - Entity_Quad_Quadrangle = 3750) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 3768, \ + Entity_Quad_Hexa = 9724, \ + Entity_Node = 52337, \ + Entity_Quad_Edge = 457, \ + Entity_Quad_Triangle = 570, \ + Entity_Quad_Tetra = 4919, \ + Entity_Quad_Pyramid = 376, \ + Entity_Quad_Penta = 96 \ + ) diff --git a/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py b/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py index 3ab9196f5..c89908216 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py @@ -67,12 +67,14 @@ class eprouvetteDroite_2(eprouvetteDroite): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 396, - Entity_Quad_Triangle = 1084, - Entity_Quad_Edge = 510, - Entity_Quad_Penta = 96, - Entity_Quad_Hexa = 9504, - Entity_Node = 55482, - Entity_Quad_Tetra = 7545, - Entity_Quad_Quadrangle = 3724) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 3724, \ + Entity_Quad_Hexa = 9504, \ + Entity_Node = 54049, \ + Entity_Quad_Edge = 478, \ + Entity_Quad_Triangle = 724, \ + Entity_Quad_Tetra = 6766, \ + Entity_Quad_Pyramid = 396, \ + Entity_Quad_Penta = 96 \ + ) diff --git a/src/Tools/blocFissure/CasTests/faceGauche.py b/src/Tools/blocFissure/CasTests/faceGauche.py index c3fecb94b..f6678951f 100644 --- a/src/Tools/blocFissure/CasTests/faceGauche.py +++ b/src/Tools/blocFissure/CasTests/faceGauche.py @@ -112,12 +112,14 @@ class faceGauche(fissureGenerique): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 1284, - Entity_Quad_Triangle = 2336, - Entity_Quad_Edge = 758, - Entity_Quad_Penta = 984, - Entity_Quad_Hexa = 6416, - Entity_Node = 85673, - Entity_Quad_Tetra = 35990, - Entity_Quad_Quadrangle = 4285) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 3997, \ + Entity_Quad_Hexa = 5904, \ + Entity_Node = 77735, \ + Entity_Quad_Edge = 725, \ + Entity_Quad_Triangle = 2176, \ + Entity_Quad_Tetra = 32320, \ + Entity_Quad_Pyramid = 1156, \ + Entity_Quad_Penta = 856 \ + ) diff --git a/src/Tools/blocFissure/CasTests/faceGauche_2.py b/src/Tools/blocFissure/CasTests/faceGauche_2.py index f12066e9d..e134c4cd0 100644 --- a/src/Tools/blocFissure/CasTests/faceGauche_2.py +++ b/src/Tools/blocFissure/CasTests/faceGauche_2.py @@ -113,12 +113,14 @@ class faceGauche_2(fissureGenerique): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 859, + self.referencesMaillageFissure = dict( \ + Entity_Quad_Pyramid = 859, Entity_Quad_Triangle = 634, Entity_Quad_Edge = 323, Entity_Quad_Penta = 288, Entity_Quad_Hexa = 3435, Entity_Node = 44095, Entity_Quad_Tetra = 18400, - Entity_Quad_Quadrangle = 2542) + Entity_Quad_Quadrangle = 2542 + ) diff --git a/src/Tools/blocFissure/CasTests/fissure_Coude.py b/src/Tools/blocFissure/CasTests/fissure_Coude.py index f510d2a73..898372e11 100644 --- a/src/Tools/blocFissure/CasTests/fissure_Coude.py +++ b/src/Tools/blocFissure/CasTests/fissure_Coude.py @@ -504,12 +504,14 @@ class fissure_Coude(fissureGenerique): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Node = 77491, - Entity_Quad_Edge = 1006, - Entity_Quad_Triangle = 2412, - Entity_Quad_Quadrangle = 6710, - Entity_Quad_Tetra = 20853, - Entity_Quad_Hexa = 8656, - Entity_Quad_Penta = 1176, - Entity_Quad_Pyramid = 1232) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 6710, \ + Entity_Quad_Hexa = 8656, \ + Entity_Node = 56957, \ + Entity_Quad_Edge = 1006, \ + Entity_Quad_Triangle = 2344, \ + Entity_Quad_Tetra = 0, \ + Entity_Quad_Pyramid = 1232, \ + Entity_Quad_Penta = 1176 \ + ) From 2a904f692b6e49f40bbbb751ebc340582f9d9086 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 20 Jan 2021 19:16:13 +0100 Subject: [PATCH 06/57] Modernisation du programme --- .../gmu/getStatsMaillageFissure.py | 79 +++++++++++-------- 1 file changed, 46 insertions(+), 33 deletions(-) diff --git a/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py b/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py index 4db1f827a..a92be1e17 100644 --- a/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py +++ b/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py @@ -17,12 +17,12 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Statistiques maillage""" +import os import logging import SMESH -# ----------------------------------------------------------------------------- -# --- statistiques maillage def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissureParams): """ @@ -30,47 +30,60 @@ def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissure """ logging.debug('start') - nomRep = '.' if 'nomRep' in maillageFissureParams: nomRep = maillageFissureParams['nomRep'] - + else: + nomRep = os.path.curdir + nomFicFissure = maillageFissureParams['nomFicFissure'] - fichierStatMaillageFissure = nomRep + '/' + nomFicFissure + '.res' - fichierNewRef = nomRep + '/' + nomFicFissure + '.new' + fichierStatMaillageFissure = os.path.join(nomRep, "{}.res".format(nomFicFissure)) + fichierNewRef = os.path.join(nomRep, "{}.new".format(nomFicFissure)) logging.debug("fichierStatMaillageFissure=%s", fichierStatMaillageFissure) OK = False if maillage is not None: mesures = maillage.GetMeshInfo() - d= {} + d_resu = dict() for key, value in mesures.items(): logging.debug( "key: %s value: %s", key, value) - d[str(key)] = value - logging.debug("dico mesures %s", d) + d_resu[str(key)] = value + logging.debug("dico mesures %s", d_resu) - f = open(fichierStatMaillageFissure, 'w') - f2 = open(fichierNewRef, 'w') + text_2 = "" OK = True - for key in ('Entity_Quad_Pyramid', 'Entity_Quad_Hexa', 'Entity_Quad_Quadrangle'): - if d[key] != referencesMaillageFissure[key]: - logging.info("Ecart: %s reference: %s calcul: %s", key, referencesMaillageFissure[key], d[key]) - f.write("Ecart: " + key + " reference: " + str(referencesMaillageFissure[key]) + " calcul: " + str(d[key]) + '\n') - OK = False - else: - logging.info("Valeur_OK: %s reference: %s calcul: %s", key, referencesMaillageFissure[key], d[key]) - f.write("Valeur_OK: " + key + " reference: " + str(referencesMaillageFissure[key]) + " calcul: " + str(d[key]) + '\n') - f2.write(key + " = " + str(d[key]) + ",\n") - tolerance = 0.05 - for key in ('Entity_Quad_Penta', 'Entity_Quad_Tetra', 'Entity_Quad_Triangle', 'Entity_Quad_Edge', 'Entity_Node'): - if (d[key] < (1.0 - tolerance)*referencesMaillageFissure[key]) \ - or (d[key] > (1.0 + tolerance)*referencesMaillageFissure[key]): - logging.info("Ecart: %s reference: %s calcul: %s", key, referencesMaillageFissure[key], d[key]) - f.write("Ecart: " + key + " reference: " + str(referencesMaillageFissure[key]) + " calcul: " + str(d[key]) + '\n') - OK = False - else: - logging.info("Valeur_OK: %s reference: %s calcul: %s", key, referencesMaillageFissure[key], d[key]) - f.write("Valeur_OK: " + key + " reference: " + str(referencesMaillageFissure[key]) + " calcul: " + str(d[key]) + '\n') - f2.write(key + " = " + str(d[key]) + ",\n") - f.close() - f2.close() + with open(fichierStatMaillageFissure, "w") as fic_stat : + for key in ('Entity_Quad_Quadrangle', 'Entity_Quad_Hexa'): + if d_resu[key] != referencesMaillageFissure[key]: + text = "Ecart" + OK = False + else: + text = "Valeur_OK" + text += ": {} reference: {} calcul: {}".format(key,referencesMaillageFissure[key],d_resu[key]) + logging.info(text) + fic_stat.write(text+"\n") + text_2 += " {} = {}, \\\n".format(key,d_resu[key]) + tolerance = 0.05 + for key in ('Entity_Node', 'Entity_Quad_Edge', 'Entity_Quad_Triangle', 'Entity_Quad_Tetra', 'Entity_Quad_Pyramid', 'Entity_Quad_Penta'): + if (d_resu[key] < (1.0 - tolerance)*referencesMaillageFissure[key]) \ + or (d_resu[key] > (1.0 + tolerance)*referencesMaillageFissure[key]): + text = "Ecart" + OK = False + else: + text = "Valeur_OK" + text += ": {} reference: {} calcul: {}".format(key,referencesMaillageFissure[key],d_resu[key]) + logging.info(text) + fic_stat.write(text+"\n") + text_2 += " {} = {}, \\\n".format(key,d_resu[key]) + +# Résultats de référence pour intégration dans le python du cas pour une mise à jour + with open(fichierNewRef, "w") as fic_info : + fic_info.write(text_2[:-4]+" \\") + + if OK: + print ("Calcul cohérent avec la référence.") + else: + text = "Calcul différent de la référence.\n" + texte += "Voir le fichier {}".format(fichierStatMaillageFissure) + print (text) + return OK From 2e486645c5994ab249e644b9962619d4c5b64482 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Thu, 21 Jan 2021 10:07:24 +0100 Subject: [PATCH 07/57] =?UTF-8?q?Mise=20=C3=A0=20jour=20des=20r=C3=A9f?= =?UTF-8?q?=C3=A9rences?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blocFissure/CasTests/fissureCoude_1.py | 18 ++++++++++-------- .../blocFissure/CasTests/fissureCoude_2.py | 19 +++++++++++-------- .../blocFissure/CasTests/fissureCoude_3.py | 18 ++++++++++-------- .../blocFissure/CasTests/fissureCoude_4.py | 18 ++++++++++-------- .../blocFissure/CasTests/fissureCoude_5.py | 18 ++++++++++-------- .../blocFissure/CasTests/fissureCoude_6.py | 19 ++++++++++--------- .../blocFissure/CasTests/fissureCoude_7.py | 18 ++++++++++-------- .../blocFissure/CasTests/fissureCoude_8.py | 19 ++++++++++--------- .../blocFissure/CasTests/fissureCoude_9.py | 19 ++++++++++--------- 9 files changed, 91 insertions(+), 75 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_1.py b/src/Tools/blocFissure/CasTests/fissureCoude_1.py index 680da799e..0a1902a30 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_1.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_1.py @@ -98,12 +98,14 @@ class fissureCoude_1(fissureCoude): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Node = 77917, - Entity_Quad_Edge = 975, - Entity_Quad_Triangle = 2182, - Entity_Quad_Quadrangle = 6842, - Entity_Quad_Tetra = 20135, - Entity_Quad_Hexa = 8994, - Entity_Quad_Penta = 972, - Entity_Quad_Pyramid = 1038) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 6042, \ + Entity_Quad_Hexa = 7794, \ + Entity_Node = 65337, \ + Entity_Quad_Edge = 874, \ + Entity_Quad_Triangle = 2058, \ + Entity_Quad_Tetra = 16037, \ + Entity_Quad_Pyramid = 738, \ + Entity_Quad_Penta = 672 \ + ) diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_2.py b/src/Tools/blocFissure/CasTests/fissureCoude_2.py index e37055892..dcf7b79d2 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_2.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_2.py @@ -98,12 +98,15 @@ class fissureCoude_2(fissureCoude): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Node = 132120, - Entity_Quad_Edge = 1411, - Entity_Quad_Triangle = 5342, - Entity_Quad_Quadrangle = 9524, - Entity_Quad_Tetra = 40902, - Entity_Quad_Hexa = 12981, - Entity_Quad_Penta = 1980, - Entity_Quad_Pyramid = 2064) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 7828, \ + Entity_Quad_Hexa = 10437, \ + Entity_Node = 101695, \ + Entity_Quad_Edge = 1199, \ + Entity_Quad_Triangle = 4230, \ + Entity_Quad_Tetra = 30013, \ + Entity_Quad_Pyramid = 1428, \ + Entity_Quad_Penta = 1344 \ + ) + diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_3.py b/src/Tools/blocFissure/CasTests/fissureCoude_3.py index 5c91f6065..d6e7e8a50 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_3.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_3.py @@ -98,12 +98,14 @@ class fissureCoude_3(fissureCoude): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Node = 98643, - Entity_Quad_Edge = 1130, - Entity_Quad_Triangle = 1476, - Entity_Quad_Quadrangle = 11100, - Entity_Quad_Tetra = 15993, - Entity_Quad_Hexa = 14508, - Entity_Quad_Penta = 624, - Entity_Quad_Pyramid = 788) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 10604, \ + Entity_Quad_Hexa = 13764, \ + Entity_Node = 89087, \ + Entity_Quad_Edge = 1065, \ + Entity_Quad_Triangle = 1326, \ + Entity_Quad_Tetra = 12185, \ + Entity_Quad_Pyramid = 602, \ + Entity_Quad_Penta = 438 \ + ) diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_4.py b/src/Tools/blocFissure/CasTests/fissureCoude_4.py index ba0f7c006..493913994 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_4.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_4.py @@ -98,12 +98,14 @@ class fissureCoude_4(fissureCoude): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Node = 133832, - Entity_Quad_Edge = 1133, - Entity_Quad_Triangle = 1498, - Entity_Quad_Quadrangle = 11892, - Entity_Quad_Tetra = 18401, - Entity_Quad_Hexa = 22412, - Entity_Quad_Penta = 600, - Entity_Quad_Pyramid = 816) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 11428, \ + Entity_Quad_Hexa = 21716, \ + Entity_Node = 124663, \ + Entity_Quad_Edge = 1073, \ + Entity_Quad_Triangle = 1330, \ + Entity_Quad_Tetra = 14665, \ + Entity_Quad_Pyramid = 642, \ + Entity_Quad_Penta = 426 \ + ) diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_5.py b/src/Tools/blocFissure/CasTests/fissureCoude_5.py index 404978e3d..31fa72d96 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_5.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_5.py @@ -98,12 +98,14 @@ class fissureCoude_5(fissureCoude): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Node = 55217, - Entity_Quad_Edge = 762, - Entity_Quad_Triangle = 1586, - Entity_Quad_Quadrangle = 5610, - Entity_Quad_Tetra = 11468, - Entity_Quad_Hexa = 7200, - Entity_Quad_Penta = 516, - Entity_Quad_Pyramid = 552) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 5366, \ + Entity_Quad_Hexa = 7120, \ + Entity_Node = 54832, \ + Entity_Quad_Edge = 722, \ + Entity_Quad_Triangle = 1570, \ + Entity_Quad_Tetra = 11747, \ + Entity_Quad_Pyramid = 532, \ + Entity_Quad_Penta = 496 \ + ) diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_6.py b/src/Tools/blocFissure/CasTests/fissureCoude_6.py index e79483d16..e42cf5fcc 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_6.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_6.py @@ -96,13 +96,14 @@ class fissureCoude_6(fissureCoude): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Node = 63783, - Entity_Quad_Edge = 831, - Entity_Quad_Triangle = 742, - Entity_Quad_Quadrangle = 7480, - Entity_Quad_Tetra = 8084, - Entity_Quad_Hexa = 10080, - Entity_Quad_Penta = 456, - Entity_Quad_Pyramid = 500) - + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 7392, \ + Entity_Quad_Hexa = 9888, \ + Entity_Node = 62571, \ + Entity_Quad_Edge = 833, \ + Entity_Quad_Triangle = 1048, \ + Entity_Quad_Tetra = 7723, \ + Entity_Quad_Pyramid = 452, \ + Entity_Quad_Penta = 408 \ + ) diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_7.py b/src/Tools/blocFissure/CasTests/fissureCoude_7.py index b86495189..b0f53de79 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_7.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_7.py @@ -97,12 +97,14 @@ class fissureCoude_7(fissureCoude): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Node = 75580, - Entity_Quad_Edge = 899, - Entity_Quad_Triangle = 1158, - Entity_Quad_Quadrangle = 8022, - Entity_Quad_Tetra = 13162, - Entity_Quad_Hexa = 11272, - Entity_Quad_Penta = 756, - Entity_Quad_Pyramid = 812) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 7758, \ + Entity_Quad_Hexa = 10696, \ + Entity_Node = 71535, \ + Entity_Quad_Edge = 882, \ + Entity_Quad_Triangle = 1378, \ + Entity_Quad_Tetra = 10847, \ + Entity_Quad_Pyramid = 668, \ + Entity_Quad_Penta = 612 \ + ) diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_8.py b/src/Tools/blocFissure/CasTests/fissureCoude_8.py index 05b51fb99..ccb11e387 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_8.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_8.py @@ -98,12 +98,13 @@ class fissureCoude_8(fissureCoude): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Node = 50627, - Entity_Quad_Edge = 666, - Entity_Quad_Triangle = 1498, - Entity_Quad_Quadrangle = 4747, - Entity_Quad_Tetra = 13225, - Entity_Quad_Hexa = 5464, - Entity_Quad_Penta = 864, - Entity_Quad_Pyramid = 880) - + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 7758, \ + Entity_Quad_Hexa = 10696, \ + Entity_Node = 71535, \ + Entity_Quad_Edge = 882, \ + Entity_Quad_Triangle = 1378, \ + Entity_Quad_Tetra = 10847, \ + Entity_Quad_Pyramid = 668, \ + Entity_Quad_Penta = 612 \ + ) diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_9.py b/src/Tools/blocFissure/CasTests/fissureCoude_9.py index 10701d1da..22782a81f 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_9.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_9.py @@ -96,12 +96,13 @@ class fissureCoude_9(fissureCoude): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Node = 162936, - Entity_Quad_Edge = 1254, - Entity_Quad_Triangle = 3238, - Entity_Quad_Quadrangle = 15088, - Entity_Quad_Tetra = 19305, - Entity_Quad_Hexa = 27472, - Entity_Quad_Penta = 920, - Entity_Quad_Pyramid = 1056) - + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 14864, \ + Entity_Quad_Hexa = 26772, \ + Entity_Node = 156163, \ + Entity_Quad_Edge = 1237, \ + Entity_Quad_Triangle = 3178, \ + Entity_Quad_Tetra = 16952, \ + Entity_Quad_Pyramid = 916, \ + Entity_Quad_Penta = 780 \ + ) From b66ee19eeaa375d4cde342644be81e8ce29fa14b Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Thu, 21 Jan 2021 16:09:37 +0100 Subject: [PATCH 08/57] =?UTF-8?q?Nom=20des=20probl=C3=A8mes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/CasTests/cubeAngle.py | 4 +--- src/Tools/blocFissure/CasTests/cubeAngle2.py | 4 ++-- src/Tools/blocFissure/CasTests/cylindre.py | 4 +--- src/Tools/blocFissure/CasTests/cylindre_2.py | 5 ++--- src/Tools/blocFissure/CasTests/ellipse_1.py | 4 +--- src/Tools/blocFissure/CasTests/ellipse_2.py | 4 +--- src/Tools/blocFissure/CasTests/eprouvetteCourbe.py | 4 +--- src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py | 6 ++---- src/Tools/blocFissure/CasTests/faceGauche.py | 4 +--- src/Tools/blocFissure/CasTests/faceGauche_2.py | 6 ++---- src/Tools/blocFissure/CasTests/fissureCoude_1.py | 7 +++---- src/Tools/blocFissure/CasTests/fissureCoude_10.py | 1 + src/Tools/blocFissure/CasTests/fissureCoude_2.py | 6 +++--- src/Tools/blocFissure/CasTests/fissureCoude_3.py | 7 +++---- src/Tools/blocFissure/CasTests/fissureCoude_4.py | 7 +++---- src/Tools/blocFissure/CasTests/fissureCoude_5.py | 7 +++---- src/Tools/blocFissure/CasTests/fissureCoude_6.py | 4 +++- src/Tools/blocFissure/CasTests/fissureCoude_7.py | 2 ++ src/Tools/blocFissure/CasTests/fissureCoude_8.py | 3 ++- src/Tools/blocFissure/CasTests/fissureCoude_9.py | 3 ++- src/Tools/blocFissure/CasTests/fissure_Coude.py | 6 +++--- src/Tools/blocFissure/CasTests/fissure_Coude_4.py | 6 ++++-- src/Tools/blocFissure/CasTests/vis_1.py | 4 +--- src/Tools/blocFissure/gmu/fissureCoude.py | 2 +- src/Tools/blocFissure/gmu/fissureGenerique.py | 2 +- 25 files changed, 49 insertions(+), 63 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/cubeAngle.py b/src/Tools/blocFissure/CasTests/cubeAngle.py index eb7b73222..456d125f2 100644 --- a/src/Tools/blocFissure/CasTests/cubeAngle.py +++ b/src/Tools/blocFissure/CasTests/cubeAngle.py @@ -41,9 +41,7 @@ from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale O, OX, OY, OZ = triedreBase() class cubeAngle(fissureGenerique): - """ - problème de fissure plane coupant 2 faces (angle), débouches normaux, objet plan - """ + """problème de fissure plane coupant 2 faces (angle), débouches normaux, objet plan""" nomProbleme = "cubeAngle" diff --git a/src/Tools/blocFissure/CasTests/cubeAngle2.py b/src/Tools/blocFissure/CasTests/cubeAngle2.py index 3f379333e..f66a0e201 100644 --- a/src/Tools/blocFissure/CasTests/cubeAngle2.py +++ b/src/Tools/blocFissure/CasTests/cubeAngle2.py @@ -21,8 +21,8 @@ from .cubeAngle import cubeAngle class cubeAngle2(cubeAngle): - """ - problème de fissure plane coupant 2 faces (angle), débouches normaux, objet plan + """problème de fissure plane coupant 2 faces (angle), débouches normaux, objet plan + detection d'un probleme de tolerance sur les edges de jonction pipe et face fissure externe """ diff --git a/src/Tools/blocFissure/CasTests/cylindre.py b/src/Tools/blocFissure/CasTests/cylindre.py index fea83e8fa..1e9b2651c 100644 --- a/src/Tools/blocFissure/CasTests/cylindre.py +++ b/src/Tools/blocFissure/CasTests/cylindre.py @@ -41,9 +41,7 @@ from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale O, OX, OY, OZ = triedreBase() class cylindre(fissureGenerique): - """ - problème de fissure plane sur cylindre, grand fond de fissure en arc de cercle - """ + """problème de fissure plane sur cylindre, grand fond de fissure en arc de cercle""" nomProbleme = "cylindre" diff --git a/src/Tools/blocFissure/CasTests/cylindre_2.py b/src/Tools/blocFissure/CasTests/cylindre_2.py index 858f80d44..517d1d442 100644 --- a/src/Tools/blocFissure/CasTests/cylindre_2.py +++ b/src/Tools/blocFissure/CasTests/cylindre_2.py @@ -38,9 +38,8 @@ from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale O, OX, OY, OZ = triedreBase() class cylindre_2(cylindre): - """ - problème de fissure plane sur cylindre hexa, fond de fissure complexe : polyline - """ + """problème de fissure plane sur cylindre hexa, fond de fissure complexe : polyline""" + nomProbleme = "cylindre2" # --------------------------------------------------------------------------- diff --git a/src/Tools/blocFissure/CasTests/ellipse_1.py b/src/Tools/blocFissure/CasTests/ellipse_1.py index 26465ab71..ef4ca730a 100644 --- a/src/Tools/blocFissure/CasTests/ellipse_1.py +++ b/src/Tools/blocFissure/CasTests/ellipse_1.py @@ -41,9 +41,7 @@ from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale O, OX, OY, OZ = triedreBase() class ellipse_1(fissureGenerique): - """ - problème de fissure non plane, débouchante non normale - """ + """problème de fissure non plane, débouchante non normale""" nomProbleme = "ellipse1" diff --git a/src/Tools/blocFissure/CasTests/ellipse_2.py b/src/Tools/blocFissure/CasTests/ellipse_2.py index 1596e27d0..1b998477f 100644 --- a/src/Tools/blocFissure/CasTests/ellipse_2.py +++ b/src/Tools/blocFissure/CasTests/ellipse_2.py @@ -41,9 +41,7 @@ from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale O, OX, OY, OZ = triedreBase() class ellipse_2(ellipse_1): - """ - problème de fissure non plane, débouchante non normale - """ + """problème de fissure non plane, débouchante non normale""" nomProbleme = "ellipse2" diff --git a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py index e7530c23d..36bde0467 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py @@ -41,9 +41,7 @@ from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale O, OX, OY, OZ = triedreBase() class eprouvetteCourbe(fissureGenerique): - """ - problème de fissure plane coupant 3 faces (éprouvette), faces au débouché non planes, incidence presque normale - """ + """problème de fissure plane coupant 3 faces (éprouvette), faces au débouché non planes, incidence presque normale""" nomProbleme = "eprouvetteCourbe" diff --git a/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py b/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py index c89908216..fc6c04d4c 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py @@ -41,11 +41,9 @@ from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale O, OX, OY, OZ = triedreBase() class eprouvetteDroite_2(eprouvetteDroite): - """ - problème de fissure plane coupant 3 faces (éprouvette), débouches non normaux, objet plan - """ + """problème de fissure plane coupant 3 faces (éprouvette), débouches non normaux, objet plan""" - nomProbleme = "eprouvetteDroite2" + nomProbleme = "eprouvetteDroite_2" # --------------------------------------------------------------------------- def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams): diff --git a/src/Tools/blocFissure/CasTests/faceGauche.py b/src/Tools/blocFissure/CasTests/faceGauche.py index f6678951f..1be9de5c4 100644 --- a/src/Tools/blocFissure/CasTests/faceGauche.py +++ b/src/Tools/blocFissure/CasTests/faceGauche.py @@ -41,9 +41,7 @@ from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale O, OX, OY, OZ = triedreBase() class faceGauche(fissureGenerique): - """ - problème de fissure non plane, débouchante non normale - """ + """problème de fissure non plane, débouchante non normale""" nomProbleme = "faceGauche" diff --git a/src/Tools/blocFissure/CasTests/faceGauche_2.py b/src/Tools/blocFissure/CasTests/faceGauche_2.py index e134c4cd0..8ebf74361 100644 --- a/src/Tools/blocFissure/CasTests/faceGauche_2.py +++ b/src/Tools/blocFissure/CasTests/faceGauche_2.py @@ -42,11 +42,9 @@ from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale O, OX, OY, OZ = triedreBase() class faceGauche_2(fissureGenerique): - """ - problème de fissure non plane, débouchante non normale - """ + """problème de fissure non plane, débouchante non normale""" - nomProbleme = "faceGauche2" + nomProbleme = "faceGauche_2" # --------------------------------------------------------------------------- def genereMaillageSain(self, geometriesSaines, meshParams): diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_1.py b/src/Tools/blocFissure/CasTests/fissureCoude_1.py index 0a1902a30..cf41e9268 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_1.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_1.py @@ -21,10 +21,9 @@ from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_1(fissureCoude): - """ - problème de fissure du Coude : - adaptation maillage - """ + """problème de fissure du Coude : adaptation maillage""" + + nomProbleme = "fissureCoude_1" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_10.py b/src/Tools/blocFissure/CasTests/fissureCoude_10.py index cfd4626a7..4e3524b08 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_10.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_10.py @@ -23,6 +23,7 @@ from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_10(fissureCoude): # cas test ASCOU17 + nomProbleme = "fissureCoude_10" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_2.py b/src/Tools/blocFissure/CasTests/fissureCoude_2.py index dcf7b79d2..6398c3609 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_2.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_2.py @@ -21,10 +21,10 @@ from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_2(fissureCoude): + """problème de fissure du Coude : adaptation maillage """ - problème de fissure du Coude : - adaptation maillage - """ + + nomProbleme = "fissureCoude_2" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_3.py b/src/Tools/blocFissure/CasTests/fissureCoude_3.py index d6e7e8a50..9742d9bdc 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_3.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_3.py @@ -21,10 +21,9 @@ from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_3(fissureCoude): - """ - problème de fissure du Coude - adaptation maillage - """ + """problème de fissure du Coude - adaptation maillage""" + + nomProbleme = "fissureCoude_3" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_4.py b/src/Tools/blocFissure/CasTests/fissureCoude_4.py index 493913994..946489063 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_4.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_4.py @@ -21,10 +21,9 @@ from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_4(fissureCoude): - """ - problème de fissure du Coude : ASCOU09A - adaptation maillage - """ + """problème de fissure du Coude : ASCOU09A - adaptation maillage""" + + nomProbleme = "fissureCoude_4" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_5.py b/src/Tools/blocFissure/CasTests/fissureCoude_5.py index 31fa72d96..2ef581dce 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_5.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_5.py @@ -21,10 +21,9 @@ from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_5(fissureCoude): - """ - problème de fissure du Coude : - adaptation maillage - """ + """problème de fissure du Coude : - adaptation maillage""" + + nomProbleme = "fissureCoude_5" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_6.py b/src/Tools/blocFissure/CasTests/fissureCoude_6.py index e42cf5fcc..3363ccc1e 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_6.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_6.py @@ -21,7 +21,9 @@ from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_6(fissureCoude): -# --- cas ASCOU08 + """ASCOU08""" + + nomProbleme = "fissureCoude_6" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_7.py b/src/Tools/blocFissure/CasTests/fissureCoude_7.py index b0f53de79..67df2a1f0 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_7.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_7.py @@ -21,7 +21,9 @@ from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_7(fissureCoude): + """fissureCoude_7""" + nomProbleme = "fissureCoude_7" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_8.py b/src/Tools/blocFissure/CasTests/fissureCoude_8.py index ccb11e387..320c8333f 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_8.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_8.py @@ -21,8 +21,9 @@ from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_8(fissureCoude): - # cas test ASCOU15 + """cas test ASCOU16""" + nomProbleme = "fissureCoude_8" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_9.py b/src/Tools/blocFissure/CasTests/fissureCoude_9.py index 22782a81f..887839244 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_9.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_9.py @@ -21,8 +21,9 @@ from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_9(fissureCoude): - # cas test ASCOU19 + """cas test ASCOU19""" + nomProbleme = "fissureCoude_9" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/CasTests/fissure_Coude.py b/src/Tools/blocFissure/CasTests/fissure_Coude.py index 898372e11..3e22fe862 100644 --- a/src/Tools/blocFissure/CasTests/fissure_Coude.py +++ b/src/Tools/blocFissure/CasTests/fissure_Coude.py @@ -40,12 +40,12 @@ from blocFissure.gmu.insereFissureLongue import insereFissureLongue O, OX, OY, OZ = triedreBase() class fissure_Coude(fissureGenerique): - """ - problème de fissure du Coude : version de base + """problème de fissure du Coude : version de base + maillage hexa """ - nomProbleme = "tuyau_Coude" + nomProbleme = "fissure_Coude" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/CasTests/fissure_Coude_4.py b/src/Tools/blocFissure/CasTests/fissure_Coude_4.py index 482b5272e..e64bab927 100644 --- a/src/Tools/blocFissure/CasTests/fissure_Coude_4.py +++ b/src/Tools/blocFissure/CasTests/fissure_Coude_4.py @@ -21,11 +21,13 @@ from .fissure_Coude import fissure_Coude class fissure_Coude_4(fissure_Coude): - """ - probleme de fissure du Coude : ASCOU09A + """probleme de fissure du Coude : ASCOU09A + adaptation maillage """ + nomProbleme = "fissure_Coude_4" + # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): """ diff --git a/src/Tools/blocFissure/CasTests/vis_1.py b/src/Tools/blocFissure/CasTests/vis_1.py index 65dcedebf..4ddd3715b 100644 --- a/src/Tools/blocFissure/CasTests/vis_1.py +++ b/src/Tools/blocFissure/CasTests/vis_1.py @@ -41,9 +41,7 @@ from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale O, OX, OY, OZ = triedreBase() class vis_1(fissureGenerique): - """ - problème de fissure non plane, débouchante non normale - """ + """problème de fissure non plane, débouchante non normale""" nomProbleme = "vis_1" diff --git a/src/Tools/blocFissure/gmu/fissureCoude.py b/src/Tools/blocFissure/gmu/fissureCoude.py index 95cf1904e..5cb6c83cf 100644 --- a/src/Tools/blocFissure/gmu/fissureCoude.py +++ b/src/Tools/blocFissure/gmu/fissureCoude.py @@ -48,7 +48,7 @@ class fissureCoude(fissureGenerique): maillage hexa """ - nomProbleme = "tuyau_Coude" + nomProbleme = "fissureCoude" # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): diff --git a/src/Tools/blocFissure/gmu/fissureGenerique.py b/src/Tools/blocFissure/gmu/fissureGenerique.py index bbc606aee..e3f214845 100644 --- a/src/Tools/blocFissure/gmu/fissureGenerique.py +++ b/src/Tools/blocFissure/gmu/fissureGenerique.py @@ -32,7 +32,7 @@ class fissureGenerique(): génération d'un bloc défaut inséré dans le maillage sain """ - nomProbleme = "generique" + nomProbleme = "fissureGenerique" def __init__(self, numeroCas): initEtude() From bd680846318aca3e9380cef4ddaddedd0cad9bba Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Thu, 21 Jan 2021 17:39:30 +0100 Subject: [PATCH 09/57] Erreur dans le tableau des cas --- src/Tools/blocFissure/doc/testcases.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Tools/blocFissure/doc/testcases.rst b/src/Tools/blocFissure/doc/testcases.rst index 9c56b9d8d..76ae558ac 100644 --- a/src/Tools/blocFissure/doc/testcases.rst +++ b/src/Tools/blocFissure/doc/testcases.rst @@ -152,7 +152,7 @@ modify the file ``CasTests/execution_Cas.py`` and change:: And change from 0 to 1 of the index of the test you want to launch:: - torun = [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + torun = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] then launch the test cases:: @@ -162,17 +162,17 @@ The index of each test is the position of the test in the following table, from 2 for cubeCoin... from top to bottom, then from left to right. +--------------------+--------------------+--------------------+-----------------+-----------------+ -| cubeAngle | cylindre_2 | eprouvetteDroite_2 | fissureCoude_3 | fissureCoude_8 | +| cubeAngle | cylindre_2 | eprouvetteDroite_2 | fissureCoude_3 | fissureCoude_9 | +--------------------+--------------------+--------------------+-----------------+-----------------+ -| cubeAngle2 | disquePerce | faceGauche | fissureCoude_4 | fissureCoude_10 | +| cubeAngle2 | disquePerce | faceGauche | fissureCoude_4 | fissure_Coude | +--------------------+--------------------+--------------------+-----------------+-----------------+ -| cubeCoin | ellipse_1 | faceGauche_2 | fissure_Coude_4 | fissureCoude_10 | +| cubeCoin | ellipse_1 | faceGauche_2 | fissureCoude_5 | fissure_Coude_4 | +--------------------+--------------------+--------------------+-----------------+-----------------+ -| cubeMilieu | ellipse_2 | fissure_Coude | fissureCoude_5 | vis_1 | +| cubeMilieu | ellipse_2 | fissureCoude_1 | fissureCoude_6 | vis_1 | +--------------------+--------------------+--------------------+-----------------+-----------------+ -| cubeTransverse | eprouvetteCourbe | fissureCoude_1 | fissureCoude_6 | | +| cubeTransverse | eprouvetteCourbe | fissureCoude_10 | fissureCoude_7 | | +--------------------+--------------------+--------------------+-----------------+-----------------+ -| cylindre | eprouvetteDroite | fissureCoude_2 | fissureCoude_7 | | +| cylindre | eprouvetteDroite | fissureCoude_2 | fissureCoude_8 | | +--------------------+--------------------+--------------------+-----------------+-----------------+ 3) **To execute only one test case**:: From ff0c47c3fe144e4e9b3ab319310cc96907fb1358 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Thu, 21 Jan 2021 17:51:47 +0100 Subject: [PATCH 10/57] Messages d'erreur --- src/Tools/blocFissure/gmu/getStatsMaillageFissure.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py b/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py index a92be1e17..af9dfbe63 100644 --- a/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py +++ b/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py @@ -83,7 +83,9 @@ def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissure print ("Calcul cohérent avec la référence.") else: text = "Calcul différent de la référence.\n" - texte += "Voir le fichier {}".format(fichierStatMaillageFissure) + text += "Voir le fichier {}\n".format(fichierStatMaillageFissure) + text += "La nouvelle référence est disponible dans le fichier :\n{}\n".format(fichierNewRef) + text += "Il faut l'insérer pour créer le dictionnaire 'referencesMaillageFissure' dans le paramétrage du cas." print (text) return OK From b0797b305a39b4f5aa34a6fb1eab8d83e2ddb3e4 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Thu, 21 Jan 2021 18:13:50 +0100 Subject: [PATCH 11/57] =?UTF-8?q?liste=20de=20passage=20des=20cas=20=C3=A0?= =?UTF-8?q?=20jour?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blocFissure/CasTests/execution_Cas.py | 205 ++++++++++-------- 1 file changed, 112 insertions(+), 93 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/execution_Cas.py b/src/Tools/blocFissure/CasTests/execution_Cas.py index 79b1f5add..4c4e961e3 100644 --- a/src/Tools/blocFissure/CasTests/execution_Cas.py +++ b/src/Tools/blocFissure/CasTests/execution_Cas.py @@ -25,16 +25,17 @@ from blocFissure.gmu import initLog # ----------------------------------------------------------------------------------------------- #initLog.setDebug() -initLog.setVerbose() +#initLog.setVerbose() #initLog.setRelease() #initLog.setPerfTests() -# ---tous les cas en sequence, ou les cas selectionnés ... +# ---tous les cas en séquence, ou les cas sélectionnés ... runall = True if runall: - torun = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] -else: #prob 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29 - torun = [ 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + torun = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] +else: #prob 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 + torun = [ 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1] # pb + torun = [ 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0] # OK # ----------------------------------------------------------------------------------------------- from blocFissure.gmu import geomsmesh @@ -42,127 +43,145 @@ from blocFissure.gmu.casStandard import casStandard problemes = list() -cas=0 +n_cas = 0 from blocFissure.CasTests.cubeAngle import cubeAngle -problemes.append(cubeAngle(cas)) +problemes.append(cubeAngle(n_cas)) -cas+=1 +n_cas += 1 from blocFissure.CasTests.cubeAngle2 import cubeAngle2 -problemes.append(cubeAngle2(cas)) +problemes.append(cubeAngle2(n_cas)) -cas+=1 +n_cas += 1 from blocFissure.CasTests import cubeCoin -problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, cas)) +problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, n_cas, "cubeCoin")) -cas+=1 +n_cas += 1 from blocFissure.CasTests import cubeMilieu -problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, cas)) +problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, n_cas, "cubeMilieu")) -cas+=1 +n_cas += 1 from blocFissure.CasTests import cubeTransverse -problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, cas)) +problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, n_cas, "cubeTransverse")) -cas+=1 +n_cas += 1 from blocFissure.CasTests.cylindre import cylindre -problemes.append(cylindre(cas)) +problemes.append(cylindre(n_cas)) -cas+=1 +n_cas += 1 from blocFissure.CasTests.cylindre_2 import cylindre_2 -problemes.append(cylindre_2(cas)) +problemes.append(cylindre_2(n_cas)) -cas+=1 +n_cas += 1 from blocFissure.CasTests import disquePerce -problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, cas)) +problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, n_cas, "disquePerce")) -cas+=1 +n_cas += 1 from blocFissure.CasTests.ellipse_1 import ellipse_1 -problemes.append(ellipse_1(cas)) +problemes.append(ellipse_1(n_cas)) -cas+=1 +n_cas += 1 from blocFissure.CasTests.ellipse_2 import ellipse_2 -problemes.append(ellipse_2(cas)) +problemes.append(ellipse_2(n_cas)) -cas+=1 +n_cas += 1 from blocFissure.CasTests.eprouvetteCourbe import eprouvetteCourbe -problemes.append(eprouvetteCourbe(cas)) +problemes.append(eprouvetteCourbe(n_cas)) -cas+=1 +n_cas += 1 from blocFissure.CasTests.eprouvetteDroite import eprouvetteDroite -problemes.append(eprouvetteDroite(cas)) +problemes.append(eprouvetteDroite(n_cas)) -cas+=1 +n_cas += 1 from blocFissure.CasTests.eprouvetteDroite_2 import eprouvetteDroite_2 -problemes.append(eprouvetteDroite_2(cas)) +problemes.append(eprouvetteDroite_2(n_cas)) -cas+=1 +n_cas += 1 from blocFissure.CasTests.faceGauche import faceGauche -problemes.append(faceGauche(cas)) +problemes.append(faceGauche(n_cas)) -cas+=1 +n_cas += 1 from blocFissure.CasTests.faceGauche_2 import faceGauche_2 -problemes.append(faceGauche_2(cas)) +problemes.append(faceGauche_2(n_cas)) -cas+=1 -from blocFissure.CasTests.fissure_Coude import fissure_Coude -problemes.append(fissure_Coude(cas)) - -cas+=1 -from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4 -problemes.append(fissure_Coude_4(cas)) - -cas+=1 +n_cas += 1 from blocFissure.CasTests.fissureCoude_1 import fissureCoude_1 -problemes.append(fissureCoude_1(cas)) +problemes.append(fissureCoude_1(n_cas)) -cas+=1 -from blocFissure.CasTests.fissureCoude_2 import fissureCoude_2 -problemes.append(fissureCoude_2(cas)) - -cas+=1 -from blocFissure.CasTests.fissureCoude_3 import fissureCoude_3 -problemes.append(fissureCoude_3(cas)) - -cas+=1 -from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4 -problemes.append(fissure_Coude_4(cas)) - -cas+=1 -from blocFissure.CasTests.fissureCoude_4 import fissureCoude_4 -problemes.append(fissureCoude_4(cas)) - -cas+=1 -from blocFissure.CasTests.fissureCoude_5 import fissureCoude_5 -problemes.append(fissureCoude_5(cas)) - -cas+=1 -from blocFissure.CasTests.fissureCoude_6 import fissureCoude_6 -problemes.append(fissureCoude_6(cas)) - -cas+=1 -from blocFissure.CasTests.fissureCoude_7 import fissureCoude_7 -problemes.append(fissureCoude_7(cas)) - -cas+=1 -from blocFissure.CasTests.fissureCoude_8 import fissureCoude_8 -problemes.append(fissureCoude_8(cas)) - -cas+=1 -from blocFissure.CasTests.fissureCoude_9 import fissureCoude_9 -problemes.append(fissureCoude_9(cas)) - -cas+=1 +n_cas += 1 from blocFissure.CasTests.fissureCoude_10 import fissureCoude_10 -problemes.append(fissureCoude_10(cas)) +problemes.append(fissureCoude_10(n_cas)) -cas+=1 +n_cas += 1 +from blocFissure.CasTests.fissureCoude_2 import fissureCoude_2 +problemes.append(fissureCoude_2(n_cas)) + +n_cas += 1 +from blocFissure.CasTests.fissureCoude_3 import fissureCoude_3 +problemes.append(fissureCoude_3(n_cas)) + +n_cas += 1 +from blocFissure.CasTests.fissureCoude_4 import fissureCoude_4 +problemes.append(fissureCoude_4(n_cas)) + +n_cas += 1 +from blocFissure.CasTests.fissureCoude_5 import fissureCoude_5 +problemes.append(fissureCoude_5(n_cas)) + +n_cas += 1 +from blocFissure.CasTests.fissureCoude_6 import fissureCoude_6 +problemes.append(fissureCoude_6(n_cas)) + +n_cas += 1 +from blocFissure.CasTests.fissureCoude_7 import fissureCoude_7 +problemes.append(fissureCoude_7(n_cas)) + +n_cas += 1 +from blocFissure.CasTests.fissureCoude_8 import fissureCoude_8 +problemes.append(fissureCoude_8(n_cas)) + +n_cas += 1 +from blocFissure.CasTests.fissureCoude_9 import fissureCoude_9 +problemes.append(fissureCoude_9(n_cas)) + +n_cas += 1 +from blocFissure.CasTests.fissure_Coude import fissure_Coude +problemes.append(fissure_Coude(n_cas)) + +n_cas += 1 +from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4 +problemes.append(fissure_Coude_4(n_cas)) + +n_cas += 1 from blocFissure.CasTests.vis_1 import vis_1 -problemes.append(vis_1(cas)) +problemes.append(vis_1(n_cas)) + +#============================================================= +while True: + + if ( len(problemes) != len(torun) ): + texte = "\nNombre de problèmes définis : {}\n".format(len(problemes)) + texte += "Longueur de la liste 'torun' : {}\n".format(len(torun)) + texte += "\t==> Incohérence de programmation à corriger." + print (texte) + break + + ligne = "---------------------------------------------------------------------" + texte = "" + for iaux, cas in enumerate(problemes): + #print ("Cas n° {}, '{}'".format(iaux,cas.nomProbleme)) + if torun[iaux]: + texte_a = "\n=== Exécution du cas n° {}, '{}'".format(iaux,cas.nomProbleme) + logging.critical(ligne+texte_a) + try: + cas.executeProbleme() + except: + traceback.print_exc() + texte += "Problème avec le cas n° {}, '{}'\n".format(iaux,cas.nomProbleme) + print(ligne) + + if not texte: + texte = "Tous les tests se sont bien passés.\n" + print (texte+ligne) + + break -for iaux, cas in enumerate(problemes): - if torun[iaux]: - logging.critical("=== Execution cas {}".format(iaux)) - try: - cas.executeProbleme() - except: - traceback.print_exc() - print("---------------------------------------------------------------------") From e9ec5b91149de7187c85b61f7bb43bef5cd5dbc2 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Fri, 22 Jan 2021 11:14:13 +0100 Subject: [PATCH 12/57] =?UTF-8?q?Gestion=20de=20l'affichage=20des=20noms?= =?UTF-8?q?=20des=20cas=20pass=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blocFissure/CasTests/execution_Cas.py | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/execution_Cas.py b/src/Tools/blocFissure/CasTests/execution_Cas.py index 4c4e961e3..781223854 100644 --- a/src/Tools/blocFissure/CasTests/execution_Cas.py +++ b/src/Tools/blocFissure/CasTests/execution_Cas.py @@ -41,6 +41,7 @@ else: #prob 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22, from blocFissure.gmu import geomsmesh from blocFissure.gmu.casStandard import casStandard +d_aux = dict() problemes = list() n_cas = 0 @@ -53,15 +54,18 @@ problemes.append(cubeAngle2(n_cas)) n_cas += 1 from blocFissure.CasTests import cubeCoin -problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, n_cas, "cubeCoin")) +problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, n_cas)) +d_aux[n_cas] = "cubeCoin" n_cas += 1 from blocFissure.CasTests import cubeMilieu -problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, n_cas, "cubeMilieu")) +problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, n_cas)) +d_aux[n_cas] = "cubeMilieu" n_cas += 1 from blocFissure.CasTests import cubeTransverse -problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, n_cas, "cubeTransverse")) +problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, n_cas)) +d_aux[n_cas] = "cubeTransverse" n_cas += 1 from blocFissure.CasTests.cylindre import cylindre @@ -73,7 +77,8 @@ problemes.append(cylindre_2(n_cas)) n_cas += 1 from blocFissure.CasTests import disquePerce -problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, n_cas, "disquePerce")) +problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, n_cas)) +d_aux[n_cas] = "disquePerce" n_cas += 1 from blocFissure.CasTests.ellipse_1 import ellipse_1 @@ -167,16 +172,20 @@ while True: ligne = "---------------------------------------------------------------------" texte = "" - for iaux, cas in enumerate(problemes): - #print ("Cas n° {}, '{}'".format(iaux,cas.nomProbleme)) - if torun[iaux]: - texte_a = "\n=== Exécution du cas n° {}, '{}'".format(iaux,cas.nomProbleme) + for n_cas, cas in enumerate(problemes): + #print ("Cas n° {}, '{}'".format(n_cas,cas.nomProbleme)) + if torun[n_cas]: + if n_cas in d_aux: + nom = d_aux[n_cas] + else: + nom = cas.nomProbleme + texte_a = "\n=== Exécution du cas n° {}, '{}'".format(n_cas,nom) logging.critical(ligne+texte_a) try: cas.executeProbleme() except: traceback.print_exc() - texte += "Problème avec le cas n° {}, '{}'\n".format(iaux,cas.nomProbleme) + texte += "Problème avec le cas n° {}, '{}'\n".format(n_cas,nom) print(ligne) if not texte: From b3c9d09a8a81c0ad6cd5a1513d6b890d31f5fd9a Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Fri, 22 Jan 2021 18:08:58 +0100 Subject: [PATCH 13/57] =?UTF-8?q?Fichier=20d'archive=20=C3=A0=20la=20norme?= =?UTF-8?q?=20python?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blocFissure/materielCasTests/cubeAngle.py | 4 +- .../blocFissure/materielCasTests/cubeFin.py | 8 +-- .../materielCasTests/decoupeCylindre.py | 6 +-- .../materielCasTests/disque_perce.py | 2 +- .../blocFissure/materielCasTests/ellipse.py | 2 +- .../materielCasTests/ellipse_disque.py | 2 +- .../materielCasTests/ellipse_probleme.py | 2 +- .../materielCasTests/eprouvetteCourbe.py | 4 +- .../materielCasTests/eprouvetteDroite.py | 10 ++-- .../materielCasTests/fissureGauche.py | 4 +- .../materielCasTests/fissureGauche2.py | 6 +-- src/Tools/blocFissure/materielCasTests/vis.py | 52 ++++++++++++++++--- 12 files changed, 69 insertions(+), 33 deletions(-) diff --git a/src/Tools/blocFissure/materielCasTests/cubeAngle.py b/src/Tools/blocFissure/materielCasTests/cubeAngle.py index 02be3090e..72dc03e43 100644 --- a/src/Tools/blocFissure/materielCasTests/cubeAngle.py +++ b/src/Tools/blocFissure/materielCasTests/cubeAngle.py @@ -51,7 +51,7 @@ Vertex_2 = geompy.MakeVertex(-5, -5, 90) Vertex_3 = geompy.MakeVertex(65, 65, 110) Box_2 = geompy.MakeBoxTwoPnt(Vertex_3, Vertex_2) Common_1 = geompy.MakeCommon(Disk_1, Box_2) -geompy.ExportBREP(Common_1, os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep")) +geompy.ExportBREP(Common_1, os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngleFiss.brep")) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) @@ -81,7 +81,7 @@ Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa) isDone = Mesh_1.Compute() smesh.SetName(Mesh_1, 'Mesh_1') -Mesh_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/CubeAngle.med")) +Mesh_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngle.med")) ## set object names smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1') diff --git a/src/Tools/blocFissure/materielCasTests/cubeFin.py b/src/Tools/blocFissure/materielCasTests/cubeFin.py index 2794519b6..d9348afbc 100644 --- a/src/Tools/blocFissure/materielCasTests/cubeFin.py +++ b/src/Tools/blocFissure/materielCasTests/cubeFin.py @@ -109,9 +109,9 @@ geompy.addToStudy( O_1, 'O' ) geompy.addToStudy( OX_1, 'OX' ) geompy.addToStudy( OY_1, 'OY' ) geompy.addToStudy( OZ_1, 'OZ' ) -geompy.ExportBREP(cubeFin_Transverse, os.path.join(gmu.pathBloc, "materielCasTests/cubeFin_Transverse.brep")) -geompy.ExportBREP(cubeFin_Coin, os.path.join(gmu.pathBloc, "materielCasTests/cubeFin_Coin.brep")) -geompy.ExportBREP(cubeFin_Milieu, os.path.join(gmu.pathBloc, "materielCasTests/cubeFin_Milieu.brep")) +geompy.ExportBREP(cubeFin_Transverse, os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin_Transverse.brep")) +geompy.ExportBREP(cubeFin_Coin, os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin_Coin.brep")) +geompy.ExportBREP(cubeFin_Milieu, os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin_Milieu.brep")) ### ### SMESH component @@ -140,7 +140,7 @@ smesh.SetName(ENCASTR_1, 'ENCASTR') smesh.SetName(cubeFin_1.GetMesh(), 'cubeFin') smesh.SetName(Nb_Segments_1, 'Nb. Segments_1') -cubeFin_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/cubeFin.med")) +cubeFin_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin.med")) if salome.sg.hasDesktop(): salome.sg.updateObjBrowser() diff --git a/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py b/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py index 31e49a434..0b50e4626 100644 --- a/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py +++ b/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py @@ -79,14 +79,14 @@ FissInCylindre = geompy.MakeFaceWires([Curve_2, Arc_1], 1) Divided_Cylinder_1 = geompy.MakeDividedCylinder(145, 800, GEOM.SQUARE) CylindreSain = geompy.MakeRotation(Divided_Cylinder_1, OZ, 45*math.pi/180.0) [Compound_1, vertical, radial, Compound_4] = geompy.Propagate(CylindreSain) -geompy.ExportBREP(FissInCylindre, os.path.join(gmu.pathBloc, "materielCasTests/FissInCylindre.brep")) +geompy.ExportBREP(FissInCylindre, os.path.join(gmu.pathBloc, "materielCasTests", "FissInCylindre.brep")) Vertex_12 = geompy.MakeVertex(0, -145, 500) Circle_2 = geompy.MakeCircle(Vertex_12, None, 145) Face_1 = geompy.MakeFaceWires([Circle_2], 1) Vertex_13 = geompy.MakeVertex(0, 0, 500) Disk_1 = geompy.MakeDiskPntVecR(Vertex_13, OZ_1, 170) FissInCylindre2 = geompy.MakeCommon(Face_1, Disk_1) -geompy.ExportBREP(FissInCylindre2, os.path.join(gmu.pathBloc, "materielCasTests/FissInCylindre2.brep")) +geompy.ExportBREP(FissInCylindre2, os.path.join(gmu.pathBloc, "materielCasTests", "FissInCylindre2.brep")) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) @@ -161,7 +161,7 @@ Nb_Segments_3 = Regular_1D_2.NumberOfSegments(6,[],[ ]) Nb_Segments_3.SetDistrType( 0 ) isDone = CylindreSain_1.Compute() smesh.SetName(CylindreSain_1, 'CylindreSain') -CylindreSain_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests//CylindreSain.med")) +CylindreSain_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "CylindreSain.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/disque_perce.py b/src/Tools/blocFissure/materielCasTests/disque_perce.py index 8e0310784..dd42c3dda 100644 --- a/src/Tools/blocFissure/materielCasTests/disque_perce.py +++ b/src/Tools/blocFissure/materielCasTests/disque_perce.py @@ -88,7 +88,7 @@ status = Disque_1.AddHypothesis(Nb_Segments_2,Compound_4) Quadrangle_2D = Disque_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) isDone = Disque_1.Compute() smesh.SetName(Disque_1, 'Disque') -Disque_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/disque.med")) +Disque_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "disque.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/ellipse.py b/src/Tools/blocFissure/materielCasTests/ellipse.py index e6da1674a..05f0f6f9f 100644 --- a/src/Tools/blocFissure/materielCasTests/ellipse.py +++ b/src/Tools/blocFissure/materielCasTests/ellipse.py @@ -71,7 +71,7 @@ geompy.addToStudy( Vertex_4, 'Vertex_4' ) geompy.addToStudy( Box_1, 'Box_1' ) geompy.addToStudy( ellipse1, 'ellipse1' ) geompy.addToStudyInFather( ellipse1, fondFiss, 'fondFiss' ) -geompy.ExportBREP(ellipse1, os.path.join(gmu.pathBloc, "materielCasTests/ellipse1.brep")) +geompy.ExportBREP(ellipse1, os.path.join(gmu.pathBloc, "materielCasTests", "ellipse1.brep")) if salome.sg.hasDesktop(): diff --git a/src/Tools/blocFissure/materielCasTests/ellipse_disque.py b/src/Tools/blocFissure/materielCasTests/ellipse_disque.py index ef3e544e8..86a2d1662 100644 --- a/src/Tools/blocFissure/materielCasTests/ellipse_disque.py +++ b/src/Tools/blocFissure/materielCasTests/ellipse_disque.py @@ -51,7 +51,7 @@ Vertex_2 = geompy.MakeVertex(98, -2, -2) Vertex_3 = geompy.MakeVertex(120, 2, 60) Box_1 = geompy.MakeBoxTwoPnt(Vertex_3, Vertex_2) Ellipse_disque = geompy.MakeCommon(Box_1, Scale_1) -geompy.ExportBREP(Ellipse_disque, os.path.join(gmu.pathBloc, "materielCasTests/ellipse_disque.brep")) +geompy.ExportBREP(Ellipse_disque, os.path.join(gmu.pathBloc, "materielCasTests", "ellipse_disque.brep")) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) diff --git a/src/Tools/blocFissure/materielCasTests/ellipse_probleme.py b/src/Tools/blocFissure/materielCasTests/ellipse_probleme.py index 98d3459da..05ee4efab 100644 --- a/src/Tools/blocFissure/materielCasTests/ellipse_probleme.py +++ b/src/Tools/blocFissure/materielCasTests/ellipse_probleme.py @@ -69,7 +69,7 @@ geompy.addToStudy( Box_1, 'Box_1' ) geompy.addToStudy( Vertex_4, 'Vertex_4' ) geompy.addToStudy( Cut_1, 'Cut_1' ) geompy.addToStudy( ellipse1, 'ellipse1_pb' ) -geompy.ExportBREP(ellipse1, os.path.join(gmu.pathBloc, "materielCasTests/ellipse1_pb.brep")) +geompy.ExportBREP(ellipse1, os.path.join(gmu.pathBloc, "materielCasTests", "ellipse1_pb.brep")) if salome.sg.hasDesktop(): diff --git a/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py b/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py index 754e641fd..be9bf0efa 100644 --- a/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py +++ b/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py @@ -60,7 +60,7 @@ EprouvetteCourbe = geompy.MakeCut(Common_1, Cylinder_3) geomObj_1 = geompy.MakeMarker(0, 0, 0, 1, 0, 0, 0, 1, 0) Sketch_1 = geompy.MakeSketcherOnPlane("Sketcher:F -110.000000 85.000000:T 220.000000 0.000000:T 0.000000 75.000000:T -220.000000 0.000000:WW", geomObj_1 ) SectionDroite = geompy.MakeFaceWires([Sketch_1], 1) -geompy.ExportBREP(SectionDroite, os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteCourbeFiss.brep")) +geompy.ExportBREP(SectionDroite, os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteCourbeFiss.brep")) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) @@ -105,7 +105,7 @@ Nb_Segments_3 = Regular_1D_2.NumberOfSegments(25) Nb_Segments_3.SetDistrType( 0 ) isDone = EprouvetteCourbe_1.Compute() smesh.SetName(EprouvetteCourbe_1, 'EprouvetteCourbe') -EprouvetteCourbe_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteCourbe.med")) +EprouvetteCourbe_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteCourbe.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py b/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py index f1ea29b11..5c98edd6e 100644 --- a/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py +++ b/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py @@ -61,8 +61,8 @@ Plane_2 = geompy.MakePlane(Vertex_1, Line_1, 2000) geomObj_4 = geompy.MakeMarker(0, 0, 0, 1, 0, 0, 0, 1, 0) Sketch_2 = geompy.MakeSketcherOnPlane("Sketcher:F 0.000000 0.000000:T 120.000000 0.000000:T 0.000000 100.000000:T -120.000000 20.000000:WW", Plane_2 ) SectionInclinee = geompy.MakeFaceWires([Sketch_2], 1) -geompy.ExportBREP(sectionDroite, os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteDroiteFissPb1.brep")) -geompy.ExportBREP(SectionInclinee, os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteDroiteFiss2.brep")) +geompy.ExportBREP(sectionDroite, os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteDroiteFissPb1.brep")) +geompy.ExportBREP(SectionInclinee, os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteDroiteFiss2.brep")) Vertex_2 = geompy.MakeVertex(110, -10, 200) Vertex_3 = geompy.MakeVertex(110, 80, 200) Vertex_4 = geompy.MakeVertex(-10, 80, 200) @@ -79,8 +79,8 @@ Line_7 = geompy.MakeLineTwoPnt(Vertex_5, Vertex_6) Face_1_vertex_9 = geompy.GetSubShape(Face_1, [9]) Line_8 = geompy.MakeLineTwoPnt(Vertex_6, Face_1_vertex_9) Face_2 = geompy.MakeFaceWires([Line_5, Line_6, Line_7, Line_8], 1) -geompy.ExportBREP(Face_1, os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteDroiteFiss_1.brep")) -geompy.ExportBREP(Face_2, os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteDroiteFiss_2.brep")) +geompy.ExportBREP(Face_1, os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteDroiteFiss_1.brep")) +geompy.ExportBREP(Face_2, os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteDroiteFiss_2.brep")) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) @@ -139,7 +139,7 @@ Nb_Segments_3 = Regular_1D_2.NumberOfSegments(10,[],[ ]) Nb_Segments_3.SetDistrType( 0 ) isDone = eprouvetteDroite_1.Compute() smesh.SetName(eprouvetteDroite_1, 'eprouvetteDroite') -eprouvetteDroite_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/eprouvetteDroite.med")) +eprouvetteDroite_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "eprouvetteDroite.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/fissureGauche.py b/src/Tools/blocFissure/materielCasTests/fissureGauche.py index c612d2a9a..5c26f0207 100644 --- a/src/Tools/blocFissure/materielCasTests/fissureGauche.py +++ b/src/Tools/blocFissure/materielCasTests/fissureGauche.py @@ -76,7 +76,7 @@ Box_2 = geompy.MakeBoxTwoPnt(Vertex_7, Vertex_6) Common_1 = geompy.MakeCommon(Box_2, Cut_2) objetSain = geompy.MakePartition([Common_1], [Plane_1, Plane_2, Plane_3], [], [], geompy.ShapeType["SOLID"], 0, [], 0) [hauteurs, epaisseurs, Compound_3, Compound_4, Compound_5, Compound_6] = geompy.Propagate(objetSain) -geompy.ExportBREP(faceFiss1, os.path.join(gmu.pathBloc, "materielCasTests/faceGaucheFiss.brep")) +geompy.ExportBREP(faceFiss1, os.path.join(gmu.pathBloc, "materielCasTests", "faceGaucheFiss.brep")) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) @@ -134,7 +134,7 @@ Nb_Segments_3 = Regular_1D_2.NumberOfSegments(5,[],[ ]) Nb_Segments_3.SetDistrType( 0 ) isDone = objetSain_1.Compute() smesh.SetName(objetSain_1, 'objetSain') -objetSain_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/faceGaucheSain.med")) +objetSain_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "faceGaucheSain.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/fissureGauche2.py b/src/Tools/blocFissure/materielCasTests/fissureGauche2.py index 519ea0411..2e0fb8454 100644 --- a/src/Tools/blocFissure/materielCasTests/fissureGauche2.py +++ b/src/Tools/blocFissure/materielCasTests/fissureGauche2.py @@ -53,7 +53,7 @@ Extrusion_2 = geompy.MakePrismVecH(Circle_3, OZ, 1000) Partition_1 = geompy.MakePartition([Extrusion_1], [Extrusion_2], [], [], geompy.ShapeType["FACE"], 0, [], 0) [Face_1,Face_2] = geompy.SubShapes(Partition_1, [18, 13]) FaceFissExt = geompy.MakeFuse(Face_2, Face_1) -geompy.ExportBREP(FaceFissExt, os.path.join(gmu.pathBloc, "materielCasTests/faceGauche2Fiss.brep")) +geompy.ExportBREP(FaceFissExt, os.path.join(gmu.pathBloc, "materielCasTests", "faceGauche2Fiss.brep")) Vertex_2 = geompy.MakeVertex(0, -500, 0) Vertex_3 = geompy.MakeVertex(400, 500, 800) objetSain = geompy.MakeBoxTwoPnt(Vertex_3, Vertex_2) @@ -64,7 +64,7 @@ geompy.addToStudy( Partition_2, 'Partition_2' ) geompy.addToStudyInFather( Partition_2, FaceFissExtSimple, 'FaceFissExtSimple' ) Plane_1 = geompy.MakePlaneLCS(None, 2000, 3) FaceFissExtCoupe = geompy.MakePartition([FaceFissExtSimple], [Plane_1], [], [], geompy.ShapeType["FACE"], 0, [], 0) -geompy.ExportBREP(FaceFissExtCoupe, os.path.join(gmu.pathBloc, "materielCasTests/faceGauche2FissCoupe.brep")) +geompy.ExportBREP(FaceFissExtCoupe, os.path.join(gmu.pathBloc, "materielCasTests", "faceGauche2FissCoupe.brep")) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) @@ -102,7 +102,7 @@ Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa) isDone = Mesh_1.Compute() smesh.SetName(Mesh_1, 'Mesh_1') -Mesh_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/boiteSaine.med")) +Mesh_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "boiteSaine.med")) ## set object names smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1') diff --git a/src/Tools/blocFissure/materielCasTests/vis.py b/src/Tools/blocFissure/materielCasTests/vis.py index 3c898d991..6fdc61ffd 100644 --- a/src/Tools/blocFissure/materielCasTests/vis.py +++ b/src/Tools/blocFissure/materielCasTests/vis.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import logging + import sys import salome @@ -29,6 +31,8 @@ notebook = salome_notebook.notebook import os from blocFissure import gmu +logging.info('start') + ### ### GEOM component ### @@ -115,7 +119,7 @@ Revolution_2 = geompy.MakeRevolution2Ways(generatrice, OY, 65*math.pi/180.0) Fissure = geompy.MakeCommonList([Extrusion_1, Revolution_2], True) fondFiss = geompy.CreateGroup(Fissure, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [9, 7, 4]) -geompy.ExportBREP(Fissure, os.path.join(gmu.pathBloc, "materielCasTests/visFiss.brep")) +geompy.ExportBREP(Fissure, os.path.join(gmu.pathBloc, "materielCasTests", "visFiss.brep")) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) @@ -181,10 +185,13 @@ geompy.addToStudyInFather( Fissure, fondFiss, 'fondFiss' ) ### SMESH component ### +logging.info("Maillage de {}".format(coupe_vis.GetName())) + import SMESH, SALOMEDS from salome.smesh import smeshBuilder smesh = smeshBuilder.New() + coupe_vis_1 = smesh.Mesh(coupe_vis) Regular_1D = coupe_vis_1.Segment() Nb_Segments_1 = Regular_1D.NumberOfSegments(10) @@ -193,8 +200,7 @@ Regular_1D_1 = coupe_vis_1.Segment(geom=tige) Nb_Segments_2 = Regular_1D_1.NumberOfSegments(30) Regular_1D_2 = coupe_vis_1.Segment(geom=section) Nb_Segments_3 = Regular_1D_2.NumberOfSegments(10,1,[ 7, 11, 16, 23 ]) -isDone = coupe_vis_1.Compute() -isDone = coupe_vis_1.SplitQuad( [ 691 ], 1 ) + tige_1 = coupe_vis_1.GroupOnGeom(tige,'tige',SMESH.EDGE) section_1 = coupe_vis_1.GroupOnGeom(section,'section',SMESH.EDGE) tige_haute_1 = coupe_vis_1.GroupOnGeom(tige_haute,'tige_haute',SMESH.EDGE) @@ -204,14 +210,44 @@ section_tete_1 = coupe_vis_1.GroupOnGeom(section_tete,'section_tete',SMESH.EDGE) conge_1 = coupe_vis_1.GroupOnGeom(conge,'conge',SMESH.EDGE) appui_1 = coupe_vis_1.GroupOnGeom(appui,'appui',SMESH.EDGE) p_imp_1 = coupe_vis_1.GroupOnGeom(p_imp,'p_imp',SMESH.EDGE) + +isDone = coupe_vis_1.Compute() +text = "Maillage de {}".format(coupe_vis.GetName()) +if isDone: + logging.debug(text+" : OK") +else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + +# Découpage en 2 triangles du quadrangle dans l'angle +cg_x=0.972772 +cg_y=104.835 +cg_z=0. +l_ids = coupe_vis_1.FindElementsByPoint( cg_x,cg_y,cg_z, SMESH.FACE ) +if ( len(l_ids) != 1 ): + text = "Maillage {}.\nImpossible de trouver l'élément proche de ({},{},{}).".format(coupe_vis.GetName(),cg_x,cg_y,cg_z) + raise Exception(text) +isDone = coupe_vis_1.SplitQuad( l_ids, 1 ) +text = "SplitQuad de l'élément n° {} du maillage de {}".format(l_ids[0],coupe_vis.GetName()) +if isDone: + logging.debug(text+" : OK") +else: + text = "Erreur.\n" + text + logging.info(text) + raise Exception(text) + visHex80 = smesh.CopyMesh( coupe_vis_1, 'visHex80', 1, 0) -[ tige_2, section_2, tige_haute_2, rond_2, tete_2, section_tete_2, conge_2, appui_2, p_imp_2 ] = visHex80.GetGroups() -[ tige_rotated, section_rotated, tige_haute_rotated, rond_rotated, tete_rotated, section_tete_rotated, conge_rotated, appui_rotated, p_imp_rotated, tige_top, section_top, tige_haute_top, rond_top, tete_top, section_tete_top, conge_top, appui_top, p_imp_top ] = visHex80.RotationSweepObjects( [ visHex80 ], [ visHex80 ], [ visHex80 ], SMESH.AxisStruct( 0, 0, 0, 0, 10, 0 ), 0.0785398, 40, 1e-05, 1 ) -[ tige_2, section_2, tige_haute_2, rond_2, tete_2, section_tete_2, conge_2, appui_2, p_imp_2, tige_rotated, tige_top, section_rotated, section_top, tige_haute_rotated, tige_haute_top, rond_rotated, rond_top, tete_rotated, tete_top, section_tete_rotated, section_tete_top, conge_rotated, conge_top, appui_rotated, appui_top, p_imp_rotated, p_imp_top ] = visHex80.GetGroups() + +_ = visHex80.RotationSweepObjects( [ visHex80 ], [ visHex80 ], [ visHex80 ], SMESH.AxisStruct( 0, 0, 0, 0, 10, 0 ), 0.0785398, 40, 1e-05, 1 ) + +[ tige_2, section_2, tige_haute_2, rond_2, tete_2, section_tete_2, conge_2, appui_2, p_imp_2, \ + tige_rotated, tige_top, section_rotated, section_top, tige_haute_rotated, tige_haute_top, \ + rond_rotated, rond_top, tete_rotated, tete_top, section_tete_rotated, section_tete_top, \ + conge_rotated, conge_top, appui_rotated, appui_top, p_imp_rotated, p_imp_top ] = visHex80.GetGroups() Sub_mesh_1 = Regular_1D_1.GetSubMesh() Sub_mesh_2 = Regular_1D_2.GetSubMesh() -visHex80.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/visSain.med")) - +visHex80.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "visSain.med")) ## Set names of Mesh objects smesh.SetName(tige_2, 'tige') From cd96b6d3d47e89f57ba4a83784a5843cd4fb9e18 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Fri, 22 Jan 2021 18:31:51 +0100 Subject: [PATCH 14/57] =?UTF-8?q?Mise=20=C3=A0=20la=20norme=20python=20des?= =?UTF-8?q?=20fichiers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/CasTests/cubeCoin.py | 6 +++--- src/Tools/blocFissure/CasTests/cubeMilieu.py | 6 +++--- src/Tools/blocFissure/CasTests/cubeTransverse.py | 6 +++--- src/Tools/blocFissure/CasTests/cylindre.py | 4 ++-- src/Tools/blocFissure/CasTests/cylindre_2.py | 2 +- src/Tools/blocFissure/CasTests/disquePerce.py | 4 ++-- src/Tools/blocFissure/CasTests/ellipse_1.py | 4 ++-- src/Tools/blocFissure/CasTests/ellipse_2.py | 2 +- .../blocFissure/CasTests/eprouvetteCourbe.py | 4 ++-- .../blocFissure/CasTests/eprouvetteDroite.py | 4 ++-- .../blocFissure/CasTests/eprouvetteDroite_2.py | 2 +- src/Tools/blocFissure/CasTests/faceGauche.py | 4 ++-- src/Tools/blocFissure/CasTests/faceGauche_2.py | 4 ++-- src/Tools/blocFissure/exemple.py | 6 +++--- .../blocFissure/ihm/fissureGenerale_plugin.py | 16 ++++++++-------- 15 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/cubeCoin.py b/src/Tools/blocFissure/CasTests/cubeCoin.py index deed87e4e..d9af4b5ec 100644 --- a/src/Tools/blocFissure/CasTests/cubeCoin.py +++ b/src/Tools/blocFissure/CasTests/cubeCoin.py @@ -21,9 +21,9 @@ import os from blocFissure import gmu -dicoParams = dict(nomCas = 'cubeCoin', - maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/cubeFin.med'), - brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/cubeFin_Coin.brep"), +dicoParams = dict(nomCas = "cubeCoin", + maillageSain = os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin.med"), + brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin_Coin.brep"), edgeFissIds = [6], lgInfluence = 50, meshBrep = (5,10), diff --git a/src/Tools/blocFissure/CasTests/cubeMilieu.py b/src/Tools/blocFissure/CasTests/cubeMilieu.py index f615c8852..fa5a6c42c 100644 --- a/src/Tools/blocFissure/CasTests/cubeMilieu.py +++ b/src/Tools/blocFissure/CasTests/cubeMilieu.py @@ -21,9 +21,9 @@ import os from blocFissure import gmu -dicoParams = dict(nomCas = 'cubeMilieu', - maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/cubeFin.med'), - brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/cubeFin_Milieu.brep"), +dicoParams = dict(nomCas = "cubeMilieu", + maillageSain = os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin.med"), + brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin_Milieu.brep"), edgeFissIds = [6], lgInfluence = 50, meshBrep = (5,10), diff --git a/src/Tools/blocFissure/CasTests/cubeTransverse.py b/src/Tools/blocFissure/CasTests/cubeTransverse.py index c3b45860d..8ddb5bee6 100644 --- a/src/Tools/blocFissure/CasTests/cubeTransverse.py +++ b/src/Tools/blocFissure/CasTests/cubeTransverse.py @@ -21,9 +21,9 @@ import os from blocFissure import gmu -dicoParams = dict(nomCas = 'cubeTransverse', - maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/cubeFin.med'), - brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/cubeFin_Transverse.brep"), +dicoParams = dict(nomCas = "cubeTransverse", + maillageSain = os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin.med"), + brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin_Transverse.brep"), edgeFissIds = [6], lgInfluence = 50, meshBrep = (5,10), diff --git a/src/Tools/blocFissure/CasTests/cylindre.py b/src/Tools/blocFissure/CasTests/cylindre.py index 1e9b2651c..5b72caa36 100644 --- a/src/Tools/blocFissure/CasTests/cylindre.py +++ b/src/Tools/blocFissure/CasTests/cylindre.py @@ -53,7 +53,7 @@ class cylindre(fissureGenerique): """ logging.info("genereMaillageSain %s", self.nomCas) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests/CylindreSain.med")) + ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "CylindreSain.med")) smesh.SetName(objetSain.GetMesh(), 'objetSain') return [objetSain, True] # True : maillage hexa @@ -75,7 +75,7 @@ class cylindre(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/FissInCylindre2.brep")) + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "FissInCylindre2.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [6]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/cylindre_2.py b/src/Tools/blocFissure/CasTests/cylindre_2.py index 517d1d442..241ff0ce8 100644 --- a/src/Tools/blocFissure/CasTests/cylindre_2.py +++ b/src/Tools/blocFissure/CasTests/cylindre_2.py @@ -48,7 +48,7 @@ class cylindre_2(cylindre): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/FissInCylindre.brep")) + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "FissInCylindre.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [3]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/disquePerce.py b/src/Tools/blocFissure/CasTests/disquePerce.py index b0ceb9931..1f821426b 100644 --- a/src/Tools/blocFissure/CasTests/disquePerce.py +++ b/src/Tools/blocFissure/CasTests/disquePerce.py @@ -22,8 +22,8 @@ import os from blocFissure import gmu dicoParams = dict(nomCas = 'disque', - maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/disque.med'), - brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/ellipse_disque.brep"), + maillageSain = os.path.join(gmu.pathBloc, "materielCasTests", "disque.med"), + brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests", "ellipse_disque.brep"), edgeFissIds = [3], lgInfluence = 10, meshBrep = (0.5,2.5), diff --git a/src/Tools/blocFissure/CasTests/ellipse_1.py b/src/Tools/blocFissure/CasTests/ellipse_1.py index ef4ca730a..2d19901d5 100644 --- a/src/Tools/blocFissure/CasTests/ellipse_1.py +++ b/src/Tools/blocFissure/CasTests/ellipse_1.py @@ -55,7 +55,7 @@ class ellipse_1(fissureGenerique): def genereMaillageSain(self, geometriesSaines, meshParams): logging.info("genereMaillageSain %s", self.nomCas) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests/boiteSaine.med")) + ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "boiteSaine.med")) smesh.SetName(objetSain.GetMesh(), 'objetSain') return [objetSain, True] # True : maillage hexa @@ -79,7 +79,7 @@ class ellipse_1(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/ellipse1.brep")) + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "ellipse1.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [3]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/ellipse_2.py b/src/Tools/blocFissure/CasTests/ellipse_2.py index 1b998477f..557a8d678 100644 --- a/src/Tools/blocFissure/CasTests/ellipse_2.py +++ b/src/Tools/blocFissure/CasTests/ellipse_2.py @@ -51,7 +51,7 @@ class ellipse_2(ellipse_1): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/ellipse1_pb.brep")) + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "ellipse1_pb.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [3]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py index 36bde0467..c9f1a2403 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py @@ -49,7 +49,7 @@ class eprouvetteCourbe(fissureGenerique): def genereMaillageSain(self, geometriesSaines, meshParams): logging.info("genereMaillageSain %s", self.nomCas) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteCourbe.med")) + ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteCourbe.med")) smesh.SetName(objetSain.GetMesh(), 'objetSain') return [objetSain, True] # True : maillage hexa @@ -73,7 +73,7 @@ class eprouvetteCourbe(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteCourbeFiss.brep")) + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteCourbeFiss.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [8]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/eprouvetteDroite.py b/src/Tools/blocFissure/CasTests/eprouvetteDroite.py index 1ecb81162..0be566d34 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteDroite.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteDroite.py @@ -52,7 +52,7 @@ class eprouvetteDroite(fissureGenerique): def genereMaillageSain(self, geometriesSaines, meshParams): logging.info("genereMaillageSain %s", self.nomCas) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests/eprouvetteDroite.med")) + ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "eprouvetteDroite.med")) smesh.SetName(objetSain.GetMesh(), 'objetSain') return [objetSain, True] # True : maillage hexa @@ -77,7 +77,7 @@ class eprouvetteDroite(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteDroiteFiss_1.brep")) + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteDroiteFiss_1.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [8]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py b/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py index fc6c04d4c..1db76fcbc 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py @@ -51,7 +51,7 @@ class eprouvetteDroite_2(eprouvetteDroite): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteDroiteFiss_2.brep")) + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteDroiteFiss_2.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [10]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/faceGauche.py b/src/Tools/blocFissure/CasTests/faceGauche.py index 1be9de5c4..0736bdb54 100644 --- a/src/Tools/blocFissure/CasTests/faceGauche.py +++ b/src/Tools/blocFissure/CasTests/faceGauche.py @@ -49,7 +49,7 @@ class faceGauche(fissureGenerique): def genereMaillageSain(self, geometriesSaines, meshParams): logging.info("genereMaillageSain %s", self.nomCas) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests/faceGaucheSain.med")) + ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "faceGaucheSain.med")) smesh.SetName(objetSain.GetMesh(), 'objetSain') return [objetSain, True] # True : maillage hexa @@ -73,7 +73,7 @@ class faceGauche(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/faceGaucheFiss.brep")) + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "faceGaucheFiss.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [6]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/faceGauche_2.py b/src/Tools/blocFissure/CasTests/faceGauche_2.py index 8ebf74361..4bcc36494 100644 --- a/src/Tools/blocFissure/CasTests/faceGauche_2.py +++ b/src/Tools/blocFissure/CasTests/faceGauche_2.py @@ -50,7 +50,7 @@ class faceGauche_2(fissureGenerique): def genereMaillageSain(self, geometriesSaines, meshParams): logging.info("genereMaillageSain %s", self.nomCas) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests/boiteSaine.med")) + ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "boiteSaine.med")) smesh.SetName(objetSain.GetMesh(), 'objetSain') return [objetSain, True] # True : maillage hexa @@ -74,7 +74,7 @@ class faceGauche_2(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/faceGauche2FissCoupe.brep")) + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "faceGauche2FissCoupe.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [14, 9]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/exemple.py b/src/Tools/blocFissure/exemple.py index ba279c38b..1cc04aa27 100644 --- a/src/Tools/blocFissure/exemple.py +++ b/src/Tools/blocFissure/exemple.py @@ -26,9 +26,9 @@ initLog.setDebug() from blocFissure.gmu.casStandard import casStandard -dicoParams = dict(nomCas = 'angleCube', - maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/CubeAngle.med'), - brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep"), +dicoParams = dict(nomCas = "angleCube", + maillageSain = os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngle.med"), + brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngleFiss.brep"), edgeFissIds = [4], lgInfluence = 20, meshBrep = (5,10), diff --git a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py index 2e20dd2ed..875270b34 100644 --- a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py +++ b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py @@ -76,9 +76,9 @@ def fissureGeneraleDlg(context): def initDefaut(self): self.defaut = dict( \ - nomCas = 'angleCube', \ - maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/CubeAngle.med'), \ - brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep"), \ + nomCas = "angleCube", \ + maillageSain = os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngle.med"), \ + brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngleFiss.brep"), \ edgeFissIds = [3], \ lgInfluence = 20, \ meshBrep = (5,10), \ @@ -88,8 +88,8 @@ def fissureGeneraleDlg(context): nbSegCercle = 32, \ areteFaceFissure = 10, \ areteVives = 0, \ - reptrav = '.', \ - nomres = 'maillage_avec_fissure', \ + reptrav = os.curdir, \ + nomres = "maillage_avec_fissure", \ verbosite = 0) @@ -189,7 +189,7 @@ def fissureGeneraleDlg(context): return incomplet def fileDefault(self): - filedef = os.path.expanduser("~/.config/salome/dialogFissureGenerale.dic") + filedef = os.path.expanduser( os.path.join(os.environ["HOME"],".config", "salome", "dialogFissureGenerale.dic") ) print(filedef) return filedef @@ -199,8 +199,8 @@ def fissureGeneraleDlg(context): f.write(str(dico)) def genereExemples(self): - maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/CubeAngle.med') - brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep") + maillageSain = os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngle.med") + brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngleFiss.brep") if (os.path.exists(maillageSain) and os.path.exists(brepFaceFissure)): self.initDialog(self.defaut) else: From e66f809aa1443c6dfd10ceff4d1008dc472bcf69 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 11:34:18 +0100 Subject: [PATCH 15/57] =?UTF-8?q?Mise=20=C3=A0=20jour=20des=20donn=C3=A9es?= =?UTF-8?q?=20des=20cas-test=20de=20cube?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/CasTests/cubeAngle.py | 18 +++++++++++------- src/Tools/blocFissure/CasTests/cubeCoin.py | 20 +++++++++++--------- src/Tools/blocFissure/CasTests/cubeMilieu.py | 20 +++++++++++--------- 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/cubeAngle.py b/src/Tools/blocFissure/CasTests/cubeAngle.py index 456d125f2..32f701b01 100644 --- a/src/Tools/blocFissure/CasTests/cubeAngle.py +++ b/src/Tools/blocFissure/CasTests/cubeAngle.py @@ -47,10 +47,10 @@ class cubeAngle(fissureGenerique): # --------------------------------------------------------------------------- def genereMaillageSain(self, geometriesSaines, meshParams): - logging.info("genereMaillageSain %s", self.nomCas) + logging.info("genereMaillageSain pour '{}'".format(self.nomCas)) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, 'materielCasTests/CubeAngle.med')) - smesh.SetName(objetSain.GetMesh(), 'objetSain') + ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngle.med")) + smesh.SetName(objetSain.GetMesh(), "{}_objetSain".format(self.nomProbleme)) return [objetSain, True] # True : maillage hexa @@ -61,17 +61,18 @@ class cubeAngle(fissureGenerique): lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage) rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure """ - logging.info("setParamShapeFissure %s", self.nomCas) + logging.info("setParamShapeFissure pour '{}'".format(self.nomCas)) self.shapeFissureParams = dict(lgInfluence = 20, rayonPipe = 10) # --------------------------------------------------------------------------- def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams): - logging.info("genereShapeFissure %s", self.nomCas) + """Importe la géométrie de la fissure""" + logging.info("genereShapeFissure pour '{}'".format(self.nomCas)) lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep")) + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngleFiss.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [3]) geompy.addToStudy( shellFiss, 'shellFiss' ) @@ -81,11 +82,13 @@ class cubeAngle(fissureGenerique): coordsNoeudsFissure = genereMeshCalculZoneDefaut(shellFiss, 5 ,10) centre = None + return [shellFiss, centre, lgInfluence, coordsNoeudsFissure, fondFiss] # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - self.maillageFissureParams = dict(nomRep = '.', + logging.info("setParamMaillageFissure pour '{}'".format(self.nomCas)) + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, @@ -101,6 +104,7 @@ class cubeAngle(fissureGenerique): def genereMaillageFissure(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step): + logging.info("genereMaillageFissure pour '{}'".format(self.nomCas)) maillageFissure = construitFissureGenerale(maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step) diff --git a/src/Tools/blocFissure/CasTests/cubeCoin.py b/src/Tools/blocFissure/CasTests/cubeCoin.py index d9af4b5ec..821145c33 100644 --- a/src/Tools/blocFissure/CasTests/cubeCoin.py +++ b/src/Tools/blocFissure/CasTests/cubeCoin.py @@ -24,7 +24,7 @@ from blocFissure import gmu dicoParams = dict(nomCas = "cubeCoin", maillageSain = os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin.med"), brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin_Coin.brep"), - edgeFissIds = [6], + edgeFissIds = [3], lgInfluence = 50, meshBrep = (5,10), rayonPipe = 10, @@ -35,12 +35,14 @@ dicoParams = dict(nomCas = "cubeCoin", # --------------------------------------------------------------------------- -referencesMaillageFissure = dict(Entity_Quad_Pyramid = 0, - Entity_Quad_Triangle = 0, - Entity_Quad_Edge = 0, - Entity_Quad_Penta = 0, - Entity_Quad_Hexa = 0, - Entity_Node = 0, - Entity_Quad_Tetra = 0, - Entity_Quad_Quadrangle = 0) +referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 2740, \ + Entity_Quad_Hexa = 7420, \ + Entity_Node = 46394, \ + Entity_Quad_Edge = 323, \ + Entity_Quad_Triangle = 486, \ + Entity_Quad_Tetra = 8512, \ + Entity_Quad_Pyramid = 460, \ + Entity_Quad_Penta = 80 \ + ) diff --git a/src/Tools/blocFissure/CasTests/cubeMilieu.py b/src/Tools/blocFissure/CasTests/cubeMilieu.py index fa5a6c42c..b276d6b30 100644 --- a/src/Tools/blocFissure/CasTests/cubeMilieu.py +++ b/src/Tools/blocFissure/CasTests/cubeMilieu.py @@ -24,7 +24,7 @@ from blocFissure import gmu dicoParams = dict(nomCas = "cubeMilieu", maillageSain = os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin.med"), brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests", "cubeFin_Milieu.brep"), - edgeFissIds = [6], + edgeFissIds = [3], lgInfluence = 50, meshBrep = (5,10), rayonPipe = 10, @@ -35,12 +35,14 @@ dicoParams = dict(nomCas = "cubeMilieu", # --------------------------------------------------------------------------- -referencesMaillageFissure = dict(Entity_Quad_Pyramid = 0, - Entity_Quad_Triangle = 0, - Entity_Quad_Edge = 0, - Entity_Quad_Penta = 0, - Entity_Quad_Hexa = 0, - Entity_Node = 0, - Entity_Quad_Tetra = 0, - Entity_Quad_Quadrangle = 0) +referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 3140, \ + Entity_Quad_Hexa = 7120, \ + Entity_Node = 61414, \ + Entity_Quad_Edge = 346, \ + Entity_Quad_Triangle = 818, \ + Entity_Quad_Tetra = 19117, \ + Entity_Quad_Pyramid = 990, \ + Entity_Quad_Penta = 230 \ + ) From 361885ae5ebf7208809e71dd0e4c3166f5cd699d Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 11:45:01 +0100 Subject: [PATCH 16/57] Correcion de programmation - fichiers en python --- src/Tools/blocFissure/gmu/casStandard.py | 27 ++- src/Tools/blocFissure/gmu/compoundFromList.py | 7 +- .../gmu/construitFissureGenerale.py | 101 +++++----- .../gmu/construitPartitionsPeauFissure.py | 6 +- .../gmu/creeZoneDefautDansObjetSain.py | 14 +- .../blocFissure/gmu/creeZoneDefautMaillage.py | 10 +- src/Tools/blocFissure/gmu/fissureGenerique.py | 42 ++-- .../gmu/genereMeshCalculZoneDefaut.py | 18 +- .../gmu/getStatsMaillageFissure.py | 12 +- .../gmu/identifieFacesEdgesFissureExterne.py | 37 ++-- .../blocFissure/gmu/mailleFacesFissure.py | 18 +- .../blocFissure/gmu/orderEdgesFromWire.py | 10 +- src/Tools/blocFissure/gmu/peauInterne.py | 5 +- .../gmu/quadranglesToShapeWithCorner.py | 184 +++++++++--------- .../blocFissure/gmu/restreintFaceFissure.py | 10 +- 15 files changed, 270 insertions(+), 231 deletions(-) diff --git a/src/Tools/blocFissure/gmu/casStandard.py b/src/Tools/blocFissure/gmu/casStandard.py index 45c8a30bf..8506cc764 100644 --- a/src/Tools/blocFissure/gmu/casStandard.py +++ b/src/Tools/blocFissure/gmu/casStandard.py @@ -28,9 +28,6 @@ import math import GEOM import SALOMEDS import SMESH -#import StdMeshers -#import GHS3DPlugin -#import NETGENPlugin import logging from .fissureGenerique import fissureGenerique @@ -44,8 +41,8 @@ from .construitFissureGenerale import construitFissureGenerale O, OX, OY, OZ = triedreBase() class casStandard(fissureGenerique): - """ - problème de fissure standard, défini par : + """problème de fissure standard, défini par : + - un maillage sain (hexaèdres), - une face géométrique de fissure, qui doit légèrement dépasser hors du volume maillé - les numéros d'arêtes (edges géométriques) correspondant au fond de fissure @@ -66,7 +63,7 @@ class casStandard(fissureGenerique): if 'reptrav' in self.dicoParams: self.reptrav = self.dicoParams['reptrav'] else: - self.reptrav = '.' + self.reptrav = os.curdir self.numeroCas = numeroCas if self.numeroCas != 0: self.nomCas = self.nomProbleme +"_%d"%(self.numeroCas) @@ -176,11 +173,13 @@ class casStandard(fissureGenerique): if self.references is not None: self.referencesMaillageFissure = self.references else: - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 0, - Entity_Quad_Triangle = 0, - Entity_Quad_Edge = 0, - Entity_Quad_Penta = 0, - Entity_Quad_Hexa = 0, - Entity_Node = 0, - Entity_Quad_Tetra = 0, - Entity_Quad_Quadrangle = 0) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 0, \ + Entity_Quad_Hexa = 0, \ + Entity_Node = 0, \ + Entity_Quad_Edge = 0, \ + Entity_Quad_Triangle = 0, \ + Entity_Quad_Tetra = 0, \ + Entity_Quad_Pyramid = 0, \ + Entity_Quad_Penta = 0 \ + ) diff --git a/src/Tools/blocFissure/gmu/compoundFromList.py b/src/Tools/blocFissure/gmu/compoundFromList.py index 35c5fe25a..bca837966 100644 --- a/src/Tools/blocFissure/gmu/compoundFromList.py +++ b/src/Tools/blocFissure/gmu/compoundFromList.py @@ -25,12 +25,11 @@ from .geomsmesh import geomPublishInFather from . import initLog def compoundFromList(elements, nom=None): - """ - - """ + """compoundFromList""" + logging.debug('start') - shapeList = [] + shapeList = list() for a in elements: if not isinstance(a, list): shapeList.append(a) diff --git a/src/Tools/blocFissure/gmu/construitFissureGenerale.py b/src/Tools/blocFissure/gmu/construitFissureGenerale.py index 9637bab8d..f5bfe12c8 100644 --- a/src/Tools/blocFissure/gmu/construitFissureGenerale.py +++ b/src/Tools/blocFissure/gmu/construitFissureGenerale.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + import logging import salome from .geomsmesh import geompy @@ -82,7 +84,7 @@ def construitFissureGenerale(maillagesSains, TODO: a completer """ logging.info('start') - + shapeDefaut = shapesFissure[0] # faces de fissure, débordant fondFiss = shapesFissure[4] # groupe d'edges de fond de fissure @@ -121,8 +123,7 @@ def construitFissureGenerale(maillagesSains, else: pointInterne = None - #fichierMaillageSain = nomRep + '/' + nomFicSain + '.med' - fichierMaillageFissure = nomRep + '/' + nomFicFissure + '.med' + fichierMaillageFissure = os.path.join (nomRep , '{}.med'.format(nomFicFissure)) # fillings des faces en peau facesDefaut = elementsDefaut[0] @@ -150,17 +151,18 @@ def construitFissureGenerale(maillagesSains, # --- restriction de la face de fissure au domaine solide : # partition face fissure étendue par fillings, on garde la face interne - + facesPortFissure = restreintFaceFissure(shapeDefaut, facesDefaut, pointInterne) - + # --- pipe de fond de fissure, prolongé, partition face fissure par pipe # identification des edges communes pipe et face fissure - + (fissPipe, edgesPipeFiss, edgesFondFiss, wirePipeFiss, wireFondFiss) = partitionneFissureParPipe(shapesFissure, elementsDefaut, rayonPipe) edgesFondFiss, edgesIdByOrientation = orderEdgesFromWire(wireFondFiss) + for i,edge in enumerate(edgesFondFiss): geomPublishInFather(initLog.debug, wireFondFiss, edge, "edgeFondFiss%d"%i) - + # --- peau et face de fissure # # --- partition peau défaut - face de fissure prolongée - wire de fond de fissure prolongée @@ -169,39 +171,40 @@ def construitFissureGenerale(maillagesSains, # liste de partitions face externe - fissure : partitionPeauFissFond (None quand pas d'intersection) partitionsPeauFissFond = construitPartitionsPeauFissure(facesDefaut, fissPipe) - + # --- arêtes vives détectées (dans quadranglesToShapeNoCorner # et quadranglesToShapeWithCorner) - + aretesVivesC = compoundFromList(bordsPartages, "areteVive") - aretesVivesCoupees = [] # ensembles des arêtes vives identifiées sur les faces de peau dans l'itération sur partitionsPeauFissFond - + aretesVivesCoupees = list() # ensembles des arêtes vives identifiées sur les faces de peau dans l'itération sur partitionsPeauFissFond + # --- inventaire des faces de peau coupées par la fissure # pour chaque face de peau : 0, 1 ou 2 faces débouchante du fond de fissure # 0, 1 ou plus edges de la face de fissure externe au pipe - + nbFacesFilling = len(partitionsPeauFissFond) - - ptEdgeFond = [ [] for i in range(nbFacesFilling)] # pour chaque face [points edge fond de fissure aux débouchés du pipe] - fsPipePeau = [ [] for i in range(nbFacesFilling)] # pour chaque face [faces du pipe débouchantes] - edRadFPiPo = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge radiale des faces du pipe débouchantes ] - fsFissuExt = [ [] for i in range(nbFacesFilling)] # pour chaque face [faces de fissure externes au pipe] - edFisExtPe = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)] - edFisExtPi = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge commun au pipe des faces de fissure externes] + logging.info("nbFacesFilling : {} ".format(nbFacesFilling)) + + ptEdgeFond = [ list() for i in range(nbFacesFilling)] # pour chaque face [points edge fond de fissure aux débouchés du pipe] + fsPipePeau = [ list() for i in range(nbFacesFilling)] # pour chaque face [faces du pipe débouchantes] + edRadFPiPo = [ list() for i in range(nbFacesFilling)] # pour chaque face [edge radiale des faces du pipe débouchantes ] + fsFissuExt = [ list() for i in range(nbFacesFilling)] # pour chaque face [faces de fissure externes au pipe] + edFisExtPe = [ list() for i in range(nbFacesFilling)] # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)] + edFisExtPi = [ list() for i in range(nbFacesFilling)] # pour chaque face [edge commun au pipe des faces de fissure externes] facesPeaux = [None for i in range(nbFacesFilling)] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes) - edCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe] - ptCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe] + edCircPeau = [ list() for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe] + ptCircPeau = [ list() for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe] gpedgeBord = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine gpedgeVifs = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupes subshape des edges aux arêtes vives entre fillings - edFissPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes] - ptFisExtPi = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [point commun edFissPeau edCircPeau] - + edFissPeau = [ list() for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes] + ptFisExtPi = [ list() for i in range(nbFacesFilling)] # pour chaque face de peau : [point commun edFissPeau edCircPeau] + for ifil, partitionPeauFissFond in enumerate(partitionsPeauFissFond): if partitionPeauFissFond is not None: dataPPFF,aretesVivesCoupees = identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss, edgesFondFiss, wireFondFiss, aretesVivesC, facesDefaut, centreFondFiss, rayonPipe, - aretesVivesCoupees) + aretesVivesCoupees) ptEdgeFond[ifil] = dataPPFF['endsEdgeFond'] fsPipePeau[ifil] = dataPPFF['facesPipePeau'] edRadFPiPo[ifil] = dataPPFF['edgeRadFacePipePeau'] @@ -216,18 +219,18 @@ def construitFissureGenerale(maillagesSains, edFissPeau[ifil] = dataPPFF['edgesFissurePeau'] ptFisExtPi[ifil] = dataPPFF['verticesPipePeau'] - facesPipePeau = [] - edgeRadFacePipePeau = [] + facesPipePeau = list() + edgeRadFacePipePeau = list() for ifil in range(nbFacesFilling): facesPipePeau += fsPipePeau[ifil] edgeRadFacePipePeau += edRadFPiPo[ifil] - + for i, avc in enumerate(aretesVivesCoupees): name = "areteViveCoupee%d"%i geomPublish(initLog.debug, avc, name) - + # --- identification des faces et edges de fissure externe pour maillage - + (faceFissureExterne, edgesPipeFissureExterneC, wirePipeFissureExterne, edgesPeauFissureExterneC) = identifieFacesEdgesFissureExterne(fsFissuExt, edFisExtPe, edFisExtPi, edgesPipeFiss) @@ -236,52 +239,52 @@ def construitFissureGenerale(maillagesSains, # - détections des points a respecter : jonction des edges/faces constituant la face de fissure externe au pipe # - points sur les edges de fond de fissure et edges pipe/face fissure, # - vecteurs tangents au fond de fissure (normal au disque maillé) - - (centres, gptsdisks, raydisks) = calculePointsAxiauxPipe(edgesFondFiss, edgesIdByOrientation, facesDefaut, + + (centres, gptsdisks, raydisks) = calculePointsAxiauxPipe(edgesFondFiss, edgesIdByOrientation, facesDefaut, centreFondFiss, wireFondFiss, wirePipeFiss, lenSegPipe, rayonPipe, nbsegCercle, nbsegRad) - + # --- recherche des points en trop (externes au volume à remailler) - # - on associe chaque extrémité du pipe à une face filling + # - on associe chaque extrémité du pipe à une face filling # - on part des disques aux extrémités du pipe # - pour chaque disque, on prend les vertices de géométrie, # on marque leur position relative à la face. # - on s'arrete quand tous les noeuds sont dedans - + (idFillingFromBout, idisklim, idiskout) = elimineExtremitesPipe(ptEdgeFond, facesDefaut, centres, gptsdisks, nbsegCercle) # --- construction des listes d'edges radiales sur chaque extrémité débouchante - + (listEdges, idFacesDebouchantes) = construitEdgesRadialesDebouchantes(idisklim, idiskout, gptsdisks, raydisks, facesPipePeau, edgeRadFacePipePeau, nbsegCercle) - + # --- création des points du maillage du pipe sur la face de peau - + (gptsdisks, idisklim) = creePointsPipePeau(listEdges, idFacesDebouchantes, idFillingFromBout, ptEdgeFond, ptFisExtPi, edCircPeau, gptsdisks, idisklim, nbsegRad) - + # --- ajustement precis des points sur edgesPipeFissureExterneC - + gptsdisks = ajustePointsEdgePipeFissure(edgesPipeFissureExterneC, wirePipeFissureExterne, gptsdisks, idisklim) - + # --- maillage effectif du pipe (meshPipe, meshPipeGroups, edgesCircPipeGroup) = construitMaillagePipe(gptsdisks, idisklim, nbsegCercle, nbsegRad) - + # --- edges de bord, faces défaut à respecter - + (internalBoundary, bordsLibres, grpAretesVives) = mailleAretesEtJonction(internalBoundary, aretesVivesCoupees, lgAretesVives) # --- maillage faces de fissure - - (meshFaceFiss, grpFaceFissureExterne, + + (meshFaceFiss, grpFaceFissureExterne, grpEdgesPeauFissureExterne, grpEdgesPipeFissureExterne) = mailleFacesFissure(faceFissureExterne, edgesPipeFissureExterneC, edgesPeauFissureExterneC, meshPipeGroups, areteFaceFissure, rayonPipe, nbsegRad) # --- maillage faces de peau - + meshesFacesPeau = mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, - facesPeaux, edCircPeau, ptCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, + facesPeaux, edCircPeau, ptCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, bordsLibres, grpEdgesPeauFissureExterne, grpAretesVives, edgesCircPipeGroup, dmoyen, rayonPipe, nbsegRad) @@ -318,7 +321,7 @@ def construitFissureGenerale(maillagesSains, isDone = meshBoiteDefaut.Compute() putName(meshBoiteDefaut, "boiteDefaut") logging.info("meshBoiteDefaut fini") - + faceFissure = meshBoiteDefaut.GetMesh().UnionListOfGroups( [ group_faceFissOutPipe, group_faceFissInPipe ], 'FACE1' ) maillageSain = enleveDefaut(maillageSain, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges) @@ -354,5 +357,5 @@ def construitFissureGenerale(maillagesSains, salome.sg.updateObjBrowser() logging.info("maillage fissure fini") - + return maillageComplet diff --git a/src/Tools/blocFissure/gmu/construitPartitionsPeauFissure.py b/src/Tools/blocFissure/gmu/construitPartitionsPeauFissure.py index eff8b18a3..693bf56e7 100644 --- a/src/Tools/blocFissure/gmu/construitPartitionsPeauFissure.py +++ b/src/Tools/blocFissure/gmu/construitPartitionsPeauFissure.py @@ -50,7 +50,7 @@ def construitPartitionsPeauFissure(facesDefaut, fissPipe): isPart = checkDecoupePartition([fissPipe, filling], part) if isPart: # on recrée la partition avec toutes les faces filling en outil pour avoir une face de fissure correcte otherFD = [fd for fd in facesDefaut if fd != filling] - if len(otherFD) > 0: + if otherFD: fissPipePart = geompy.MakePartition([fissPipe], otherFD, [], [], geompy.ShapeType["FACE"], 0, [], 0) else: fissPipePart = fissPipe @@ -59,6 +59,6 @@ def construitPartitionsPeauFissure(facesDefaut, fissPipe): geomPublish(initLog.debug, part, 'partitionPeauFissFond%d'%ipart ) else: partitionsPeauFissFond.append(None) - ipart = ipart +1 + ipart += 1 - return partitionsPeauFissFond \ No newline at end of file + return partitionsPeauFissFond diff --git a/src/Tools/blocFissure/gmu/creeZoneDefautDansObjetSain.py b/src/Tools/blocFissure/gmu/creeZoneDefautDansObjetSain.py index 412516fcb..0e87d7088 100644 --- a/src/Tools/blocFissure/gmu/creeZoneDefautDansObjetSain.py +++ b/src/Tools/blocFissure/gmu/creeZoneDefautDansObjetSain.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + import logging from .geomsmesh import smesh import SMESH @@ -62,7 +64,7 @@ def creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure, nomRep = maillageFissureParams['nomRep'] nomFicSain = maillageFissureParams['nomFicSain'] - fichierMaillageSain = nomRep + '/' + nomFicSain + '.med' + fichierMaillageSain = os.path.join (nomRep , '{}.med'.format(nomFicSain)) # --- centre de fond de fissure et tangente @@ -80,10 +82,10 @@ def creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure, [maillageSain, internalBoundary, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges] = \ peauInterne(fichierMaillageSain, shapeDefaut, nomZones) - facesDefaut = [] - centresDefaut = [] - normalsDefaut =[] - extrusionsDefaut = [] + facesDefaut = list() + centresDefaut = list() + normalsDefaut = list() + extrusionsDefaut = list() isPlane = False if isHexa and not isPlane: meshQuad = smesh.CopyMesh( zoneDefaut_skin, 'meshQuad', 0, 0) @@ -100,7 +102,7 @@ def creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure, else: [facesDefaut, centreDefaut, normalDefaut, extrusionDefaut] = \ creeZoneDefautGeom( geometrieSaine, shapeDefaut, origShapes, verticesShapes, dmoyen, lgExtrusion) - bordsPartages = [] + bordsPartages = list() for face in facesDefaut: bordsPartages.append([None,None]) # TODO : traitement des arêtes vives ? fillconts = facesDefaut diff --git a/src/Tools/blocFissure/gmu/creeZoneDefautMaillage.py b/src/Tools/blocFissure/gmu/creeZoneDefautMaillage.py index 73fa23755..169b0d963 100644 --- a/src/Tools/blocFissure/gmu/creeZoneDefautMaillage.py +++ b/src/Tools/blocFissure/gmu/creeZoneDefautMaillage.py @@ -53,11 +53,11 @@ def creeZoneDefautMaillage(maillagesSains, shapeDefaut, tailleDefaut, isHexa = maillagesSains[1] lists = maillageSain.CreateHoleSkin(tailleDefaut, shapeDefaut, nomZones, coordsNoeudsFissure) - logging.debug("lists=%s", lists) + logging.debug("lists={}".format(lists)) trace = True - origShapes = [] - verticesShapes = [] + origShapes = list() + verticesShapes = list() cumul = 0 # somme des distances carrées entre point ordonnés (taille des arêtes) nb = 0 # nombre d'arêtes évaluées @@ -65,8 +65,8 @@ def creeZoneDefautMaillage(maillagesSains, shapeDefaut, tailleDefaut, for aList in lists: aShape = aList[0] origShapes.append(aShape) - logging.debug(" shapeId %s", aShape) - vertices = [] + logging.debug(" shapeId {}".format(aShape)) + vertices = list() xyz0 = None for inode in range(1, len(aList)): xyz = maillageSain.GetNodeXYZ(aList[inode]) diff --git a/src/Tools/blocFissure/gmu/fissureGenerique.py b/src/Tools/blocFissure/gmu/fissureGenerique.py index e3f214845..ccae1a82c 100644 --- a/src/Tools/blocFissure/gmu/fissureGenerique.py +++ b/src/Tools/blocFissure/gmu/fissureGenerique.py @@ -17,6 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""fissureGenerique""" import logging @@ -24,9 +25,9 @@ from blocFissure import gmu from blocFissure.gmu.initEtude import initEtude from blocFissure.gmu.getStatsMaillageFissure import getStatsMaillageFissure -class fissureGenerique(): - """ - classe générique problème fissure: +class fissureGenerique(object): + """classe générique problème fissure: + génération géométrie et maillage sain définition et positionnement d'une fissure génération d'un bloc défaut inséré dans le maillage sain @@ -41,46 +42,58 @@ class fissureGenerique(): self.fissureLongue = False def setParamGeometrieSaine(self): - self.geomParams = {} + """setParamGeometrieSaine""" + self.geomParams = dict() def genereGeometrieSaine(self, geomParams): + """genereGeometrieSaine""" geometriesSaines = [None] return geometriesSaines def setParamMaillageSain(self): - self.meshParams = {} + """setParamMaillageSain""" + self.meshParams = dict() def genereMaillageSain(self, geometriesSaines, meshParams): + """genereMaillageSain""" maillagesSains = [None] return maillagesSains def setParamShapeFissure(self): - self.shapeFissureParams = {} + """setParamShapeFissure""" + self.shapeFissureParams = dict() def genereShapeFissure(self, geometriesSaines, geomParams, shapeFissureParams): + """genereShapeFissure""" shapesFissure = [None] return shapesFissure def setParamMaillageFissure(self): - self.maillageFissureParams = {} + """setParamMaillageFissure""" + self.maillageFissureParams = dict() def genereZoneDefaut(self, geometriesSaines, maillagesSains, shapesFissure, maillageFissureParams): + """genereZoneDefaut""" elementsDefaut = [None] return elementsDefaut def genereMaillageFissure(self, geometriesSaines, maillagesSains, shapesFissure, - maillageFissureParams, elementsDefaut, step): + maillageFissureParams, elementsDefaut): + """genereMaillageFissure""" maillageFissure = None return maillageFissure def setReferencesMaillageFissure(self): - referencesMaillageFissure = {} + """setReferencesMaillageFissure""" + referencesMaillageFissure = dict() return referencesMaillageFissure # --------------------------------------------------------------------------- def executeProbleme(self, step=-1): - logging.info(" --- executeProbleme %s", self.nomCas) + """executeProbleme""" + texte = " --- fissureGenerique.executeProbleme pour '{}', step = {}".format(self.nomCas,step) + logging.info(texte) if step == 0: return @@ -109,10 +122,5 @@ class fissureGenerique(): self.maillageFissureParams, elementsDefaut, step) self.setReferencesMaillageFissure() - mesures = getStatsMaillageFissure(maillageFissure, self.referencesMaillageFissure, self.maillageFissureParams) - - - - - - + ok_maillage = getStatsMaillageFissure(maillageFissure, self.referencesMaillageFissure, self.maillageFissureParams) + return ok_maillage diff --git a/src/Tools/blocFissure/gmu/genereMeshCalculZoneDefaut.py b/src/Tools/blocFissure/gmu/genereMeshCalculZoneDefaut.py index fedf48e70..788b731af 100644 --- a/src/Tools/blocFissure/gmu/genereMeshCalculZoneDefaut.py +++ b/src/Tools/blocFissure/gmu/genereMeshCalculZoneDefaut.py @@ -41,6 +41,8 @@ def genereMeshCalculZoneDefaut(facefiss, minSize, maxSize): dans une liste sous la forme : [X0, Y0, Z0, ..., Xn, Yn, Zn]""" logging.info('start') + text = "Maillage de '{}'".format(facefiss.GetName()) + logging.info(text) meshFissure = smesh.Mesh(facefiss) algo2d = meshFissure.Triangle(algo=smeshBuilder.NETGEN_1D2D) @@ -51,15 +53,27 @@ def genereMeshCalculZoneDefaut(facefiss, minSize, maxSize): hypo2d.SetFineness( 2 ) hypo2d.SetMinSize( minSize ) hypo2d.SetQuadAllowed( 0 ) - isDone = meshFissure.Compute() smesh.SetName(algo2d, "algo2d_zoneFiss") smesh.SetName(hypo2d, "hypo1d_zoneFiss") - coordsNoeudsFissure = [] + isDone = meshFissure.Compute() + + if isDone: + logging.info(text+" : OK") + logging.debug(text+" : OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + + coordsNoeudsFissure = list() nodeIds = meshFissure.GetNodesId() for id in nodeIds: coords = meshFissure.GetNodeXYZ(id) coordsNoeudsFissure.append(coords[0]) coordsNoeudsFissure.append(coords[1]) coordsNoeudsFissure.append(coords[2]) + + logging.info('end') + return coordsNoeudsFissure diff --git a/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py b/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py index af9dfbe63..2c0553ab0 100644 --- a/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py +++ b/src/Tools/blocFissure/gmu/getStatsMaillageFissure.py @@ -40,7 +40,7 @@ def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissure fichierNewRef = os.path.join(nomRep, "{}.new".format(nomFicFissure)) logging.debug("fichierStatMaillageFissure=%s", fichierStatMaillageFissure) - OK = False + ok_maillage = False if maillage is not None: mesures = maillage.GetMeshInfo() d_resu = dict() @@ -50,12 +50,12 @@ def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissure logging.debug("dico mesures %s", d_resu) text_2 = "" - OK = True + ok_maillage = True with open(fichierStatMaillageFissure, "w") as fic_stat : for key in ('Entity_Quad_Quadrangle', 'Entity_Quad_Hexa'): if d_resu[key] != referencesMaillageFissure[key]: text = "Ecart" - OK = False + ok_maillage = False else: text = "Valeur_OK" text += ": {} reference: {} calcul: {}".format(key,referencesMaillageFissure[key],d_resu[key]) @@ -67,7 +67,7 @@ def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissure if (d_resu[key] < (1.0 - tolerance)*referencesMaillageFissure[key]) \ or (d_resu[key] > (1.0 + tolerance)*referencesMaillageFissure[key]): text = "Ecart" - OK = False + ok_maillage = False else: text = "Valeur_OK" text += ": {} reference: {} calcul: {}".format(key,referencesMaillageFissure[key],d_resu[key]) @@ -79,7 +79,7 @@ def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissure with open(fichierNewRef, "w") as fic_info : fic_info.write(text_2[:-4]+" \\") - if OK: + if ok_maillage: print ("Calcul cohérent avec la référence.") else: text = "Calcul différent de la référence.\n" @@ -88,4 +88,4 @@ def getStatsMaillageFissure(maillage, referencesMaillageFissure, maillageFissure text += "Il faut l'insérer pour créer le dictionnaire 'referencesMaillageFissure' dans le paramétrage du cas." print (text) - return OK + return ok_maillage diff --git a/src/Tools/blocFissure/gmu/identifieFacesEdgesFissureExterne.py b/src/Tools/blocFissure/gmu/identifieFacesEdgesFissureExterne.py index 287f24a4b..bdb6d905f 100644 --- a/src/Tools/blocFissure/gmu/identifieFacesEdgesFissureExterne.py +++ b/src/Tools/blocFissure/gmu/identifieFacesEdgesFissureExterne.py @@ -26,45 +26,50 @@ from .geomsmesh import geomPublishInFather from . import initLog def identifieFacesEdgesFissureExterne(fsFissuExt, edFisExtPe, edFisExtPi, edgesPipeFiss): - """ - identification des faces et edges de fissure externe pour maillage - """ + """identification des faces et edges de fissure externe pour maillage""" logging.info('start') - - facesFissExt = [] - edgesFissExtPeau = [] - edgesFissExtPipe = [] + + logging.debug("---------------------------- fsFissuExt : {} ".format(fsFissuExt)) + facesFissExt = list() + edgesFissExtPeau = list() + edgesFissExtPipe = list() for ifil in range(len(fsFissuExt)): # TODO: éliminer les doublons (comparer tous les vertices triés, avec mesure de distance ?) facesFissExt += fsFissuExt[ifil] edgesFissExtPeau += edFisExtPe[ifil] edgesFissExtPipe += edFisExtPi[ifil] - logging.debug("---------------------------- identification faces de fissure externes au pipe :%s ", len(facesFissExt)) + logging.debug("---------------------------- identification faces de fissure externes au pipe : {}".format(len(facesFissExt))) # regroupement des faces de fissure externes au pipe. - - if len(facesFissExt) > 1: + + if not facesFissExt: + logging.info("---------------------------- fsFissuExt : {} ".format(fsFissuExt)) + raise Exception("stop identifieFacesEdgesFissureExterne ; aucune face de fissure externe au pipe n'a été trouvée.") + + elif len(facesFissExt) > 1: faceFissureExterne = geompy.MakePartition(facesFissExt, [], [], [], geompy.ShapeType["FACE"], 0, [], 0) edgesPipeFissureExterneC = geompy.GetInPlace(faceFissureExterne, geompy.MakeCompound(edgesPipeFiss)) # edgesFissExtPipe peut ne pas couvrir toute la longueur # edgesPeauFissureExterneC = geompy.GetInPlace(faceFissureExterne, geompy.MakeCompound(edgesFissExtPeau)) # il peut manquer des edges de faceFissureExterne en contact avec la peau dans edgesFissExtPeau (isDone, closedFreeBoundaries, openFreeBoundaries) = geompy.GetFreeBoundary(faceFissureExterne) - edgesBordFFE = [] + edgesBordFFE = list() for bound in closedFreeBoundaries: edgesBordFFE += geompy.ExtractShapes(bound, geompy.ShapeType["EDGE"], False) edgesBordFFEid = [ (ed,geompy.GetSubShapeID(faceFissureExterne, ed)) for ed in edgesBordFFE] - logging.debug("edgesBordFFEid %s", edgesBordFFEid) + logging.debug("edgesBordFFEid {}".format(edgesBordFFEid)) edgesPPE = geompy.ExtractShapes(edgesPipeFissureExterneC, geompy.ShapeType["EDGE"], False) edgesPPEid = [ geompy.GetSubShapeID(faceFissureExterne, ed) for ed in edgesPPE] - logging.debug("edgesPPEid %s", edgesPPEid) + logging.debug("edgesPPEid {}".format(edgesPPEid)) edgesPFE = [ edid[0] for edid in edgesBordFFEid if edid[1] not in edgesPPEid] # on garde toutes les edges de bord non en contact avec le pipe - logging.debug("edgesPFE %s", edgesPFE) + logging.debug("edgesPFE {}".format(edgesPFE)) edgesPeauFissureExterneC = geompy.MakeCompound(edgesPFE) + else: faceFissureExterne = facesFissExt[0] edgesPeauFissureExterneC = geompy.MakeCompound(edgesFissExtPeau) edgesPipeFissureExterneC = geompy.MakeCompound(edgesFissExtPipe) + wirePipeFissureExterne = geompy.MakeWire(geompy.ExtractShapes(edgesPipeFissureExterneC, geompy.ShapeType["EDGE"], False)) geomPublish(initLog.debug, faceFissureExterne, "faceFissureExterne") geomPublishInFather(initLog.debug, faceFissureExterne, edgesPeauFissureExterneC, "edgesPeauFissureExterne") geomPublishInFather(initLog.debug, faceFissureExterne, edgesPipeFissureExterneC, "edgesPipeFissureExterne") - - return (faceFissureExterne, edgesPipeFissureExterneC, wirePipeFissureExterne, edgesPeauFissureExterneC) \ No newline at end of file + + return (faceFissureExterne, edgesPipeFissureExterneC, wirePipeFissureExterne, edgesPeauFissureExterneC) diff --git a/src/Tools/blocFissure/gmu/mailleFacesFissure.py b/src/Tools/blocFissure/gmu/mailleFacesFissure.py index 82d4d5e9f..0f2f9f03d 100644 --- a/src/Tools/blocFissure/gmu/mailleFacesFissure.py +++ b/src/Tools/blocFissure/gmu/mailleFacesFissure.py @@ -33,6 +33,7 @@ def mailleFacesFissure(faceFissureExterne, edgesPipeFissureExterneC, edgesPeauFi maillage faces de fissure """ logging.info('start') + logging.info("Maillage de {}".format(faceFissureExterne.GetName())) meshFaceFiss = smesh.Mesh(faceFissureExterne) algo2d = meshFaceFiss.Triangle(algo=smeshBuilder.NETGEN_1D2D) @@ -46,18 +47,25 @@ def mailleFacesFissure(faceFissureExterne, edgesPipeFissureExterneC, edgesPeauFi putName(algo2d.GetSubMesh(), "faceFiss") putName(algo2d, "algo2d_faceFiss") putName(hypo2d, "hypo2d_faceFiss") - + + logging.info('Récupération des arêtes de {}'.format(edgesPipeFissureExterneC.GetName())) algo1d = meshFaceFiss.UseExisting1DElements(geom=edgesPipeFissureExterneC) hypo1d = algo1d.SourceEdges([ meshPipeGroups['edgeFaceFissGroup'] ],0,0) putName(algo1d.GetSubMesh(), "edgeFissPeau") putName(algo1d, "algo1d_edgeFissPeau") putName(hypo1d, "hypo1d_edgeFissPeau") - - isDone = meshFaceFiss.Compute() - logging.info("meshFaceFiss fini") grpFaceFissureExterne = meshFaceFiss.GroupOnGeom(faceFissureExterne, "fisOutPi", SMESH.FACE) grpEdgesPeauFissureExterne = meshFaceFiss.GroupOnGeom(edgesPeauFissureExterneC,'edgesPeauFissureExterne',SMESH.EDGE) grpEdgesPipeFissureExterne = meshFaceFiss.GroupOnGeom(edgesPipeFissureExterneC,'edgesPipeFissureExterne',SMESH.EDGE) - return (meshFaceFiss, grpFaceFissureExterne, grpEdgesPeauFissureExterne, grpEdgesPipeFissureExterne) \ No newline at end of file + isDone = meshFaceFiss.Compute() + text = "meshFaceFiss fini" + if isDone: + logging.info(text) + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + + return (meshFaceFiss, grpFaceFissureExterne, grpEdgesPeauFissureExterne, grpEdgesPipeFissureExterne) diff --git a/src/Tools/blocFissure/gmu/orderEdgesFromWire.py b/src/Tools/blocFissure/gmu/orderEdgesFromWire.py index cb93af397..46468f539 100644 --- a/src/Tools/blocFissure/gmu/orderEdgesFromWire.py +++ b/src/Tools/blocFissure/gmu/orderEdgesFromWire.py @@ -32,7 +32,7 @@ def orderEdgesFromWire(aWire): logging.info("start") edges = geompy.ExtractShapes(aWire, geompy.ShapeType["EDGE"], False) - idverts = {} + idverts = dict() for i, edge in enumerate(edges): verts = geompy.ExtractShapes(edge, geompy.ShapeType["VERTEX"], True) # idverts[(i,0)] = verts[0] @@ -46,7 +46,7 @@ def orderEdgesFromWire(aWire): idverts[(i,0)] = verts[1] idverts[(i,1)] = verts[0] - idsubs = {} + idsubs = dict() for kv, sub in idverts.items(): subid = geompy.GetSubShapeID(aWire, sub) if subid in list(idsubs.keys()): @@ -63,7 +63,7 @@ def orderEdgesFromWire(aWire): debut = kv[0] else: fin = kv[0] - logging.debug("nombre d'edges: %s, indice edge début: %s, fin: %s",len(edges), debut, fin) + logging.debug("nombre d'edges: {}, indice edge début: {}, fin: {}".format(len(edges), debut, fin)) if debut < 0: logging.critical("les edges du wire ne sont pas orientées dans le même sens: pas de début trouvé") return edges, list(range(len(edges))) @@ -82,9 +82,9 @@ def orderEdgesFromWire(aWire): logging.critical("les edges du wire ne sont pas orientées dans le même sens: une edge à l'envers") return edges, list(range(len(edges))) - logging.debug("liste des edges ordonnées selon le sens de parcours: %s", orderedList) + logging.debug("liste des edges ordonnées selon le sens de parcours : {}".format(orderedList)) accessList = list(range(len(orderedList))) for i,k in enumerate(orderedList): accessList[k] = i - logging.info("position ordonnée des edges selon le sens de parcours: %s", accessList) + logging.info("position ordonnée des edges selon le sens de parcours : {}".format(accessList)) return edges, accessList diff --git a/src/Tools/blocFissure/gmu/peauInterne.py b/src/Tools/blocFissure/gmu/peauInterne.py index defa214fe..cb444f285 100644 --- a/src/Tools/blocFissure/gmu/peauInterne.py +++ b/src/Tools/blocFissure/gmu/peauInterne.py @@ -34,6 +34,7 @@ def peauInterne(fichierMaillage, shapeDefaut, nomZones): """ Retrouve les groupes de défaut dans le maillage sain modifié par CreateHoleSkin (CreeZoneDefautMaillage) On récupère le volume et la peau de la zone de défaut, les éventuelles faces et arêtes internes de cette zone. + Remarque : intérêt du passage par fichierMaillage plutôt que par maillageSain ? """ logging.info("start") ([maillageSain], status) = smesh.CreateMeshesFromMED(fichierMaillage) @@ -86,8 +87,8 @@ def peauInterne(fichierMaillage, shapeDefaut, nomZones): maillageDefautCible = smesh.CopyMesh(zoneDefaut_skin, 'maillageCible', 0, 0) listOfCorner = lookForCorner(maillageDefautCible) - logging.debug("listOfCorner = %s", listOfCorner) - if len(listOfCorner) > 0: + logging.debug("listOfCorner = {}".format(listOfCorner)) + if listOfCorner: logging.info("présence de coins à la surface externe de la zone à reconstruire") zoneDefaut_skin, internalBoundary = fusionMaillageDefaut(maillageSain, maillageDefautCible, internalBoundary, zoneDefaut_skin, shapeDefaut, listOfCorner) diff --git a/src/Tools/blocFissure/gmu/quadranglesToShapeWithCorner.py b/src/Tools/blocFissure/gmu/quadranglesToShapeWithCorner.py index 135ef968b..6b5956786 100644 --- a/src/Tools/blocFissure/gmu/quadranglesToShapeWithCorner.py +++ b/src/Tools/blocFissure/gmu/quadranglesToShapeWithCorner.py @@ -36,101 +36,101 @@ from .listOfExtraFunctions import createLinesFromMesh # ----------------------------------------------------------------------------- # --- groupe de quadrangles de face transformé en face géométrique par filling -def quadranglesToShapeWithCorner(meshQuad, shapeDefaut, shapeFissureParams, centreFondFiss, listOfCorners): - """ """ - # TODO: rédiger la docstring - - logging.info("start") +def quadranglesToShapeWithCorner(meshQuad, shapeDefaut, listOfCorners): + """ """ + # TODO: rédiger la docstring - #fillings = [[], []] - tmpFillings = [] - noeuds_bords = [] - #bords_Partages = [[], []] - tmpBords = [] - fillconts = [] - idFilToCont = [] - - facesNonCoupees = [] - facesCoupees = [] - aretesNonCoupees = [] - aretesCoupees = [] - - setOfNodes = [] - setOfLines = [] - listOfEdges = [] - # On crée une liste contenant le maillage de chaque face. - listOfNewMeshes = createNewMeshesFromCorner(meshQuad, listOfCorners) - for msh in listOfNewMeshes: - # On crée une liste de noeuds correspondant aux faces suivant - # le modèle liste[face][ligne][noeud]. - lines = createLinesFromMesh(msh, listOfCorners[0]) - setOfNodes.append(lines) - - for face in setOfNodes: - tmpFace = [] - for line in face: - # On possède l'information 'ID' de chaque noeud composant chaque - # ligne de chaque face. A partir de l'ID, on crée un vertex. Un - # ensemble de vertices constitue une ligne. Un ensemble de lignes - # constitue une face. - tmpCoords = [meshQuad.GetNodeXYZ(node) for node in line] - tmpPoints = [geompy.MakeVertex(val[0], val[1], val[2]) for val in tmpCoords] - line = geompy.MakeInterpol(tmpPoints, False, False) - tmpFace.append(line) - setOfLines.append(tmpFace) - - for i, face in enumerate(setOfLines): - # A partir des lignes de chaque face, - # on recrée un objet GEOM temporaire par filling. - filling = geompy.MakeFilling(geompy.MakeCompound(face), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True) - geomPublish(initLog.debug, filling, 'filling_{0}'.format(i + 1)) - tmpFillings.append(filling) + logging.info("start") + + #fillings = [list(), list()] + tmpFillings = list() + noeuds_bords = list() + #bords_Partages = [list(), list()] + tmpBords = list() + fillconts = list() + idFilToCont = list() + + facesNonCoupees = list() + facesCoupees = list() + aretesNonCoupees = list() + aretesCoupees = list() + + setOfNodes = list() + setOfLines = list() + listOfEdges = list() + # On crée une liste contenant le maillage de chaque face. + listOfNewMeshes = createNewMeshesFromCorner(meshQuad, listOfCorners) + for msh in listOfNewMeshes: + # On crée une liste de noeuds correspondant aux faces suivant + # le modèle liste[face][ligne][noeud]. + #lines = createLinesFromMesh(msh, listOfCorners[0]) + lines = createLinesFromMesh(msh) + setOfNodes.append(lines) + + for face in setOfNodes: + tmpFace = list() + for line in face: + # On possède l'information 'ID' de chaque noeud composant chaque + # ligne de chaque face. A partir de l'ID, on crée un vertex. Un + # ensemble de vertices constitue une ligne. Un ensemble de lignes + # constitue une face. + tmpCoords = [meshQuad.GetNodeXYZ(node) for node in line] + tmpPoints = [geompy.MakeVertex(val[0], val[1], val[2]) for val in tmpCoords] + line = geompy.MakeInterpol(tmpPoints, False, False) + tmpFace.append(line) + setOfLines.append(tmpFace) + + for i, face in enumerate(setOfLines): + # A partir des lignes de chaque face, + # on recrée un objet GEOM temporaire par filling. + filling = geompy.MakeFilling(geompy.MakeCompound(face), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True) + geomPublish(initLog.debug, filling, 'filling_{}'.format(i + 1)) + tmpFillings.append(filling) + + for face in setOfNodes: + # On prend la première ligne qui correspond aux bords partagés + listOfEdges.append(face[0]) + + for edge in listOfEdges: + # On utilise les points de bords pour créer des aretes vives + tmpCoords = [meshQuad.GetNodeXYZ(node) for node in list(edge)] + tmpPoints = [geompy.MakeVertex(val[0], val[1], val[2]) for val in tmpCoords] + line = geompy.MakeInterpol(tmpPoints, False, False) + tmpBords.append(line) + + for i, filling in enumerate(tmpFillings): + tmpPartition = geompy.MakePartition([filling], [shapeDefaut], list(), list(), geompy.ShapeType["FACE"], 0, list(), 0, True) + tmpExplodeRef = geompy.ExtractShapes(filling, geompy.ShapeType["EDGE"], True) + tmpExplodeNum = geompy.ExtractShapes(tmpPartition, geompy.ShapeType["EDGE"], True) + if len(tmpExplodeRef) == len(tmpExplodeNum): + geomPublish(initLog.debug, filling, "faceNonCoupee_{}".format(i + 1)) + facesNonCoupees.append(filling) + else: + geomPublish(initLog.debug, filling, "faceCoupee_{}".format(i + 1)) + facesCoupees.append(filling) + fillings = facesCoupees, facesNonCoupees + + for i, filling in enumerate(tmpBords): + tmpPartition = geompy.MakePartition([shapeDefaut], [filling], list(), list(), geompy.ShapeType["SHELL"], 0, list(), 0, True) + tmpExplodeRef = geompy.ExtractShapes(shapeDefaut, geompy.ShapeType["EDGE"], True) + geompy.ExtractShapes(shapeDefaut, geompy.ShapeType["VERTEX"], True) + tmpExplodeNum = geompy.ExtractShapes(tmpPartition, geompy.ShapeType["EDGE"], True) + geompy.ExtractShapes(tmpPartition, geompy.ShapeType["VERTEX"], True) + if len(tmpExplodeRef) == len(tmpExplodeNum): + geomPublish(initLog.debug, filling, "areteNonCoupee_{}".format(i + 1)) + aretesNonCoupees.append(filling) + else: + geomPublish(initLog.debug, filling, "areteCoupee_{}".format(i + 1)) + aretesCoupees.append(filling) + bords_Partages = aretesCoupees, aretesNonCoupees - for face in setOfNodes: - # On prend la première ligne qui correspond aux bords partagés - listOfEdges.append(face[0]) - - for edge in listOfEdges: - # On utilise les points de bords pour créer des aretes vives - tmpCoords = [meshQuad.GetNodeXYZ(node) for node in list(edge)] - tmpPoints = [geompy.MakeVertex(val[0], val[1], val[2]) for val in tmpCoords] - line = geompy.MakeInterpol(tmpPoints, False, False) - tmpBords.append(line) - - for i, filling in enumerate(tmpFillings): - tmpPartition = geompy.MakePartition([filling], [shapeDefaut], [], [], geompy.ShapeType["FACE"], 0, [], 0, True) - tmpExplodeRef = geompy.ExtractShapes(filling, geompy.ShapeType["EDGE"], True) - tmpExplodeNum = geompy.ExtractShapes(tmpPartition, geompy.ShapeType["EDGE"], True) - if len(tmpExplodeRef) == len(tmpExplodeNum): - geomPublish(initLog.debug, filling, "faceNonCoupee_{0}".format(i + 1)) - facesNonCoupees.append(filling) - else: - geomPublish(initLog.debug, filling, "faceCoupee_{0}".format(i + 1)) - facesCoupees.append(filling) - fillings = facesCoupees, facesNonCoupees - - for i, filling in enumerate(tmpBords): - tmpPartition = geompy.MakePartition([shapeDefaut], [filling], [], [], geompy.ShapeType["SHELL"], 0, [], 0, True) - tmpExplodeRef = geompy.ExtractShapes(shapeDefaut, geompy.ShapeType["EDGE"], True) + geompy.ExtractShapes(shapeDefaut, geompy.ShapeType["VERTEX"], True) - tmpExplodeNum = geompy.ExtractShapes(tmpPartition, geompy.ShapeType["EDGE"], True) + geompy.ExtractShapes(tmpPartition, geompy.ShapeType["VERTEX"], True) - if len(tmpExplodeRef) == len(tmpExplodeNum): - geomPublish(initLog.debug, filling, "areteNonCoupee_{0}".format(i + 1)) - aretesNonCoupees.append(filling) - else: - geomPublish(initLog.debug, filling, "areteCoupee_{0}".format(i + 1)) - aretesCoupees.append(filling) - bords_Partages = aretesCoupees, aretesNonCoupees - # TODO: A enlever # for i, face in enumerate(setOfLines): -# for j, line in enumerate(face): -# geomPublish(initLog.debug, line, 'face{0}_ligne{1}'.format(i + 1, j + 1)) +# for j, line in enumerate(face): +# geomPublish(initLog.debug, line, 'face{0}_ligne{1}'.format(i + 1, j + 1)) - #TODO: A enlever +#TODO: A enlever # for i, filling in enumerate(fillings[0]): -# geomPublish(initLog.debug, filling, 'filling_{0}'.format(i + 1)) -# for j, line in enumerate(setOfLines[i]): -# geompy.addToStudyInFather(filling, line, 'line_{0}'.format(j + 1)) - - return fillings, noeuds_bords, bords_Partages, fillconts, idFilToCont - \ No newline at end of file +# geomPublish(initLog.debug, filling, 'filling_{0}'.format(i + 1)) +# for j, line in enumerate(setOfLines[i]): +# geompy.addToStudyInFather(filling, line, 'line_{0}'.format(j + 1)) + + return fillings, noeuds_bords, bords_Partages, fillconts, idFilToCont diff --git a/src/Tools/blocFissure/gmu/restreintFaceFissure.py b/src/Tools/blocFissure/gmu/restreintFaceFissure.py index 0305a372d..b512bbae2 100644 --- a/src/Tools/blocFissure/gmu/restreintFaceFissure.py +++ b/src/Tools/blocFissure/gmu/restreintFaceFissure.py @@ -28,8 +28,8 @@ import traceback from .fissError import fissError def restreintFaceFissure(shapeDefaut, facesDefaut, pointInterne): - """ - restriction de la face de fissure au domaine solide + """restriction de la face de fissure au domaine solide + partition face fissure étendue par fillings """ logging.info('start') @@ -39,7 +39,7 @@ def restreintFaceFissure(shapeDefaut, facesDefaut, pointInterne): if pointInterne is not None: distfaces = [(geompy.MinDistance(face,pointInterne), i, face) for i, face in enumerate(facesPartShapeDefaut)] distfaces.sort() - logging.debug("selection de la face la plus proche du point interne, distance=%s",distfaces[0][0]) + logging.debug("selection de la face la plus proche du point interne, distance={}".format(distfaces[0][0])) facesPortFissure = distfaces[0][2] else: try: @@ -52,8 +52,8 @@ def restreintFaceFissure(shapeDefaut, facesDefaut, pointInterne): texte += "
  • le prémaillage de la face de fissure est trop grossier, les mailles à enlever dans le maillage sain " texte += "n'ont pas toutes été détectées.
  • " raise fissError(traceback.extract_stack(),texte) - logging.debug("surfaces faces fissure étendue, min %s, max %s", minSurf, maxSurf) + logging.debug("surfaces faces fissure étendue, min {}, max {}".format(minSurf, maxSurf)) facesPortFissure = facesPartShapeDefautSorted[-1] - + geomPublish(initLog.debug, facesPortFissure, "facesPortFissure") return facesPortFissure From 93b3222f60b81f9440e991f5684bd65e282d2b0e Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 15:12:35 +0100 Subject: [PATCH 17/57] =?UTF-8?q?Conformit=C3=A9=20python=20avec=20import?= =?UTF-8?q?=20os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/CasTests/cubeAngle2.py | 4 +++- src/Tools/blocFissure/CasTests/cylindre.py | 2 +- src/Tools/blocFissure/CasTests/ellipse_1.py | 2 +- .../blocFissure/CasTests/eprouvetteCourbe.py | 2 +- .../blocFissure/CasTests/eprouvetteDroite.py | 2 +- src/Tools/blocFissure/CasTests/faceGauche.py | 2 +- .../blocFissure/CasTests/fissureCoude_1.py | 4 +++- .../blocFissure/CasTests/fissureCoude_10.py | 4 +++- .../blocFissure/CasTests/fissureCoude_2.py | 4 +++- .../blocFissure/CasTests/fissureCoude_3.py | 4 +++- .../blocFissure/CasTests/fissureCoude_4.py | 4 +++- .../blocFissure/CasTests/fissureCoude_5.py | 4 +++- .../blocFissure/CasTests/fissureCoude_6.py | 4 +++- .../blocFissure/CasTests/fissureCoude_7.py | 4 +++- .../blocFissure/CasTests/fissureCoude_8.py | 4 +++- .../blocFissure/CasTests/fissureCoude_9.py | 4 +++- .../blocFissure/CasTests/fissure_Coude.py | 4 +++- .../blocFissure/CasTests/fissure_Coude_4.py | 4 +++- src/Tools/blocFissure/gmu/fissureCoude.py | 4 +++- .../gmu/insereFissureElliptique.py | 6 +++-- .../blocFissure/gmu/insereFissureGenerale.py | 6 +++-- .../blocFissure/gmu/insereFissureLongue.py | 8 ++++--- src/Tools/blocFissure/ihm/fissureCoude_ihm.py | 22 +++++++++++-------- .../blocFissure/ihm/fissureCoude_plugin.py | 3 ++- 24 files changed, 75 insertions(+), 36 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/cubeAngle2.py b/src/Tools/blocFissure/CasTests/cubeAngle2.py index f66a0e201..b7fa02f0e 100644 --- a/src/Tools/blocFissure/CasTests/cubeAngle2.py +++ b/src/Tools/blocFissure/CasTests/cubeAngle2.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from .cubeAngle import cubeAngle class cubeAngle2(cubeAngle): @@ -40,7 +42,7 @@ class cubeAngle2(cubeAngle): # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/cylindre.py b/src/Tools/blocFissure/CasTests/cylindre.py index 5b72caa36..d3f6dfb70 100644 --- a/src/Tools/blocFissure/CasTests/cylindre.py +++ b/src/Tools/blocFissure/CasTests/cylindre.py @@ -89,7 +89,7 @@ class cylindre(fissureGenerique): # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/ellipse_1.py b/src/Tools/blocFissure/CasTests/ellipse_1.py index 2d19901d5..9212f0a7f 100644 --- a/src/Tools/blocFissure/CasTests/ellipse_1.py +++ b/src/Tools/blocFissure/CasTests/ellipse_1.py @@ -93,7 +93,7 @@ class ellipse_1(fissureGenerique): # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py index c9f1a2403..7921c66a1 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py @@ -87,7 +87,7 @@ class eprouvetteCourbe(fissureGenerique): # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/eprouvetteDroite.py b/src/Tools/blocFissure/CasTests/eprouvetteDroite.py index 0be566d34..6d09410fe 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteDroite.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteDroite.py @@ -91,7 +91,7 @@ class eprouvetteDroite(fissureGenerique): # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/faceGauche.py b/src/Tools/blocFissure/CasTests/faceGauche.py index 0736bdb54..a6251088e 100644 --- a/src/Tools/blocFissure/CasTests/faceGauche.py +++ b/src/Tools/blocFissure/CasTests/faceGauche.py @@ -87,7 +87,7 @@ class faceGauche(fissureGenerique): # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_1.py b/src/Tools/blocFissure/CasTests/fissureCoude_1.py index cf41e9268..539d1b147 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_1.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_1.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_1(fissureCoude): @@ -88,7 +90,7 @@ class fissureCoude_1(fissureCoude): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_10.py b/src/Tools/blocFissure/CasTests/fissureCoude_10.py index 4e3524b08..64cdb2b7f 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_10.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_10.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_10(fissureCoude): @@ -90,7 +92,7 @@ class fissureCoude_10(fissureCoude): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 3, diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_2.py b/src/Tools/blocFissure/CasTests/fissureCoude_2.py index 6398c3609..1fbcf8972 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_2.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_2.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_2(fissureCoude): @@ -89,7 +91,7 @@ class fissureCoude_2(fissureCoude): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_3.py b/src/Tools/blocFissure/CasTests/fissureCoude_3.py index 9742d9bdc..c5c3504a1 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_3.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_3.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_3(fissureCoude): @@ -88,7 +90,7 @@ class fissureCoude_3(fissureCoude): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_4.py b/src/Tools/blocFissure/CasTests/fissureCoude_4.py index 946489063..821115af3 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_4.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_4.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_4(fissureCoude): @@ -88,7 +90,7 @@ class fissureCoude_4(fissureCoude): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_5.py b/src/Tools/blocFissure/CasTests/fissureCoude_5.py index 2ef581dce..792778bf0 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_5.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_5.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_5(fissureCoude): @@ -88,7 +90,7 @@ class fissureCoude_5(fissureCoude): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_6.py b/src/Tools/blocFissure/CasTests/fissureCoude_6.py index 3363ccc1e..2d11d6844 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_6.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_6.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_6(fissureCoude): @@ -89,7 +91,7 @@ class fissureCoude_6(fissureCoude): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_7.py b/src/Tools/blocFissure/CasTests/fissureCoude_7.py index 67df2a1f0..a01b79261 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_7.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_7.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_7(fissureCoude): @@ -90,7 +92,7 @@ class fissureCoude_7(fissureCoude): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_8.py b/src/Tools/blocFissure/CasTests/fissureCoude_8.py index 320c8333f..8f4195120 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_8.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_8.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_8(fissureCoude): @@ -90,7 +92,7 @@ class fissureCoude_8(fissureCoude): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 4, diff --git a/src/Tools/blocFissure/CasTests/fissureCoude_9.py b/src/Tools/blocFissure/CasTests/fissureCoude_9.py index 887839244..4729a2f0b 100644 --- a/src/Tools/blocFissure/CasTests/fissureCoude_9.py +++ b/src/Tools/blocFissure/CasTests/fissureCoude_9.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_9(fissureCoude): @@ -88,7 +90,7 @@ class fissureCoude_9(fissureCoude): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 6, diff --git a/src/Tools/blocFissure/CasTests/fissure_Coude.py b/src/Tools/blocFissure/CasTests/fissure_Coude.py index 3e22fe862..d9e368428 100644 --- a/src/Tools/blocFissure/CasTests/fissure_Coude.py +++ b/src/Tools/blocFissure/CasTests/fissure_Coude.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure import gmu from blocFissure.gmu.geomsmesh import geompy, smesh @@ -477,7 +479,7 @@ class fissure_Coude(fissureGenerique): # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegExt = 5, diff --git a/src/Tools/blocFissure/CasTests/fissure_Coude_4.py b/src/Tools/blocFissure/CasTests/fissure_Coude_4.py index e64bab927..4db8c9c92 100644 --- a/src/Tools/blocFissure/CasTests/fissure_Coude_4.py +++ b/src/Tools/blocFissure/CasTests/fissure_Coude_4.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from .fissure_Coude import fissure_Coude class fissure_Coude_4(fissure_Coude): @@ -67,7 +69,7 @@ class fissure_Coude_4(fissure_Coude): externe : True : fissure face externe, False : fissure face interne """ print("setParamShapeFissure", self.nomCas) - self.shapeFissureParams = dict(nomRep = '.', + self.shapeFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, profondeur = 10, diff --git a/src/Tools/blocFissure/gmu/fissureCoude.py b/src/Tools/blocFissure/gmu/fissureCoude.py index 5cb6c83cf..d3006b843 100644 --- a/src/Tools/blocFissure/gmu/fissureCoude.py +++ b/src/Tools/blocFissure/gmu/fissureCoude.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from .geomsmesh import geompy, smesh from .geomsmesh import geomPublish from .geomsmesh import geomPublishInFather @@ -656,7 +658,7 @@ class fissureCoude(fissureGenerique): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, diff --git a/src/Tools/blocFissure/gmu/insereFissureElliptique.py b/src/Tools/blocFissure/gmu/insereFissureElliptique.py index 037e07299..c7cd0c583 100644 --- a/src/Tools/blocFissure/gmu/insereFissureElliptique.py +++ b/src/Tools/blocFissure/gmu/insereFissureElliptique.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + import logging import salome from .geomsmesh import geompy @@ -81,8 +83,8 @@ def insereFissureElliptique(geometriesSaines, maillagesSains, nbsegFis = maillageFissureParams['nbsegFis'] # 20 lensegEllipsoide = maillageFissureParams['lensegEllipso'] # 1.0 - fichierMaillageSain = nomRep + '/' + nomFicSain + '.med' - fichierMaillageFissure = nomRep + '/' + nomFicFissure + '.med' + fichierMaillageSain = os.path.join(nomRep, '{}.med'.format(nomFicSain)) + fichierMaillageFissure = os.path.join(nomRep, '{}.med'.format(nomFicFissure)) facesDefaut = elementsDefaut[0] centreDefaut = elementsDefaut[1] diff --git a/src/Tools/blocFissure/gmu/insereFissureGenerale.py b/src/Tools/blocFissure/gmu/insereFissureGenerale.py index 8998b9150..6340ed3a8 100644 --- a/src/Tools/blocFissure/gmu/insereFissureGenerale.py +++ b/src/Tools/blocFissure/gmu/insereFissureGenerale.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + import logging import salome from .geomsmesh import geompy @@ -100,8 +102,8 @@ def insereFissureGenerale(maillagesSains, if isPointInterne: pointInterne = geompy.MakeVertex(pointIn_x, pointIn_y, pointIn_z) - #fichierMaillageSain = nomRep + '/' + nomFicSain + '.med' - fichierMaillageFissure = nomRep + '/' + nomFicFissure + '.med' + #fichierMaillageSain = os.path.join(nomRep, '{}.med'.format(nomFicSain)) + fichierMaillageFissure = os.path.join(nomRep, '{}.med'.format(nomFicFissure)) # fillings des faces en peau facesDefaut = elementsDefaut[0] diff --git a/src/Tools/blocFissure/gmu/insereFissureLongue.py b/src/Tools/blocFissure/gmu/insereFissureLongue.py index f324bfebf..6e9c2d6a3 100644 --- a/src/Tools/blocFissure/gmu/insereFissureLongue.py +++ b/src/Tools/blocFissure/gmu/insereFissureLongue.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + import logging import salome from .geomsmesh import geompy @@ -79,8 +81,8 @@ def insereFissureLongue(geometriesSaines, maillagesSains, #nbsegFis = maillageFissureParams['nbsegFis'] # 20 #lensegEllipsoide = maillageFissureParams['lensegEllipso'] # 1.0 - #fichierMaillageSain = nomRep + '/' + nomFicSain + '.med' - fichierMaillageFissure = nomRep + '/' + nomFicFissure + '.med' + #fichierMaillageSain = os.path.join(nomRep, '{}.med'.format(nomFicSain)) + fichierMaillageFissure = os.path.join(nomRep, '{}.med'.format(nomFicFissure)) facesDefaut = elementsDefaut[0] #centreDefaut = elementsDefaut[1] @@ -674,4 +676,4 @@ def insereFissureLongue(geometriesSaines, maillagesSains, if salome.sg.hasDesktop(): salome.sg.updateObjBrowser() - return maillageComplet \ No newline at end of file + return maillageComplet diff --git a/src/Tools/blocFissure/ihm/fissureCoude_ihm.py b/src/Tools/blocFissure/ihm/fissureCoude_ihm.py index 99d1ba490..a9c09c699 100644 --- a/src/Tools/blocFissure/ihm/fissureCoude_ihm.py +++ b/src/Tools/blocFissure/ihm/fissureCoude_ihm.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import os + from blocFissure.gmu.fissureCoude import fissureCoude class fissureCoude_ihm(fissureCoude): @@ -94,7 +96,7 @@ class fissureCoude_ihm(fissureCoude): nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = self.dico['nbCouronnes'], @@ -103,12 +105,14 @@ class fissureCoude_ihm(fissureCoude): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Node = 0, - Entity_Quad_Edge = 0, - Entity_Quad_Triangle = 0, - Entity_Quad_Quadrangle = 0, - Entity_Quad_Tetra = 0, - Entity_Quad_Hexa = 0, - Entity_Quad_Penta = 0, - Entity_Quad_Pyramid = 0) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Pyramid = 0, + Entity_Quad_Quadrangle = 0, \ + Entity_Quad_Hexa = 0, \ + Entity_Node = 0, \ + Entity_Quad_Edge = 0, \ + Entity_Quad_Triangle = 0, \ + Entity_Quad_Tetra = 0, \ + Entity_Quad_Penta = 0 \ + ) diff --git a/src/Tools/blocFissure/ihm/fissureCoude_plugin.py b/src/Tools/blocFissure/ihm/fissureCoude_plugin.py index b6a25d54a..db54bdd81 100644 --- a/src/Tools/blocFissure/ihm/fissureCoude_plugin.py +++ b/src/Tools/blocFissure/ihm/fissureCoude_plugin.py @@ -22,6 +22,7 @@ # if you already have plugins defined in a salome_plugins.py file, add this file at the end. # if not, copy this file as ${HOME}/Plugins/smesh_plugins.py or ${APPLI}/Plugins/smesh_plugins.py +import os import math import sys import traceback @@ -255,7 +256,7 @@ def fissureCoudeDlg(context): return incomplet def fileDefault(self): - filedef = os.path.expanduser("~/.config/salome/dialogFissureCoude.dic") + filedef = os.path.expanduser( os.path.join(os.environ["HOME"],".config", "salome", "dialogFissureCoude.dic") ) print(filedef) return filedef From 5f9f7028458e2ee9b7473c815ce22f2f50015933 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 15:28:08 +0100 Subject: [PATCH 18/57] =?UTF-8?q?R=C3=A9f=C3=A9rence=20mise=20=C3=A0=20jou?= =?UTF-8?q?r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/CasTests/cylindre_2.py | 20 ++++++++++--------- .../blocFissure/CasTests/faceGauche_2.py | 9 ++++----- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/cylindre_2.py b/src/Tools/blocFissure/CasTests/cylindre_2.py index 241ff0ce8..246145709 100644 --- a/src/Tools/blocFissure/CasTests/cylindre_2.py +++ b/src/Tools/blocFissure/CasTests/cylindre_2.py @@ -50,7 +50,7 @@ class cylindre_2(cylindre): shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "FissInCylindre.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) - geompy.UnionIDs(fondFiss, [3]) + geompy.UnionIDs(fondFiss, [6]) geompy.addToStudy( shellFiss, 'shellFiss' ) geompy.addToStudyInFather( shellFiss, fondFiss, 'fondFiss' ) @@ -62,12 +62,14 @@ class cylindre_2(cylindre): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 1334, - Entity_Quad_Triangle = 1432, - Entity_Quad_Edge = 785, - Entity_Quad_Penta = 560, - Entity_Quad_Hexa = 19070, - Entity_Node = 114290, - Entity_Quad_Tetra = 19978, - Entity_Quad_Quadrangle = 7424) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Pyramid = 1158, + Entity_Quad_Quadrangle = 7028, \ + Entity_Quad_Hexa = 18366, \ + Entity_Node = 105035, \ + Entity_Quad_Edge = 735, \ + Entity_Quad_Triangle = 1056, \ + Entity_Quad_Tetra = 16305, \ + Entity_Quad_Penta = 384 \ + ) diff --git a/src/Tools/blocFissure/CasTests/faceGauche_2.py b/src/Tools/blocFissure/CasTests/faceGauche_2.py index 4bcc36494..d16921f50 100644 --- a/src/Tools/blocFissure/CasTests/faceGauche_2.py +++ b/src/Tools/blocFissure/CasTests/faceGauche_2.py @@ -57,8 +57,8 @@ class faceGauche_2(fissureGenerique): # --------------------------------------------------------------------------- def setParamShapeFissure(self): - """ - paramètres de la fissure pour méthode construitFissureGenerale + """paramètres de la fissure pour méthode construitFissureGenerale + lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage) rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure convexe : optionnel True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne @@ -76,11 +76,10 @@ class faceGauche_2(fissureGenerique): shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "faceGauche2FissCoupe.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) - geompy.UnionIDs(fondFiss, [14, 9]) + geompy.UnionIDs(fondFiss, [4, 12]) geompy.addToStudy( shellFiss, 'shellFiss' ) geompy.addToStudyInFather( shellFiss, fondFiss, 'fondFiss' ) - coordsNoeudsFissure = genereMeshCalculZoneDefaut(shellFiss, 5 ,25) centre = None @@ -88,7 +87,7 @@ class faceGauche_2(fissureGenerique): # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - self.maillageFissureParams = dict(nomRep = '.', + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, From ee8255184a67ef1c68c39800b4c2ebdaee31c19a Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 15:38:16 +0100 Subject: [PATCH 19/57] Filtrage des cas qui ne passent pas --- .../blocFissure/CasTests/execution_Cas.py | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/execution_Cas.py b/src/Tools/blocFissure/CasTests/execution_Cas.py index 781223854..e068f13e0 100644 --- a/src/Tools/blocFissure/CasTests/execution_Cas.py +++ b/src/Tools/blocFissure/CasTests/execution_Cas.py @@ -34,8 +34,8 @@ runall = True if runall: torun = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] else: #prob 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 - torun = [ 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1] # pb - torun = [ 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0] # OK + torun = [ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1] # pb + torun = [ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0] # OK # ----------------------------------------------------------------------------------------------- from blocFissure.gmu import geomsmesh @@ -45,40 +45,51 @@ d_aux = dict() problemes = list() n_cas = 0 +# matériel : cubeAngle from blocFissure.CasTests.cubeAngle import cubeAngle problemes.append(cubeAngle(n_cas)) n_cas += 1 +# matériel : cubeAngle from blocFissure.CasTests.cubeAngle2 import cubeAngle2 problemes.append(cubeAngle2(n_cas)) n_cas += 1 +# matériel : cubeFin from blocFissure.CasTests import cubeCoin problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, n_cas)) d_aux[n_cas] = "cubeCoin" n_cas += 1 +# matériel : cubeFin from blocFissure.CasTests import cubeMilieu problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, n_cas)) d_aux[n_cas] = "cubeMilieu" n_cas += 1 +# matériel : cubeFin from blocFissure.CasTests import cubeTransverse problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, n_cas)) d_aux[n_cas] = "cubeTransverse" n_cas += 1 +# matériel : decoupeCylindre from blocFissure.CasTests.cylindre import cylindre problemes.append(cylindre(n_cas)) n_cas += 1 +# matériel : decoupeCylindre from blocFissure.CasTests.cylindre_2 import cylindre_2 problemes.append(cylindre_2(n_cas)) n_cas += 1 +# matériel : disque_perce +# matériel : ellipse_disque from blocFissure.CasTests import disquePerce problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, n_cas)) d_aux[n_cas] = "disquePerce" +# mailleFacesFissure : Erreur au calcul du maillage +# "Source elements overlap one another" dans l'import du fonds de fissure n_cas += 1 from blocFissure.CasTests.ellipse_1 import ellipse_1 @@ -105,8 +116,11 @@ from blocFissure.CasTests.faceGauche import faceGauche problemes.append(faceGauche(n_cas)) n_cas += 1 +# matériel : fissureGauche2 from blocFissure.CasTests.faceGauche_2 import faceGauche_2 problemes.append(faceGauche_2(n_cas)) +# mailleFacesFissure : Erreur au calcul du maillage +# "Source elements don't cover totally the geometrical edge" dans l'import du fonds de fissure n_cas += 1 from blocFissure.CasTests.fissureCoude_1 import fissureCoude_1 @@ -115,6 +129,8 @@ problemes.append(fissureCoude_1(n_cas)) n_cas += 1 from blocFissure.CasTests.fissureCoude_10 import fissureCoude_10 problemes.append(fissureCoude_10(n_cas)) +# Erreur au calcul du maillage +# "Source elements overlap one another" dans l'import du fonds de fissure n_cas += 1 from blocFissure.CasTests.fissureCoude_2 import fissureCoude_2 @@ -141,8 +157,11 @@ from blocFissure.CasTests.fissureCoude_7 import fissureCoude_7 problemes.append(fissureCoude_7(n_cas)) n_cas += 1 +# matériel : fissureGauche2 from blocFissure.CasTests.fissureCoude_8 import fissureCoude_8 problemes.append(fissureCoude_8(n_cas)) +# mailleFacesFissure : Erreur au calcul du maillage +# "Source elements overlap one another" dans l'import du fonds de fissure n_cas += 1 from blocFissure.CasTests.fissureCoude_9 import fissureCoude_9 @@ -159,6 +178,7 @@ problemes.append(fissure_Coude_4(n_cas)) n_cas += 1 from blocFissure.CasTests.vis_1 import vis_1 problemes.append(vis_1(n_cas)) +# restreintFaceFissure : Restriction de la face de fissure au domaine solide impossible #============================================================= while True: @@ -172,6 +192,8 @@ while True: ligne = "---------------------------------------------------------------------" texte = "" + n_cas_ok = 0 + n_cas_nook = 0 for n_cas, cas in enumerate(problemes): #print ("Cas n° {}, '{}'".format(n_cas,cas.nomProbleme)) if torun[n_cas]: @@ -182,14 +204,22 @@ while True: texte_a = "\n=== Exécution du cas n° {}, '{}'".format(n_cas,nom) logging.critical(ligne+texte_a) try: - cas.executeProbleme() + ok_maillage = cas.executeProbleme() except: traceback.print_exc() texte += "Problème avec le cas n° {}, '{}'\n".format(n_cas,nom) + ok_maillage = False + if ok_maillage: + n_cas_ok += 1 + else: + n_cas_nook += 1 print(ligne) - if not texte: - texte = "Tous les tests se sont bien passés.\n" + if n_cas_nook: + texte += ". Nombre de cas_tests OK : {}\n".format(n_cas_ok) + texte += ". Nombre de cas_tests NOOK : {}\n".format(n_cas_nook) + else: + texte += "Tous les tests se sont bien passés.\n" print (texte+ligne) break From 4203b2933f3078981194121abafd8b4893ea7c3d Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 16:00:53 +0100 Subject: [PATCH 20/57] =?UTF-8?q?Cosm=C3=A9tique=20python3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/gmu/casStandard.py | 2 + .../gmu/construitEdgesRadialesDebouchantes.py | 15 ++- .../gmu/construitFissureGenerale.py | 17 +-- .../blocFissure/gmu/construitMaillagePipe.py | 105 +++++++++--------- .../gmu/construitPartitionsPeauFissure.py | 16 +-- .../blocFissure/gmu/mailleFacesFissure.py | 6 +- 6 files changed, 81 insertions(+), 80 deletions(-) diff --git a/src/Tools/blocFissure/gmu/casStandard.py b/src/Tools/blocFissure/gmu/casStandard.py index 8506cc764..2b9ef26e8 100644 --- a/src/Tools/blocFissure/gmu/casStandard.py +++ b/src/Tools/blocFissure/gmu/casStandard.py @@ -17,6 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Cas standard""" import os from .geomsmesh import geompy, smesh @@ -48,6 +49,7 @@ class casStandard(fissureGenerique): - les numéros d'arêtes (edges géométriques) correspondant au fond de fissure - les paramètres de maillage de la fissure """ + referencesMaillageFissure = None # --------------------------------------------------------------------------- def __init__ (self, dicoParams, references = None, numeroCas = 0): diff --git a/src/Tools/blocFissure/gmu/construitEdgesRadialesDebouchantes.py b/src/Tools/blocFissure/gmu/construitEdgesRadialesDebouchantes.py index 57f604975..557c6c00a 100644 --- a/src/Tools/blocFissure/gmu/construitEdgesRadialesDebouchantes.py +++ b/src/Tools/blocFissure/gmu/construitEdgesRadialesDebouchantes.py @@ -17,21 +17,20 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Construit les arêtes débouchantes""" import logging from .geomsmesh import geompy from .geomsmesh import geomPublish -from .geomsmesh import geomPublishInFather +#from .geomsmesh import geomPublishInFather from . import initLog import GEOM from .sortEdges import sortEdges def construitEdgesRadialesDebouchantes(idisklim, idiskout, gptsdisks, raydisks, facesPipePeau, edgeRadFacePipePeau, nbsegCercle): - """ - construction des listes d'edges radiales sur chaque extrémité débouchante - """ + """construction des listes d'edges radiales sur chaque extrémité débouchante""" logging.info('start') # --- listes de nappes radiales en filling à chaque extrémité débouchante @@ -95,7 +94,7 @@ def construitEdgesRadialesDebouchantes(idisklim, idiskout, gptsdisks, raydisks, vs = geompy.ExtractShapes(obj, geompy.ShapeType["VERTEX"], False) if len(vs) > 2: eds = geompy.ExtractShapes(obj, geompy.ShapeType["EDGE"], False) - [edsorted, minl,maxl] = sortEdges(eds) + [edsorted, _, maxl] = sortEdges(eds) edge = edsorted[-1] else: maxl = geompy.BasicProperties(edge)[0] @@ -118,7 +117,7 @@ def construitEdgesRadialesDebouchantes(idisklim, idiskout, gptsdisks, raydisks, logging.debug(" edges issues de la partition: %s", ednouv) for ii, ed in enumerate(ednouv): geomPublish(initLog.debug, ed, "ednouv%d"%ii) - [edsorted, minl,maxl] = sortEdges(ednouv) + [edsorted, _, maxl] = sortEdges(ednouv) logging.debug(" longueur edge trouvée: %s", maxl) edge = edsorted[-1] else: @@ -134,7 +133,7 @@ def construitEdgesRadialesDebouchantes(idisklim, idiskout, gptsdisks, raydisks, logging.debug("nombre vertex candidats %s", len(vxnouv)) if len(vxnouv) >= 2: eds = [geompy.MakeEdge(vxnouv[j],vxnouv[(j+1)%len(vxnouv)]) for j in range(len(vxnouv))] - [edsorted2, minl,maxl] = sortEdges(eds) + [edsorted2, _, maxl] = sortEdges(eds) edge = edsorted2[-1] logging.debug("lg edge: %s", maxl) else: @@ -144,4 +143,4 @@ def construitEdgesRadialesDebouchantes(idisklim, idiskout, gptsdisks, raydisks, geomPublish(initLog.debug, edge, name) listEdges.append(edges) - return (listEdges, idFacesDebouchantes) \ No newline at end of file + return (listEdges, idFacesDebouchantes) diff --git a/src/Tools/blocFissure/gmu/construitFissureGenerale.py b/src/Tools/blocFissure/gmu/construitFissureGenerale.py index f5bfe12c8..36296b208 100644 --- a/src/Tools/blocFissure/gmu/construitFissureGenerale.py +++ b/src/Tools/blocFissure/gmu/construitFissureGenerale.py @@ -144,7 +144,7 @@ def construitFissureGenerale(maillagesSains, centreFondFiss = elementsDefaut[15] #tgtCentre = elementsDefaut[16] if lgAretesVives == 0: - lgAretesVives = dmoyen + lgAretesVives = dmoyen O, OX, OY, OZ = triedreBase() @@ -183,7 +183,8 @@ def construitFissureGenerale(maillagesSains, # 0, 1 ou plus edges de la face de fissure externe au pipe nbFacesFilling = len(partitionsPeauFissFond) - logging.info("nbFacesFilling : {} ".format(nbFacesFilling)) + texte = "nbFacesFilling : {} ".format(nbFacesFilling) + logging.info(texte) ptEdgeFond = [ list() for i in range(nbFacesFilling)] # pour chaque face [points edge fond de fissure aux débouchés du pipe] fsPipePeau = [ list() for i in range(nbFacesFilling)] # pour chaque face [faces du pipe débouchantes] @@ -231,9 +232,8 @@ def construitFissureGenerale(maillagesSains, # --- identification des faces et edges de fissure externe pour maillage - (faceFissureExterne, edgesPipeFissureExterneC, - wirePipeFissureExterne, edgesPeauFissureExterneC) = identifieFacesEdgesFissureExterne(fsFissuExt, edFisExtPe, - edFisExtPi, edgesPipeFiss) + (faceFissureExterne, edgesPipeFissureExterneC, wirePipeFissureExterne, edgesPeauFissureExterneC) = \ + identifieFacesEdgesFissureExterne(fsFissuExt, edFisExtPe, edFisExtPi, edgesPipeFiss) # --- preparation maillage du pipe : # - détections des points a respecter : jonction des edges/faces constituant la face de fissure externe au pipe @@ -322,12 +322,13 @@ def construitFissureGenerale(maillagesSains, putName(meshBoiteDefaut, "boiteDefaut") logging.info("meshBoiteDefaut fini") - faceFissure = meshBoiteDefaut.GetMesh().UnionListOfGroups( [ group_faceFissOutPipe, group_faceFissInPipe ], 'FACE1' ) + faceFissure = meshBoiteDefaut.GetMesh().UnionListOfGroups( [ group_faceFissOutPipe, group_faceFissInPipe ], \ + 'FACE1' ) maillageSain = enleveDefaut(maillageSain, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges) putName(maillageSain, nomFicSain+"_coupe") - extrusionFaceFissure, normfiss = shapeSurFissure(facesPortFissure) - maillageComplet = RegroupeSainEtDefaut(maillageSain, meshBoiteDefaut, + _, normfiss = shapeSurFissure(facesPortFissure) + maillageComplet = RegroupeSainEtDefaut(maillageSain, meshBoiteDefaut, \ None, None, 'COMPLET', normfiss) logging.info("conversion quadratique") diff --git a/src/Tools/blocFissure/gmu/construitMaillagePipe.py b/src/Tools/blocFissure/gmu/construitMaillagePipe.py index cd79654af..26bd14f46 100644 --- a/src/Tools/blocFissure/gmu/construitMaillagePipe.py +++ b/src/Tools/blocFissure/gmu/construitMaillagePipe.py @@ -17,6 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Maillage du pipe""" import logging @@ -25,9 +26,7 @@ from .geomsmesh import smesh import SMESH def construitMaillagePipe(gptsdisks, idisklim, nbsegCercle, nbsegRad): - """ - maillage effectif du pipe - """ + """maillage effectif du pipe""" logging.info('start') meshPipe = smesh.Mesh(None, "meshPipe") fondFissGroup = meshPipe.CreateEmptyGroup(SMESH.EDGE, "FONDFISS") @@ -38,26 +37,26 @@ def construitMaillagePipe(gptsdisks, idisklim, nbsegCercle, nbsegRad): edgeCircPipe1Group = meshPipe.CreateEmptyGroup(SMESH.EDGE, "edgeCircPipe1") faceCircPipe0Group = meshPipe.CreateEmptyGroup(SMESH.FACE, "faceCircPipe0") faceCircPipe1Group = meshPipe.CreateEmptyGroup(SMESH.FACE, "faceCircPipe1") - - mptsdisks = [] # vertices maillage de tous les disques - mEdges = [] # identifiants edges maillage fond de fissure - mEdgeFaces = [] # identifiants edges maillage edge face de fissure externe - mFaces = [] # identifiants faces maillage fissure - mVols = [] # identifiants volumes maillage pipe - mptdsk = None + mptsdisks = list() # vertices maillage de tous les disques + mEdges = list() # identifiants edges maillage fond de fissure + mEdgeFaces = list() # identifiants edges maillage edge face de fissure externe + mFaces = list() # identifiants faces maillage fissure + mVols = list() # identifiants volumes maillage pipe + + mptdsk = list() for idisk in range(idisklim[0], idisklim[1]+1): # boucle sur les disques internes - + # ----------------------------------------------------------------------- # --- points - + gptdsk = gptsdisks[idisk] if idisk > idisklim[0]: oldmpts = mptdsk - mptdsk = [] # vertices maillage d'un disque + mptdsk = list() # vertices maillage d'un disque for k in range(nbsegCercle): points = gptdsk[k] - mptids = [] + mptids = list() for j, pt in enumerate(points): if j == 0 and k > 0: id = mptdsk[0][0] @@ -67,37 +66,39 @@ def construitMaillagePipe(gptsdisks, idisklim, nbsegCercle, nbsegRad): mptids.append(id) mptdsk.append(mptids) mptsdisks.append(mptdsk) - + # ----------------------------------------------------------------------- # --- groupes edges cercles debouchants - + if idisk == idisklim[0]: - pts = [] + pts = list() for k in range(nbsegCercle): pts.append(mptdsk[k][-1]) - edges = [] - for k in range(len(pts)): - k1 = (k+1)%len(pts) + edges = list() + nb_pts = len(pts) + for k in range(nb_pts): + k1 = (k+1)%nb_pts idEdge = meshPipe.AddEdge([pts[k], pts[k1]]) edges.append(idEdge) edgeCircPipe0Group.Add(edges) - + if idisk == idisklim[1]: - pts = [] + pts = list() for k in range(nbsegCercle): pts.append(mptdsk[k][-1]) - edges = [] - for k in range(len(pts)): - k1 = (k+1)%len(pts) + edges = list() + nb_pts = len(pts) + for k in range(nb_pts): + k1 = (k+1)%nb_pts idEdge = meshPipe.AddEdge([pts[k], pts[k1]]) edges.append(idEdge) edgeCircPipe1Group.Add(edges) - + # ----------------------------------------------------------------------- # --- groupes faces debouchantes - + if idisk == idisklim[0]: - faces = [] + faces = list() for j in range(nbsegRad): for k in range(nbsegCercle): k1 = k+1 @@ -111,7 +112,7 @@ def construitMaillagePipe(gptsdisks, idisklim, nbsegCercle, nbsegRad): faceCircPipe0Group.Add(faces) if idisk == idisklim[1]: - faces = [] + faces = list() for j in range(nbsegRad): for k in range(nbsegCercle): k1 = k+1 @@ -123,10 +124,10 @@ def construitMaillagePipe(gptsdisks, idisklim, nbsegCercle, nbsegRad): idf = meshPipe.AddFace([mptdsk[k][j], mptdsk[k][j+1], mptdsk[k1][j+1], mptdsk[k1][j]]) # quadrangle faces.append(idf) faceCircPipe1Group.Add(faces) - + # ----------------------------------------------------------------------- # --- mailles volumiques, groupes noeuds et edges de fond de fissure, groupe de face de fissure - + if idisk == idisklim[0]: mEdges.append(0) mEdgeFaces.append(0) @@ -141,28 +142,28 @@ def construitMaillagePipe(gptsdisks, idisklim, nbsegCercle, nbsegRad): ide2 = meshPipe.AddEdge([oldmpts[0][-1], mptdsk[0][-1]]) mEdgeFaces.append(ide2) edgeFaceFissGroup.Add([ide2]) - idFaces = [] - idVols = [] - + idFaces = list() + idVols = list() + for j in range(nbsegRad): idf = meshPipe.AddFace([oldmpts[0][j], mptdsk[0][j], mptdsk[0][j+1], oldmpts[0][j+1]]) faceFissGroup.Add([idf]) idFaces.append(idf) - - idVolCercle = [] + + idVolCercle = list() for k in range(nbsegCercle): k1 = k+1 if k == nbsegCercle-1: k1 = 0 if j == 0: - idv = meshPipe.AddVolume([mptdsk[k][j], mptdsk[k][j+1], mptdsk[k1][j+1], + idv = meshPipe.AddVolume([mptdsk[k][j], mptdsk[k][j+1], mptdsk[k1][j+1], \ oldmpts[k][j], oldmpts[k][j+1], oldmpts[k1][j+1]]) else: - idv = meshPipe.AddVolume([mptdsk[k][j], mptdsk[k][j+1], mptdsk[k1][j+1], mptdsk[k1][j], + idv = meshPipe.AddVolume([mptdsk[k][j], mptdsk[k][j+1], mptdsk[k1][j+1], mptdsk[k1][j], \ oldmpts[k][j], oldmpts[k][j+1], oldmpts[k1][j+1], oldmpts[k1][j]]) idVolCercle.append(idv) - idVols.append(idVolCercle) - + idVols.append(idVolCercle) + mFaces.append(idFaces) mVols.append(idVols) @@ -172,16 +173,16 @@ def construitMaillagePipe(gptsdisks, idisklim, nbsegCercle, nbsegRad): nb, new_mesh, new_group = meshPipe.MakeBoundaryElements(SMESH.BND_2DFROM3D, "pipeBoundaries") edgesCircPipeGroup = [edgeCircPipe0Group, edgeCircPipe1Group] - meshPipeGroups = dict(fondFissGroup = fondFissGroup, - nodesFondFissGroup = nodesFondFissGroup, - faceFissGroup = faceFissGroup, - edgeFaceFissGroup = edgeFaceFissGroup, - edgeCircPipe0Group = edgeCircPipe0Group, - edgeCircPipe1Group = edgeCircPipe1Group, - faceCircPipe0Group = faceCircPipe0Group, - faceCircPipe1Group = faceCircPipe1Group, - pipeFissGroup = pipeFissGroup, - edgesCircPipeGroup = edgesCircPipeGroup + meshPipeGroups = dict(fondFissGroup = fondFissGroup, \ + nodesFondFissGroup = nodesFondFissGroup, \ + faceFissGroup = faceFissGroup, \ + edgeFaceFissGroup = edgeFaceFissGroup, \ + edgeCircPipe0Group = edgeCircPipe0Group, \ + edgeCircPipe1Group = edgeCircPipe1Group, \ + faceCircPipe0Group = faceCircPipe0Group, \ + faceCircPipe1Group = faceCircPipe1Group, \ + pipeFissGroup = pipeFissGroup, \ + edgesCircPipeGroup = edgesCircPipeGroup \ ) - - return (meshPipe, meshPipeGroups, edgesCircPipeGroup) \ No newline at end of file + + return (meshPipe, meshPipeGroups, edgesCircPipeGroup) diff --git a/src/Tools/blocFissure/gmu/construitPartitionsPeauFissure.py b/src/Tools/blocFissure/gmu/construitPartitionsPeauFissure.py index 693bf56e7..9b68b8115 100644 --- a/src/Tools/blocFissure/gmu/construitPartitionsPeauFissure.py +++ b/src/Tools/blocFissure/gmu/construitPartitionsPeauFissure.py @@ -34,27 +34,27 @@ from .checkDecoupePartition import checkDecoupePartition # liste de partitions face externe - fissure : partitionPeauFissFond (None quand pas d'intersection) def construitPartitionsPeauFissure(facesDefaut, fissPipe): - """ - partition peau défaut - face de fissure prolongée - wire de fond de fissure prolongée. + """partition peau défaut - face de fissure prolongée - wire de fond de fissure prolongée. + Il peut y avoir plusieurs faces externes, dont certaines sont découpées par la fissure. @param facesDefaut liste de faces externes @param fissPipe partition face de fissure etendue par pipe prolongé @return partitionsPeauFissFond : liste de partitions face externe - fissure (None quand pas d'intersection) """ - + logging.info('start') - partitionsPeauFissFond = [] + partitionsPeauFissFond = list() ipart = 0 - for filling in facesDefaut: - part = geompy.MakePartition([fissPipe, filling], [], [], [], geompy.ShapeType["FACE"], 0, [], 0) + for filling in facesDefaut: + part = geompy.MakePartition([fissPipe, filling], list(), list(), list(), geompy.ShapeType["FACE"], 0, list(), 0) isPart = checkDecoupePartition([fissPipe, filling], part) if isPart: # on recrée la partition avec toutes les faces filling en outil pour avoir une face de fissure correcte otherFD = [fd for fd in facesDefaut if fd != filling] if otherFD: - fissPipePart = geompy.MakePartition([fissPipe], otherFD, [], [], geompy.ShapeType["FACE"], 0, [], 0) + fissPipePart = geompy.MakePartition([fissPipe], otherFD, list(), list(), geompy.ShapeType["FACE"], 0, list(), 0) else: fissPipePart = fissPipe - part = geompy.MakePartition([fissPipePart, filling], [], [], [], geompy.ShapeType["FACE"], 0, [], 0) + part = geompy.MakePartition([fissPipePart, filling], list(), list(), list(), geompy.ShapeType["FACE"], 0, list(), 0) partitionsPeauFissFond.append(part) geomPublish(initLog.debug, part, 'partitionPeauFissFond%d'%ipart ) else: diff --git a/src/Tools/blocFissure/gmu/mailleFacesFissure.py b/src/Tools/blocFissure/gmu/mailleFacesFissure.py index 0f2f9f03d..66f6bbfbc 100644 --- a/src/Tools/blocFissure/gmu/mailleFacesFissure.py +++ b/src/Tools/blocFissure/gmu/mailleFacesFissure.py @@ -29,9 +29,7 @@ from .putName import putName def mailleFacesFissure(faceFissureExterne, edgesPipeFissureExterneC, edgesPeauFissureExterneC, meshPipeGroups, areteFaceFissure, rayonPipe, nbsegRad): - """ - maillage faces de fissure - """ + """maillage faces de fissure""" logging.info('start') logging.info("Maillage de {}".format(faceFissureExterne.GetName())) @@ -48,7 +46,7 @@ def mailleFacesFissure(faceFissureExterne, edgesPipeFissureExterneC, edgesPeauFi putName(algo2d, "algo2d_faceFiss") putName(hypo2d, "hypo2d_faceFiss") - logging.info('Récupération des arêtes de {}'.format(edgesPipeFissureExterneC.GetName())) + logging.info("Récupération des arêtes de '{}'".format(edgesPipeFissureExterneC.GetName())) algo1d = meshFaceFiss.UseExisting1DElements(geom=edgesPipeFissureExterneC) hypo1d = algo1d.SourceEdges([ meshPipeGroups['edgeFaceFissGroup'] ],0,0) putName(algo1d.GetSubMesh(), "edgeFissPeau") From a37f701f6741d9bc836f56cc522757b1ff2a4618 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 16:37:29 +0100 Subject: [PATCH 21/57] Gestion des continuations --- .../gmu/identifieElementsDebouchants.py | 50 +++++----- .../gmu/identifieElementsGeometriquesPeau.py | 28 +++--- .../gmu/insereFissureElliptique.py | 26 +++--- .../blocFissure/gmu/insereFissureLongue.py | 66 ++++++------- .../blocFissure/gmu/mailleFacesFissure.py | 10 +- src/Tools/blocFissure/gmu/meshBlocPart.py | 93 ++++++++++--------- 6 files changed, 140 insertions(+), 133 deletions(-) diff --git a/src/Tools/blocFissure/gmu/identifieElementsDebouchants.py b/src/Tools/blocFissure/gmu/identifieElementsDebouchants.py index 0d4b28e95..486c550dd 100644 --- a/src/Tools/blocFissure/gmu/identifieElementsDebouchants.py +++ b/src/Tools/blocFissure/gmu/identifieElementsDebouchants.py @@ -30,24 +30,22 @@ from .fissError import fissError from .produitMixte import produitMixte from .whichSide import whichSide - -def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond, - edgesFondIn, edgesFondFiss, wireFondFiss, - aretesVivesC, fillingFaceExterne, - edgesPipeIn, verticesPipePeau, rayonPipe, + +def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond, \ + edgesFondIn, edgesFondFiss, wireFondFiss, \ + aretesVivesC, fillingFaceExterne, \ + edgesPipeIn, verticesPipePeau, rayonPipe, \ facesInside, facesOnside): - """ - elements débouchants (intersection pipe et peau), indexés selon les edges du fond de fissure (edgesFondIn) - """ - + """elements débouchants (intersection pipe et peau), indexés selon les edges du fond de fissure (edgesFondIn)""" + logging.info('start') - - verticesEdgesFondIn = [] # les points du fond de fissure au débouché du pipe sur la peau (indice de edgesFondIn) - pipexts = [] # les segments de pipe associés au points de fond de fissure débouchants (même indice) - cercles = [] # les cercles de generation des pipes débouchant (même indice) - facesFissExt = [] # les faces de la fissure externe associés au points de fond de fissure débouchants (même indice) - edgesFissExtPeau = [] # edges des faces de fissure externe sur la peau (même indice) - edgesFissExtPipe = [] # edges des faces de fissure externe sur le pipe (même indice) + + verticesEdgesFondIn = list() # les points du fond de fissure au débouché du pipe sur la peau (indice de edgesFondIn) + pipexts = list() # les segments de pipe associés au points de fond de fissure débouchants (même indice) + cercles = list() # les cercles de generation des pipes débouchant (même indice) + facesFissExt = list() # les faces de la fissure externe associés au points de fond de fissure débouchants (même indice) + edgesFissExtPeau = list() # edges des faces de fissure externe sur la peau (même indice) + edgesFissExtPipe = list() # edges des faces de fissure externe sur le pipe (même indice) #logging.debug("edgesFondIn %s", edgesFondIn) for iedf, edge in enumerate(edgesFondIn): @@ -78,8 +76,8 @@ def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond, # La partition filling / pipe reconstruit échoue. # - Si on partitionne le filling avec un simple pipe obtenu par extrusion droite du cercle, # cela donne un point en trop sur le cercle. - # - Si on prend une vraie surface plane (pas un filling), on peut faire la partition avec - # les pipes reconstruits + # - Si on prend une vraie surface plane (pas un filling), on peut faire la partition avec + # les pipes reconstruits logging.debug("angle=%s", angle) #if abs(angle) > 1.e-7: sommetAxe = geompy.MakeTranslationVector(centre, norm) @@ -102,15 +100,15 @@ def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond, locPt1 = geompy.MakeVertexOnCurve(localEdgeInFondFiss, 1.0) sidePt0 = whichSide(faceTestPeau, locPt0) sidePt1 = whichSide(faceTestPeau, locPt1) - logging.debug("position centre cercle: %s, extremité edge u0: %s, u1: %s", sideCentre, sidePt0, sidePt1) + logging.debug("position centre cercle: %s, extremité edge u0: %s, u1: %s", sideCentre, sidePt0, sidePt1) normFace = geompy.GetNormal(faceTestPeau, ptPeau) inclPipe = abs(geompy.GetAngleRadians(norm, normFace)) lgp = max(rayonPipe/2., abs(3*rayonPipe*math.tan(inclPipe))) logging.debug("angle inclinaison Pipe en sortie: %s degres, lgp: %s", inclPipe*180/math.pi, lgp) - + # --- position des points extremite du pipe sur l'edge debouchante # il faut la distance curviligne ofp du point central par rapport à une extrémité de l'edge débouchante - locEdgePart = geompy.MakePartition([localEdgeInFondFiss],[centre], [], [], geompy.ShapeType["EDGE"], 0, [], 0) + locEdgePart = geompy.MakePartition([localEdgeInFondFiss],[centre], list(), list(), geompy.ShapeType["EDGE"], 0, list(), 0) edgesLoc = geompy.ExtractShapes(locEdgePart, geompy.ShapeType["EDGE"], False) edgesLocSorted =[(geompy.MinDistance(edge, locPt0), kk, edge) for kk, edge in enumerate(edgesLoc)] edgesLocSorted.sort() @@ -127,7 +125,7 @@ def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond, geomPublishInFather(initLog.debug, wireFondFiss, p1, "p1_%d"%iedf) geomPublishInFather(initLog.debug, wireFondFiss, p2, "p2_%d"%iedf) - edgePart = geompy.MakePartition([localEdgeInFondFiss], [p1,p2], [], [], geompy.ShapeType["EDGE"], 0, [], 0) + edgePart = geompy.MakePartition([localEdgeInFondFiss], [p1,p2], list(), list(), geompy.ShapeType["EDGE"], 0, list(), 0) edps = geompy.ExtractShapes(edgePart, geompy.ShapeType["EDGE"], True) for edp in edps: if geompy.MinDistance(centre, edp) < 1.e-3: @@ -138,9 +136,9 @@ def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond, for ifa, face in enumerate(facesInside): logging.debug("recherche edges communes entre une face inside et (faces onside, edges pipe et fond débouchante)") - edgesPeauFis = [] - edgesPipeFis = [] - edgesPipeFnd = [] + edgesPeauFis = list() + edgesPipeFis = list() + edgesPipeFnd = list() try: edgesPeauFis = geompy.GetSharedShapesMulti([geompy.MakeCompound(facesOnside), face], geompy.ShapeType["EDGE"]) logging.debug(" faces onside %s",edgesPeauFis) @@ -174,4 +172,4 @@ def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond, if dist < 1.e-3: break - return (verticesEdgesFondIn, pipexts, cercles, facesFissExt, edgesFissExtPeau, edgesFissExtPipe) \ No newline at end of file + return (verticesEdgesFondIn, pipexts, cercles, facesFissExt, edgesFissExtPeau, edgesFissExtPipe) diff --git a/src/Tools/blocFissure/gmu/identifieElementsGeometriquesPeau.py b/src/Tools/blocFissure/gmu/identifieElementsGeometriquesPeau.py index 9c366ba54..91c3577d0 100644 --- a/src/Tools/blocFissure/gmu/identifieElementsGeometriquesPeau.py +++ b/src/Tools/blocFissure/gmu/identifieElementsGeometriquesPeau.py @@ -26,9 +26,9 @@ from .trouveEdgesFissPeau import trouveEdgesFissPeau from .identifieFacesPeau import identifieFacesPeau from .identifieEdgesPeau import identifieEdgesPeau -def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss, - edgesFondFiss, wireFondFiss, aretesVivesC, - facesDefaut, centreFondFiss, rayonPipe, +def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss, \ + edgesFondFiss, wireFondFiss, aretesVivesC, \ + facesDefaut, centreFondFiss, rayonPipe, \ aretesVivesCoupees): """ """ @@ -36,16 +36,16 @@ def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss fillingFaceExterne = facesDefaut[ifil] logging.debug("traitement partitionPeauFissFond %s", ifil) - + # --- identification edges fond de fissure, edges pipe sur la face de fissure, edges prolongées # edges internes communes pipe et fissure, points communs edges fissure peau et edges circulaires - + (edgesPipeIn, verticesPipePeau, edgesFondIn, facesInside, facesOnside) = identifieElementsFissure(ifil, facesDefaut, partitionPeauFissFond, edgesPipeFiss, edgesFondFiss, aretesVivesC, fillingFaceExterne, centreFondFiss) - + # --- elements débouchants (intersection pipe et peau), indexés selon les edges du fond de fissure (edgesFondIn) - + (verticesEdgesFondIn, pipexts, cercles, facesFissExt, edgesFissExtPeau, edgesFissExtPipe) = identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond, edgesFondIn, edgesFondFiss, wireFondFiss, @@ -57,20 +57,20 @@ def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss if len(verticesPipePeau) == 0: # aucune extrémité du pipe sur cette face de peau edgesFissExtPeau = trouveEdgesFissPeau(facesInside, facesOnside, edgesPipeIn, edgesFondIn, partitionPeauFissFond, edgesFissExtPeau) - + # --- inventaire des faces de peau : face de peau percée du pipe, extrémités du pipe - + (facePeau, facesPeauSorted, edgesPeauFondIn) = identifieFacesPeau(ifil, verticesPipePeau, facesOnside, wireFondFiss, verticesEdgesFondIn, pipexts, cercles, fillingFaceExterne, centreFondFiss) - + # --- identification précise des edges et disques des faces de peau selon index extremité fissure - + (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesCircPeau, verticesCircPeau, groupEdgesBordPeau, bordsVifs, edgesFissurePeau, aretesVivesCoupees) = identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSorted, edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees) - + dataPPFF = dict(endsEdgeFond = endsEdgeFond, # pour chaque face [points edge fond de fissure aux débouchés du pipe] facesPipePeau = facesPipePeau, # pour chaque face [faces du pipe débouchantes] edgeRadFacePipePeau = edgeRadFacePipePeau, # pour chaque face [edge radiale des faces du pipe débouchantes ] @@ -84,7 +84,7 @@ def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss bordsVifs = bordsVifs, # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives edgesFissurePeau = edgesFissurePeau, # pour chaque face de peau : [subshape edge en peau des faces de fissure externes] verticesPipePeau = verticesPipePeau # pour chaque face de peau : [point commun edFissPeau edCircPeau] - ) + ) return dataPPFF, aretesVivesCoupees - + diff --git a/src/Tools/blocFissure/gmu/insereFissureElliptique.py b/src/Tools/blocFissure/gmu/insereFissureElliptique.py index c7cd0c583..6b7a75913 100644 --- a/src/Tools/blocFissure/gmu/insereFissureElliptique.py +++ b/src/Tools/blocFissure/gmu/insereFissureElliptique.py @@ -17,6 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Insertion d'une fissure elliptique""" import os @@ -42,12 +43,12 @@ from .meshBlocPart import meshBlocPart from .enleveDefaut import enleveDefaut from .regroupeSainEtDefaut import RegroupeSainEtDefaut from .putName import putName - + # ----------------------------------------------------------------------------- # --- procedure complete fissure elliptique -def insereFissureElliptique(geometriesSaines, maillagesSains, - shapesFissure, shapeFissureParams, +def insereFissureElliptique(geometriesSaines, maillagesSains, \ + shapesFissure, shapeFissureParams, \ maillageFissureParams, elementsDefaut, step=-1): """ TODO: a completer @@ -132,11 +133,10 @@ def insereFissureElliptique(geometriesSaines, maillagesSains, if step == 7: return None - [blocPartition, blocp, tore, - faceFissure, facesExternes, facesExtBloc, facesExtElli, - aretesInternes, ellipsoidep, sharedFaces, sharedEdges, edgesBords] = \ - partitionBlocDefaut(extrusionDefaut, facesDefaut, gener1, pipe1, - facefis1, ellipsoide1) + [ 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 @@ -193,11 +193,11 @@ def insereFissureElliptique(geometriesSaines, maillagesSains, return None [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) + 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: return None diff --git a/src/Tools/blocFissure/gmu/insereFissureLongue.py b/src/Tools/blocFissure/gmu/insereFissureLongue.py index 6e9c2d6a3..15d471d5c 100644 --- a/src/Tools/blocFissure/gmu/insereFissureLongue.py +++ b/src/Tools/blocFissure/gmu/insereFissureLongue.py @@ -107,12 +107,12 @@ def insereFissureLongue(geometriesSaines, maillagesSains, edgesFilling = geompy.ExtractShapes(fillingFaceExterne, geompy.ShapeType["EDGE"], False) O, OX, OY, OZ = triedreBase() - + # ----------------------------------------------------------------------------- # --- peau et face de fissure # --- partition peau defaut - face de fissure prolongee - wire de fond de fissure prolongée - partitionPeauFissFond = geompy.MakePartition([facePorteFissure, WirePorteFondFissure, fillingFaceExterne], [], [], [], geompy.ShapeType["FACE"], 0, [], 0) + partitionPeauFissFond = geompy.MakePartition([facePorteFissure, WirePorteFondFissure, fillingFaceExterne], list(), list(), list(), geompy.ShapeType["FACE"], 0, list(), 0) geomPublish(initLog.debug, partitionPeauFissFond, 'partitionPeauFissFond' ) edges = geompy.ExtractShapes(WirePorteFondFissure, geompy.ShapeType["EDGE"], False) @@ -151,7 +151,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains, [facesInside, facesOutside, facesOnside] = extractionOrientee(fillingFaceExterne, partitionPeauFissFond, centreFondFiss, "FACE", 1.e-3) # --- partition peau -face fissure - pipe fond de fissure prolongé - partitionPeauFissByPipe = geompy.MakePartition([facesInside[0], facesOnside[0]], [pipefiss], [], [], geompy.ShapeType["FACE"], 0, [], 0) + partitionPeauFissByPipe = geompy.MakePartition([facesInside[0], facesOnside[0]], [pipefiss], list(), list(), geompy.ShapeType["FACE"], 0, list(), 0) geomPublish(initLog.debug, partitionPeauFissByPipe, 'partitionPeauFissByPipe' ) # --- identification face de peau @@ -161,7 +161,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains, geomPublishInFather(initLog.debug,partitionPeauFissByPipe, facePeau, "facePeau") # --- identification edges de bord face peau - edgesBords = [] + edgesBords = list() for i, edge in enumerate(edgesFilling): edgepeau = geompy.GetInPlace(facePeau, edge) edgesBords.append(edgepeau) @@ -188,7 +188,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains, edgesFacePeau = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False) edgesFacePeauSorted, minlg, maxlg = sortEdges(edgesFacePeau) demiCerclesPeau = edgesFacePeauSorted[0:4] - verticesDemiCerclesPeau = [] + verticesDemiCerclesPeau = list() for i, edge in enumerate(demiCerclesPeau): name = "demiCerclePeau_%d"%i geomPublishInFather(initLog.debug,facePeau, edge, name) @@ -203,9 +203,9 @@ def insereFissureLongue(geometriesSaines, maillagesSains, geomPublishInFather(initLog.debug,facePeau, vertex, name) # --- demi cercles regroupés - groupsDemiCerclesPeau = [] + groupsDemiCerclesPeau = list() for i, vertex in enumerate(verticesEdgePeauFiss): - demis = [] + demis = list() for edge in demiCerclesPeau: if geompy.MinDistance(vertex, edge) < 1.e-5: demis.append(edge) @@ -218,7 +218,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains, # --- identification edges commune pipe face fissure externe au pipe edgePeauFissId = geompy.GetSubShapeID(partitionPeauFissByPipe, edgePeauFiss) edgesFaceFiss = geompy.ExtractShapes(faceFiss, geompy.ShapeType["EDGE"], False) - edgesFaceFissPipe = [] + edgesFaceFissPipe = list() for edge in edgesFaceFiss: if geompy.GetSubShapeID(partitionPeauFissByPipe, edge) != edgePeauFissId: edgesFaceFissPipe.append(edge) @@ -255,13 +255,13 @@ def insereFissureLongue(geometriesSaines, maillagesSains, [vertexReference] = geompy.ExtractShapes(disque, geompy.ShapeType["VERTEX"], False) pipeFondFiss = geompy.MakePipe(disque, wireFondFiss) - pipeFondFiss = geompy.MakePartition([pipeFondFiss], [planfiss, wireFondFiss, planBord1, planBord2], [], [], geompy.ShapeType["SOLID"], 0, [], 0) + pipeFondFiss = geompy.MakePartition([pipeFondFiss], [planfiss, wireFondFiss, planBord1, planBord2], list(), list(), geompy.ShapeType["SOLID"], 0, list(), 0) #pipe = geompy.MakePipe(disque, WirePorteFondFissure) - #pipe = geompy.MakePartition([pipe],[fillingFaceExterne], [], [], geompy.ShapeType["SOLID"], 0, [], 0) + #pipe = geompy.MakePartition([pipe],[fillingFaceExterne], list(), list(), geompy.ShapeType["SOLID"], 0, list(), 0) #pipes = geompy.ExtractShapes(pipe, geompy.ShapeType["SOLID"], False) #pipesSorted, volmin, volmax = sortSolids(pipes) #pipeFondFiss = pipesSorted[-1] - #pipeFondFiss = geompy.MakePartition([pipeFondFiss], [planfiss, wireFondFiss, planBord1, planBord2], [], [], geompy.ShapeType["SOLID"], 0, [], 0) + #pipeFondFiss = geompy.MakePartition([pipeFondFiss], [planfiss, wireFondFiss, planBord1, planBord2], list(), list(), geompy.ShapeType["SOLID"], 0, list(), 0) geomPublish(initLog.debug, disque, 'disque') geomPublish(initLog.debug, wireFondFiss, 'wireFondFiss') @@ -271,7 +271,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains, for i, v in enumerate(VerticesEndFondFiss): name = "vertexEndFondFiss_%d"%i geomPublishInFather(initLog.debug,wireFondFiss, v, name) - VerticesEndPipeFiss = [] + VerticesEndPipeFiss = list() for v in VerticesEndFondFiss: VerticesEndPipeFiss.append(geompy.GetInPlace(pipeFondFiss, v)) for i, v in enumerate(VerticesEndPipeFiss): @@ -307,8 +307,8 @@ def insereFissureLongue(geometriesSaines, maillagesSains, # generatrices = edgesPipeOnplan moins rayon disques (3 grandes et 6 petites) edgesIdPipeOnside = getSubshapeIds(pipeFondFiss, edgesPipeOnside) edgesIdPipeOnplan = getSubshapeIds(pipeFondFiss, edgesPipeOnplan) - rayons = [] - demiCercles = [] + rayons = list() + demiCercles = list() for i, edgeId in enumerate(edgesIdPipeOnside): if edgeId in edgesIdPipeOnplan: rayons.append(edgesPipeOnside[i]) @@ -318,13 +318,13 @@ def insereFissureLongue(geometriesSaines, maillagesSains, rayons = rayons + edgesSorted[:4] # les 4 plus petits sont les rayons demiCercles = demiCercles + edgesSorted[4:] # les suivants sont les arcs de cercle rayonsId = getSubshapeIds(pipeFondFiss, rayons) - generatrices = [] + generatrices = list() for i, edgeId in enumerate(edgesIdPipeOnplan): if edgeId not in rayonsId: generatrices.append(edgesPipeOnplan[i]) # --- generatrices en contact avec la face fissure externe au pipe - generFiss = [] + generFiss = list() for edge in generatrices: distance = geompy.MinDistance(vertexReference, edge) logging.debug("distance %s", distance) @@ -341,9 +341,9 @@ def insereFissureLongue(geometriesSaines, maillagesSains, geomPublishInFather(initLog.debug,pipeFondFiss, groupGenerFiss, "GenFiss") # --- demi cercles externes regroupés - groupsDemiCerclesPipe = [] + groupsDemiCerclesPipe = list() for i, vertex in enumerate(verticesEdgePeauFiss): - demis = [] + demis = list() for edge in demiCerclesExternes: if geompy.MinDistance(vertex, edge) < 0.1: demis.append(edge) @@ -355,7 +355,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains, # --- faces fissure dans le pipe - facesFissinPipe = [] + facesFissinPipe = list() generFissId = getSubshapeIds(pipeFondFiss, generFiss) logging.debug("generatrice fissure %s", generFissId) for face in facesPipeOnplan: @@ -376,7 +376,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains, # --- edges de fond de fissure - edgesFondFiss = [] + edgesFondFiss = list() for i, edge in enumerate(edgesInside): anEdge = geompy.GetInPlace(pipeFondFiss, edge) logging.debug(" edge %s ", anEdge) @@ -395,7 +395,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains, aFilterManager = smesh.CreateFilterManager() nbAdded, internalBoundary, _NoneGroup = internalBoundary.MakeBoundaryElements( SMESH.BND_1DFROM2D, '', '', 0, [ ]) - criteres = [] + criteres = list() unCritere = smesh.GetCriterion(SMESH.EDGE,SMESH.FT_FreeBorders,SMESH.FT_Undefined,0) criteres.append(unCritere) filtre = smesh.GetFilterFromCriteria(criteres) @@ -452,7 +452,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains, isDone = meshFondFiss.Compute() logging.info("meshFondFiss computed") - disks = [] + disks = list() for i, face in enumerate(disques[:4]): name = "disk%d"%i disks.append(meshFondFiss.GroupOnGeom(face, name, SMESH.FACE)) @@ -464,8 +464,8 @@ def insereFissureLongue(geometriesSaines, maillagesSains, grp = meshFondFiss.GroupOnGeom(groupFaceFissInPipe, "fisInPi", SMESH.FACE) group_edgeFondFiss = meshFondFiss.GroupOnGeom(groupEdgeFondFiss, "FONDFISS", SMESH.EDGE) noeudsFondFissure = meshFondFiss.GroupOnGeom(groupEdgeFondFiss, "nfondfis", SMESH.NODE) - groups_demiCercles = [] - groupnodes_demiCercles = [] + groups_demiCercles = list() + groupnodes_demiCercles = list() for i, group in enumerate(groupsDemiCerclesPipe): name = "Cercle%d"%i groups_demiCercles.append(meshFondFiss.GroupOnGeom(group, name, SMESH.EDGE)) @@ -477,12 +477,12 @@ def insereFissureLongue(geometriesSaines, maillagesSains, grpNode1 = meshFondFiss.IntersectGroups(groupnode_generFiss, groupnodes_demiCercles[1], "Node1") idNode0 = grpNode0.GetID(1) idNode1 = grpNode1.GetID(1) - coordsMesh = [] + coordsMesh = list() coordsMesh.append(meshFondFiss.GetNodeXYZ(idNode0)) coordsMesh.append(meshFondFiss.GetNodeXYZ(idNode1)) - coordsGeom = [] + coordsGeom = list() for vertex in verticesEdgePeauFiss: - coord = geompy.PointCoordinates(vertex); + coord = geompy.PointCoordinates(vertex) if distance2(coord, coordsMesh[0]) < 0.1: meshFondFiss.MoveNode(idNode0, coord[0], coord[1], coord[2]) if distance2(coord, coordsMesh[1]) < 0.1: @@ -526,7 +526,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains, ratio = (nbSegGenBout/float(profondeur)) / (nbSegGenLong/lenEdgePeauFiss) logging.info("lenEdgePeauFiss %s, profondeur %s, nbSegGenLong %s, nbSegGenBout %s, frac %s, ratio %s", lenEdgePeauFiss, profondeur, nbSegGenLong, nbSegGenBout, frac, ratio) algo1d = meshFacePeau.Segment(geom=edgePeauFiss) - hypo1d = algo1d.NumberOfSegments(nbSeg,[],[ ]) + hypo1d = algo1d.NumberOfSegments(nbSeg,list(),[ ]) hypo1d.SetDistrType( 2 ) hypo1d.SetConversionMode( 1 ) hypo1d.SetTableFunction( [ 0, ratio, frac, 1, (1.-frac), 1, 1, ratio ] ) @@ -589,11 +589,11 @@ def insereFissureLongue(geometriesSaines, maillagesSains, grp = meshFaceFiss.GroupOnGeom(faceFiss, "fisOutPi", SMESH.FACE) - meshBoiteDefaut = smesh.Concatenate([internalBoundary.GetMesh(), - meshFondFiss.GetMesh(), - meshFacePeau.GetMesh(), - meshFaceFiss.GetMesh()], - 1, 1, 1e-05,False) + meshBoiteDefaut = smesh.Concatenate( [internalBoundary.GetMesh(), \ + meshFondFiss.GetMesh(), \ + meshFacePeau.GetMesh(), \ + meshFaceFiss.GetMesh()], \ + 1, 1, 1e-05,False) # pour aider l'algo hexa-tetra a ne pas mettre de pyramides a l'exterieur des volumes replies sur eux-memes # on designe les faces de peau en quadrangles par le groupe "skinFaces" group_faceFissOutPipe = None diff --git a/src/Tools/blocFissure/gmu/mailleFacesFissure.py b/src/Tools/blocFissure/gmu/mailleFacesFissure.py index 66f6bbfbc..c7da52e98 100644 --- a/src/Tools/blocFissure/gmu/mailleFacesFissure.py +++ b/src/Tools/blocFissure/gmu/mailleFacesFissure.py @@ -26,12 +26,13 @@ from salome.smesh import smeshBuilder import SMESH from .putName import putName - -def mailleFacesFissure(faceFissureExterne, edgesPipeFissureExterneC, edgesPeauFissureExterneC, + +def mailleFacesFissure(faceFissureExterne, edgesPipeFissureExterneC, edgesPeauFissureExterneC, \ meshPipeGroups, areteFaceFissure, rayonPipe, nbsegRad): """maillage faces de fissure""" logging.info('start') - logging.info("Maillage de {}".format(faceFissureExterne.GetName())) + texte = "Maillage de {}".format(faceFissureExterne.GetName()) + logging.info(texte) meshFaceFiss = smesh.Mesh(faceFissureExterne) algo2d = meshFaceFiss.Triangle(algo=smeshBuilder.NETGEN_1D2D) @@ -46,7 +47,8 @@ def mailleFacesFissure(faceFissureExterne, edgesPipeFissureExterneC, edgesPeauFi putName(algo2d, "algo2d_faceFiss") putName(hypo2d, "hypo2d_faceFiss") - logging.info("Récupération des arêtes de '{}'".format(edgesPipeFissureExterneC.GetName())) + texte = "Récupération des arêtes de '{}'".format(edgesPipeFissureExterneC.GetName()) + logging.info(texte) algo1d = meshFaceFiss.UseExisting1DElements(geom=edgesPipeFissureExterneC) hypo1d = algo1d.SourceEdges([ meshPipeGroups['edgeFaceFissGroup'] ],0,0) putName(algo1d.GetSubMesh(), "edgeFissPeau") diff --git a/src/Tools/blocFissure/gmu/meshBlocPart.py b/src/Tools/blocFissure/gmu/meshBlocPart.py index 2806d19de..ccde33c9c 100644 --- a/src/Tools/blocFissure/gmu/meshBlocPart.py +++ b/src/Tools/blocFissure/gmu/meshBlocPart.py @@ -29,12 +29,12 @@ from .putName import putName # ----------------------------------------------------------------------------- # --- maillage du bloc partitionne -def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circles, faces, - gencnt, facefissoutore, edgeext, facesExternes, facesExtBloc, facesExtElli, - aretesInternes, internalBoundary, ellipsoidep, sharedFaces, sharedEdges, edgesBords, +def 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): - """ - Maillage du bloc partitionné + """Maillage du bloc partitionné + TODO: a completer """ logging.info('start') @@ -43,7 +43,7 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle aFilterManager = smesh.CreateFilterManager() nbAdded, internalBoundary, _NoneGroup = internalBoundary.MakeBoundaryElements( SMESH.BND_1DFROM2D, '', '', 0, [ ]) - criteres = [] + criteres = list() unCritere = smesh.GetCriterion(SMESH.EDGE,SMESH.FT_FreeBorders,SMESH.FT_Undefined,0) criteres.append(unCritere) filtre = smesh.GetFilterFromCriteria(criteres) @@ -54,8 +54,8 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle bloc1 = smesh.Mesh(blocPartition) - for i in range(len(sharedFaces)): - algo2d = bloc1.Triangle(algo=smeshBuilder.NETGEN, geom=sharedFaces[i]) + for i, sharedFaces_i in enumerate(sharedFaces): + algo2d = bloc1.Triangle(algo=smeshBuilder.NETGEN, geom=sharedFaces_i) hypo2d = algo2d.Parameters(which=smesh.SIMPLE) hypo2d.SetLocalLength(lensegEllipsoide) hypo2d.LengthFromEdges() @@ -64,8 +64,8 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle putName(algo2d, "algo2d_sharedFaces", i) putName(hypo2d, "hypo2d_sharedFaces", i) - for i in range(len(sharedEdges)): - algo1d = bloc1.Segment(geom=sharedEdges[i]) + for i, sharedEdges_i in enumerate(sharedEdges): + algo1d = bloc1.Segment(geom=sharedEdges_i) hypo1d = algo1d.LocalLength(lensegEllipsoide) putName(algo1d.GetSubMesh(), "sharedEdges", i) putName(algo1d, "algo1d_sharedEdges", i) @@ -89,28 +89,28 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle putName(algo1d, "algo1d_tore") putName(hypo1d, "hypo1d_tore") - for i in range(len(faces)): - algo2d = bloc1.Quadrangle(geom=faces[i]) + for i, faces_i in enumerate(faces): + algo2d = bloc1.Quadrangle(geom=faces_i) hypo2d = smesh.CreateHypothesis('QuadrangleParams') hypo2d.SetTriaVertex( geompy.GetSubShapeID(blocPartition,centres[i]) ) hypo2d.SetQuadType( StdMeshersBuilder.QUAD_STANDARD ) - status = bloc1.AddHypothesis(hypo2d,faces[i]) + status = bloc1.AddHypothesis(hypo2d,faces_i) putName(algo2d.GetSubMesh(), "faces", i) putName(algo2d, "algo2d_faces", i) putName(hypo2d, "hypo2d_faces", i) - for i in range(len(edges)): - algo1d = bloc1.Segment(geom=edges[i]) + for i, edges_i in enumerate(edges): + algo1d = bloc1.Segment(geom=edges_i) if reverses[i] > 0: - hypo1d = algo1d.NumberOfSegments(nbsegRad, scaleRad,[ geompy.GetSubShapeID(blocPartition,edges[i]) ]) + hypo1d = algo1d.NumberOfSegments(nbsegRad, scaleRad,[ geompy.GetSubShapeID(blocPartition,edges_i) ]) else: hypo1d = algo1d.NumberOfSegments(nbsegRad, scaleRad,[ ]) putName(algo1d.GetSubMesh(), "edges", i) putName(algo1d, "algo1d_edges", i) putName(hypo1d, "hypo1d_edges", i) - for i in range(len(circles)): - algo1d = bloc1.Segment(geom=circles[i]) + for i, circles_i in enumerate(circles): + algo1d = bloc1.Segment(geom=circles_i) hypo1d = algo1d.NumberOfSegments(nbsegCercle) putName(algo1d.GetSubMesh(), "circles", i) putName(algo1d, "algo1d_circles", i) @@ -128,22 +128,22 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle putName(hypo1d, "hypo1d_edgeext") else: longTotal = 0 - longEdgeExts = [] - for i in range(len(edgeext)): - props = geompy.BasicProperties(edgeext[i]) + longEdgeExts = list() + for i, edgeext_i in enumerate(edgeext): + props = geompy.BasicProperties(edgeext_i) longEdgeExts.append(props[0]) longTotal += props[0] - for i in range(len(edgeext)): + for i, edgeext_i in enumerate(edgeext): local = longTotal/nbsegFis nbLocal = int(round(nbsegFis*longEdgeExts[i]/longTotal)) densite = int(round(nbLocal/2)) - algo1d = bloc1.Segment(geom=edgeext[i]) + algo1d = bloc1.Segment(geom=edgeext_i) hypo1d = algo1d.NumberOfSegments(nbLocal) hypo1d.SetDistrType( 2 ) hypo1d.SetConversionMode( 1 ) hypo1d.SetTableFunction( [ 0, densite, 0.8, 1, 1, 1 ] ) if reverext[i]: - hypo1d.SetReversedEdges([ geompy.GetSubShapeID(blocPartition, edgeext[i]) ]) + hypo1d.SetReversedEdges([ geompy.GetSubShapeID(blocPartition, edgeext_i) ]) putName(algo1d.GetSubMesh(), "edgeext", i) putName(algo1d, "algo1d_edgeext", i) putName(hypo1d, "hypo1d_edgeext", i) @@ -158,11 +158,11 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle maxElemArea = 0.5*dmoyen*dmoyen logging.debug("dmoyen %s, maxElemArea %s", dmoyen, maxElemArea) - for i in range(len(facesExternes)): - algo2d = bloc1.Triangle(algo=smeshBuilder.NETGEN_2D, geom=facesExternes[i]) + for i, facesExternes_i in enumerate(facesExternes): + algo2d = bloc1.Triangle(algo=smeshBuilder.NETGEN_2D, geom=facesExternes_i) hypo2d = algo2d.MaxElementArea(maxElemArea) if edgesBords is None: - algo1d = bloc1.Segment(geom=facesExternes[i]) + algo1d = bloc1.Segment(geom=facesExternes_i) hypo1d = algo1d.NumberOfSegments(1) putName(algo2d.GetSubMesh(), "facesExternes", i) putName(algo2d, "algo2d_facesExternes", i) @@ -171,8 +171,8 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle putName(algo1d, "algo1d_facesExternes", i) putName(hypo1d, "hypo1d_facesExternes", i) - for i in range(len(aretesInternes)): - algo1d = bloc1.Segment(geom=aretesInternes[i]) + for i, aretesInternes_i in enumerate(aretesInternes): + algo1d = bloc1.Segment(geom=aretesInternes_i) hypo1d = algo1d.NumberOfSegments(nbsegExt) putName(algo1d.GetSubMesh(), "aretesInternes", i) putName(algo1d, "algo1d_aretesInternes", i) @@ -201,26 +201,26 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle faceFissure1 = bloc1.GroupOnGeom(faceFissure,'FACE1',SMESH.FACE) noeudsFondFissure = bloc1.GroupOnGeom(gencnt,'nfondfis',SMESH.NODE) - groups_faceCommuneEllipsoideBloc = [] - for i in range(len(sharedFaces)): + groups_faceCommuneEllipsoideBloc = list() + for i, sharedFaces_i in enumerate(sharedFaces): name = "faceCommuneEllipsoideBloc_%d"%i - groups_faceCommuneEllipsoideBloc.append(bloc1.GroupOnGeom(sharedFaces[i], name, SMESH.FACE)) - groups_faceExterneBloc = [] - for i in range(len(facesExtBloc)): + groups_faceCommuneEllipsoideBloc.append(bloc1.GroupOnGeom(sharedFaces_i, name, SMESH.FACE)) + groups_faceExterneBloc = list() + for i, facesExtBloc_i in enumerate(facesExtBloc): name = "faceExterneBloc_%d"%i - groups_faceExterneBloc.append(bloc1.GroupOnGeom(facesExtBloc[i], name, SMESH.FACE)) + groups_faceExterneBloc.append(bloc1.GroupOnGeom(facesExtBloc_i, name, SMESH.FACE)) - skinBlocMeshes = [] - for i in range(len(groups_faceCommuneEllipsoideBloc)): + skinBlocMeshes = list() + for i, groups_faceCommuneEllipsoideBloc_i in enumerate(groups_faceCommuneEllipsoideBloc): name = "faceCommuneEllipsoideBloc_%d"%i - skinBlocMeshes.append(smesh.CopyMesh(groups_faceCommuneEllipsoideBloc[i], name, 0, 0)) - for i in range(len(groups_faceExterneBloc)): + skinBlocMeshes.append(smesh.CopyMesh(groups_faceCommuneEllipsoideBloc_i, name, 0, 0)) + for i, groups_faceExterneBloc_i in enumerate(groups_faceExterneBloc): name = "faceExterneBloc_%d"%i - skinBlocMeshes.append(smesh.CopyMesh(groups_faceExterneBloc[i], name, 0, 0)) + skinBlocMeshes.append(smesh.CopyMesh(groups_faceExterneBloc_i, name, 0, 0)) meshesBloc = [internalBoundary.GetMesh()] - for i in range(len(skinBlocMeshes)): - meshesBloc.append(skinBlocMeshes[i].GetMesh()) + for i, skinBlocMeshes_i in enumerate(skinBlocMeshes): + meshesBloc.append(skinBlocMeshes_i.GetMesh()) blocMesh = smesh.Concatenate(meshesBloc, 1, 1, 1e-05,False) algo3d = blocMesh.Tetrahedron(algo=smeshBuilder.NETGEN) @@ -230,7 +230,14 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle putName(hypo3d, "hypo3d_bloc") is_done = blocMesh.Compute() + text = "meshBlocPart Compute" + if is_done: + logging.info(text) + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) blocComplet = smesh.Concatenate([bloc1.GetMesh(), blocMesh.GetMesh()], 1, 1, 1e-05,False) - return bloc1, blocComplet \ No newline at end of file + return bloc1, blocComplet From d6d7f3ffb4ee160d9e1e38d20faa3200caf812ae Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 16:54:49 +0100 Subject: [PATCH 22/57] =?UTF-8?q?Conformit=C3=A9=20python?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/ihm/fissureCoude_ihm.py | 62 ++--- .../blocFissure/ihm/fissureCoude_plugin.py | 228 +++++++++--------- 2 files changed, 143 insertions(+), 147 deletions(-) diff --git a/src/Tools/blocFissure/ihm/fissureCoude_ihm.py b/src/Tools/blocFissure/ihm/fissureCoude_ihm.py index a9c09c699..aed15a306 100644 --- a/src/Tools/blocFissure/ihm/fissureCoude_ihm.py +++ b/src/Tools/blocFissure/ihm/fissureCoude_ihm.py @@ -34,8 +34,8 @@ class fissureCoude_ihm(fissureCoude): # --------------------------------------------------------------------------- def setParamGeometrieSaine(self): - """ - Paramètres géométriques du tuyau coudé sain: + """Paramètres géométriques du tuyau coudé sain: + angleCoude r_cintr l_tube_p1 @@ -43,26 +43,26 @@ class fissureCoude_ihm(fissureCoude): epais de """ - self.geomParams = dict(angleCoude = self.dico['angle'], - r_cintr = self.dico['rCintr'], - l_tube_p1 = self.dico['lTubeP1'], - l_tube_p2 = self.dico['lTubeP2'], - epais = self.dico['epais'], + self.geomParams = dict(angleCoude = self.dico['angle'], \ + r_cintr = self.dico['rCintr'], \ + l_tube_p1 = self.dico['lTubeP1'], \ + l_tube_p2 = self.dico['lTubeP2'], \ + epais = self.dico['epais'], \ de = self.dico['dext']) # --------------------------------------------------------------------------- def setParamMaillageSain(self): - self.meshParams = dict(n_long_p1 = self.dico['nbAxeTubeP1'], - n_ep = self.dico['nbEpaisseur'], - n_long_coude = self.dico['nbAxeCoude'], - n_circ_g = self.dico['nbCirconf'], - n_circ_d = self.dico['nbCirconf'], + self.meshParams = dict(n_long_p1 = self.dico['nbAxeTubeP1'], \ + n_ep = self.dico['nbEpaisseur'], \ + n_long_coude = self.dico['nbAxeCoude'], \ + n_circ_g = self.dico['nbCirconf'], \ + n_circ_d = self.dico['nbCirconf'], \ n_long_p2 = self.dico['nbAxeTubeP2']) # --------------------------------------------------------------------------- def setParamShapeFissure(self): - """ - paramètres de la fissure pour le tuyau coude + """paramètres de la fissure pour le tuyau coude + profondeur : 0 < profondeur <= épaisseur rayonPipe : rayon du pipe correspondant au maillage rayonnant lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut) @@ -76,43 +76,43 @@ class fissureCoude_ihm(fissureCoude): externe : True : fissure face externe, False : fissure face interne """ print("setParamShapeFissure", self.nomCas) - self.shapeFissureParams = dict(profondeur = self.dico['profondeur'], - rayonPipe = self.dico['rayonTore'], - lenSegPipe = self.dico['lenSegPipe'], - azimut = self.dico['azimut'], - alpha = self.dico['posiAngul'], - longueur = self.dico['longueur'], - orientation = self.dico['orientation'], - lgInfluence = self.dico['influence'], - elliptique = self.dico['cbForceEllipse'], + self.shapeFissureParams = dict(profondeur = self.dico['profondeur'], \ + rayonPipe = self.dico['rayonTore'], \ + lenSegPipe = self.dico['lenSegPipe'], \ + azimut = self.dico['azimut'], \ + alpha = self.dico['posiAngul'], \ + longueur = self.dico['longueur'], \ + orientation = self.dico['orientation'], \ + lgInfluence = self.dico['influence'], \ + elliptique = self.dico['cbForceEllipse'], \ externe = self.dico['rbFissExt']) # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - """ - Paramètres du maillage de la fissure pour le tuyau coudé + """Paramètres du maillage de la fissure pour le tuyau coudé + Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe. nbSegRad = nombre de couronnes nbSegCercle = nombre de secteurs areteFaceFissure = taille cible de l'arête des triangles en face de fissure. """ - self.maillageFissureParams = dict(nomRep = os.curdir, - nomFicSain = self.nomCas, - nomFicFissure = 'fissure_' + self.nomCas, - nbsegRad = self.dico['nbCouronnes'], - nbsegCercle = self.dico['nbSecteurs'], + self.maillageFissureParams = dict(nomRep = os.curdir, \ + nomFicSain = self.nomCas, \ + nomFicFissure = 'fissure_' + self.nomCas, \ + nbsegRad = self.dico['nbCouronnes'], \ + nbsegCercle = self.dico['nbSecteurs'], \ areteFaceFissure = self.dico['aretesFaceFissure']) # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): self.referencesMaillageFissure = dict( \ - Entity_Quad_Pyramid = 0, Entity_Quad_Quadrangle = 0, \ Entity_Quad_Hexa = 0, \ Entity_Node = 0, \ Entity_Quad_Edge = 0, \ Entity_Quad_Triangle = 0, \ Entity_Quad_Tetra = 0, \ + Entity_Quad_Pyramid = 0, \ Entity_Quad_Penta = 0 \ ) diff --git a/src/Tools/blocFissure/ihm/fissureCoude_plugin.py b/src/Tools/blocFissure/ihm/fissureCoude_plugin.py index db54bdd81..a1d3f417f 100644 --- a/src/Tools/blocFissure/ihm/fissureCoude_plugin.py +++ b/src/Tools/blocFissure/ihm/fissureCoude_plugin.py @@ -34,26 +34,25 @@ def fissureCoudeDlg(context): # get context study, salomeGui study = context.study sg = context.sg - - import os + #import subprocess #import tempfile from qtsalome import QFileDialog, QMessageBox, QPalette, QColor, QDialog from blocFissure.ihm.fissureCoude_ui import Ui_Dialog - + class fissureCoudeDialog(QDialog): - + def __init__(self): QDialog.__init__(self) # Set up the user interface from Designer. self.ui = Ui_Dialog() self.ui.setupUi(self) - + self.blackPalette = self.ui.dsb_angle.palette() self.redPalette = QPalette() self.redPalette.setColor(QPalette.Text, QColor(255,0,0)) self.NOK = False - + self.initDefaut() self.initDialog(self.defaut) self.ui.dsb_angle.setSpecialValueText("saisie_obligatoire") @@ -74,7 +73,7 @@ def fissureCoudeDlg(context): self.ui.dsb_aretesFaceFissure.setSpecialValueText("automatique") self.ui.dsb_influence.setSpecialValueText("automatique") self.ui.lb_calcul.hide() - + # Connect up the buttons. self.ui.pb_valPrec.clicked.connect(self.readValPrec) self.ui.pb_reset.clicked.connect(self.resetVal) @@ -82,39 +81,39 @@ def fissureCoudeDlg(context): self.ui.pb_sauver.clicked.connect(self.sauver) self.ui.buttonBox.accepted.disconnect(self.accept) self.ui.buttonBox.accepted.connect(self.execute) - + def initDefaut(self): - self.defaut = dict( - angle = -181.0, - rCintr = 0.0, - lTubeP1 = 0.0, - lTubeP2 = 0.0, - epais = 0.0, - dext = 0.0, - profondeur = 0.0, - longueur = 0.0, - azimut = -181.0, - orientation = -1.0, - posiAngul = -181.0, - absCurv = 0.0, - nbTranches = 7, - nbCouronnes = 1, - nbSecteurs = 3, - cbOptDiscrSain = False, - cbOptDiscrFiss = False, - rbPosiAngul = True, - rbFissExt = True, - cbForceEllipse = False, - nbAxeTubeP1 = 15, - nbAxeTubeP2 = 15, - nbAxeCoude = 10, - nbCirconf = 20, - nbEpaisseur = 3, - rayonTore = 2.0, - aretesFaceFissure = 0.0, - influence = 0.0, + self.defaut = dict( \ + angle = -181.0, \ + rCintr = 0.0, \ + lTubeP1 = 0.0, \ + lTubeP2 = 0.0, \ + epais = 0.0, \ + dext = 0.0, \ + profondeur = 0.0, \ + longueur = 0.0, \ + azimut = -181.0, \ + orientation = -1.0, \ + posiAngul = -181.0, \ + absCurv = 0.0, \ + nbTranches = 7, \ + nbCouronnes = 1, \ + nbSecteurs = 3, \ + cbOptDiscrSain = False, \ + cbOptDiscrFiss = False, \ + rbPosiAngul = True, \ + rbFissExt = True, \ + cbForceEllipse = False, \ + nbAxeTubeP1 = 15, \ + nbAxeTubeP2 = 15, \ + nbAxeCoude = 10, \ + nbCirconf = 20, \ + nbEpaisseur = 3, \ + rayonTore = 2.0, \ + aretesFaceFissure = 0.0, \ + influence = 0.0, \ ) - + def initDialog(self, dico): self.ui.dsb_angle.setValue(dico['angle']) self.ui.dsb_rCintr.setValue(dico['rCintr']) @@ -159,7 +158,7 @@ def fissureCoudeDlg(context): self.ui.cb_forceEllipse.setChecked(dico['cbForceEllipse']) incomplet = self.testval(dico) pass - + def testval(self, dico): incomplet = False if dico['angle'] < -180.0: @@ -167,109 +166,109 @@ def fissureCoudeDlg(context): incomplet = True else: self.ui.dsb_angle.setPalette(self.blackPalette) - + if dico['rCintr'] == 0.0: self.ui.dsb_rCintr.setPalette(self.redPalette) incomplet = True else: self.ui.dsb_rCintr.setPalette(self.blackPalette) - - if dico['lTubeP1'] == 0.0: + + if dico['lTubeP1'] == 0.0: self.ui.dsb_lTubeP1.setPalette(self.redPalette) incomplet = True else: self.ui.dsb_lTubeP1.setPalette(self.blackPalette) - - if dico['lTubeP2'] == 0.0: + + if dico['lTubeP2'] == 0.0: self.ui.dsb_lTubeP2.setPalette(self.redPalette) incomplet = True else: self.ui.dsb_lTubeP2.setPalette(self.blackPalette) - - if dico['epais'] == 0.0: + + if dico['epais'] == 0.0: self.ui.dsb_epais.setPalette(self.redPalette) incomplet = True else: self.ui.dsb_epais.setPalette(self.blackPalette) - - if dico['dext'] == 0.0: + + if dico['dext'] == 0.0: self.ui.dsb_dext.setPalette(self.redPalette) incomplet = True else: self.ui.dsb_dext.setPalette(self.blackPalette) - - if dico['profondeur'] == 0.0: + + if dico['profondeur'] == 0.0: self.ui.dsb_profondeur.setPalette(self.redPalette) incomplet = True else: self.ui.dsb_profondeur.setPalette(self.blackPalette) - - if dico['longueur'] == 0.0: + + if dico['longueur'] == 0.0: self.ui.dsb_longueur.setPalette(self.redPalette) incomplet = True else: self.ui.dsb_longueur.setPalette(self.blackPalette) - - if dico['azimut'] < -180.0: + + if dico['azimut'] < -180.0: self.ui.dsb_azimut.setPalette(self.redPalette) incomplet = True else: self.ui.dsb_azimut.setPalette(self.blackPalette) - - if dico['orientation'] < 0.0: + + if dico['orientation'] < 0.0: self.ui.dsb_orientation.setPalette(self.redPalette) incomplet = True else: self.ui.dsb_orientation.setPalette(self.blackPalette) - - if dico['posiAngul'] < -180.0 and dico['rbPosiAngul'] == True: + + if ( ( dico['posiAngul'] < -180.0 ) and dico['rbPosiAngul'] ): self.ui.dsb_posiAngul.setPalette(self.redPalette) incomplet = True else: self.ui.dsb_posiAngul.setPalette(self.blackPalette) - - if dico['absCurv'] == 0.0 and dico['rbPosiAngul'] == False: + + if ( ( dico['absCurv'] == 0.0 ) and ( not dico['rbPosiAngul'] ) ): self.ui.dsb_absCurv.setPalette(self.redPalette) incomplet = True else: self.ui.dsb_absCurv.setPalette(self.blackPalette) - - if dico['nbTranches'] == 7: + + if dico['nbTranches'] == 7: self.ui.sb_nbTranches.setPalette(self.redPalette) incomplet = True else: self.ui.sb_nbTranches.setPalette(self.blackPalette) - - if dico['nbCouronnes'] == 1: + + if dico['nbCouronnes'] == 1: self.ui.sb_nbCouronne.setPalette(self.redPalette) incomplet = True else: self.ui.sb_nbCouronne.setPalette(self.blackPalette) - - if dico['nbSecteurs'] == 3: + + if dico['nbSecteurs'] == 3: self.ui.sb_nbSecteur.setPalette(self.redPalette) incomplet = True else: self.ui.sb_nbSecteur.setPalette(self.blackPalette) - + print("incomplet: ", incomplet) return incomplet - + def fileDefault(self): filedef = os.path.expanduser( os.path.join(os.environ["HOME"],".config", "salome", "dialogFissureCoude.dic") ) print(filedef) return filedef - + def writeDefault(self, dico): filedef = self.fileDefault() with open(filedef, 'w') as f: - f.write(str(dico)) - + f.write(str(dico)) + def readValPrec(self): filedef = self.fileDefault() if os.path.exists(filedef): with open(filedef, 'r') as f: - txt = f.read() + txt = f.read() dico = eval(txt) print(dico) self.initDialog(dico) @@ -277,7 +276,7 @@ def fissureCoudeDlg(context): def resetVal(self): #self.initDefaut() self.initDialog(self.defaut) - + def sauver(self): print("sauver") fileDiag = QFileDialog(self) @@ -289,8 +288,8 @@ def fissureCoudeDlg(context): filedef = fileNames[0] dico = self.creeDico() with open(filedef, 'w') as f: - f.write(str(dico)) - + f.write(str(dico)) + def recharger(self): print("recharger") fileDiag = QFileDialog(self) @@ -303,45 +302,45 @@ def fissureCoudeDlg(context): print(filedef) if os.path.exists(filedef): with open(filedef, 'r') as f: - txt = f.read() + txt = f.read() dico = eval(txt) print(dico) self.initDialog(dico) - + def creeDico(self): - dico = dict( - angle = self.ui.dsb_angle.value(), - rCintr = self.ui.dsb_rCintr.value(), - lTubeP1 = self.ui.dsb_lTubeP1.value(), - lTubeP2 = self.ui.dsb_lTubeP2.value(), - epais = self.ui.dsb_epais.value(), - dext = self.ui.dsb_dext.value(), - profondeur = self.ui.dsb_profondeur.value(), - longueur = self.ui.dsb_longueur.value(), - azimut = self.ui.dsb_azimut.value(), - orientation = self.ui.dsb_orientation.value(), - posiAngul = self.ui.dsb_posiAngul.value(), - absCurv = self.ui.dsb_absCurv.value(), - nbTranches = self.ui.sb_nbTranches.value(), - nbCouronnes = self.ui.sb_nbCouronne.value(), - nbSecteurs = self.ui.sb_nbSecteur.value(), - cbOptDiscrSain = self.ui.cb_optDiscrSain.isChecked(), - cbOptDiscrFiss = self.ui.cb_optDiscrFiss.isChecked(), - rbPosiAngul = self.ui.rb_posiAngul.isChecked(), - rbFissExt = self.ui.rb_fissExt.isChecked(), - cbForceEllipse = self.ui.cb_forceEllipse.isChecked(), - nbAxeTubeP1 = self.ui.sb_nbAxeTubeP1.value(), - nbAxeTubeP2 = self.ui.sb_nbAxeTubeP2.value(), - nbAxeCoude = self.ui.sb_nbAxeCoude.value(), - nbCirconf = self.ui.sb_nbCirconf.value(), - nbEpaisseur = self.ui.sb_nbEpaisseur.value(), - rayonTore = self.ui.dsb_rayonTore.value(), - aretesFaceFissure = self.ui.dsb_aretesFaceFissure.value(), - influence = self.ui.dsb_influence.value(), + dico = dict( \ + angle = self.ui.dsb_angle.value(), \ + rCintr = self.ui.dsb_rCintr.value(), \ + lTubeP1 = self.ui.dsb_lTubeP1.value(), \ + lTubeP2 = self.ui.dsb_lTubeP2.value(), \ + epais = self.ui.dsb_epais.value(), \ + dext = self.ui.dsb_dext.value(), \ + profondeur = self.ui.dsb_profondeur.value(), \ + longueur = self.ui.dsb_longueur.value(), \ + azimut = self.ui.dsb_azimut.value(), \ + orientation = self.ui.dsb_orientation.value(), \ + posiAngul = self.ui.dsb_posiAngul.value(), \ + absCurv = self.ui.dsb_absCurv.value(), \ + nbTranches = self.ui.sb_nbTranches.value(), \ + nbCouronnes = self.ui.sb_nbCouronne.value(), \ + nbSecteurs = self.ui.sb_nbSecteur.value(), \ + cbOptDiscrSain = self.ui.cb_optDiscrSain.isChecked(), \ + cbOptDiscrFiss = self.ui.cb_optDiscrFiss.isChecked(), \ + rbPosiAngul = self.ui.rb_posiAngul.isChecked(), \ + rbFissExt = self.ui.rb_fissExt.isChecked(), \ + cbForceEllipse = self.ui.cb_forceEllipse.isChecked(), \ + nbAxeTubeP1 = self.ui.sb_nbAxeTubeP1.value(), \ + nbAxeTubeP2 = self.ui.sb_nbAxeTubeP2.value(), \ + nbAxeCoude = self.ui.sb_nbAxeCoude.value(), \ + nbCirconf = self.ui.sb_nbCirconf.value(), \ + nbEpaisseur = self.ui.sb_nbEpaisseur.value(), \ + rayonTore = self.ui.dsb_rayonTore.value(), \ + aretesFaceFissure = self.ui.dsb_aretesFaceFissure.value(), \ + influence = self.ui.dsb_influence.value(), \ ) print(dico) return dico - + def checkValues(self): return self.NOK @@ -352,7 +351,7 @@ def fissureCoudeDlg(context): from blocFissure.gmu import geomsmesh from blocFissure.gmu.casStandard import casStandard from blocFissure.ihm.fissureCoude_ihm import fissureCoude_ihm - + dico = self.creeDico() NOK = self.testval(dico) if not(NOK): @@ -370,14 +369,14 @@ def fissureCoudeDlg(context): if dico['aretesFaceFissure'] == 0: dico['aretesFaceFissure'] = (areteMinAngle + areteMinCirco)/2.0 print('aretesFaceFissure', dico['aretesFaceFissure']) - if dico['rbPosiAngul'] == False: + if not dico['rbPosiAngul']: rmoy = (dico['dext'] - dico['epais'])/2.0 eta = 1 - if dico['rbFissExt'] == False: + if not dico['rbFissExt']: eta = -1 dico['posiAngul'] = (180.0/math.pi)*dico['absCurv']/(dico['rCintr']+(rmoy+eta*dico['epais']/2.0)*math.cos(math.pi*dico['azimut']/180.)) print('posiAngul' , dico['posiAngul']) - + self.writeDefault(dico) self.ui.lb_calcul.show() probleme = fissureCoude_ihm(0) @@ -385,11 +384,9 @@ def fissureCoudeDlg(context): probleme.executeProbleme() self.NOK = NOK self.accept() - - pass # ---------------------------------------------------------------------------- - + window = fissureCoudeDialog() # window.ui.dsb_tolerance.setValue(0.01) retry = True @@ -403,5 +400,4 @@ def fissureCoudeDlg(context): retry = window.checkValues() else: print("dialog rejected, exit") - pass - + From 65d5c162a53ab3e5dde959524035211c9da8f194 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 17:00:07 +0100 Subject: [PATCH 23/57] =?UTF-8?q?mise=20=C3=A0=20jour=20des=20cas-tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/CasTests/cylindre_2.py | 2 +- src/Tools/blocFissure/CasTests/disquePerce.py | 18 +++---- .../blocFissure/CasTests/faceGauche_2.py | 16 +++---- src/Tools/blocFissure/CasTests/vis_1.py | 48 +++++++++++-------- 4 files changed, 48 insertions(+), 36 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/cylindre_2.py b/src/Tools/blocFissure/CasTests/cylindre_2.py index 246145709..9b94dc3f2 100644 --- a/src/Tools/blocFissure/CasTests/cylindre_2.py +++ b/src/Tools/blocFissure/CasTests/cylindre_2.py @@ -63,13 +63,13 @@ class cylindre_2(cylindre): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): self.referencesMaillageFissure = dict( \ - Entity_Quad_Pyramid = 1158, Entity_Quad_Quadrangle = 7028, \ Entity_Quad_Hexa = 18366, \ Entity_Node = 105035, \ Entity_Quad_Edge = 735, \ Entity_Quad_Triangle = 1056, \ Entity_Quad_Tetra = 16305, \ + Entity_Quad_Pyramid = 1158, \ Entity_Quad_Penta = 384 \ ) diff --git a/src/Tools/blocFissure/CasTests/disquePerce.py b/src/Tools/blocFissure/CasTests/disquePerce.py index 1f821426b..34211ce29 100644 --- a/src/Tools/blocFissure/CasTests/disquePerce.py +++ b/src/Tools/blocFissure/CasTests/disquePerce.py @@ -35,12 +35,14 @@ dicoParams = dict(nomCas = 'disque', # --------------------------------------------------------------------------- -referencesMaillageFissure = dict(Entity_Quad_Pyramid = 610, - Entity_Quad_Triangle = 1284, - Entity_Quad_Edge = 393, - Entity_Quad_Penta = 592, - Entity_Quad_Hexa = 6952, - Entity_Node = 51119, - Entity_Quad_Tetra = 11672, - Entity_Quad_Quadrangle = 3000) +referencesMaillageFissure = dict ( \ + Entity_Quad_Quadrangle = 1630, \ + Entity_Quad_Hexa = 3523, \ + Entity_Node = 18874, \ + Entity_Quad_Edge = 261, \ + Entity_Quad_Triangle = 190, \ + Entity_Quad_Tetra = 1322, \ + Entity_Quad_Pyramid = 172, \ + Entity_Quad_Penta = 64 \ + ) diff --git a/src/Tools/blocFissure/CasTests/faceGauche_2.py b/src/Tools/blocFissure/CasTests/faceGauche_2.py index d16921f50..bbddb5852 100644 --- a/src/Tools/blocFissure/CasTests/faceGauche_2.py +++ b/src/Tools/blocFissure/CasTests/faceGauche_2.py @@ -111,13 +111,13 @@ class faceGauche_2(fissureGenerique): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): self.referencesMaillageFissure = dict( \ - Entity_Quad_Pyramid = 859, - Entity_Quad_Triangle = 634, - Entity_Quad_Edge = 323, - Entity_Quad_Penta = 288, - Entity_Quad_Hexa = 3435, - Entity_Node = 44095, - Entity_Quad_Tetra = 18400, - Entity_Quad_Quadrangle = 2542 + Entity_Quad_Quadrangle = 2542, \ + Entity_Quad_Hexa = 3435, \ + Entity_Node = 44095, \ + Entity_Quad_Edge = 323, \ + Entity_Quad_Triangle = 634, \ + Entity_Quad_Tetra = 18400, \ + Entity_Quad_Pyramid = 859, \ + Entity_Quad_Penta = 288 \ ) diff --git a/src/Tools/blocFissure/CasTests/vis_1.py b/src/Tools/blocFissure/CasTests/vis_1.py index 4ddd3715b..164fc752d 100644 --- a/src/Tools/blocFissure/CasTests/vis_1.py +++ b/src/Tools/blocFissure/CasTests/vis_1.py @@ -47,47 +47,53 @@ class vis_1(fissureGenerique): # --------------------------------------------------------------------------- def genereMaillageSain(self, geometriesSaines, meshParams): - logging.info("genereMaillageSain %s", self.nomCas) + texte = "genereMaillageSain pour '{}'".format(self.nomCas) + logging.info(texte) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests/visSain.med")) - smesh.SetName(objetSain.GetMesh(), 'objetSain') + ([objetSain], _) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "visSain.med")) + smesh.SetName(objetSain.GetMesh(), "{}_objetSain".format(self.nomProbleme)) return [objetSain, True] # True : maillage hexa # --------------------------------------------------------------------------- def setParamShapeFissure(self): - """ - paramètres de la fissure pour méthode construitFissureGenerale + """paramètres de la fissure pour méthode construitFissureGenerale + lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage) rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure convexe : optionnel True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne pointIn_x : optionnel coordonnée x d'un point dans le solide sain (pour orienter la face) """ - logging.info("setParamShapeFissure %s", self.nomCas) + texte = "setParamShapeFissure pour '{}'".format(self.nomCas) + logging.info(texte) self.shapeFissureParams = dict(lgInfluence = 0.6, rayonPipe = 0.1) # --------------------------------------------------------------------------- def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams): - logging.info("genereShapeFissure %s", self.nomCas) + """Importe la géométrie de la fissure et crée le groupe du fond de la fissure""" + texte = "genereShapeFissure pour '{}'".format(self.nomCas) + logging.info(texte) lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/visFiss.brep")) + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests", "visFiss.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) - geompy.UnionIDs(fondFiss, [6, 8]) + geompy.UnionIDs(fondFiss, [6, 8, 3]) geompy.addToStudy( shellFiss, 'shellFiss' ) geompy.addToStudyInFather( shellFiss, fondFiss, 'fondFiss' ) - coordsNoeudsFissure = genereMeshCalculZoneDefaut(shellFiss, 0.1 ,0.2) centre = None + return [shellFiss, centre, lgInfluence, coordsNoeudsFissure, fondFiss] # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - self.maillageFissureParams = dict(nomRep = '.', + texte = "setParamMaillageFissure pour '{}'".format(self.nomCas) + logging.info(texte) + self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, nbsegRad = 5, @@ -103,6 +109,8 @@ class vis_1(fissureGenerique): def genereMaillageFissure(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step): + texte = "genereMaillageFissure pour '{}'".format(self.nomCas) + logging.info(texte) maillageFissure = construitFissureGenerale(maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step) @@ -110,12 +118,14 @@ class vis_1(fissureGenerique): # --------------------------------------------------------------------------- def setReferencesMaillageFissure(self): - self.referencesMaillageFissure = dict(Entity_Quad_Pyramid = 1284, - Entity_Quad_Triangle = 2336, - Entity_Quad_Edge = 758, - Entity_Quad_Penta = 984, - Entity_Quad_Hexa = 6416, - Entity_Node = 85673, - Entity_Quad_Tetra = 35990, - Entity_Quad_Quadrangle = 4285) + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 4285 ,\ + Entity_Quad_Hexa = 6416, \ + Entity_Node = 85673, \ + Entity_Quad_Edge = 758, \ + Entity_Quad_Triangle = 2336, \ + Entity_Quad_Tetra = 35990, \ + Entity_Quad_Pyramid = 1284, \ + Entity_Quad_Penta = 984 \ + ) From 0068dfdcb1ee619cb96d637e7384d6e341e71cff Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 18:34:02 +0100 Subject: [PATCH 24/57] =?UTF-8?q?Contr=C3=B4le=20des=20calculs=20de=20mail?= =?UTF-8?q?lage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gmu/calculePointsAxiauxPipe.py | 74 +-- .../gmu/construitFissureGenerale.py | 10 +- .../blocFissure/gmu/construitMaillagePipe.py | 4 + src/Tools/blocFissure/gmu/fissureCoude.py | 9 +- .../gmu/genereMeshCalculZoneDefaut.py | 11 +- .../blocFissure/gmu/insereFissureGenerale.py | 472 ++++++++++-------- .../blocFissure/gmu/insereFissureLongue.py | 40 +- .../blocFissure/gmu/mailleAretesEtJonction.py | 16 +- .../blocFissure/gmu/mailleFacesFissure.py | 8 +- src/Tools/blocFissure/gmu/mailleFacesPeau.py | 34 +- src/Tools/blocFissure/gmu/meshBlocPart.py | 13 +- .../blocFissure/materielCasTests/cubeAngle.py | 11 +- .../blocFissure/materielCasTests/cubeFin.py | 10 +- .../materielCasTests/decoupeCylindre.py | 11 +- .../materielCasTests/disque_perce.py | 11 +- .../materielCasTests/eprouvetteCourbe.py | 11 +- .../materielCasTests/eprouvetteDroite.py | 11 +- .../materielCasTests/fissureGauche.py | 11 +- .../materielCasTests/fissureGauche2.py | 11 +- src/Tools/blocFissure/materielCasTests/vis.py | 6 +- 20 files changed, 469 insertions(+), 315 deletions(-) diff --git a/src/Tools/blocFissure/gmu/calculePointsAxiauxPipe.py b/src/Tools/blocFissure/gmu/calculePointsAxiauxPipe.py index 2dd1a9fc4..01c7e0cd5 100644 --- a/src/Tools/blocFissure/gmu/calculePointsAxiauxPipe.py +++ b/src/Tools/blocFissure/gmu/calculePointsAxiauxPipe.py @@ -23,43 +23,53 @@ import math from .geomsmesh import geompy from .geomsmesh import smesh - -def calculePointsAxiauxPipe(edgesFondFiss, edgesIdByOrientation, facesDefaut, + +def calculePointsAxiauxPipe(edgesFondFiss, edgesIdByOrientation, facesDefaut, centreFondFiss, wireFondFiss, wirePipeFiss, lenSegPipe, rayonPipe, nbsegCercle, nbsegRad): - """ - preparation maillage du pipe : + """preparation maillage du pipe : + - détections des points a respecter : jonction des edges/faces constituant la face de fissure externe au pipe - points sur les edges de fond de fissure et edges pipe/face fissure, - - vecteurs tangents au fond de fissure (normal au disque maillé) + - vecteurs tangents au fond de fissure (normal au disque maillé) """ - + logging.info('start') - # --- option de maillage selon le rayon de courbure du fond de fissure + # --- option de maillage selon le rayon de courbure du fond de fissure lenEdgeFondExt = 0 for edff in edgesFondFiss: lenEdgeFondExt += geompy.BasicProperties(edff)[0] - - disfond = [] + + disfond = list() for filling in facesDefaut: disfond.append(geompy.MinDistance(centreFondFiss, filling)) disfond.sort() rcourb = disfond[0] + texte = "rcourb: {}, lenEdgeFondExt: {}, lenSegPipe: {}".format(rcourb, lenEdgeFondExt, lenSegPipe) + logging.info(texte) nbSegQuart = 5 # on veut 5 segments min sur un quart de cercle alpha = math.pi/(4*nbSegQuart) deflexion = rcourb*(1.0 -math.cos(alpha)) lgmin = lenSegPipe*0.25 - lgmax = lenSegPipe*1.5 - logging.debug("rcourb: %s, lenFond:%s, deflexion: %s, lgmin: %s, lgmax: %s", rcourb, lenEdgeFondExt, deflexion, lgmin, lgmax) + lgmax = lenSegPipe*1.5 + texte = "==> deflexion: {}, lgmin: {}, lgmax: {}".format(deflexion, lgmin, lgmax) + logging.info(texte) meshFondExt = smesh.Mesh(wireFondFiss) algo1d = meshFondExt.Segment() hypo1d = algo1d.Adaptive(lgmin, lgmax, deflexion) # a ajuster selon la profondeur de la fissure - isDone = meshFondExt.Compute() - - ptGSdic = {} # dictionnaire [paramètre sur la courbe] --> point géométrique + is_done = meshFondExt.Compute() + text = "calculePointsAxiauxPipe meshFondExt.Compute" + if is_done: + logging.info(text) + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + + ptGSdic = dict() # dictionnaire [paramètre sur la courbe] --> point géométrique allNodeIds = meshFondExt.GetNodesId() for nodeId in allNodeIds: xyz = meshFondExt.GetNodeXYZ(nodeId) @@ -69,19 +79,19 @@ def calculePointsAxiauxPipe(edgesFondFiss, edgesIdByOrientation, facesDefaut, edgeOrder = edgesIdByOrientation[EdgeInWireIndex] ptGSdic[(edgeOrder, EdgeInWireIndex, u)] = pt #logging.debug("nodeId %s, u %s", nodeId, str(u)) - usort = sorted(ptGSdic) + usort = sorted(ptGSdic) logging.debug("nombre de points obtenus par deflexion %s",len(usort)) - - centres = [] - origins = [] - normals = [] + + centres = list() + origins = list() + normals = list() for edu in usort: ied = edu[1] u = edu[2] vertcx = ptGSdic[edu] norm = geompy.MakeTangentOnCurve(edgesFondFiss[ied], u) plan = geompy.MakePlane(vertcx, norm, 3*rayonPipe) - part = geompy.MakePartition([plan], [wirePipeFiss], [], [], geompy.ShapeType["VERTEX"], 0, [], 0) + part = geompy.MakePartition([plan], [wirePipeFiss], list(), list(), geompy.ShapeType["VERTEX"], 0, list(), 0) liste = geompy.ExtractShapes(part, geompy.ShapeType["VERTEX"], True) if len(liste) == 5: # 4 coins du plan plus intersection recherchée for point in liste: @@ -99,21 +109,21 @@ def calculePointsAxiauxPipe(edgesFondFiss, edgesIdByOrientation, facesDefaut, # geompy.addToStudyInFather(wireFondFiss, plan, name) # --- maillage du pipe étendu, sans tenir compte de l'intersection avec la face de peau - + logging.debug("nbsegCercle %s", nbsegCercle) - + # ----------------------------------------------------------------------- # --- points géométriques - - gptsdisks = [] # vertices géométrie de tous les disques - raydisks = [[] for i in range(nbsegCercle)] - for i in range(len(centres)): # boucle sur les disques - gptdsk = [] # vertices géométrie d'un disque - vertcx = centres[i] + + gptsdisks = list() # vertices géométrie de tous les disques + raydisks = [list() for i in range(nbsegCercle)] + for i, centres_i in enumerate(centres): # boucle sur les disques + gptdsk = list() # vertices géométrie d'un disque + vertcx = centres_i vertpx = origins[i] normal = normals[i] vec1 = geompy.MakeVector(vertcx, vertpx) - + points = [vertcx] # les points du rayon de référence for j in range(nbsegRad): pt = geompy.MakeTranslationVectorDistance(vertcx, vec1, (j+1)*float(rayonPipe)/nbsegRad) @@ -122,7 +132,7 @@ def calculePointsAxiauxPipe(edgesFondFiss, edgesIdByOrientation, facesDefaut, pt = geompy.MakeTranslationVectorDistance(vertcx, vec1, 1.5*rayonPipe) rayon = geompy.MakeLineTwoPnt(vertcx, pt) raydisks[0].append(rayon) - + for k in range(nbsegCercle-1): angle = (k+1)*2*math.pi/nbsegCercle pts = [vertcx] # les points d'un rayon obtenu par rotation @@ -132,7 +142,7 @@ def calculePointsAxiauxPipe(edgesFondFiss, edgesIdByOrientation, facesDefaut, gptdsk.append(pts) ray = geompy.MakeRotation(rayon, normal, angle) raydisks[k+1].append(ray) - + gptsdisks.append(gptdsk) - + return (centres, gptsdisks, raydisks) diff --git a/src/Tools/blocFissure/gmu/construitFissureGenerale.py b/src/Tools/blocFissure/gmu/construitFissureGenerale.py index 36296b208..84ef19835 100644 --- a/src/Tools/blocFissure/gmu/construitFissureGenerale.py +++ b/src/Tools/blocFissure/gmu/construitFissureGenerale.py @@ -318,9 +318,15 @@ def construitFissureGenerale(maillagesSains, hypo3d = algo3d.MaxElementVolume(1000.0) putName(algo3d.GetSubMesh(), "boiteDefaut") putName(algo3d, "algo3d_boiteDefaut") - isDone = meshBoiteDefaut.Compute() putName(meshBoiteDefaut, "boiteDefaut") - logging.info("meshBoiteDefaut fini") + is_done = meshBoiteDefaut.Compute() + text = "meshBoiteDefaut.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) faceFissure = meshBoiteDefaut.GetMesh().UnionListOfGroups( [ group_faceFissOutPipe, group_faceFissInPipe ], \ 'FACE1' ) diff --git a/src/Tools/blocFissure/gmu/construitMaillagePipe.py b/src/Tools/blocFissure/gmu/construitMaillagePipe.py index 26bd14f46..0f5576a24 100644 --- a/src/Tools/blocFissure/gmu/construitMaillagePipe.py +++ b/src/Tools/blocFissure/gmu/construitMaillagePipe.py @@ -185,4 +185,8 @@ def construitMaillagePipe(gptsdisks, idisklim, nbsegCercle, nbsegRad): edgesCircPipeGroup = edgesCircPipeGroup \ ) + #if meshPipe: + #text = "Arrêt rapide.\n" + #logging.info(text) + #raise Exception(text) return (meshPipe, meshPipeGroups, edgesCircPipeGroup) diff --git a/src/Tools/blocFissure/gmu/fissureCoude.py b/src/Tools/blocFissure/gmu/fissureCoude.py index d3006b843..772ce40f3 100644 --- a/src/Tools/blocFissure/gmu/fissureCoude.py +++ b/src/Tools/blocFissure/gmu/fissureCoude.py @@ -295,7 +295,14 @@ class fissureCoude(fissureGenerique): smesh.SetName(algo1d_long_p2, "algo1d_long_p2") smesh.SetName(hypo1d_long_p2, "hypo1d_long_p2") - isDone = maillageSain.Compute() + is_done = maillageSain.Compute() + text = "maillageSain.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) mp1 = maillageSain.GroupOnGeom(P1,'P1',SMESH.NODE) mp2 = maillageSain.GroupOnGeom(P2,'P2',SMESH.NODE) diff --git a/src/Tools/blocFissure/gmu/genereMeshCalculZoneDefaut.py b/src/Tools/blocFissure/gmu/genereMeshCalculZoneDefaut.py index 788b731af..90942514a 100644 --- a/src/Tools/blocFissure/gmu/genereMeshCalculZoneDefaut.py +++ b/src/Tools/blocFissure/gmu/genereMeshCalculZoneDefaut.py @@ -39,7 +39,7 @@ def genereMeshCalculZoneDefaut(facefiss, minSize, maxSize): -SetQuadAllowed = permission quadrangle dans maillage triangle -On récupère les coordonnées de chaque noeud de la fissure qu'on stocke dans une liste sous la forme : [X0, Y0, Z0, ..., Xn, Yn, Zn]""" - + logging.info('start') text = "Maillage de '{}'".format(facefiss.GetName()) logging.info(text) @@ -56,11 +56,10 @@ def genereMeshCalculZoneDefaut(facefiss, minSize, maxSize): smesh.SetName(algo2d, "algo2d_zoneFiss") smesh.SetName(hypo2d, "hypo1d_zoneFiss") - isDone = meshFissure.Compute() - - if isDone: - logging.info(text+" : OK") - logging.debug(text+" : OK") + is_done = meshFissure.Compute() + text = "meshFissure.Compute" + if is_done: + logging.info(text+" OK") else: text = "Erreur au calcul du maillage.\n" + text logging.info(text) diff --git a/src/Tools/blocFissure/gmu/insereFissureGenerale.py b/src/Tools/blocFissure/gmu/insereFissureGenerale.py index 6340ed3a8..3c12d89b7 100644 --- a/src/Tools/blocFissure/gmu/insereFissureGenerale.py +++ b/src/Tools/blocFissure/gmu/insereFissureGenerale.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""procédure complète fissure générale""" + import os import logging @@ -58,9 +60,6 @@ from .projettePointSurCourbe import projettePointSurCourbe from .prolongeWire import prolongeWire #from getCentreFondFiss import getCentreFondFiss -# ----------------------------------------------------------------------------- -# --- procédure complète fissure générale - def insereFissureGenerale(maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step=-1): @@ -68,7 +67,7 @@ def insereFissureGenerale(maillagesSains, TODO: a completer """ logging.info('start') - + shapeDefaut = shapesFissure[0] # faces de fissure, débordant fondFiss = shapesFissure[4] # groupe d'edges de fond de fissure @@ -127,7 +126,7 @@ def insereFissureGenerale(maillagesSains, # --- restriction de la face de fissure au domaine solide : # partition face fissure étendue par fillings, on garde la plus grande face - partShapeDefaut = geompy.MakePartition([shapeDefaut], facesDefaut, [], [], geompy.ShapeType["FACE"], 0, [], 0) + partShapeDefaut = geompy.MakePartition([shapeDefaut], facesDefaut, list(), list(), geompy.ShapeType["FACE"], 0, [], 0) geomPublish(initLog.debug, partShapeDefaut, 'partShapeDefaut') facesPartShapeDefaut = geompy.ExtractShapes(partShapeDefaut, geompy.ShapeType["FACE"], False) if isPointInterne: @@ -139,22 +138,22 @@ def insereFissureGenerale(maillagesSains, facesPartShapeDefautSorted, minSurf, maxSurf = sortFaces(facesPartShapeDefaut) # la face de fissure dans le volume doit être la plus grande logging.debug("surfaces faces fissure étendue, min %s, max %s", minSurf, maxSurf) facesPortFissure = facesPartShapeDefautSorted[-1] #= global - + geomPublish(initLog.debug, facesPortFissure, "facesPortFissure") O, OX, OY, OZ = triedreBase() - + # ----------------------------------------------------------------------------- # --- pipe de fond de fissure, prolongé, partition face fissure par pipe # identification des edges communes pipe et face fissure - + if geompy.NumberOfFaces(shapeDefaut) == 1: plan = geompy.MakePlane(centreFondFiss, tgtCentre, 10000) shapeDefaut = geompy.MakePartition([shapeDefaut], [plan], [], [], geompy.ShapeType["FACE"], 0, [], 0) #= local #fondFissCoupe = geompy.GetInPlaceByHistory(shapeDefaut, fondFiss) #= inutile geomPublish(initLog.debug, shapeDefaut, 'shapeDefaut_coupe') #geomPublishInFather(initLog.debug,shapeDefaut, fondFissCoupe, 'fondFiss_coupe') - + extrem, norms = findWireEndVertices(fondFiss, True) logging.debug("extrem: %s, norm: %s",extrem, norms) cercle = geompy.MakeCircle(extrem[0], norms[0], rayonPipe) @@ -169,7 +168,7 @@ def insereFissureGenerale(maillagesSains, geomPublish(initLog.debug, fissPipe, 'fissPipe') partPipe = geompy.GetInPlaceByHistory(partFissPipe, pipeFiss) #= local geomPublish(initLog.debug, partPipe, 'partPipe') - + edgesPipeFiss = geompy.GetSharedShapesMulti([fissPipe, partPipe], geompy.ShapeType["EDGE"]) #= global for i, edge in enumerate(edgesPipeFiss): name = "edgePipe%d"%i @@ -180,14 +179,14 @@ def insereFissureGenerale(maillagesSains, wirePipeFiss = geompy.MakeCompound(edgesPipeFiss) logging.debug("wirePipeFiss construit sous forme de compound") geomPublish(initLog.debug, wirePipeFiss, "wirePipeFiss") - + wireFondFiss = geompy.GetInPlace(partFissPipe,fondFiss) edgesFondFiss = geompy.GetSharedShapesMulti([fissPipe, wireFondFiss], geompy.ShapeType["EDGE"]) for i, edge in enumerate(edgesFondFiss): name = "edgeFondFiss%d"%i geomPublishInFather(initLog.debug,fissPipe, edge, name) wireFondFiss = geompy.MakeWire(edgesFondFiss) #= global - geomPublish(initLog.debug, wireFondFiss,"wireFondFiss") + geomPublish(initLog.debug, wireFondFiss,"wireFondFiss") # ----------------------------------------------------------------------------- # --- peau et face de fissure @@ -197,68 +196,68 @@ def insereFissureGenerale(maillagesSains, # liste de faces externes : facesDefaut # liste de partitions face externe - fissure : partitionPeauFissFond (None quand pas d'intersection) - partitionsPeauFissFond = [] #= global + partitionsPeauFissFond = list() #= global ipart = 0 - for filling in facesDefaut: - part = geompy.MakePartition([fissPipe, filling], [], [], [], geompy.ShapeType["FACE"], 0, [], 0) + for filling in facesDefaut: + part = geompy.MakePartition([fissPipe, filling], list(), list(), list(), geompy.ShapeType["FACE"], 0, list(), 0) isPart = checkDecoupePartition([fissPipe, filling], part) if isPart: # on recrée la partition avec toutes les faces filling en outil pour avoir une face de fissure correcte otherFD = [fd for fd in facesDefaut if fd != filling] if len(otherFD) > 0: - fissPipePart = geompy.MakePartition([fissPipe], otherFD, [], [], geompy.ShapeType["FACE"], 0, [], 0) + fissPipePart = geompy.MakePartition([fissPipe], otherFD, list(), list(), geompy.ShapeType["FACE"], 0, list(), 0) else: fissPipePart = fissPipe - part = geompy.MakePartition([fissPipePart, filling], [], [], [], geompy.ShapeType["FACE"], 0, [], 0) + part = geompy.MakePartition([fissPipePart, filling], list(), list(), list(), geompy.ShapeType["FACE"], 0, list(), 0) partitionsPeauFissFond.append(part) geomPublish(initLog.debug, part, 'partitionPeauFissFond%d'%ipart ) else: partitionsPeauFissFond.append(None) ipart = ipart +1 - - + + # --- arêtes vives détectées (dans quadranglesToShapeNoCorner # et quadranglesToShapeWithCorner) - - aretesVives = [] - aretesVivesCoupees = [] #= global + + aretesVives = list() + aretesVivesCoupees = list() #= global ia = 0 for a in bordsPartages: if not isinstance(a, list): - aretesVives.append(a) - name = "areteVive%d"%ia - geomPublish(initLog.debug, a, name) - ia += 1 + aretesVives.append(a) + name = "areteVive%d"%ia + geomPublish(initLog.debug, a, name) + ia += 1 else: - if a[0] is not None: - aretesVives.append(a[0]) - name = "areteVive%d"%ia - geomPublish(initLog.debug, a[0], name) - ia += 1 + if a[0] is not None: + aretesVives.append(a[0]) + name = "areteVive%d"%ia + geomPublish(initLog.debug, a[0], name) + ia += 1 aretesVivesC = None #= global if len(aretesVives) > 0: aretesVivesC =geompy.MakeCompound(aretesVives) - + # ------------------------------------------------------- # --- inventaire des faces de peau coupées par la fissure # pour chaque face de peau : 0, 1 ou 2 faces débouchante du fond de fissure # 0, 1 ou plus edges de la face de fissure externe au pipe - + nbFacesFilling = len(partitionsPeauFissFond) - ptEdgeFond = [ [] for i in range(nbFacesFilling)] # pour chaque face [points edge fond de fissure aux débouchés du pipe] - fsPipePeau = [ [] for i in range(nbFacesFilling)] # pour chaque face [faces du pipe débouchantes] - edRadFPiPo = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge radiale des faces du pipe débouchantes ] - fsFissuExt = [ [] for i in range(nbFacesFilling)] # pour chaque face [faces de fissure externes au pipe] - edFisExtPe = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)] - edFisExtPi = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge commun au pipe des faces de fissure externes] + ptEdgeFond = [ list() for i in range(nbFacesFilling)] # pour chaque face [points edge fond de fissure aux débouchés du pipe] + fsPipePeau = [ list() for i in range(nbFacesFilling)] # pour chaque face [faces du pipe débouchantes] + edRadFPiPo = [ list() for i in range(nbFacesFilling)] # pour chaque face [edge radiale des faces du pipe débouchantes ] + fsFissuExt = [ list() for i in range(nbFacesFilling)] # pour chaque face [faces de fissure externes au pipe] + edFisExtPe = [ list() for i in range(nbFacesFilling)] # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)] + edFisExtPi = [ list() for i in range(nbFacesFilling)] # pour chaque face [edge commun au pipe des faces de fissure externes] facesPeaux = [None for i in range(nbFacesFilling)] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes) - edCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe] - ptCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe] + edCircPeau = [ list() for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe] + ptCircPeau = [ list() for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe] gpedgeBord = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine gpedgeVifs = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupes subshape des edges aux arêtes vives entre fillings - edFissPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes] - ptFisExtPi = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [point commun edFissPeau edCircPeau] - + edFissPeau = [ list() for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes] + ptFisExtPi = [ list() for i in range(nbFacesFilling)] # pour chaque face de peau : [point commun edFissPeau edCircPeau] + for ifil, partitionPeauFissFond in enumerate(partitionsPeauFissFond): if partitionPeauFissFond is not None: fillingFaceExterne = facesDefaut[ifil] @@ -267,21 +266,21 @@ def insereFissureGenerale(maillagesSains, # ----------------------------------------------------------------------- # --- identification edges fond de fissure, edges pipe sur la face de fissure, # edges prolongées - + edgesPipeC = geompy.GetInPlace(partitionPeauFissFond, geompy.MakeCompound(edgesPipeFiss)) #= local geomPublishInFather(initLog.debug,partitionPeauFissFond, edgesPipeC, "edgesPipeFiss") edgesFondC = geompy.GetInPlace(partitionPeauFissFond, geompy.MakeCompound(edgesFondFiss)) #= local geomPublishInFather(initLog.debug,partitionPeauFissFond, edgesFondC, "edgesFondFiss") - + if aretesVivesC is None: #= global facesInside facesOnside [edgesInside, edgesOutside, edgesOnside] = extractionOrientee(fillingFaceExterne, partitionPeauFissFond, centreFondFiss, "EDGE", 1.e-3) [facesInside, facesOutside, facesOnside] = extractionOrientee(fillingFaceExterne, partitionPeauFissFond, centreFondFiss, "FACE", 1.e-3) else: [edgesInside, edgesOutside, edgesOnside] = extractionOrienteeMulti(facesDefaut, ifil, partitionPeauFissFond, centreFondFiss, "EDGE", 1.e-3) [facesInside, facesOutside, facesOnside] = extractionOrienteeMulti(facesDefaut, ifil, partitionPeauFissFond, centreFondFiss, "FACE", 1.e-3) - + edgesPipeIn = geompy.GetSharedShapesMulti([edgesPipeC, geompy.MakeCompound(edgesInside)], geompy.ShapeType["EDGE"]) #= global - verticesPipePeau = [] #= global + verticesPipePeau = list() #= global for i, edge in enumerate(edgesPipeIn): try: @@ -294,20 +293,20 @@ def insereFissureGenerale(maillagesSains, logging.debug("edgePipeIn%s coupe les faces OnSide", i) except: logging.debug("edgePipeIn%s ne coupe pas les faces OnSide", i) - #edgesFondOut = [] #= inutile - edgesFondIn =[] #= global - if len(verticesPipePeau) > 0: # au moins une extrémité du pipe sur cette face de peau + #edgesFondOut = list() #= inutile + edgesFondIn =list() #= global + if len(verticesPipePeau) > 0: # au moins une extrémité du pipe sur cette face de peau #tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesOutside)], geompy.ShapeType["EDGE"]) - #edgesFondOut = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3] + #edgesFondOut = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3] tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesInside)], geompy.ShapeType["EDGE"]) edgesFondIn = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3] - verticesEdgesFondIn = [] # les points du fond de fissure au débouché du pipe sur la peau (indice de edgesFondIn) - pipexts = [] # les segments de pipe associés au points de fond de fissure débouchants (même indice) - cercles = [] # les cercles de generation des pipes débouchant (même indice) - facesFissExt = [] # les faces de la fissure externe associés au points de fond de fissure débouchants (même indice) - edgesFissExtPeau = [] # edges des faces de fissure externe sur la peau (même indice) - edgesFissExtPipe = [] # edges des faces de fissure externe sur le pipe (même indice) + verticesEdgesFondIn = list() # les points du fond de fissure au débouché du pipe sur la peau (indice de edgesFondIn) + pipexts = list() # les segments de pipe associés au points de fond de fissure débouchants (même indice) + cercles = list() # les cercles de generation des pipes débouchant (même indice) + facesFissExt = list() # les faces de la fissure externe associés au points de fond de fissure débouchants (même indice) + edgesFissExtPeau = list() # edges des faces de fissure externe sur la peau (même indice) + edgesFissExtPipe = list() # edges des faces de fissure externe sur le pipe (même indice) #logging.debug("edgesFondIn %s", edgesFondIn) edgesFondFiss, edgesIdByOrientation = orderEdgesFromWire(wireFondFiss) @@ -342,8 +341,8 @@ def insereFissureGenerale(maillagesSains, # La partition filling / pipe reconstruit échoue. # - Si on partitionne le filling avec un simple pipe obtenu par extrusion droite du cercle, # cela donne un point en trop sur le cercle. - # - Si on prend une vraie surface plane (pas un filling), on peut faire la partition avec - # les pipes reconstruits + # - Si on prend une vraie surface plane (pas un filling), on peut faire la partition avec + # les pipes reconstruits logging.debug("angle=%s", angle) #if abs(angle) > 1.e-7: sommetAxe = geompy.MakeTranslationVector(centre, norm) @@ -366,15 +365,15 @@ def insereFissureGenerale(maillagesSains, locPt1 = geompy.MakeVertexOnCurve(localEdgeInFondFiss, 1.0) sidePt0 = whichSide(faceTestPeau, locPt0) sidePt1 = whichSide(faceTestPeau, locPt1) - logging.debug("position centre cercle: %s, extremité edge u0: %s, u1: %s", sideCentre, sidePt0, sidePt1) + logging.debug("position centre cercle: %s, extremité edge u0: %s, u1: %s", sideCentre, sidePt0, sidePt1) normFace = geompy.GetNormal(faceTestPeau, ptPeau) inclPipe = abs(geompy.GetAngleRadians(norm, normFace)) lgp = max(rayonPipe/2., abs(3*rayonPipe*math.tan(inclPipe))) logging.debug("angle inclinaison Pipe en sortie: %s degres, lgp: %s", inclPipe*180/math.pi, lgp) - + # --- position des points extremite du pipe sur l'edge debouchante # il faut la distance curviligne ofp du point central par rapport à une extrémité de l'edge débouchante - locEdgePart = geompy.MakePartition([localEdgeInFondFiss],[centre], [], [], geompy.ShapeType["EDGE"], 0, [], 0) + locEdgePart = geompy.MakePartition([localEdgeInFondFiss],[centre], list(), list(), geompy.ShapeType["EDGE"], 0, list(), 0) edgesLoc = geompy.ExtractShapes(locEdgePart, geompy.ShapeType["EDGE"], False) edgesLocSorted =[(geompy.MinDistance(edge, locPt0), kk, edge) for kk, edge in enumerate(edgesLoc)] edgesLocSorted.sort() @@ -385,7 +384,7 @@ def insereFissureGenerale(maillagesSains, geomPublishInFather(initLog.debug,wireFondFiss, p1, "p1_%d"%iedf) geomPublishInFather(initLog.debug,wireFondFiss, p2, "p2_%d"%iedf) - edgePart = geompy.MakePartition([localEdgeInFondFiss], [p1,p2], [], [], geompy.ShapeType["EDGE"], 0, [], 0) + edgePart = geompy.MakePartition([localEdgeInFondFiss], [p1,p2], list(), list(), geompy.ShapeType["EDGE"], 0, list(), 0) edps = geompy.ExtractShapes(edgePart, geompy.ShapeType["EDGE"], True) for edp in edps: if geompy.MinDistance(centre, edp) < 1.e-3: @@ -396,9 +395,9 @@ def insereFissureGenerale(maillagesSains, for face in facesInside: logging.debug("recherche edges communes entre une face inside et (faces onside, edges pipe et fond débouchante)") - edgesPeauFis = [] - edgesPipeFis = [] - edgesPipeFnd = [] + edgesPeauFis = list() + edgesPipeFis = list() + edgesPipeFnd = list() try: edgesPeauFis = geompy.GetSharedShapesMulti([geompy.MakeCompound(facesOnside), face], geompy.ShapeType["EDGE"]) logging.debug(" faces onside %s",edgesPeauFis) @@ -436,9 +435,9 @@ def insereFissureGenerale(maillagesSains, # il faut recenser les edges de fissure sur la face de peau j = 0 for face in facesInside: - edgesPeauFis = [] - edgesPipeFis = [] - edgesPipeFnd = [] + edgesPeauFis = list() + edgesPipeFis = list() + edgesPipeFnd = list() try: edgesPeauFis = geompy.GetSharedShapesMulti([geompy.MakeCompound(facesOnside), face], geompy.ShapeType["EDGE"]) edgesPipeFis = geompy.GetSharedShapesMulti([geompy.MakeCompound(edgesPipeIn), face], geompy.ShapeType["EDGE"]) @@ -450,28 +449,28 @@ def insereFissureGenerale(maillagesSains, name="edgesFissExtPeau%d"%j geomPublishInFather(initLog.debug,partitionPeauFissFond, edgesPeauFis[0], name) j += 1 - + # ----------------------------------------------------------------------- # --- identification faces de peau : face de peau percée du pipe, extrémités du pipe # La partition avec le pipe peut créer un vertex (et un edge) de trop sur le cercle projeté, # quand le cercle est très proche de la face. # dans ce cas, la projection du cercle sur la face suivie d'une partition permet # d'éviter le point en trop - + facesAndFond = facesOnside facesAndFond.append(wireFondFiss) try: - partitionPeauByPipe = geompy.MakePartition(facesAndFond, pipexts, [], [], geompy.ShapeType["FACE"], 0, [], 1) + partitionPeauByPipe = geompy.MakePartition(facesAndFond, pipexts, list(), list(), geompy.ShapeType["FACE"], 0, list(), 1) except: logging.debug("probleme partition face pipe, contournement avec MakeSection") - sections = [] + sections = list() for pipext in pipexts: sections.append(geompy.MakeSection(facesOnside[0], pipext)) - partitionPeauByPipe = geompy.MakePartition(facesAndFond, sections, [], [], geompy.ShapeType["FACE"], 0, [], 1) - + partitionPeauByPipe = geompy.MakePartition(facesAndFond, sections, list(), list(), geompy.ShapeType["FACE"], 0, list(), 1) + # contrôle edge en trop sur edges circulaires if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau - edgeEnTrop = [] + edgeEnTrop = list() outilPart = pipexts facesPeau = geompy.ExtractShapes(partitionPeauByPipe, geompy.ShapeType["FACE"], False) facesPeauSorted, minsur, maxsurf = sortFaces(facesPeau) @@ -497,31 +496,31 @@ def insereFissureGenerale(maillagesSains, if bad: outilPart[j] = geompy.MakeProjection(cercles[j],facesOnside[0]) pass - partitionPeauByPipe = geompy.MakePartition(facesAndFond, outilPart, [], [], geompy.ShapeType["FACE"], 0, [], 1) + partitionPeauByPipe = geompy.MakePartition(facesAndFond, outilPart, list(), list(), geompy.ShapeType["FACE"], 0, list(), 1) pass - + name="partitionPeauByPipe%d"%ifil geomPublish(initLog.debug, partitionPeauByPipe, name) [edgesPeauFondIn, edgesPeauFondOut, edgesPeauFondOn] = extractionOrientee(fillingFaceExterne, partitionPeauByPipe, centreFondFiss, "EDGE", 1.e-3) [facesPeauFondIn, facesPeauFondOut, facesPeauFondOn] = extractionOrientee(fillingFaceExterne, partitionPeauByPipe, centreFondFiss, "FACE", 1.e-3) - + if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau facesPeauSorted, minsur, maxsurf = sortFaces(facesPeauFondOn) facePeau = facesPeauSorted[-1] # la plus grande face else: - facePeau =geompy.MakePartition(facesPeauFondOn, [], [], [], geompy.ShapeType["FACE"], 0, [], 1) + facePeau =geompy.MakePartition(facesPeauFondOn, list(), list(), list(), geompy.ShapeType["FACE"], 0, list(), 1) name="facePeau%d"%ifil geomPublish(initLog.debug, facePeau, name) - + facesPipePeau = [None for i in range(len(edgesFissExtPipe))] endsEdgeFond = [None for i in range(len(edgesFissExtPipe))] edgeRadFacePipePeau = [None for i in range(len(edgesFissExtPipe))] - - edgesListees = [] - edgesCircPeau = [] - verticesCircPeau = [] + + edgesListees = list() + edgesCircPeau = list() + verticesCircPeau = list() if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau - + for face in facesPeauSorted[:-1]: # la ou les faces débouchantes, pas la grande face de peau logging.debug("examen face debouchante circulaire") for i,efep in enumerate(edgesFissExtPipe): @@ -530,8 +529,9 @@ def insereFissureGenerale(maillagesSains, if dist < 1e-3: for ik, edpfi in enumerate(edgesPeauFondIn): if geompy.MinDistance(face, edpfi) < 1e-3: + ikok = ik break - sharedVertices = geompy.GetSharedShapesMulti([face, edgesPeauFondIn[ik]], geompy.ShapeType["VERTEX"]) + sharedVertices = geompy.GetSharedShapesMulti([face, edgesPeauFondIn[ikok]], geompy.ShapeType["VERTEX"]) nameFace = "facePipePeau%d"%i nameVert = "endEdgeFond%d"%i nameEdge = "edgeRadFacePipePeau%d"%i @@ -549,11 +549,11 @@ def insereFissureGenerale(maillagesSains, pass pass pass - + # --- edges circulaires de la face de peau et points de jonction de la face externe de fissure logging.debug("facesPipePeau: %s", facesPipePeau) edgesCircPeau = [None for i in range(len(facesPipePeau))] - verticesCircPeau = [None for i in range(len(facesPipePeau))] + verticesCircPeau = [None for i in range(len(facesPipePeau))] for i,fcirc in enumerate(facesPipePeau): edges = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["EDGE"]) grpEdgesCirc = geompy.CreateGroup(facePeau, geompy.ShapeType["EDGE"]) @@ -574,7 +574,7 @@ def insereFissureGenerale(maillagesSains, # --- edges de bord de la face de peau edgesFilling = geompy.ExtractShapes(fillingFaceExterne, geompy.ShapeType["EDGE"], False) - edgesBords = [] + edgesBords = list() for i, edge in enumerate(edgesFilling): edgepeau = geompy.GetInPlace(facePeau, edge) name = "edgepeau%d"%i @@ -610,12 +610,12 @@ def insereFissureGenerale(maillagesSains, aretesVivesCoupees += edv logging.debug("aretesVivesCoupees %s",aretesVivesCoupees) geomPublishInFather(initLog.debug,facePeau, groupEdgesBordPeau , "EdgesBords") - + # --- edges de la face de peau partagées avec la face de fissure - + edgesPeau = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False) edges = substractSubShapes(facePeau, edgesPeau, edgesListees) - edgesFissurePeau = [] + edgesFissurePeau = list() if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau edgesFissurePeau = [None for i in range(len(verticesCircPeau))] # edges associés aux extrémités du pipe, en premier for edge in edges: @@ -632,7 +632,6 @@ def insereFissureGenerale(maillagesSains, edgesFissurePeau.append(edge) name = "edgeFissurePeau%d"%i geomPublishInFather(initLog.debug,facePeau, edge, name) - ptEdgeFond[ifil] = endsEdgeFond # pour chaque face [points edge fond de fissure aux débouchés du pipe] fsPipePeau[ifil] = facesPipePeau # pour chaque face [faces du pipe débouchantes] @@ -651,30 +650,30 @@ def insereFissureGenerale(maillagesSains, # ----------------------------------------------------------------------- # fin de la boucle sur les faces de filling # ----------------------------------------------------------------------- - + for i, avc in enumerate(aretesVivesCoupees): name = "areteViveCoupee%d"%i geomPublish(initLog.debug, avc, name) - + # --- identification des faces et edges de fissure externe pour maillage - - facesFissExt = [] - edgesFissExtPeau = [] - edgesFissExtPipe = [] + + facesFissExt = list() + edgesFissExtPeau = list() + edgesFissExtPipe = list() for ifil in range(nbFacesFilling): # TODO: éliminer les doublons (comparer tous les vertices triés, avec mesure de distance ?) facesFissExt += fsFissuExt[ifil] edgesFissExtPeau += edFisExtPe[ifil] edgesFissExtPipe += edFisExtPi[ifil] logging.debug("---------------------------- identification faces de fissure externes au pipe :%s ", len(facesFissExt)) # regroupement des faces de fissure externes au pipe. - + if len(facesFissExt) > 1: - faceFissureExterne = geompy.MakePartition(facesFissExt, [], [], [], geompy.ShapeType["FACE"], 0, [], 0) + faceFissureExterne = geompy.MakePartition(facesFissExt, list(), list(), list(), geompy.ShapeType["FACE"], 0, list(), 0) edgesPipeFissureExterneC = geompy.GetInPlace(faceFissureExterne, geompy.MakeCompound(edgesPipeFiss)) # edgesFissExtPipe peut ne pas couvrir toute la longueur # edgesPeauFissureExterneC = geompy.GetInPlace(faceFissureExterne, geompy.MakeCompound(edgesFissExtPeau)) # il peut manquer des edges de faceFissureExterne en contact avec la peau dans edgesFissExtPeau (isDone, closedFreeBoundaries, openFreeBoundaries) = geompy.GetFreeBoundary(faceFissureExterne) - edgesBordFFE = [] + edgesBordFFE = list() for bound in closedFreeBoundaries: edgesBordFFE += geompy.ExtractShapes(bound, geompy.ShapeType["EDGE"], False) edgesBordFFEid = [ (ed,geompy.GetSubShapeID(faceFissureExterne, ed)) for ed in edgesBordFFE] @@ -693,7 +692,7 @@ def insereFissureGenerale(maillagesSains, geomPublish(initLog.debug, faceFissureExterne, "faceFissureExterne") geomPublishInFather(initLog.debug,faceFissureExterne, edgesPeauFissureExterneC, "edgesPeauFissureExterne") geomPublishInFather(initLog.debug,faceFissureExterne, edgesPipeFissureExterneC, "edgesPipeFissureExterne") - + logging.debug("---------------------------- Preparation Maillage du Pipe --------------") # ----------------------------------------------------------------------- # --- preparation maillage du pipe : @@ -702,12 +701,12 @@ def insereFissureGenerale(maillagesSains, # - points sur les edges de fond de fissure et edges pipe/face fissure, # - vecteurs tangents au fond de fissure (normal au disque maillé) - # --- option de maillage selon le rayon de courbure du fond de fissure + # --- option de maillage selon le rayon de courbure du fond de fissure lenEdgeFondExt = 0 for edff in edgesFondFiss: lenEdgeFondExt += geompy.BasicProperties(edff)[0] - - disfond = [] + + disfond = list() for filling in facesDefaut: disfond.append(geompy.MinDistance(centreFondFiss, filling)) disfond.sort() @@ -716,14 +715,21 @@ def insereFissureGenerale(maillagesSains, alpha = math.pi/(4*nbSegQuart) deflexion = rcourb*(1.0 -math.cos(alpha)) lgmin = lenSegPipe*0.25 - lgmax = lenSegPipe*1.5 - logging.debug("rcourb: %s, lenFond:%s, deflexion: %s, lgmin: %s, lgmax: %s", rcourb, lenEdgeFondExt, deflexion, lgmin, lgmax) + lgmax = lenSegPipe*1.5 + logging.debug("rcourb: %s, lenFond:%s, deflexion: %s, lgmin: %s, lgmax: %s", rcourb, lenEdgeFondExt, deflexion, lgmin, lgmax) meshFondExt = smesh.Mesh(wireFondFiss) algo1d = meshFondExt.Segment() hypo1d = algo1d.Adaptive(lgmin, lgmax, deflexion) # a ajuster selon la profondeur de la fissure - isDone = meshFondExt.Compute() - + is_done = meshFondExt.Compute() + text = "meshFondExt.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + ptGSdic = {} # dictionnaire [paramètre sur la courbe] --> point géométrique allNodeIds = meshFondExt.GetNodesId() for nodeId in allNodeIds: @@ -734,19 +740,19 @@ def insereFissureGenerale(maillagesSains, edgeOrder = edgesIdByOrientation[EdgeInWireIndex] ptGSdic[(edgeOrder, EdgeInWireIndex, u)] = pt #logging.debug("nodeId %s, u %s", nodeId, str(u)) - usort = sorted(ptGSdic) + usort = sorted(ptGSdic) logging.debug("nombre de points obtenus par deflexion %s",len(usort)) - - centres = [] - origins = [] - normals = [] + + centres = list() + origins = list() + normals = list() for edu in usort: ied = edu[1] u = edu[2] vertcx = ptGSdic[edu] norm = geompy.MakeTangentOnCurve(edgesFondFiss[ied], u) plan = geompy.MakePlane(vertcx, norm, 3*rayonPipe) - part = geompy.MakePartition([plan], [wirePipeFiss], [], [], geompy.ShapeType["VERTEX"], 0, [], 0) + part = geompy.MakePartition([plan], [wirePipeFiss], list(), list(), geompy.ShapeType["VERTEX"], 0, list(), 0) liste = geompy.ExtractShapes(part, geompy.ShapeType["VERTEX"], True) if len(liste) == 5: # 4 coins du plan plus intersection recherchée for point in liste: @@ -764,21 +770,21 @@ def insereFissureGenerale(maillagesSains, # geomPublishInFather(initLog.debug,wireFondFiss, plan, name) # --- maillage du pipe étendu, sans tenir compte de l'intersection avec la face de peau - + logging.debug("nbsegCercle %s", nbsegCercle) - + # ----------------------------------------------------------------------- # --- points géométriques - - gptsdisks = [] # vertices géométrie de tous les disques - raydisks = [[] for i in range(nbsegCercle)] - for i in range(len(centres)): # boucle sur les disques - gptdsk = [] # vertices géométrie d'un disque - vertcx = centres[i] + + gptsdisks = list() # vertices géométrie de tous les disques + raydisks = [list() for i in range(nbsegCercle)] + for i, centres_i in enumerate(centres): # boucle sur les disques + gptdsk = list() # vertices géométrie d'un disque + vertcx = centres_i vertpx = origins[i] normal = normals[i] vec1 = geompy.MakeVector(vertcx, vertpx) - + points = [vertcx] # les points du rayon de référence for j in range(nbsegRad): pt = geompy.MakeTranslationVectorDistance(vertcx, vec1, (j+1)*float(rayonPipe)/nbsegRad) @@ -787,7 +793,7 @@ def insereFissureGenerale(maillagesSains, pt = geompy.MakeTranslationVectorDistance(vertcx, vec1, 1.5*rayonPipe) rayon = geompy.MakeLineTwoPnt(vertcx, pt) raydisks[0].append(rayon) - + for k in range(nbsegCercle-1): angle = (k+1)*2*math.pi/nbsegCercle pts = [vertcx] # les points d'un rayon obtenu par rotation @@ -797,17 +803,17 @@ def insereFissureGenerale(maillagesSains, gptdsk.append(pts) ray = geompy.MakeRotation(rayon, normal, angle) raydisks[k+1].append(ray) - - gptsdisks.append(gptdsk) - + + gptsdisks.append(gptdsk) + # ----------------------------------------------------------------------- # --- recherche des points en trop (externes au volume à remailler) - # - on associe chaque extrémité du pipe à une face filling + # - on associe chaque extrémité du pipe à une face filling # - on part des disques aux extrémités du pipe # - pour chaque disque, on prend les vertices de géométrie, # on marque leur position relative à la face. # - on s'arrete quand tous les noeuds sont dedans - + logging.debug("---------------------------- recherche des points du pipe a éliminer --------------") pt0 = centres[0] @@ -817,19 +823,19 @@ def insereFissureGenerale(maillagesSains, for ipt, pt in enumerate(ptEdgeFond[ifil]): # il y a un ou deux points débouchant sur cette face if geompy.MinDistance(pt,pt0) < geompy.MinDistance(pt,pt1): # TODO: trouver plus fiable pour les cas tordus... idFillingFromBout[0] = ifil - else: + else: idFillingFromBout[1] = ifil logging.debug("association bouts du pipe - faces de filling: %s", idFillingFromBout) - - facesPipePeau = [] - edgeRadFacePipePeau = [] + + facesPipePeau = list() + edgeRadFacePipePeau = list() for ifil in range(nbFacesFilling): facesPipePeau += fsPipePeau[ifil] edgeRadFacePipePeau += edRadFPiPo[ifil] - + logging.debug("recherche des disques de noeuds complètement internes") - idisklim = [] # indices des premier et dernier disques internes - idiskout = [] # indices des premier et dernier disques externes + idisklim = list() # indices des premier et dernier disques internes + idiskout = list() # indices des premier et dernier disques externes for bout in range(2): if bout == 0: idisk = -1 @@ -855,20 +861,20 @@ def insereFissureGenerale(maillagesSains, outside = False numout = idisk -inc # le disque précédent était dehors else: - inside = False # ce point est dehors + inside = False # ce point est dehors if not inside and not outside: break idisklim.append(idisk) # premier et dernier disques internes idiskout.append(numout) # premier et dernier disques externes - + # --- listes de nappes radiales en filling à chaque extrémité débouchante facesDebouchantes = [False, False] idFacesDebouchantes = [-1, -1] # contiendra les indices des faces disque débouchantes (facesPipePeau) - listNappes =[] + listNappes =list() for i, idisk in enumerate(idisklim): numout = idiskout[i] logging.debug("extremité %s, indices disques interne %s, externe %s",i, idisk, numout) - nappes = [] + nappes = list() if (idisk != 0) and (idisk != len(gptsdisks)-1): # si extrémité débouchante for k in range(nbsegCercle): if i == 0: @@ -891,7 +897,7 @@ def insereFissureGenerale(maillagesSains, geomPublish(initLog.debug, nappe, name) facesDebouchantes[i] = True listNappes.append(nappes) - + # --- mise en correspondance avec les indices des faces disque débouchantes (facesPipePeau) for i, nappes in enumerate(listNappes): if facesDebouchantes[i]: @@ -903,11 +909,11 @@ def insereFissureGenerale(maillagesSains, logging.debug("idFacesDebouchantes: %s", idFacesDebouchantes) # --- construction des listes d'edges radiales sur chaque extrémité débouchante - listEdges = [] + listEdges = list() for i, nappes in enumerate(listNappes): id = idFacesDebouchantes[i] # indice de face débouchante (facesPipePeau) if id < 0: - listEdges.append([]) + listEdges.append(list()) else: face = facesPipePeau[id] edges = [edgeRadFacePipePeau[id]] @@ -924,9 +930,9 @@ def insereFissureGenerale(maillagesSains, maxl = geompy.BasicProperties(edge)[0] if maxl < 0.01: # problème MakeSection logging.debug("problème MakeSection recherche edge radiale %s, longueur trop faible: %s, utilisation partition", k, maxl) - partNappeFace = geompy.MakePartition([face, nappes[k]], [] , [], [], geompy.ShapeType["FACE"], 0, [], 0) + partNappeFace = geompy.MakePartition([face, nappes[k]], list() , list(), list(), geompy.ShapeType["FACE"], 0, list(), 0) edps= geompy.ExtractShapes(partNappeFace, geompy.ShapeType["EDGE"], False) - ednouv = [] + ednouv = list() for ii, ed in enumerate(edps): vxs = geompy.ExtractShapes(ed, geompy.ShapeType["VERTEX"], False) distx = [geompy.MinDistance(vx, face) for vx in vxs] @@ -939,7 +945,7 @@ def insereFissureGenerale(maillagesSains, for ii, ed in enumerate(ednouv): geomPublish(initLog.debug, ed, "ednouv%d"%ii) [edsorted, minl,maxl] = sortEdges(ednouv) - logging.debug(" longueur edge trouvée: %s", maxl) + logging.debug(" longueur edge trouvée: %s", maxl) edge = edsorted[-1] edges.append(edge) name = 'edgeEndPipe%d'%k @@ -950,7 +956,7 @@ def insereFissureGenerale(maillagesSains, for i, edges in enumerate(listEdges): id = idFacesDebouchantes[i] # indice de face débouchante (facesPipePeau) if id >= 0: - gptdsk = [] + gptdsk = list() if id > 0: # id vaut 0 ou 1 id = -1 # si id vaut 1, on prend le dernier élément de la liste (1 ou 2 extrémités débouchent sur la face) centre = ptEdgeFond[idFillingFromBout[i]][id] @@ -959,7 +965,7 @@ def insereFissureGenerale(maillagesSains, vertPipePeau = ptFisExtPi[idFillingFromBout[i]][id] geomPublishInFather(initLog.debug,centre, vertPipePeau, "vertPipePeau") grpsEdgesCirc = edCircPeau[idFillingFromBout[i]] # liste de groupes - edgesCirc = [] + edgesCirc = list() for grpEdgesCirc in grpsEdgesCirc: edgesCirc += geompy.ExtractShapes(grpEdgesCirc, geompy.ShapeType["EDGE"], False) for k, edge in enumerate(edges): @@ -986,7 +992,7 @@ def insereFissureGenerale(maillagesSains, name ="bout%d"%k geomPublishInFather(initLog.debug,centre, bout, name) # enregistrement des points dans la structure - points = [] + points = list() for j in range(nbsegRad +1): u = j/float(nbsegRad) points.append(geompy.MakeVertexOnCurve(edge, u)) @@ -1003,14 +1009,14 @@ def insereFissureGenerale(maillagesSains, idisklim[1] = idisklim[1] +1 # --- ajustement precis des points sur edgesPipeFissureExterneC - + edgesPFE = geompy.ExtractShapes(edgesPipeFissureExterneC, geompy.ShapeType["EDGE"], False) verticesPFE = findWireIntermediateVertices(wirePipeFissureExterne) # vertices intermédiaires (des points en trop dans ptsInWireFissExtPipe) idiskmin = idisklim[0] + 1 # on ne prend pas le disque sur la peau, déjà ajusté idiskmax = idisklim[1] # on ne prend pas le disque sur la peau, déjà ajusté - idiskint = [] + idiskint = list() for vtx in verticesPFE: - distPtVt = [] + distPtVt = list() for idisk in range(idiskmin, idiskmax): gptdsk = gptsdisks[idisk] pt = gptdsk[0][-1] # le point sur l'edge de la fissure externe au pipe @@ -1031,7 +1037,7 @@ def insereFissureGenerale(maillagesSains, u = projettePointSurCourbe(pt, edgePFE) ptproj = geompy.MakeVertexOnCurve(edgePFE, u) gptsdisks[idisk][0][-1] = ptproj - + # ----------------------------------------------------------------------- # --- maillage effectif du pipe @@ -1045,25 +1051,25 @@ def insereFissureGenerale(maillagesSains, edgeCircPipe1Group = meshPipe.CreateEmptyGroup(SMESH.EDGE, "edgeCircPipe1") faceCircPipe0Group = meshPipe.CreateEmptyGroup(SMESH.FACE, "faceCircPipe0") faceCircPipe1Group = meshPipe.CreateEmptyGroup(SMESH.FACE, "faceCircPipe1") - mptsdisks = [] # vertices maillage de tous les disques - mEdges = [] # identifiants edges maillage fond de fissure - mEdgeFaces = [] # identifiants edges maillage edge face de fissure externe - mFaces = [] # identifiants faces maillage fissure - mVols = [] # identifiants volumes maillage pipe + mptsdisks = list() # vertices maillage de tous les disques + mEdges = list() # identifiants edges maillage fond de fissure + mEdgeFaces = list() # identifiants edges maillage edge face de fissure externe + mFaces = list() # identifiants faces maillage fissure + mVols = list() # identifiants volumes maillage pipe - mptdsk = None + mptdsk = list() for idisk in range(idisklim[0], idisklim[1]+1): # boucle sur les disques internes - + # ----------------------------------------------------------------------- # --- points - + gptdsk = gptsdisks[idisk] if idisk > idisklim[0]: oldmpts = mptdsk - mptdsk = [] # vertices maillage d'un disque + mptdsk = list() # vertices maillage d'un disque for k in range(nbsegCercle): points = gptdsk[k] - mptids = [] + mptids = list() for j, pt in enumerate(points): if j == 0 and k > 0: id = mptdsk[0][0] @@ -1073,37 +1079,37 @@ def insereFissureGenerale(maillagesSains, mptids.append(id) mptdsk.append(mptids) mptsdisks.append(mptdsk) - + # ----------------------------------------------------------------------- # --- groupes edges cercles debouchants - + if idisk == idisklim[0]: - pts = [] + pts = list() for k in range(nbsegCercle): pts.append(mptdsk[k][-1]) - edges = [] - for k in range(len(pts)): + edges = list() + for k, pts_k in enumerate(pts): k1 = (k+1)%len(pts) - idEdge = meshPipe.AddEdge([pts[k], pts[k1]]) + idEdge = meshPipe.AddEdge([pts_k, pts[k1]]) edges.append(idEdge) edgeCircPipe0Group.Add(edges) - + if idisk == idisklim[1]: - pts = [] + pts = list() for k in range(nbsegCercle): pts.append(mptdsk[k][-1]) - edges = [] - for k in range(len(pts)): + edges = list() + for k, pts_k in enumerate(pts): k1 = (k+1)%len(pts) - idEdge = meshPipe.AddEdge([pts[k], pts[k1]]) + idEdge = meshPipe.AddEdge([pts_k, pts[k1]]) edges.append(idEdge) edgeCircPipe1Group.Add(edges) - + # ----------------------------------------------------------------------- # --- groupes faces debouchantes - + if idisk == idisklim[0]: - faces = [] + faces = list() for j in range(nbsegRad): for k in range(nbsegCercle): k1 = k+1 @@ -1117,7 +1123,7 @@ def insereFissureGenerale(maillagesSains, faceCircPipe0Group.Add(faces) if idisk == idisklim[1]: - faces = [] + faces = list() for j in range(nbsegRad): for k in range(nbsegCercle): k1 = k+1 @@ -1129,10 +1135,10 @@ def insereFissureGenerale(maillagesSains, idf = meshPipe.AddFace([mptdsk[k][j], mptdsk[k][j+1], mptdsk[k1][j+1], mptdsk[k1][j]]) # quadrangle faces.append(idf) faceCircPipe1Group.Add(faces) - + # ----------------------------------------------------------------------- # --- mailles volumiques, groupes noeuds et edges de fond de fissure, groupe de face de fissure - + if idisk == idisklim[0]: mEdges.append(0) mEdgeFaces.append(0) @@ -1147,15 +1153,15 @@ def insereFissureGenerale(maillagesSains, ide2 = meshPipe.AddEdge([oldmpts[0][-1], mptdsk[0][-1]]) mEdgeFaces.append(ide2) edgeFaceFissGroup.Add([ide2]) - idFaces = [] - idVols = [] - + idFaces = list() + idVols = list() + for j in range(nbsegRad): idf = meshPipe.AddFace([oldmpts[0][j], mptdsk[0][j], mptdsk[0][j+1], oldmpts[0][j+1]]) faceFissGroup.Add([idf]) idFaces.append(idf) - - idVolCercle = [] + + idVolCercle = list() for k in range(nbsegCercle): k1 = k+1 if k == nbsegCercle-1: @@ -1167,8 +1173,8 @@ def insereFissureGenerale(maillagesSains, idv = meshPipe.AddVolume([mptdsk[k][j], mptdsk[k][j+1], mptdsk[k1][j+1], mptdsk[k1][j], oldmpts[k][j], oldmpts[k][j+1], oldmpts[k1][j+1], oldmpts[k1][j]]) idVolCercle.append(idv) - idVols.append(idVolCercle) - + idVols.append(idVolCercle) + mFaces.append(idFaces) mVols.append(idVols) @@ -1184,7 +1190,7 @@ def insereFissureGenerale(maillagesSains, aFilterManager = smesh.CreateFilterManager() nbAdded, internalBoundary, _NoneGroup = internalBoundary.MakeBoundaryElements( SMESH.BND_1DFROM2D, '', '', 0, [ ]) - criteres = [] + criteres = list() unCritere = smesh.GetCriterion(SMESH.EDGE,SMESH.FT_FreeBorders,SMESH.FT_Undefined,0) criteres.append(unCritere) filtre = smesh.GetFilterFromCriteria(criteres) @@ -1198,23 +1204,29 @@ def insereFissureGenerale(maillagesSains, nbAdd = skinFaces.AddFrom( internalBoundary.GetMesh() ) # --- maillage des éventuelles arêtes vives entre faces reconstruites - + if len(aretesVivesCoupees) > 0: aretesVivesC = geompy.MakeCompound(aretesVivesCoupees) meshAretesVives = smesh.Mesh(aretesVivesC) algo1d = meshAretesVives.Segment() - hypo1d = algo1d.LocalLength(dmoyen,[],1e-07) + hypo1d = algo1d.LocalLength(dmoyen,list(),1e-07) putName(algo1d.GetSubMesh(), "aretesVives") putName(algo1d, "algo1d_aretesVives") putName(hypo1d, "hypo1d_aretesVives") - isDone = meshAretesVives.Compute() - logging.info("aretesVives fini") + is_done = meshAretesVives.Compute() + text = "meshAretesVives.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) grpAretesVives = meshAretesVives.CreateEmptyGroup( SMESH.EDGE, 'grpAretesVives' ) nbAdd = grpAretesVives.AddFrom( meshAretesVives.GetMesh() ) # ----------------------------------------------------------------------- # --- maillage faces de fissure - + logging.debug("---------------------------- maillage faces de fissure externes au pipe :%s --------------", len(facesFissExt)) meshFaceFiss = smesh.Mesh(faceFissureExterne) @@ -1229,50 +1241,56 @@ def insereFissureGenerale(maillagesSains, putName(algo2d.GetSubMesh(), "faceFiss") putName(algo2d, "algo2d_faceFiss") putName(hypo2d, "hypo2d_faceFiss") - + algo1d = meshFaceFiss.UseExisting1DElements(geom=edgesPipeFissureExterneC) hypo1d = algo1d.SourceEdges([ edgeFaceFissGroup ],0,0) putName(algo1d.GetSubMesh(), "edgeFissPeau") putName(algo1d, "algo1d_edgeFissPeau") putName(hypo1d, "hypo1d_edgeFissPeau") - - isDone = meshFaceFiss.Compute() - logging.info("meshFaceFiss fini") + + is_done = meshFaceFiss.Compute() + text = "meshFaceFiss.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) grpFaceFissureExterne = meshFaceFiss.GroupOnGeom(faceFissureExterne, "fisOutPi", SMESH.FACE) grpEdgesPeauFissureExterne = meshFaceFiss.GroupOnGeom(edgesPeauFissureExterneC,'edgesPeauFissureExterne',SMESH.EDGE) grpEdgesPipeFissureExterne = meshFaceFiss.GroupOnGeom(edgesPipeFissureExterneC,'edgesPipeFissureExterne',SMESH.EDGE) # --- maillage faces de peau - + boutFromIfil = [None for i in range(nbFacesFilling)] if idFillingFromBout[0] != idFillingFromBout[1]: # repérage des extremites du pipe quand elles débouchent sur des faces différentes boutFromIfil[idFillingFromBout[0]] = 0 boutFromIfil[idFillingFromBout[1]] = 1 - + logging.debug("---------------------------- maillage faces de peau --------------") - meshesFacesPeau = [] + meshesFacesPeau = list() for ifil in range(nbFacesFilling): meshFacePeau = None if partitionsPeauFissFond[ifil] is None: # face de peau maillage sain intacte - + # --- edges de bord de la face de filling filling = facesDefaut[ifil] edgesFilling = geompy.ExtractShapes(filling, geompy.ShapeType["EDGE"], False) groupEdgesBordPeau = geompy.CreateGroup(filling, geompy.ShapeType["EDGE"]) geompy.UnionList(groupEdgesBordPeau, edgesFilling) geomPublishInFather(initLog.debug,filling, groupEdgesBordPeau , "EdgesBords") - + meshFacePeau = smesh.Mesh(facesDefaut[ifil]) - + algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) putName(algo1d.GetSubMesh(), "bordsLibres", ifil) putName(algo1d, "algo1d_bordsLibres", ifil) putName(hypo1d, "hypo1d_bordsLibres", ifil) - + else: - + facePeau = facesPeaux[ifil] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes) edgesCircPeau = edCircPeau[ifil] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe] verticesCircPeau = ptCircPeau[ifil] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe] @@ -1281,26 +1299,26 @@ def insereFissureGenerale(maillagesSains, edgesFissurePeau = edFissPeau[ifil] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes] meshFacePeau = smesh.Mesh(facePeau) - + algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) putName(algo1d.GetSubMesh(), "bordsLibres", ifil) putName(algo1d, "algo1d_bordsLibres", ifil) putName(hypo1d, "hypo1d_bordsLibres", ifil) - + algo1d = meshFacePeau.UseExisting1DElements(geom=geompy.MakeCompound(edgesFissurePeau)) hypo1d = algo1d.SourceEdges([ grpEdgesPeauFissureExterne ],0,0) putName(algo1d.GetSubMesh(), "edgePeauFiss", ifil) putName(algo1d, "algo1d_edgePeauFiss", ifil) putName(hypo1d, "hypo1d_edgePeauFiss", ifil) - + if bordsVifs is not None: algo1d = meshFacePeau.UseExisting1DElements(geom=bordsVifs) hypo1d = algo1d.SourceEdges([ grpAretesVives ],0,0) putName(algo1d.GetSubMesh(), "bordsVifs", ifil) putName(algo1d, "algo1d_bordsVifs", ifil) putName(hypo1d, "hypo1d_bordsVifs", ifil) - + for i, edgeCirc in enumerate(edgesCircPeau): if edgeCirc is not None: algo1d = meshFacePeau.UseExisting1DElements(geom=edgeCirc) @@ -1312,7 +1330,7 @@ def insereFissureGenerale(maillagesSains, putName(algo1d.GetSubMesh(), name, ifil) putName(algo1d, "algo1d_" + name, ifil) putName(hypo1d, "hypo1d_" + name, ifil) - + algo2d = meshFacePeau.Triangle(algo=smeshBuilder.NETGEN_1D2D) hypo2d = algo2d.Parameters() hypo2d.SetMaxSize( dmoyen ) @@ -1323,9 +1341,15 @@ def insereFissureGenerale(maillagesSains, putName(algo2d.GetSubMesh(), "facePeau", ifil) putName(algo2d, "algo2d_facePeau", ifil) putName(hypo2d, "hypo2d_facePeau", ifil) - - isDone = meshFacePeau.Compute() - logging.info("meshFacePeau %d fini", ifil) + + is_done = meshFacePeau.Compute() + text = "meshFacePeau {} Compute".format(ifil) + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) GroupFaces = meshFacePeau.CreateEmptyGroup( SMESH.FACE, "facePeau%d"%ifil ) nbAdd = GroupFaces.AddFrom( meshFacePeau.GetMesh() ) meshesFacesPeau.append(meshFacePeau) @@ -1362,10 +1386,16 @@ def insereFissureGenerale(maillagesSains, hypo3d = algo3d.MaxElementVolume(1000.0) putName(algo3d.GetSubMesh(), "boiteDefaut") putName(algo3d, "algo3d_boiteDefaut") - isDone = meshBoiteDefaut.Compute() putName(meshBoiteDefaut, "boiteDefaut") - logging.info("meshBoiteDefaut fini") - + is_done = meshBoiteDefaut.Compute() + text = "meshBoiteDefaut.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + faceFissure = meshBoiteDefaut.GetMesh().UnionListOfGroups( [ group_faceFissOutPipe, group_faceFissInPipe ], 'FACE1' ) maillageSain = enleveDefaut(maillageSain, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges) @@ -1401,5 +1431,5 @@ def insereFissureGenerale(maillagesSains, salome.sg.updateObjBrowser() logging.info("maillage fissure fini") - + return maillageComplet diff --git a/src/Tools/blocFissure/gmu/insereFissureLongue.py b/src/Tools/blocFissure/gmu/insereFissureLongue.py index 15d471d5c..e44ceeee1 100644 --- a/src/Tools/blocFissure/gmu/insereFissureLongue.py +++ b/src/Tools/blocFissure/gmu/insereFissureLongue.py @@ -449,8 +449,14 @@ def insereFissureLongue(geometriesSaines, maillagesSains, putName(algo1d.GetSubMesh(), "generatrice", i) putName(algo1d, "algo1d_generatrice", i) putName(hypo1d, "hypo1d_generatrice", i) - isDone = meshFondFiss.Compute() - logging.info("meshFondFiss computed") + is_done = meshFondFiss.Compute() + text = "meshFondFiss.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) disks = list() for i, face in enumerate(disques[:4]): @@ -547,8 +553,14 @@ def insereFissureLongue(geometriesSaines, maillagesSains, putName(algo1d, "algo1d_groupDemiCercles", i) putName(hypo1d, "hypo1d_groupDemiCercles", i) # - isDone = meshFacePeau.Compute() - logging.info("meshFacePeau computed") + is_done = meshFacePeau.Compute() + text = "meshFacePeau.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) grpTHOR = meshFacePeau.GroupOnGeom(verticesOutCercles[0], "THOR", SMESH.NODE) grpTHEX = meshFacePeau.GroupOnGeom(verticesOutCercles[1], "THEX", SMESH.NODE) @@ -584,8 +596,14 @@ def insereFissureLongue(geometriesSaines, maillagesSains, putName(algo1d, "algo1d_edgeFissPeau") putName(hypo1d, "hypo1d_edgeFissPeau") # - isDone = meshFaceFiss.Compute() - logging.info("meshFaceFiss computed") + is_done = meshFaceFiss.Compute() + text = "meshFaceFiss.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) grp = meshFaceFiss.GroupOnGeom(faceFiss, "fisOutPi", SMESH.FACE) @@ -617,9 +635,15 @@ def insereFissureLongue(geometriesSaines, maillagesSains, hypo3d = algo3d.MaxElementVolume(1000.0) putName(algo3d.GetSubMesh(), "boiteDefaut") putName(algo3d, "algo3d_boiteDefaut") - isDone = meshBoiteDefaut.Compute() - logging.info("meshBoiteDefaut computed") putName(meshBoiteDefaut, "boiteDefaut") + is_done = meshBoiteDefaut.Compute() + text = "meshBoiteDefaut.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) groups = maillageSain.GetGroups() grps1 = [ grp for grp in groups if grp.GetName() == 'P1'] diff --git a/src/Tools/blocFissure/gmu/mailleAretesEtJonction.py b/src/Tools/blocFissure/gmu/mailleAretesEtJonction.py index 479d8bf2d..e208c0364 100644 --- a/src/Tools/blocFissure/gmu/mailleAretesEtJonction.py +++ b/src/Tools/blocFissure/gmu/mailleAretesEtJonction.py @@ -25,7 +25,7 @@ from .geomsmesh import smesh import SMESH from .putName import putName - + def mailleAretesEtJonction(internalBoundary, aretesVivesCoupees, lgAretesVives): """ edges de bord, faces défaut à respecter @@ -48,7 +48,7 @@ def mailleAretesEtJonction(internalBoundary, aretesVivesCoupees, lgAretesVives): nbAdd = skinFaces.AddFrom( internalBoundary.GetMesh() ) # --- maillage des éventuelles arêtes vives entre faces reconstruites - + grpAretesVives = None if len(aretesVivesCoupees) > 0: aretesVivesC = geompy.MakeCompound(aretesVivesCoupees) @@ -58,9 +58,15 @@ def mailleAretesEtJonction(internalBoundary, aretesVivesCoupees, lgAretesVives): putName(algo1d.GetSubMesh(), "aretesVives") putName(algo1d, "algo1d_aretesVives") putName(hypo1d, "hypo1d_aretesVives") - isDone = meshAretesVives.Compute() - logging.info("aretesVives fini") + is_done = meshAretesVives.Compute() + text = "meshAretesVives.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) grpAretesVives = meshAretesVives.CreateEmptyGroup( SMESH.EDGE, 'grpAretesVives' ) nbAdd = grpAretesVives.AddFrom( meshAretesVives.GetMesh() ) - return (internalBoundary, bordsLibres, grpAretesVives) \ No newline at end of file + return (internalBoundary, bordsLibres, grpAretesVives) diff --git a/src/Tools/blocFissure/gmu/mailleFacesFissure.py b/src/Tools/blocFissure/gmu/mailleFacesFissure.py index c7da52e98..d9eed2dbc 100644 --- a/src/Tools/blocFissure/gmu/mailleFacesFissure.py +++ b/src/Tools/blocFissure/gmu/mailleFacesFissure.py @@ -59,10 +59,10 @@ def mailleFacesFissure(faceFissureExterne, edgesPipeFissureExterneC, edgesPeauFi grpEdgesPeauFissureExterne = meshFaceFiss.GroupOnGeom(edgesPeauFissureExterneC,'edgesPeauFissureExterne',SMESH.EDGE) grpEdgesPipeFissureExterne = meshFaceFiss.GroupOnGeom(edgesPipeFissureExterneC,'edgesPipeFissureExterne',SMESH.EDGE) - isDone = meshFaceFiss.Compute() - text = "meshFaceFiss fini" - if isDone: - logging.info(text) + is_done = meshFaceFiss.Compute() + text = "meshFaceFiss.Compute" + if is_done: + logging.info(text+" OK") else: text = "Erreur au calcul du maillage.\n" + text logging.info(text) diff --git a/src/Tools/blocFissure/gmu/mailleFacesPeau.py b/src/Tools/blocFissure/gmu/mailleFacesPeau.py index 862245b0b..6c4a86c23 100644 --- a/src/Tools/blocFissure/gmu/mailleFacesPeau.py +++ b/src/Tools/blocFissure/gmu/mailleFacesPeau.py @@ -43,7 +43,7 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, if idFillingFromBout[0] != idFillingFromBout[1]: # repérage des extremites du pipe quand elles débouchent sur des faces différentes boutFromIfil[idFillingFromBout[0]] = 0 boutFromIfil[idFillingFromBout[1]] = 1 - + logging.debug("---------------------------- maillage faces de peau --------------") meshesFacesPeau = [] for ifil in range(nbFacesFilling): @@ -57,17 +57,17 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, groupEdgesBordPeau = geompy.CreateGroup(filling, geompy.ShapeType["EDGE"]) geompy.UnionList(groupEdgesBordPeau, edgesFilling) geomPublishInFather(initLog.debug,filling, groupEdgesBordPeau , "EdgesBords") - + meshFacePeau = smesh.Mesh(facesDefaut[ifil]) - + algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) putName(algo1d.GetSubMesh(), "bordsLibres", ifil) putName(algo1d, "algo1d_bordsLibres", ifil) putName(hypo1d, "hypo1d_bordsLibres", ifil) - + else: - + logging.debug("meshFacePeau %d coupée par la fissure", ifil) facePeau = facesPeaux[ifil] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes) edgesCircPeau = edCircPeau[ifil] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe] @@ -77,26 +77,26 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, edgesFissurePeau = edFissPeau[ifil] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes] meshFacePeau = smesh.Mesh(facePeau) - + algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) putName(algo1d.GetSubMesh(), "bordsLibres", ifil) putName(algo1d, "algo1d_bordsLibres", ifil) putName(hypo1d, "hypo1d_bordsLibres", ifil) - + algo1d = meshFacePeau.UseExisting1DElements(geom=geompy.MakeCompound(edgesFissurePeau)) hypo1d = algo1d.SourceEdges([ grpEdgesPeauFissureExterne ],0,0) putName(algo1d.GetSubMesh(), "edgePeauFiss", ifil) putName(algo1d, "algo1d_edgePeauFiss", ifil) putName(hypo1d, "hypo1d_edgePeauFiss", ifil) - + if bordsVifs is not None: algo1d = meshFacePeau.UseExisting1DElements(geom=bordsVifs) hypo1d = algo1d.SourceEdges([ grpAretesVives ],0,0) putName(algo1d.GetSubMesh(), "bordsVifs", ifil) putName(algo1d, "algo1d_bordsVifs", ifil) putName(hypo1d, "hypo1d_bordsVifs", ifil) - + for i, edgeCirc in enumerate(edgesCircPeau): if edgeCirc is not None: algo1d = meshFacePeau.UseExisting1DElements(geom=edgeCirc) @@ -108,7 +108,7 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, putName(algo1d.GetSubMesh(), name, ifil) putName(algo1d, "algo1d_" + name, ifil) putName(hypo1d, "hypo1d_" + name, ifil) - + algo2d = meshFacePeau.Triangle(algo=smeshBuilder.NETGEN_1D2D) hypo2d = algo2d.Parameters() hypo2d.SetMaxSize( dmoyen ) @@ -119,11 +119,17 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, putName(algo2d.GetSubMesh(), "facePeau", ifil) putName(algo2d, "algo2d_facePeau", ifil) putName(hypo2d, "hypo2d_facePeau", ifil) - - isDone = meshFacePeau.Compute() - logging.info("meshFacePeau %d fini", ifil) + + is_done = meshFacePeau.Compute() + text = "meshFacePeau {} .Compute".format(ifil) + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) GroupFaces = meshFacePeau.CreateEmptyGroup( SMESH.FACE, "facePeau%d"%ifil ) nbAdd = GroupFaces.AddFrom( meshFacePeau.GetMesh() ) meshesFacesPeau.append(meshFacePeau) - return meshesFacesPeau \ No newline at end of file + return meshesFacesPeau diff --git a/src/Tools/blocFissure/gmu/meshBlocPart.py b/src/Tools/blocFissure/gmu/meshBlocPart.py index ccde33c9c..a273b4916 100644 --- a/src/Tools/blocFissure/gmu/meshBlocPart.py +++ b/src/Tools/blocFissure/gmu/meshBlocPart.py @@ -194,7 +194,14 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle putName(algo3d, "algo3d_ellipsoide") putName(hypo3d, "hypo3d_ellipsoide") - isDone = bloc1.Compute() + is_done = bloc1.Compute() + text = "bloc1.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) nbRemoved = bloc1.RemoveOrphanNodes() @@ -230,9 +237,9 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle putName(hypo3d, "hypo3d_bloc") is_done = blocMesh.Compute() - text = "meshBlocPart Compute" + text = "blocMesh.Compute" if is_done: - logging.info(text) + logging.info(text+" OK") else: text = "Erreur au calcul du maillage.\n" + text logging.info(text) diff --git a/src/Tools/blocFissure/materielCasTests/cubeAngle.py b/src/Tools/blocFissure/materielCasTests/cubeAngle.py index 72dc03e43..81c305421 100644 --- a/src/Tools/blocFissure/materielCasTests/cubeAngle.py +++ b/src/Tools/blocFissure/materielCasTests/cubeAngle.py @@ -74,13 +74,20 @@ from salome.smesh import smeshBuilder smesh = smeshBuilder.New() from salome.StdMeshers import StdMeshersBuilder Mesh_1 = smesh.Mesh(Box_1) +smesh.SetName(Mesh_1, 'Mesh_1') Regular_1D = Mesh_1.Segment() Nb_Segments_1 = Regular_1D.NumberOfSegments(15) Nb_Segments_1.SetDistrType( 0 ) Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa) -isDone = Mesh_1.Compute() -smesh.SetName(Mesh_1, 'Mesh_1') +is_done = Mesh_1.Compute() +text = "Mesh_1.Compute" +if is_done: + logging.info(text+" OK") +else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) Mesh_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngle.med")) ## set object names diff --git a/src/Tools/blocFissure/materielCasTests/cubeFin.py b/src/Tools/blocFissure/materielCasTests/cubeFin.py index d9348afbc..a6672d5e1 100644 --- a/src/Tools/blocFissure/materielCasTests/cubeFin.py +++ b/src/Tools/blocFissure/materielCasTests/cubeFin.py @@ -127,10 +127,16 @@ Nb_Segments_1 = Regular_1D.NumberOfSegments(20) Nb_Segments_1.SetDistrType( 0 ) Quadrangle_2D = cubeFin_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) Hexa_3D = cubeFin_1.Hexahedron(algo=smeshBuilder.Hexa) -isDone = cubeFin_1.Compute() DEPL_1 = cubeFin_1.GroupOnGeom(DEPL,'DEPL',SMESH.FACE) ENCASTR_1 = cubeFin_1.GroupOnGeom(ENCASTR,'ENCASTR',SMESH.FACE) - +is_done = cubeFin_1.Compute() +text = "cubeFin_1.Compute" +if is_done: + logging.info(text+" OK") +else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) ## Set names of Mesh objects smesh.SetName(Regular_1D.GetAlgorithm(), 'Regular_1D') smesh.SetName(Quadrangle_2D.GetAlgorithm(), 'Quadrangle_2D') diff --git a/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py b/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py index 0b50e4626..c0589322b 100644 --- a/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py +++ b/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py @@ -148,6 +148,7 @@ smeshObj_1 = smesh.CreateHypothesis('NumberOfSegments') smeshObj_1.SetNumberOfSegments( 5 ) smeshObj_1.SetDistrType( 0 ) CylindreSain_1 = smesh.Mesh(CylindreSain) +smesh.SetName(CylindreSain_1, 'CylindreSain') Regular_1D = CylindreSain_1.Segment() Nb_Segments_1 = Regular_1D.NumberOfSegments(15,[],[ ]) Nb_Segments_1.SetDistrType( 0 ) @@ -159,8 +160,14 @@ Nb_Segments_2.SetDistrType( 0 ) Regular_1D_2 = CylindreSain_1.Segment(geom=radial) Nb_Segments_3 = Regular_1D_2.NumberOfSegments(6,[],[ ]) Nb_Segments_3.SetDistrType( 0 ) -isDone = CylindreSain_1.Compute() -smesh.SetName(CylindreSain_1, 'CylindreSain') +is_done = CylindreSain_1.Compute() +text = "CylindreSain_1.Compute" +if is_done: + logging.info(text+" OK") +else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) CylindreSain_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "CylindreSain.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/disque_perce.py b/src/Tools/blocFissure/materielCasTests/disque_perce.py index dd42c3dda..2a9d61b70 100644 --- a/src/Tools/blocFissure/materielCasTests/disque_perce.py +++ b/src/Tools/blocFissure/materielCasTests/disque_perce.py @@ -76,6 +76,7 @@ from salome.smesh import smeshBuilder smesh = smeshBuilder.New() from salome.StdMeshers import StdMeshersBuilder Disque_1 = smesh.Mesh(Disque) +smesh.SetName(Disque_1, 'Disque') Regular_1D = Disque_1.Segment() Nb_Segments_1 = Regular_1D.NumberOfSegments(10) Nb_Segments_1.SetDistrType( 0 ) @@ -86,8 +87,14 @@ Nb_Segments_2.SetDistrType( 0 ) Regular_1D_2 = Disque_1.Segment(geom=Compound_4) status = Disque_1.AddHypothesis(Nb_Segments_2,Compound_4) Quadrangle_2D = Disque_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) -isDone = Disque_1.Compute() -smesh.SetName(Disque_1, 'Disque') +is_done = Disque_1.Compute() +text = "Disque_1.Compute" +if is_done: + logging.info(text+" OK") +else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) Disque_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "disque.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py b/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py index be9bf0efa..b12ef20bd 100644 --- a/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py +++ b/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py @@ -92,6 +92,7 @@ from salome.smesh import smeshBuilder smesh = smeshBuilder.New() from salome.StdMeshers import StdMeshersBuilder EprouvetteCourbe_1 = smesh.Mesh(EprouvetteCourbe) +smesh.SetName(EprouvetteCourbe_1, 'EprouvetteCourbe') Regular_1D = EprouvetteCourbe_1.Segment() Nb_Segments_1 = Regular_1D.NumberOfSegments(50) Nb_Segments_1.SetDistrType( 0 ) @@ -103,8 +104,14 @@ Nb_Segments_2.SetDistrType( 0 ) Regular_1D_2 = EprouvetteCourbe_1.Segment(geom=Compound_y) Nb_Segments_3 = Regular_1D_2.NumberOfSegments(25) Nb_Segments_3.SetDistrType( 0 ) -isDone = EprouvetteCourbe_1.Compute() -smesh.SetName(EprouvetteCourbe_1, 'EprouvetteCourbe') +is_done = EprouvetteCourbe_1.Compute() +text = "EprouvetteCourbe_1.Compute" +if is_done: + logging.info(text+" OK") +else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) EprouvetteCourbe_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteCourbe.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py b/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py index 5c98edd6e..9be2ac461 100644 --- a/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py +++ b/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py @@ -126,6 +126,7 @@ from salome.smesh import smeshBuilder smesh = smeshBuilder.New() from salome.StdMeshers import StdMeshersBuilder eprouvetteDroite_1 = smesh.Mesh(eprouvetteDroite) +smesh.SetName(eprouvetteDroite_1, 'eprouvetteDroite') Regular_1D = eprouvetteDroite_1.Segment() Nb_Segments_1 = Regular_1D.NumberOfSegments(50,[],[ ]) Nb_Segments_1.SetDistrType( 0 ) @@ -137,8 +138,14 @@ Nb_Segments_2.SetDistrType( 0 ) Regular_1D_2 = eprouvetteDroite_1.Segment(geom=Compound_x) Nb_Segments_3 = Regular_1D_2.NumberOfSegments(10,[],[ ]) Nb_Segments_3.SetDistrType( 0 ) -isDone = eprouvetteDroite_1.Compute() -smesh.SetName(eprouvetteDroite_1, 'eprouvetteDroite') +is_done = eprouvetteDroite_1.Compute() +text = "eprouvetteDroite_1.Compute" +if is_done: + logging.info(text+" OK") +else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) eprouvetteDroite_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "eprouvetteDroite.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/fissureGauche.py b/src/Tools/blocFissure/materielCasTests/fissureGauche.py index 5c26f0207..2256d127e 100644 --- a/src/Tools/blocFissure/materielCasTests/fissureGauche.py +++ b/src/Tools/blocFissure/materielCasTests/fissureGauche.py @@ -121,6 +121,7 @@ from salome.smesh import smeshBuilder smesh = smeshBuilder.New() from salome.StdMeshers import StdMeshersBuilder objetSain_1 = smesh.Mesh(objetSain) +smesh.SetName(objetSain_1, 'objetSain') Regular_1D = objetSain_1.Segment() Nb_Segments_1 = Regular_1D.NumberOfSegments(10,[],[ ]) Nb_Segments_1.SetDistrType( 0 ) @@ -132,8 +133,14 @@ Nb_Segments_2.SetDistrType( 0 ) Regular_1D_2 = objetSain_1.Segment(geom=epaisseurs) Nb_Segments_3 = Regular_1D_2.NumberOfSegments(5,[],[ ]) Nb_Segments_3.SetDistrType( 0 ) -isDone = objetSain_1.Compute() -smesh.SetName(objetSain_1, 'objetSain') +is_done = objetSain_1.Compute() +text = "objetSain_1.Compute" +if is_done: + logging.info(text+" OK") +else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) objetSain_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "faceGaucheSain.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/fissureGauche2.py b/src/Tools/blocFissure/materielCasTests/fissureGauche2.py index 2e0fb8454..d7a596645 100644 --- a/src/Tools/blocFissure/materielCasTests/fissureGauche2.py +++ b/src/Tools/blocFissure/materielCasTests/fissureGauche2.py @@ -95,13 +95,20 @@ from salome.smesh import smeshBuilder smesh = smeshBuilder.New() from salome.StdMeshers import StdMeshersBuilder Mesh_1 = smesh.Mesh(objetSain) +smesh.SetName(Mesh_1, 'Mesh_1') Regular_1D = Mesh_1.Segment() Nb_Segments_1 = Regular_1D.NumberOfSegments(15,[],[ ]) Nb_Segments_1.SetDistrType( 0 ) Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa) -isDone = Mesh_1.Compute() -smesh.SetName(Mesh_1, 'Mesh_1') +is_done = Mesh_1.Compute() +text = "Mesh_1.Compute" +if is_done: + logging.info(text+" OK") +else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) Mesh_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "boiteSaine.med")) ## set object names diff --git a/src/Tools/blocFissure/materielCasTests/vis.py b/src/Tools/blocFissure/materielCasTests/vis.py index 6fdc61ffd..9f37a13eb 100644 --- a/src/Tools/blocFissure/materielCasTests/vis.py +++ b/src/Tools/blocFissure/materielCasTests/vis.py @@ -211,9 +211,9 @@ conge_1 = coupe_vis_1.GroupOnGeom(conge,'conge',SMESH.EDGE) appui_1 = coupe_vis_1.GroupOnGeom(appui,'appui',SMESH.EDGE) p_imp_1 = coupe_vis_1.GroupOnGeom(p_imp,'p_imp',SMESH.EDGE) -isDone = coupe_vis_1.Compute() -text = "Maillage de {}".format(coupe_vis.GetName()) -if isDone: +is_done = coupe_vis_1.Compute() +text = "coupe_vis_1.Compute" +if is_done: logging.debug(text+" : OK") else: text = "Erreur au calcul du maillage.\n" + text From d1b3c09abe6494aa78487e3b89dd0212b55ac504 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 18:39:03 +0100 Subject: [PATCH 25/57] message d'erreur --- src/Tools/blocFissure/CasTests/execution_Cas.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/execution_Cas.py b/src/Tools/blocFissure/CasTests/execution_Cas.py index e068f13e0..fd2742c6c 100644 --- a/src/Tools/blocFissure/CasTests/execution_Cas.py +++ b/src/Tools/blocFissure/CasTests/execution_Cas.py @@ -215,11 +215,12 @@ while True: n_cas_nook += 1 print(ligne) - if n_cas_nook: - texte += ". Nombre de cas_tests OK : {}\n".format(n_cas_ok) - texte += ". Nombre de cas_tests NOOK : {}\n".format(n_cas_nook) - else: - texte += "Tous les tests se sont bien passés.\n" + if ( (n_cas_nook+n_cas_ok) > 1): + if n_cas_nook: + texte += ". Nombre de cas_tests OK : {}\n".format(n_cas_ok) + texte += ". Nombre de cas_tests NOOK : {}\n".format(n_cas_nook) + else: + texte += "Tous les tests se sont bien passés.\n" print (texte+ligne) break From 850c52d788f58c43293546de2494826352c0cc19 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Tue, 26 Jan 2021 18:49:09 +0100 Subject: [PATCH 26/57] oubli de l'import --- src/Tools/blocFissure/materielCasTests/cubeAngle.py | 2 ++ src/Tools/blocFissure/materielCasTests/cubeFin.py | 2 ++ src/Tools/blocFissure/materielCasTests/decoupeCylindre.py | 2 ++ src/Tools/blocFissure/materielCasTests/disque_perce.py | 2 ++ src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py | 2 ++ src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py | 2 ++ src/Tools/blocFissure/materielCasTests/fissureGauche.py | 2 ++ src/Tools/blocFissure/materielCasTests/fissureGauche2.py | 2 ++ 8 files changed, 16 insertions(+) diff --git a/src/Tools/blocFissure/materielCasTests/cubeAngle.py b/src/Tools/blocFissure/materielCasTests/cubeAngle.py index 81c305421..e9be724e0 100644 --- a/src/Tools/blocFissure/materielCasTests/cubeAngle.py +++ b/src/Tools/blocFissure/materielCasTests/cubeAngle.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import logging + import sys import salome diff --git a/src/Tools/blocFissure/materielCasTests/cubeFin.py b/src/Tools/blocFissure/materielCasTests/cubeFin.py index a6672d5e1..69ecdb813 100644 --- a/src/Tools/blocFissure/materielCasTests/cubeFin.py +++ b/src/Tools/blocFissure/materielCasTests/cubeFin.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import logging + import sys import salome diff --git a/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py b/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py index c0589322b..83fb3f55e 100644 --- a/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py +++ b/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import logging + import sys import salome diff --git a/src/Tools/blocFissure/materielCasTests/disque_perce.py b/src/Tools/blocFissure/materielCasTests/disque_perce.py index 2a9d61b70..eeba533a2 100644 --- a/src/Tools/blocFissure/materielCasTests/disque_perce.py +++ b/src/Tools/blocFissure/materielCasTests/disque_perce.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import logging + import sys import salome diff --git a/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py b/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py index b12ef20bd..40a434b0d 100644 --- a/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py +++ b/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import logging + import sys import salome diff --git a/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py b/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py index 9be2ac461..18850d6df 100644 --- a/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py +++ b/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import logging + import sys import salome diff --git a/src/Tools/blocFissure/materielCasTests/fissureGauche.py b/src/Tools/blocFissure/materielCasTests/fissureGauche.py index 2256d127e..39d96b1ab 100644 --- a/src/Tools/blocFissure/materielCasTests/fissureGauche.py +++ b/src/Tools/blocFissure/materielCasTests/fissureGauche.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import logging + import sys import salome diff --git a/src/Tools/blocFissure/materielCasTests/fissureGauche2.py b/src/Tools/blocFissure/materielCasTests/fissureGauche2.py index d7a596645..88b4fbca1 100644 --- a/src/Tools/blocFissure/materielCasTests/fissureGauche2.py +++ b/src/Tools/blocFissure/materielCasTests/fissureGauche2.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +import logging + import sys import salome From 3a2e0de7aab50db723618646335d23ae6c3089f9 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 27 Jan 2021 11:48:18 +0100 Subject: [PATCH 27/57] =?UTF-8?q?Les=20cas=20=C3=A0=20passer=20:=20ok=20et?= =?UTF-8?q?=20pb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blocFissure/CasTests/execution_Cas.py | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/execution_Cas.py b/src/Tools/blocFissure/CasTests/execution_Cas.py index fd2742c6c..0e452e63c 100644 --- a/src/Tools/blocFissure/CasTests/execution_Cas.py +++ b/src/Tools/blocFissure/CasTests/execution_Cas.py @@ -33,9 +33,15 @@ from blocFissure.gmu import initLog runall = True if runall: torun = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] -else: #prob 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 - torun = [ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1] # pb - torun = [ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0] # OK +else: # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 + torunOK = [ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0] # OK + torunPB = list() + for iaux in torunOK: + torunPB.append((iaux+1)%2) + print ("torun = {} # OK".format(torunOK)) + print ("torun = {} # PB".format(torunPB)) + torun = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0] +# 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 # ----------------------------------------------------------------------------------------------- from blocFissure.gmu import geomsmesh @@ -170,6 +176,8 @@ problemes.append(fissureCoude_9(n_cas)) n_cas += 1 from blocFissure.CasTests.fissure_Coude import fissure_Coude problemes.append(fissure_Coude(n_cas)) +# mailleFacesFissure : Erreur au calcul du maillage +# "Source elements overlap one another" dans l'import du fonds de fissure n_cas += 1 from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4 @@ -192,8 +200,8 @@ while True: ligne = "---------------------------------------------------------------------" texte = "" - n_cas_ok = 0 - n_cas_nook = 0 + nb_cas_ok = 0 + nb_cas_nook = 0 for n_cas, cas in enumerate(problemes): #print ("Cas n° {}, '{}'".format(n_cas,cas.nomProbleme)) if torun[n_cas]: @@ -210,17 +218,18 @@ while True: texte += "Problème avec le cas n° {}, '{}'\n".format(n_cas,nom) ok_maillage = False if ok_maillage: - n_cas_ok += 1 + nb_cas_ok += 1 else: - n_cas_nook += 1 + nb_cas_nook += 1 print(ligne) - if ( (n_cas_nook+n_cas_ok) > 1): - if n_cas_nook: - texte += ". Nombre de cas_tests OK : {}\n".format(n_cas_ok) - texte += ". Nombre de cas_tests NOOK : {}\n".format(n_cas_nook) + nb_cas = nb_cas_nook + nb_cas_ok + if ( nb_cas > 1): + if nb_cas_nook: + texte += ". Nombre de cas_tests OK : {}\n".format(nb_cas_ok) + texte += ". Nombre de cas_tests NOOK : {}\n".format(nb_cas_nook) else: - texte += "Tous les tests se sont bien passés.\n" + texte += "Les {} tests se sont bien passés.\n".format(nb_cas) print (texte+ligne) break From 0940378b4a973137093a388055271e55ec0b11e6 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 27 Jan 2021 11:49:35 +0100 Subject: [PATCH 28/57] groupongeom avant compute --- .../blocFissure/CasTests/fissure_Coude.py | 4 ++-- .../blocFissure/gmu/insereFissureGenerale.py | 15 ++++++++---- src/Tools/blocFissure/gmu/meshBlocPart.py | 24 +++++++++---------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/fissure_Coude.py b/src/Tools/blocFissure/CasTests/fissure_Coude.py index d9e368428..56cdbe4b7 100644 --- a/src/Tools/blocFissure/CasTests/fissure_Coude.py +++ b/src/Tools/blocFissure/CasTests/fissure_Coude.py @@ -258,8 +258,6 @@ class fissure_Coude(fissureGenerique): smesh.SetName(algo1d_long_p2, "algo1d_long_p2") smesh.SetName(hypo1d_long_p2, "hypo1d_long_p2") - isDone = maillageSain.Compute() - mp1 = maillageSain.GroupOnGeom(P1,'P1',SMESH.NODE) mp2 = maillageSain.GroupOnGeom(P2,'P2',SMESH.NODE) ext = maillageSain.GroupOnGeom(EXTUBE,'EXTUBE',SMESH.FACE) @@ -269,6 +267,8 @@ class fissure_Coude(fissureGenerique): pex = maillageSain.GroupOnGeom(PEAUEXT,'PEAUEXT',SMESH.FACE) cou = maillageSain.GroupOnGeom(COUDE,'COUDSAIN',SMESH.VOLUME) + isDone = maillageSain.Compute() + return [maillageSain, True] # True : maillage hexa # --------------------------------------------------------------------------- diff --git a/src/Tools/blocFissure/gmu/insereFissureGenerale.py b/src/Tools/blocFissure/gmu/insereFissureGenerale.py index 3c12d89b7..b65478d75 100644 --- a/src/Tools/blocFissure/gmu/insereFissureGenerale.py +++ b/src/Tools/blocFissure/gmu/insereFissureGenerale.py @@ -721,6 +721,7 @@ def insereFissureGenerale(maillagesSains, meshFondExt = smesh.Mesh(wireFondFiss) algo1d = meshFondExt.Segment() hypo1d = algo1d.Adaptive(lgmin, lgmax, deflexion) # a ajuster selon la profondeur de la fissure + is_done = meshFondExt.Compute() text = "meshFondExt.Compute" if is_done: @@ -1205,7 +1206,8 @@ def insereFissureGenerale(maillagesSains, # --- maillage des éventuelles arêtes vives entre faces reconstruites - if len(aretesVivesCoupees) > 0: + if aretesVivesCoupees: + aretesVivesC = geompy.MakeCompound(aretesVivesCoupees) meshAretesVives = smesh.Mesh(aretesVivesC) algo1d = meshAretesVives.Segment() @@ -1213,6 +1215,7 @@ def insereFissureGenerale(maillagesSains, putName(algo1d.GetSubMesh(), "aretesVives") putName(algo1d, "algo1d_aretesVives") putName(hypo1d, "hypo1d_aretesVives") + is_done = meshAretesVives.Compute() text = "meshAretesVives.Compute" if is_done: @@ -1248,6 +1251,10 @@ def insereFissureGenerale(maillagesSains, putName(algo1d, "algo1d_edgeFissPeau") putName(hypo1d, "hypo1d_edgeFissPeau") + grpFaceFissureExterne = meshFaceFiss.GroupOnGeom(faceFissureExterne, "fisOutPi", SMESH.FACE) + grpEdgesPeauFissureExterne = meshFaceFiss.GroupOnGeom(edgesPeauFissureExterneC,'edgesPeauFissureExterne',SMESH.EDGE) + grpEdgesPipeFissureExterne = meshFaceFiss.GroupOnGeom(edgesPipeFissureExterneC,'edgesPipeFissureExterne',SMESH.EDGE) + is_done = meshFaceFiss.Compute() text = "meshFaceFiss.Compute" if is_done: @@ -1257,10 +1264,6 @@ def insereFissureGenerale(maillagesSains, logging.info(text) raise Exception(text) - grpFaceFissureExterne = meshFaceFiss.GroupOnGeom(faceFissureExterne, "fisOutPi", SMESH.FACE) - grpEdgesPeauFissureExterne = meshFaceFiss.GroupOnGeom(edgesPeauFissureExterneC,'edgesPeauFissureExterne',SMESH.EDGE) - grpEdgesPipeFissureExterne = meshFaceFiss.GroupOnGeom(edgesPipeFissureExterneC,'edgesPipeFissureExterne',SMESH.EDGE) - # --- maillage faces de peau boutFromIfil = [None for i in range(nbFacesFilling)] @@ -1350,6 +1353,7 @@ def insereFissureGenerale(maillagesSains, text = "Erreur au calcul du maillage.\n" + text logging.info(text) raise Exception(text) + GroupFaces = meshFacePeau.CreateEmptyGroup( SMESH.FACE, "facePeau%d"%ifil ) nbAdd = GroupFaces.AddFrom( meshFacePeau.GetMesh() ) meshesFacesPeau.append(meshFacePeau) @@ -1387,6 +1391,7 @@ def insereFissureGenerale(maillagesSains, putName(algo3d.GetSubMesh(), "boiteDefaut") putName(algo3d, "algo3d_boiteDefaut") putName(meshBoiteDefaut, "boiteDefaut") + is_done = meshBoiteDefaut.Compute() text = "meshBoiteDefaut.Compute" if is_done: diff --git a/src/Tools/blocFissure/gmu/meshBlocPart.py b/src/Tools/blocFissure/gmu/meshBlocPart.py index a273b4916..1a6cf33e4 100644 --- a/src/Tools/blocFissure/gmu/meshBlocPart.py +++ b/src/Tools/blocFissure/gmu/meshBlocPart.py @@ -185,8 +185,6 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle putName(algo1d, "algo1d_bordsLibres") putName(hypo1d, "hypo1d_bordsLibres") - #isDone = bloc1.Compute() - if not declareAlgoEllipsoideFirst: algo3d = bloc1.Tetrahedron(algo=smeshBuilder.NETGEN,geom=ellipsoidep) hypo3d = algo3d.MaxElementVolume(1000.0) @@ -194,17 +192,6 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle putName(algo3d, "algo3d_ellipsoide") putName(hypo3d, "hypo3d_ellipsoide") - is_done = bloc1.Compute() - text = "bloc1.Compute" - if is_done: - logging.info(text+" OK") - else: - text = "Erreur au calcul du maillage.\n" + text - logging.info(text) - raise Exception(text) - - nbRemoved = bloc1.RemoveOrphanNodes() - faceFissure1 = bloc1.GroupOnGeom(faceFissure,'FACE1',SMESH.FACE) noeudsFondFissure = bloc1.GroupOnGeom(gencnt,'nfondfis',SMESH.NODE) @@ -217,6 +204,17 @@ def meshBlocPart(blocPartition, faceFissure, tore, centres, edges, diams, circle name = "faceExterneBloc_%d"%i groups_faceExterneBloc.append(bloc1.GroupOnGeom(facesExtBloc_i, name, SMESH.FACE)) + is_done = bloc1.Compute() + text = "bloc1.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + + nbRemoved = bloc1.RemoveOrphanNodes() + skinBlocMeshes = list() for i, groups_faceCommuneEllipsoideBloc_i in enumerate(groups_faceCommuneEllipsoideBloc): name = "faceCommuneEllipsoideBloc_%d"%i From b00d2131221afd7e699193e73928157e87e3c1c2 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 27 Jan 2021 11:50:20 +0100 Subject: [PATCH 29/57] Simplification de insereFissureLongue --- src/Tools/blocFissure/gmu/CMakeLists.txt | 4 + .../blocFissure/gmu/insereFissureLongue.py | 242 ++---------------- .../blocFissure/gmu/insereFissureLongue_a.py | 145 +++++++++++ .../blocFissure/gmu/insereFissureLongue_b.py | 94 +++++++ .../blocFissure/gmu/insereFissureLongue_c.py | 72 ++++++ .../blocFissure/gmu/insereFissureLongue_d.py | 73 ++++++ 6 files changed, 405 insertions(+), 225 deletions(-) create mode 100644 src/Tools/blocFissure/gmu/insereFissureLongue_a.py create mode 100644 src/Tools/blocFissure/gmu/insereFissureLongue_b.py create mode 100644 src/Tools/blocFissure/gmu/insereFissureLongue_c.py create mode 100644 src/Tools/blocFissure/gmu/insereFissureLongue_d.py diff --git a/src/Tools/blocFissure/gmu/CMakeLists.txt b/src/Tools/blocFissure/gmu/CMakeLists.txt index b67fe883e..d642fe505 100644 --- a/src/Tools/blocFissure/gmu/CMakeLists.txt +++ b/src/Tools/blocFissure/gmu/CMakeLists.txt @@ -72,6 +72,10 @@ SET(plugin_SCRIPTS insereFissureElliptique.py insereFissureGenerale.py insereFissureLongue.py + insereFissureLongue_a.py + insereFissureLongue_b.py + insereFissureLongue_c.py + insereFissureLongue_d.py listOfExtraFunctions.py mailleAretesEtJonction.py mailleFacesFissure.py diff --git a/src/Tools/blocFissure/gmu/insereFissureLongue.py b/src/Tools/blocFissure/gmu/insereFissureLongue.py index e44ceeee1..273280297 100644 --- a/src/Tools/blocFissure/gmu/insereFissureLongue.py +++ b/src/Tools/blocFissure/gmu/insereFissureLongue.py @@ -410,240 +410,32 @@ def insereFissureLongue(geometriesSaines, maillagesSains, # --- maillage pipe fond fissure - meshFondFiss = smesh.Mesh(pipeFondFiss) - algo2d = meshFondFiss.Quadrangle(algo=smeshBuilder.QUADRANGLE) - algo3d = meshFondFiss.Prism() - putName(algo3d.GetSubMesh(), "pipe") - putName(algo3d, "algo3d_pipe") - putName(algo2d, "algo2d_pipe") - - for i, face in enumerate(disques): - algo2d = meshFondFiss.Quadrangle(algo=smeshBuilder.RADIAL_QUAD,geom=face) - putName(algo2d.GetSubMesh(), "disque", i) - putName(algo2d, "algo2d_disque", i) - - for i, 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) - - for i, 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) - - 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): - algo1d = meshFondFiss.Segment(geom=edge) - if i < 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) - is_done = meshFondFiss.Compute() - text = "meshFondFiss.Compute" - if is_done: - logging.info(text+" OK") - else: - text = "Erreur au calcul du maillage.\n" + text - logging.info(text) - raise Exception(text) - - disks = list() - for i, face in enumerate(disques[:4]): - name = "disk%d"%i - disks.append(meshFondFiss.GroupOnGeom(face, name, SMESH.FACE)) - peauext_pipe = meshFondFiss.GetMesh().UnionListOfGroups( disks, 'PEAUEXT' ) - - grpPFOR = meshFondFiss.GroupOnGeom(VerticesEndPipeFiss[0], "PFOR", SMESH.NODE) - grpPFEX = meshFondFiss.GroupOnGeom(VerticesEndPipeFiss[1], "PFEX", SMESH.NODE) - - grp = meshFondFiss.GroupOnGeom(groupFaceFissInPipe, "fisInPi", SMESH.FACE) - group_edgeFondFiss = meshFondFiss.GroupOnGeom(groupEdgeFondFiss, "FONDFISS", SMESH.EDGE) - noeudsFondFissure = meshFondFiss.GroupOnGeom(groupEdgeFondFiss, "nfondfis", SMESH.NODE) - groups_demiCercles = list() - groupnodes_demiCercles = list() - for i, group in enumerate(groupsDemiCerclesPipe): - name = "Cercle%d"%i - groups_demiCercles.append(meshFondFiss.GroupOnGeom(group, name, SMESH.EDGE)) - name = "nCercle%d"%i - 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) - grpNode0 = meshFondFiss.IntersectGroups(groupnode_generFiss, groupnodes_demiCercles[0], "Node0") - grpNode1 = meshFondFiss.IntersectGroups(groupnode_generFiss, groupnodes_demiCercles[1], "Node1") - idNode0 = grpNode0.GetID(1) - idNode1 = grpNode1.GetID(1) - coordsMesh = list() - coordsMesh.append(meshFondFiss.GetNodeXYZ(idNode0)) - coordsMesh.append(meshFondFiss.GetNodeXYZ(idNode1)) - coordsGeom = list() - for vertex in verticesEdgePeauFiss: - coord = geompy.PointCoordinates(vertex) - if distance2(coord, coordsMesh[0]) < 0.1: - meshFondFiss.MoveNode(idNode0, coord[0], coord[1], coord[2]) - if distance2(coord, coordsMesh[1]) < 0.1: - meshFondFiss.MoveNode(idNode1, coord[0], coord[1], coord[2]) - - for groupNodes in groupnodes_demiCercles: - for idNode in groupNodes.GetListOfID(): - coordMesh = meshFondFiss.GetNodeXYZ(idNode) - vertex = geompy.MakeVertex(coordMesh[0], coordMesh[1], coordMesh[2]) - minDist = 100000 - minCoord = None - imin = -1 - for i, edge in enumerate(demiCerclesPeau): - discoord = geompy.MinDistanceComponents(vertex, edge) - if discoord[0] = 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]) - + meshFondFiss, groups_demiCercles, group_generFiss, nbSegGenLong, nbSegGenBout = \ + insereFissureLongue_a (pipeFondFiss, disques, rayons, demiCercles, demiCerclesPeau, generatrices, \ + VerticesEndPipeFiss, verticesEdgePeauFiss, \ + groupFaceFissInPipe, groupEdgeFondFiss, groupsDemiCerclesPipe, groupGenerFiss, \ + profondeur, rayonPipe, distance2) # --- maillage face de peau - meshFacePeau = smesh.Mesh(facePeau) - algo2d = meshFacePeau.Triangle(algo=smeshBuilder.NETGEN_2D) - hypo2d = algo2d.Parameters() - hypo2d.SetMaxSize( 1000 ) - hypo2d.SetOptimize( 1 ) - hypo2d.SetFineness( 2 ) - hypo2d.SetMinSize( 2 ) - hypo2d.SetQuadAllowed( 0 ) - putName(algo2d.GetSubMesh(), "facePeau") - putName(algo2d, "algo2d_facePeau") - putName(hypo2d, "hypo2d_facePeau") - # - lenEdgePeauFiss = geompy.BasicProperties(edgePeauFiss)[0] - frac = profondeur/lenEdgePeauFiss - nbSeg = nbSegGenLong +2*nbSegGenBout - ratio = (nbSegGenBout/float(profondeur)) / (nbSegGenLong/lenEdgePeauFiss) - logging.info("lenEdgePeauFiss %s, profondeur %s, nbSegGenLong %s, nbSegGenBout %s, frac %s, ratio %s", lenEdgePeauFiss, profondeur, nbSegGenLong, nbSegGenBout, frac, ratio) - algo1d = meshFacePeau.Segment(geom=edgePeauFiss) - hypo1d = algo1d.NumberOfSegments(nbSeg,list(),[ ]) - hypo1d.SetDistrType( 2 ) - hypo1d.SetConversionMode( 1 ) - hypo1d.SetTableFunction( [ 0, ratio, frac, 1, (1.-frac), 1, 1, ratio ] ) - putName(algo1d.GetSubMesh(), "edgePeauFiss") - putName(algo1d, "algo1d_edgePeauFiss") - putName(hypo1d, "hypo1d_edgePeauFiss") - # - algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) - hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) - putName(algo1d.GetSubMesh(), "bordsLibres") - putName(algo1d, "algo1d_bordsLibres") - putName(hypo1d, "hypo1d_bordsLibres") - # - for i in range(2): - algo1d = meshFacePeau.UseExisting1DElements(geom=groupsDemiCerclesPeau[i]) - hypo1d = algo1d.SourceEdges([ groups_demiCercles[i] ],0,0) - putName(algo1d.GetSubMesh(), "DemiCercles", i) - putName(algo1d, "algo1d_groupDemiCercles", i) - putName(hypo1d, "hypo1d_groupDemiCercles", i) - # - is_done = meshFacePeau.Compute() - text = "meshFacePeau.Compute" - if is_done: - logging.info(text+" OK") - else: - text = "Erreur au calcul du maillage.\n" + text - logging.info(text) - raise Exception(text) - grpTHOR = meshFacePeau.GroupOnGeom(verticesOutCercles[0], "THOR", SMESH.NODE) - grpTHEX = meshFacePeau.GroupOnGeom(verticesOutCercles[1], "THEX", SMESH.NODE) - - groupEdgesPeauFiss = meshFacePeau.GroupOnGeom(edgePeauFiss, "PeauFis", SMESH.EDGE) - - peauext_face = meshFacePeau.CreateEmptyGroup( SMESH.FACE, 'PEAUEXT' ) - nbAdd = peauext_face.AddFrom( meshFacePeau.GetMesh() ) - + meshFacePeau, groupEdgesPeauFiss = \ + insereFissureLongue_b (facePeau, edgePeauFiss, groupEdgesBordPeau, bordsLibres, \ + groupsDemiCerclesPeau, groups_demiCercles, verticesOutCercles, \ + nbSegGenLong, nbSegGenBout, profondeur) # --- maillage face de fissure - meshFaceFiss = smesh.Mesh(faceFiss) - algo2d = meshFaceFiss.Triangle(algo=smeshBuilder.NETGEN_2D) - hypo2d = algo2d.Parameters() - hypo2d.SetMaxSize( (profondeur - rayonPipe)/math.sqrt(3.0) ) # pour avoir deux couches de triangles equilateraux partout sur la fissure - hypo2d.SetOptimize( 1 ) - hypo2d.SetFineness( 2 ) - hypo2d.SetMinSize( 2 ) - hypo2d.SetQuadAllowed( 0 ) - putName(algo2d.GetSubMesh(), "faceFiss") - putName(algo2d, "algo2d_faceFiss") - putName(hypo2d, "hypo2d_faceFiss") - # - algo1d = meshFaceFiss.UseExisting1DElements(geom=edgePeauFiss) - hypo1d = algo1d.SourceEdges([ groupEdgesPeauFiss ],0,0) - putName(algo1d.GetSubMesh(), "edgeFissPeau") - putName(algo1d, "algo1d_edgeFissPeau") - putName(hypo1d, "hypo1d_edgeFissPeau") - # - algo1d = meshFaceFiss.UseExisting1DElements(geom=groupEdgesFaceFissPipe) - hypo1d = algo1d.SourceEdges([ group_generFiss ],0,0) - putName(algo1d.GetSubMesh(), "edgeFissPeau") - putName(algo1d, "algo1d_edgeFissPeau") - putName(hypo1d, "hypo1d_edgeFissPeau") - # - is_done = meshFaceFiss.Compute() - text = "meshFaceFiss.Compute" - if is_done: - logging.info(text+" OK") - else: - text = "Erreur au calcul du maillage.\n" + text - logging.info(text) - raise Exception(text) + meshFaceFiss = \ + insereFissureLongue_c (faceFiss, groupEdgesPeauFiss, edgePeauFiss, group_generFiss, groupEdgesFaceFissPipe, \ + profondeur, rayonPipe) - grp = meshFaceFiss.GroupOnGeom(faceFiss, "fisOutPi", SMESH.FACE) + # --- maillage meshBoiteDefaut - meshBoiteDefaut = smesh.Concatenate( [internalBoundary.GetMesh(), \ - meshFondFiss.GetMesh(), \ - meshFacePeau.GetMesh(), \ - meshFaceFiss.GetMesh()], \ - 1, 1, 1e-05,False) - # pour aider l'algo hexa-tetra a ne pas mettre de pyramides a l'exterieur des volumes replies sur eux-memes - # on designe les faces de peau en quadrangles par le groupe "skinFaces" - group_faceFissOutPipe = None - group_faceFissInPipe = None - groups = meshBoiteDefaut.GetGroups() - for grp in groups: - if grp.GetType() == SMESH.FACE: - #if "internalBoundary" in grp.GetName(): - # grp.SetName("skinFaces") - if grp.GetName() == "fisOutPi": - group_faceFissOutPipe = grp - elif grp.GetName() == "fisInPi": - group_faceFissInPipe = grp - - # le maillage NETGEN ne passe pas toujours ==> utiliser GHS3D distene=True - if distene: - algo3d = meshBoiteDefaut.Tetrahedron(algo=smeshBuilder.GHS3D) - else: - algo3d = meshBoiteDefaut.Tetrahedron(algo=smeshBuilder.NETGEN) - hypo3d = algo3d.MaxElementVolume(1000.0) - putName(algo3d.GetSubMesh(), "boiteDefaut") - putName(algo3d, "algo3d_boiteDefaut") - putName(meshBoiteDefaut, "boiteDefaut") - is_done = meshBoiteDefaut.Compute() - text = "meshBoiteDefaut.Compute" - if is_done: - logging.info(text+" OK") - else: - text = "Erreur au calcul du maillage.\n" + text - logging.info(text) - raise Exception(text) + meshBoiteDefaut, group_faceFissInPipe, group_faceFissOutPipe = \ + insereFissureLongue_d (internalBoundary, meshFondFiss, meshFacePeau, meshFaceFiss, \ + distene) + groups = maillageSain.GetGroups() grps1 = [ grp for grp in groups if grp.GetName() == 'P1'] diff --git a/src/Tools/blocFissure/gmu/insereFissureLongue_a.py b/src/Tools/blocFissure/gmu/insereFissureLongue_a.py new file mode 100644 index 000000000..940a4c89b --- /dev/null +++ b/src/Tools/blocFissure/gmu/insereFissureLongue_a.py @@ -0,0 +1,145 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2014-2020 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +"""Insertion de fissure longue - maillage pipe fond fissure""" + +import logging +import salome +from .geomsmesh import geompy +from .geomsmesh import smesh +from salome.smesh import smeshBuilder +import SMESH + +from .sortEdges import sortEdges +from .putName import putName + +import math + +def insereFissureLongue_a (pipeFondFiss, disques, rayons, demiCercles, demiCerclesPeau, generatrices, \ + VerticesEndPipeFiss, verticesEdgePeauFiss, \ + groupFaceFissInPipe, groupEdgeFondFiss, groupsDemiCerclesPipe, groupGenerFiss, \ + profondeur, rayonPipe, distance2): + """maillage pipe fond fissure""" + logging.info('start') + + meshFondFiss = smesh.Mesh(pipeFondFiss) + algo2d = meshFondFiss.Quadrangle(algo=smeshBuilder.QUADRANGLE) + algo3d = meshFondFiss.Prism() + putName(algo3d.GetSubMesh(), "pipe") + putName(algo3d, "algo3d_pipe") + putName(algo2d, "algo2d_pipe") + + for i, face in enumerate(disques): + algo2d = meshFondFiss.Quadrangle(algo=smeshBuilder.RADIAL_QUAD,geom=face) + putName(algo2d.GetSubMesh(), "disque", i) + putName(algo2d, "algo2d_disque", i) + + for i, 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) + + for i, 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) + + 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): + algo1d = meshFondFiss.Segment(geom=edge) + if i < 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) + + disks = list() + for i, face in enumerate(disques[:4]): + name = "disk%d"%i + disks.append(meshFondFiss.GroupOnGeom(face, name, SMESH.FACE)) + _ = meshFondFiss.GetMesh().UnionListOfGroups( disks, 'PEAUEXT' ) + + _ = meshFondFiss.GroupOnGeom(VerticesEndPipeFiss[0], "PFOR", SMESH.NODE) + _ = meshFondFiss.GroupOnGeom(VerticesEndPipeFiss[1], "PFEX", SMESH.NODE) + + _ = meshFondFiss.GroupOnGeom(groupFaceFissInPipe, "fisInPi", SMESH.FACE) + _ = meshFondFiss.GroupOnGeom(groupEdgeFondFiss, "FONDFISS", SMESH.EDGE) + _ = meshFondFiss.GroupOnGeom(groupEdgeFondFiss, "nfondfis", SMESH.NODE) + + groups_demiCercles = list() + groupnodes_demiCercles = list() + for i, group in enumerate(groupsDemiCerclesPipe): + name = "Cercle%d"%i + groups_demiCercles.append(meshFondFiss.GroupOnGeom(group, name, SMESH.EDGE)) + name = "nCercle%d"%i + 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) + + is_done = meshFondFiss.Compute() + text = "meshFondFiss.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + + grpNode0 = meshFondFiss.IntersectGroups(groupnode_generFiss, groupnodes_demiCercles[0], "Node0") + grpNode1 = meshFondFiss.IntersectGroups(groupnode_generFiss, groupnodes_demiCercles[1], "Node1") + idNode0 = grpNode0.GetID(1) + idNode1 = grpNode1.GetID(1) + coordsMesh = list() + coordsMesh.append(meshFondFiss.GetNodeXYZ(idNode0)) + coordsMesh.append(meshFondFiss.GetNodeXYZ(idNode1)) + + for vertex in verticesEdgePeauFiss: + coord = geompy.PointCoordinates(vertex) + if distance2(coord, coordsMesh[0]) < 0.1: + meshFondFiss.MoveNode(idNode0, coord[0], coord[1], coord[2]) + if distance2(coord, coordsMesh[1]) < 0.1: + meshFondFiss.MoveNode(idNode1, coord[0], coord[1], coord[2]) + + for groupNodes in groupnodes_demiCercles: + for idNode in groupNodes.GetListOfID(): + coordMesh = meshFondFiss.GetNodeXYZ(idNode) + vertex = geompy.MakeVertex(coordMesh[0], coordMesh[1], coordMesh[2]) + minDist = 100000 + minCoord = None + imin = -1 + for i, edge in enumerate(demiCerclesPeau): + discoord = geompy.MinDistanceComponents(vertex, edge) + if discoord[0] = 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]) + + return meshFondFiss, groups_demiCercles, group_generFiss, nbSegGenLong, nbSegGenBout diff --git a/src/Tools/blocFissure/gmu/insereFissureLongue_b.py b/src/Tools/blocFissure/gmu/insereFissureLongue_b.py new file mode 100644 index 000000000..8df253dde --- /dev/null +++ b/src/Tools/blocFissure/gmu/insereFissureLongue_b.py @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2014-2020 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +"""Insertion de fissure longue - maillage face de peau""" + +import logging +import salome +from .geomsmesh import geompy +from .geomsmesh import smesh +from salome.smesh import smeshBuilder +import SMESH + +from .putName import putName + +def insereFissureLongue_b (facePeau, edgePeauFiss, groupEdgesBordPeau, bordsLibres, \ + groupsDemiCerclesPeau, groups_demiCercles, verticesOutCercles, \ + nbSegGenLong, nbSegGenBout, profondeur): + """maillage face de peau""" + logging.info('start') + + meshFacePeau = smesh.Mesh(facePeau) + algo2d = meshFacePeau.Triangle(algo=smeshBuilder.NETGEN_2D) + hypo2d = algo2d.Parameters() + hypo2d.SetMaxSize( 1000 ) + hypo2d.SetOptimize( 1 ) + hypo2d.SetFineness( 2 ) + hypo2d.SetMinSize( 2 ) + hypo2d.SetQuadAllowed( 0 ) + putName(algo2d.GetSubMesh(), "facePeau") + putName(algo2d, "algo2d_facePeau") + putName(hypo2d, "hypo2d_facePeau") + # + lenEdgePeauFiss = geompy.BasicProperties(edgePeauFiss)[0] + frac = profondeur/lenEdgePeauFiss + nbSeg = nbSegGenLong +2*nbSegGenBout + ratio = (nbSegGenBout/float(profondeur)) / (nbSegGenLong/lenEdgePeauFiss) + logging.info("lenEdgePeauFiss %s, profondeur %s, nbSegGenLong %s, nbSegGenBout %s, frac %s, ratio %s", lenEdgePeauFiss, profondeur, nbSegGenLong, nbSegGenBout, frac, ratio) + + algo1d = meshFacePeau.Segment(geom=edgePeauFiss) + hypo1d = algo1d.NumberOfSegments(nbSeg,list(),[ ]) + hypo1d.SetDistrType( 2 ) + hypo1d.SetConversionMode( 1 ) + hypo1d.SetTableFunction( [ 0, ratio, frac, 1, (1.-frac), 1, 1, ratio ] ) + putName(algo1d.GetSubMesh(), "edgePeauFiss") + putName(algo1d, "algo1d_edgePeauFiss") + putName(hypo1d, "hypo1d_edgePeauFiss") + # + algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) + hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) + putName(algo1d.GetSubMesh(), "bordsLibres") + putName(algo1d, "algo1d_bordsLibres") + putName(hypo1d, "hypo1d_bordsLibres") + # + for i in range(2): + algo1d = meshFacePeau.UseExisting1DElements(geom=groupsDemiCerclesPeau[i]) + hypo1d = algo1d.SourceEdges([ groups_demiCercles[i] ],0,0) + putName(algo1d.GetSubMesh(), "DemiCercles", i) + putName(algo1d, "algo1d_groupDemiCercles", i) + putName(hypo1d, "hypo1d_groupDemiCercles", i) + + _ = meshFacePeau.GroupOnGeom(verticesOutCercles[0], "THOR", SMESH.NODE) + _ = meshFacePeau.GroupOnGeom(verticesOutCercles[1], "THEX", SMESH.NODE) + + groupEdgesPeauFiss = meshFacePeau.GroupOnGeom(edgePeauFiss, "PeauFis", SMESH.EDGE) + + is_done = meshFacePeau.Compute() + text = "meshFacePeau.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + + peauext_face = meshFacePeau.CreateEmptyGroup( SMESH.FACE, 'PEAUEXT' ) + _ = peauext_face.AddFrom( meshFacePeau.GetMesh() ) + + return meshFacePeau, groupEdgesPeauFiss diff --git a/src/Tools/blocFissure/gmu/insereFissureLongue_c.py b/src/Tools/blocFissure/gmu/insereFissureLongue_c.py new file mode 100644 index 000000000..35988dc2a --- /dev/null +++ b/src/Tools/blocFissure/gmu/insereFissureLongue_c.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2014-2020 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +"""Insertion de fissure longue - maillage face de fissure""" + +import logging +import salome +from .geomsmesh import smesh +from salome.smesh import smeshBuilder +import SMESH + +from .putName import putName + +import math + +def insereFissureLongue_c (faceFiss, edgePeauFiss, groupEdgesPeauFiss, group_generFiss, groupEdgesFaceFissPipe, \ + profondeur, rayonPipe): + """maillage face de fissure""" + logging.info('start') + + meshFaceFiss = smesh.Mesh(faceFiss) + algo2d = meshFaceFiss.Triangle(algo=smeshBuilder.NETGEN_2D) + hypo2d = algo2d.Parameters() + hypo2d.SetMaxSize( (profondeur - rayonPipe)/math.sqrt(3.0) ) # pour avoir deux couches de triangles equilateraux partout sur la fissure + hypo2d.SetOptimize( 1 ) + hypo2d.SetFineness( 2 ) + hypo2d.SetMinSize( 2 ) + hypo2d.SetQuadAllowed( 0 ) + putName(algo2d.GetSubMesh(), "faceFiss") + putName(algo2d, "algo2d_faceFiss") + putName(hypo2d, "hypo2d_faceFiss") + # + algo1d = meshFaceFiss.UseExisting1DElements(geom=edgePeauFiss) + hypo1d = algo1d.SourceEdges([ groupEdgesPeauFiss ],0,0) + putName(algo1d.GetSubMesh(), "edgeFissPeau") + putName(algo1d, "algo1d_edgeFissPeau") + putName(hypo1d, "hypo1d_edgeFissPeau") + # + algo1d = meshFaceFiss.UseExisting1DElements(geom=groupEdgesFaceFissPipe) + hypo1d = algo1d.SourceEdges([ group_generFiss ],0,0) + putName(algo1d.GetSubMesh(), "edgeFissPeau") + putName(algo1d, "algo1d_edgeFissPeau") + putName(hypo1d, "hypo1d_edgeFissPeau") + + _ = meshFaceFiss.GroupOnGeom(faceFiss, "fisOutPi", SMESH.FACE) + + is_done = meshFaceFiss.Compute() + text = "meshFaceFiss.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + + return meshFaceFiss diff --git a/src/Tools/blocFissure/gmu/insereFissureLongue_d.py b/src/Tools/blocFissure/gmu/insereFissureLongue_d.py new file mode 100644 index 000000000..ba9c382a3 --- /dev/null +++ b/src/Tools/blocFissure/gmu/insereFissureLongue_d.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2014-2020 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +"""Insertion de fissure longue - maillage meshBoiteDefaut""" + +import logging +import salome +from .geomsmesh import smesh +from salome.smesh import smeshBuilder +import SMESH + +from .putName import putName + +def insereFissureLongue_d (internalBoundary, meshFondFiss, meshFacePeau, meshFaceFiss, \ + distene = True): + """maillage meshBoiteDefaut""" + logging.info('start') + + meshBoiteDefaut = smesh.Concatenate( [internalBoundary.GetMesh(), \ + meshFondFiss.GetMesh(), \ + meshFacePeau.GetMesh(), \ + meshFaceFiss.GetMesh()], \ + 1, 1, 1e-05,False) + # pour aider l'algo hexa-tetra a ne pas mettre de pyramides a l'exterieur des volumes replies sur eux-memes + # on designe les faces de peau en quadrangles par le groupe "skinFaces" + group_faceFissOutPipe = None + group_faceFissInPipe = None + groups = meshBoiteDefaut.GetGroups() + for grp in groups: + if grp.GetType() == SMESH.FACE: + #if "internalBoundary" in grp.GetName(): + # grp.SetName("skinFaces") + if grp.GetName() == "fisOutPi": + group_faceFissOutPipe = grp + elif grp.GetName() == "fisInPi": + group_faceFissInPipe = grp + + # le maillage NETGEN ne passe pas toujours ==> utiliser GHS3D + if distene: + algo3d = meshBoiteDefaut.Tetrahedron(algo=smeshBuilder.GHS3D) + else: + algo3d = meshBoiteDefaut.Tetrahedron(algo=smeshBuilder.NETGEN) + hypo3d = algo3d.MaxElementVolume(1000.0) + putName(algo3d.GetSubMesh(), "boiteDefaut") + putName(algo3d, "algo3d_boiteDefaut") + putName(meshBoiteDefaut, "boiteDefaut") + + is_done = meshBoiteDefaut.Compute() + text = "meshBoiteDefaut.Compute" + if is_done: + logging.info(text+" OK") + else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + + return meshBoiteDefaut, group_faceFissInPipe, group_faceFissOutPipe From 39da29483f11f860f3811b3189c33435dba0dc93 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 27 Jan 2021 11:51:06 +0100 Subject: [PATCH 30/57] =?UTF-8?q?cosm=C3=A9tique?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/gmu/calculePointsAxiauxPipe.py | 1 + src/Tools/blocFissure/gmu/construitFissureGenerale.py | 1 + src/Tools/blocFissure/gmu/mailleAretesEtJonction.py | 5 ++++- src/Tools/blocFissure/gmu/mailleFacesPeau.py | 1 + src/Tools/blocFissure/materielCasTests/cubeAngle.py | 2 ++ src/Tools/blocFissure/materielCasTests/cubeFin.py | 2 ++ src/Tools/blocFissure/materielCasTests/decoupeCylindre.py | 2 ++ src/Tools/blocFissure/materielCasTests/disque_perce.py | 2 ++ src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py | 2 ++ src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py | 2 ++ src/Tools/blocFissure/materielCasTests/fissureGauche.py | 2 ++ src/Tools/blocFissure/materielCasTests/fissureGauche2.py | 2 ++ 12 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/Tools/blocFissure/gmu/calculePointsAxiauxPipe.py b/src/Tools/blocFissure/gmu/calculePointsAxiauxPipe.py index 01c7e0cd5..7bd9b93bc 100644 --- a/src/Tools/blocFissure/gmu/calculePointsAxiauxPipe.py +++ b/src/Tools/blocFissure/gmu/calculePointsAxiauxPipe.py @@ -60,6 +60,7 @@ def calculePointsAxiauxPipe(edgesFondFiss, edgesIdByOrientation, facesDefaut, meshFondExt = smesh.Mesh(wireFondFiss) algo1d = meshFondExt.Segment() hypo1d = algo1d.Adaptive(lgmin, lgmax, deflexion) # a ajuster selon la profondeur de la fissure + is_done = meshFondExt.Compute() text = "calculePointsAxiauxPipe meshFondExt.Compute" if is_done: diff --git a/src/Tools/blocFissure/gmu/construitFissureGenerale.py b/src/Tools/blocFissure/gmu/construitFissureGenerale.py index 84ef19835..8dfcfa527 100644 --- a/src/Tools/blocFissure/gmu/construitFissureGenerale.py +++ b/src/Tools/blocFissure/gmu/construitFissureGenerale.py @@ -319,6 +319,7 @@ def construitFissureGenerale(maillagesSains, putName(algo3d.GetSubMesh(), "boiteDefaut") putName(algo3d, "algo3d_boiteDefaut") putName(meshBoiteDefaut, "boiteDefaut") + is_done = meshBoiteDefaut.Compute() text = "meshBoiteDefaut.Compute" if is_done: diff --git a/src/Tools/blocFissure/gmu/mailleAretesEtJonction.py b/src/Tools/blocFissure/gmu/mailleAretesEtJonction.py index e208c0364..101b06d4f 100644 --- a/src/Tools/blocFissure/gmu/mailleAretesEtJonction.py +++ b/src/Tools/blocFissure/gmu/mailleAretesEtJonction.py @@ -50,7 +50,8 @@ def mailleAretesEtJonction(internalBoundary, aretesVivesCoupees, lgAretesVives): # --- maillage des éventuelles arêtes vives entre faces reconstruites grpAretesVives = None - if len(aretesVivesCoupees) > 0: + if aretesVivesCoupees: + aretesVivesC = geompy.MakeCompound(aretesVivesCoupees) meshAretesVives = smesh.Mesh(aretesVivesC) algo1d = meshAretesVives.Segment() @@ -58,6 +59,7 @@ def mailleAretesEtJonction(internalBoundary, aretesVivesCoupees, lgAretesVives): putName(algo1d.GetSubMesh(), "aretesVives") putName(algo1d, "algo1d_aretesVives") putName(hypo1d, "hypo1d_aretesVives") + is_done = meshAretesVives.Compute() text = "meshAretesVives.Compute" if is_done: @@ -66,6 +68,7 @@ def mailleAretesEtJonction(internalBoundary, aretesVivesCoupees, lgAretesVives): text = "Erreur au calcul du maillage.\n" + text logging.info(text) raise Exception(text) + grpAretesVives = meshAretesVives.CreateEmptyGroup( SMESH.EDGE, 'grpAretesVives' ) nbAdd = grpAretesVives.AddFrom( meshAretesVives.GetMesh() ) diff --git a/src/Tools/blocFissure/gmu/mailleFacesPeau.py b/src/Tools/blocFissure/gmu/mailleFacesPeau.py index 6c4a86c23..6bbf3e10b 100644 --- a/src/Tools/blocFissure/gmu/mailleFacesPeau.py +++ b/src/Tools/blocFissure/gmu/mailleFacesPeau.py @@ -128,6 +128,7 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, text = "Erreur au calcul du maillage.\n" + text logging.info(text) raise Exception(text) + GroupFaces = meshFacePeau.CreateEmptyGroup( SMESH.FACE, "facePeau%d"%ifil ) nbAdd = GroupFaces.AddFrom( meshFacePeau.GetMesh() ) meshesFacesPeau.append(meshFacePeau) diff --git a/src/Tools/blocFissure/materielCasTests/cubeAngle.py b/src/Tools/blocFissure/materielCasTests/cubeAngle.py index e9be724e0..9b7556196 100644 --- a/src/Tools/blocFissure/materielCasTests/cubeAngle.py +++ b/src/Tools/blocFissure/materielCasTests/cubeAngle.py @@ -82,6 +82,7 @@ Nb_Segments_1 = Regular_1D.NumberOfSegments(15) Nb_Segments_1.SetDistrType( 0 ) Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa) + is_done = Mesh_1.Compute() text = "Mesh_1.Compute" if is_done: @@ -90,6 +91,7 @@ else: text = "Erreur au calcul du maillage.\n" + text logging.info(text) raise Exception(text) + Mesh_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngle.med")) ## set object names diff --git a/src/Tools/blocFissure/materielCasTests/cubeFin.py b/src/Tools/blocFissure/materielCasTests/cubeFin.py index 69ecdb813..51f1f34ec 100644 --- a/src/Tools/blocFissure/materielCasTests/cubeFin.py +++ b/src/Tools/blocFissure/materielCasTests/cubeFin.py @@ -131,6 +131,7 @@ Quadrangle_2D = cubeFin_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) Hexa_3D = cubeFin_1.Hexahedron(algo=smeshBuilder.Hexa) DEPL_1 = cubeFin_1.GroupOnGeom(DEPL,'DEPL',SMESH.FACE) ENCASTR_1 = cubeFin_1.GroupOnGeom(ENCASTR,'ENCASTR',SMESH.FACE) + is_done = cubeFin_1.Compute() text = "cubeFin_1.Compute" if is_done: @@ -139,6 +140,7 @@ else: text = "Erreur au calcul du maillage.\n" + text logging.info(text) raise Exception(text) + ## Set names of Mesh objects smesh.SetName(Regular_1D.GetAlgorithm(), 'Regular_1D') smesh.SetName(Quadrangle_2D.GetAlgorithm(), 'Quadrangle_2D') diff --git a/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py b/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py index 83fb3f55e..b0d9fc275 100644 --- a/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py +++ b/src/Tools/blocFissure/materielCasTests/decoupeCylindre.py @@ -162,6 +162,7 @@ Nb_Segments_2.SetDistrType( 0 ) Regular_1D_2 = CylindreSain_1.Segment(geom=radial) Nb_Segments_3 = Regular_1D_2.NumberOfSegments(6,[],[ ]) Nb_Segments_3.SetDistrType( 0 ) + is_done = CylindreSain_1.Compute() text = "CylindreSain_1.Compute" if is_done: @@ -170,6 +171,7 @@ else: text = "Erreur au calcul du maillage.\n" + text logging.info(text) raise Exception(text) + CylindreSain_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "CylindreSain.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/disque_perce.py b/src/Tools/blocFissure/materielCasTests/disque_perce.py index eeba533a2..72b925a30 100644 --- a/src/Tools/blocFissure/materielCasTests/disque_perce.py +++ b/src/Tools/blocFissure/materielCasTests/disque_perce.py @@ -89,6 +89,7 @@ Nb_Segments_2.SetDistrType( 0 ) Regular_1D_2 = Disque_1.Segment(geom=Compound_4) status = Disque_1.AddHypothesis(Nb_Segments_2,Compound_4) Quadrangle_2D = Disque_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) + is_done = Disque_1.Compute() text = "Disque_1.Compute" if is_done: @@ -97,6 +98,7 @@ else: text = "Erreur au calcul du maillage.\n" + text logging.info(text) raise Exception(text) + Disque_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "disque.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py b/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py index 40a434b0d..4118b610d 100644 --- a/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py +++ b/src/Tools/blocFissure/materielCasTests/eprouvetteCourbe.py @@ -106,6 +106,7 @@ Nb_Segments_2.SetDistrType( 0 ) Regular_1D_2 = EprouvetteCourbe_1.Segment(geom=Compound_y) Nb_Segments_3 = Regular_1D_2.NumberOfSegments(25) Nb_Segments_3.SetDistrType( 0 ) + is_done = EprouvetteCourbe_1.Compute() text = "EprouvetteCourbe_1.Compute" if is_done: @@ -114,6 +115,7 @@ else: text = "Erreur au calcul du maillage.\n" + text logging.info(text) raise Exception(text) + EprouvetteCourbe_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteCourbe.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py b/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py index 18850d6df..970507242 100644 --- a/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py +++ b/src/Tools/blocFissure/materielCasTests/eprouvetteDroite.py @@ -140,6 +140,7 @@ Nb_Segments_2.SetDistrType( 0 ) Regular_1D_2 = eprouvetteDroite_1.Segment(geom=Compound_x) Nb_Segments_3 = Regular_1D_2.NumberOfSegments(10,[],[ ]) Nb_Segments_3.SetDistrType( 0 ) + is_done = eprouvetteDroite_1.Compute() text = "eprouvetteDroite_1.Compute" if is_done: @@ -148,6 +149,7 @@ else: text = "Erreur au calcul du maillage.\n" + text logging.info(text) raise Exception(text) + eprouvetteDroite_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "eprouvetteDroite.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/fissureGauche.py b/src/Tools/blocFissure/materielCasTests/fissureGauche.py index 39d96b1ab..01e8f2145 100644 --- a/src/Tools/blocFissure/materielCasTests/fissureGauche.py +++ b/src/Tools/blocFissure/materielCasTests/fissureGauche.py @@ -135,6 +135,7 @@ Nb_Segments_2.SetDistrType( 0 ) Regular_1D_2 = objetSain_1.Segment(geom=epaisseurs) Nb_Segments_3 = Regular_1D_2.NumberOfSegments(5,[],[ ]) Nb_Segments_3.SetDistrType( 0 ) + is_done = objetSain_1.Compute() text = "objetSain_1.Compute" if is_done: @@ -143,6 +144,7 @@ else: text = "Erreur au calcul du maillage.\n" + text logging.info(text) raise Exception(text) + objetSain_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "faceGaucheSain.med")) SubMesh_1 = Regular_1D_1.GetSubMesh() SubMesh_2 = Regular_1D_2.GetSubMesh() diff --git a/src/Tools/blocFissure/materielCasTests/fissureGauche2.py b/src/Tools/blocFissure/materielCasTests/fissureGauche2.py index 88b4fbca1..ac9281080 100644 --- a/src/Tools/blocFissure/materielCasTests/fissureGauche2.py +++ b/src/Tools/blocFissure/materielCasTests/fissureGauche2.py @@ -103,6 +103,7 @@ Nb_Segments_1 = Regular_1D.NumberOfSegments(15,[],[ ]) Nb_Segments_1.SetDistrType( 0 ) Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa) + is_done = Mesh_1.Compute() text = "Mesh_1.Compute" if is_done: @@ -111,6 +112,7 @@ else: text = "Erreur au calcul du maillage.\n" + text logging.info(text) raise Exception(text) + Mesh_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests", "boiteSaine.med")) ## set object names From b1e46c77b6db8259ad4d47fbfbbb787a6976b3c4 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 27 Jan 2021 12:26:43 +0100 Subject: [PATCH 31/57] import et erreur d'arguments --- src/Tools/blocFissure/gmu/insereFissureLongue.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Tools/blocFissure/gmu/insereFissureLongue.py b/src/Tools/blocFissure/gmu/insereFissureLongue.py index 273280297..a2f17b4c8 100644 --- a/src/Tools/blocFissure/gmu/insereFissureLongue.py +++ b/src/Tools/blocFissure/gmu/insereFissureLongue.py @@ -46,6 +46,11 @@ from .shapeSurFissure import shapeSurFissure from .regroupeSainEtDefaut import RegroupeSainEtDefaut from .triedreBase import triedreBase +from blocFissure.gmu.insereFissureLongue_a import insereFissureLongue_a +from blocFissure.gmu.insereFissureLongue_b import insereFissureLongue_b +from blocFissure.gmu.insereFissureLongue_c import insereFissureLongue_c +from blocFissure.gmu.insereFissureLongue_d import insereFissureLongue_d + # ----------------------------------------------------------------------------- # --- procedure complete fissure longue @@ -426,7 +431,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains, # --- maillage face de fissure meshFaceFiss = \ - insereFissureLongue_c (faceFiss, groupEdgesPeauFiss, edgePeauFiss, group_generFiss, groupEdgesFaceFissPipe, \ + insereFissureLongue_c (faceFiss, edgePeauFiss, groupEdgesPeauFiss, group_generFiss, groupEdgesFaceFissPipe, \ profondeur, rayonPipe) # --- maillage meshBoiteDefaut From a9dfed39c84f7c21174287e613131e4f7ec76174 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 27 Jan 2021 16:37:59 +0100 Subject: [PATCH 32/57] Insertion d'un cas test via xao --- src/Tools/blocFissure/CasTests/CMakeLists.txt | 1 + src/Tools/blocFissure/CasTests/tube.py | 127 ++++++++ .../materielCasTests/CMakeLists.txt | 1 + .../materielCasTests/genereMateriel.py | 11 +- .../blocFissure/materielCasTests/tube.py | 294 ++++++++++++++++++ 5 files changed, 429 insertions(+), 5 deletions(-) create mode 100644 src/Tools/blocFissure/CasTests/tube.py create mode 100755 src/Tools/blocFissure/materielCasTests/tube.py diff --git a/src/Tools/blocFissure/CasTests/CMakeLists.txt b/src/Tools/blocFissure/CasTests/CMakeLists.txt index e6bcd67e5..d3ac13138 100644 --- a/src/Tools/blocFissure/CasTests/CMakeLists.txt +++ b/src/Tools/blocFissure/CasTests/CMakeLists.txt @@ -51,6 +51,7 @@ SET(plugin_SCRIPTS fissureCoude_9.py fissure_Coude.py vis_1.py + tube.py ) # --- rules --- diff --git a/src/Tools/blocFissure/CasTests/tube.py b/src/Tools/blocFissure/CasTests/tube.py new file mode 100644 index 000000000..cd8a1cb5e --- /dev/null +++ b/src/Tools/blocFissure/CasTests/tube.py @@ -0,0 +1,127 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2014-2020 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +import os +from blocFissure import gmu +from blocFissure.gmu.geomsmesh import geompy, smesh + +import math +import GEOM +import SALOMEDS +import SMESH +#import StdMeshers +#import GHS3DPlugin +#import NETGENPlugin +import logging + +from blocFissure.gmu.fissureGenerique import fissureGenerique + +from blocFissure.gmu.triedreBase import triedreBase +from blocFissure.gmu.genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut +from blocFissure.gmu.creeZoneDefautDansObjetSain import creeZoneDefautDansObjetSain +from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale + +class tube(fissureGenerique): + """problème de fissure plane dans un tube""" + + nomProbleme = "tube" + + # --------------------------------------------------------------------------- + def genereMaillageSain(self, geometriesSaines, meshParams): + logging.info("genereMaillageSain pour '{}'".format(self.nomCas)) + + ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "Tube.med")) + smesh.SetName(objetSain.GetMesh(), "{}_objetSain".format(self.nomProbleme)) + + return [objetSain, True] # True : maillage hexa + + # --------------------------------------------------------------------------- + def setParamShapeFissure(self): + """ + paramètres de la fissure pour méthode construitFissureGenerale + lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage) + rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure + """ + logging.info("setParamShapeFissure pour '{}'".format(self.nomCas)) + self.shapeFissureParams = dict(lgInfluence = 1., + rayonPipe = 0.05) + + # --------------------------------------------------------------------------- + def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams): + """Importe la géométrie de la fissure""" + logging.info("genereShapeFissure pour '{}'".format(self.nomCas)) + + lgInfluence = shapeFissureParams['lgInfluence'] + + + (_, shellFiss, _, l_groups, _) = geompy.ImportXAO(os.path.join(gmu.pathBloc, "materielCasTests", "TubeFiss.xao")) + l_aux = list() + for group in l_groups: + if ( group.GetName() in ("Group_1","Group_2","Group_3") ): + l_aux.append(group) + fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) + geompy.UnionList(fondFiss, l_aux ) + geompy.addToStudy( shellFiss, 'shellFiss' ) + geompy.addToStudyInFather( shellFiss, fondFiss, 'fondFiss' ) + + coordsNoeudsFissure = genereMeshCalculZoneDefaut(shellFiss, 0.05, 0.2) + + centre = None + + return [shellFiss, centre, lgInfluence, coordsNoeudsFissure, fondFiss] + + # --------------------------------------------------------------------------- + def setParamMaillageFissure(self): + logging.info("setParamMaillageFissure pour '{}'".format(self.nomCas)) + self.maillageFissureParams = dict(nomRep = os.curdir, + nomFicSain = self.nomCas, + nomFicFissure = 'fissure_' + self.nomCas, + nbsegRad = 5, + nbsegCercle = 8, + areteFaceFissure = 0.5) + + # --------------------------------------------------------------------------- + def genereZoneDefaut(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams): + elementsDefaut = creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams) + return elementsDefaut + + # --------------------------------------------------------------------------- + def genereMaillageFissure(self, geometriesSaines, maillagesSains, + shapesFissure, shapeFissureParams, + maillageFissureParams, elementsDefaut, step): + logging.info("genereMaillageFissure pour '{}'".format(self.nomCas)) + maillageFissure = construitFissureGenerale(maillagesSains, + shapesFissure, shapeFissureParams, + maillageFissureParams, elementsDefaut, step) + return maillageFissure + + # --------------------------------------------------------------------------- + def setReferencesMaillageFissure(self): + self.referencesMaillageFissure = dict( \ + Entity_Quad_Quadrangle = 1630, \ + Entity_Quad_Hexa = 3523, \ + Entity_Node = 18874, \ + Entity_Quad_Edge = 261, \ + Entity_Quad_Triangle = 190, \ + Entity_Quad_Tetra = 1322, \ + Entity_Quad_Pyramid = 172, \ + Entity_Quad_Penta = 64 \ + ) + diff --git a/src/Tools/blocFissure/materielCasTests/CMakeLists.txt b/src/Tools/blocFissure/materielCasTests/CMakeLists.txt index bf9e3eb43..684d628c0 100644 --- a/src/Tools/blocFissure/materielCasTests/CMakeLists.txt +++ b/src/Tools/blocFissure/materielCasTests/CMakeLists.txt @@ -34,6 +34,7 @@ SET(plugin_SCRIPTS fissureGauche2.py fissureGauche.py genereMateriel.py + tube.py vis.py ) diff --git a/src/Tools/blocFissure/materielCasTests/genereMateriel.py b/src/Tools/blocFissure/materielCasTests/genereMateriel.py index df9afea79..cc207bf5f 100644 --- a/src/Tools/blocFissure/materielCasTests/genereMateriel.py +++ b/src/Tools/blocFissure/materielCasTests/genereMateriel.py @@ -19,14 +19,15 @@ # from blocFissure.materielCasTests import cubeAngle +from blocFissure.materielCasTests import cubeFin from blocFissure.materielCasTests import decoupeCylindre +from blocFissure.materielCasTests import disque_perce +from blocFissure.materielCasTests import ellipse +from blocFissure.materielCasTests import ellipse_disque +from blocFissure.materielCasTests import ellipse_probleme from blocFissure.materielCasTests import eprouvetteCourbe from blocFissure.materielCasTests import eprouvetteDroite from blocFissure.materielCasTests import fissureGauche from blocFissure.materielCasTests import fissureGauche2 -from blocFissure.materielCasTests import ellipse -from blocFissure.materielCasTests import ellipse_probleme -from blocFissure.materielCasTests import disque_perce -from blocFissure.materielCasTests import ellipse_disque +from blocFissure.materielCasTests import tube from blocFissure.materielCasTests import vis -from blocFissure.materielCasTests import cubeFin diff --git a/src/Tools/blocFissure/materielCasTests/tube.py b/src/Tools/blocFissure/materielCasTests/tube.py new file mode 100755 index 000000000..d0167b601 --- /dev/null +++ b/src/Tools/blocFissure/materielCasTests/tube.py @@ -0,0 +1,294 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2014-2020 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +"""Cas-test de blocFissure sur un tube""" +__revision__ = "V02.04" + +import logging + +import sys +import salome + +salome.salome_init() + +import os +from blocFissure import gmu + +#=============== Options ==================== +# 1. NOM_OBJET = nom de l'objet +NOM_OBJET = "Tube" +# 2. CAO +# 2.1. Le tube : rayon intérieur, rayon extérieur, hauteur +RAYON_INT = 9.84 +RAYON_EXT = 11.11 +HAUTEUR = 50. +# 2.2. La fissure : +F_L_1 = 80. +F_THETA_1 = 3. +F_C_1 = 1.04 +F_L_2 = 20. +# 3. Maillage +# Nombre de segments du tube +NB_S_E = 4 +NB_S_H = 60 +NB_S_P = 30 +#============================================ + +### +### SHAPER component +### + +from SketchAPI import * + +from salome.shaper import model + +model.begin() +partSet = model.moduleDocument() + +### Create Part +Part_1 = model.addPart(partSet) +Part_1_doc = Part_1.document() +model.addParameter(Part_1_doc, "R_I", "%f" % RAYON_INT) +model.addParameter(Part_1_doc, "R_E", "%f" % RAYON_EXT) +model.addParameter(Part_1_doc, "H", "%f" % HAUTEUR) +model.addParameter(Part_1_doc, "F_L_1", "{}".format(F_L_1)) +model.addParameter(Part_1_doc, "F_THETA_1", "{}".format(F_THETA_1)) +model.addParameter(Part_1_doc, "F_R_1", "{}*{}".format(F_C_1,RAYON_INT)) +model.addParameter(Part_1_doc, "F_L_2", "{}".format(F_L_2)) + +### Create Sketch +Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOZ")) + +### Create SketchLine +SketchLine_1 = Sketch_1.addLine(11.11, -22.82842712474619, 9.84, -22.82842712474619) + +### Create SketchLine +SketchLine_2 = Sketch_1.addLine(9.84, -22.82842712474619, 9.84, 27.17157287525381) + +### Create SketchLine +SketchLine_3 = Sketch_1.addLine(9.84, 27.17157287525381, 11.11, 27.17157287525381) + +### Create SketchLine +SketchLine_4 = Sketch_1.addLine(11.11, 27.17157287525381, 11.11, -22.82842712474619) +Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_1.startPoint()) +Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint()) +Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint()) +Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint()) +Sketch_1.setHorizontal(SketchLine_1.result()) +Sketch_1.setVertical(SketchLine_2.result()) +Sketch_1.setHorizontal(SketchLine_3.result()) +Sketch_1.setVertical(SketchLine_4.result()) +Sketch_1.setLength(SketchLine_4.result(), "H") + +### Create SketchProjection +SketchProjection_1 = Sketch_1.addProjection(model.selection("VERTEX", "PartSet/Origin"), False) +SketchPoint_1 = SketchProjection_1.createdFeature() +Sketch_1.setHorizontalDistance(SketchAPI_Point(SketchPoint_1).coordinates(), SketchLine_1.endPoint(), "R_I") +Sketch_1.setHorizontalDistance(SketchAPI_Point(SketchPoint_1).coordinates(), SketchLine_1.startPoint(), "R_E") +model.do() + +### Create Revolution +Revolution_1 = model.addRevolution(Part_1_doc, [model.selection("FACE", "Sketch_1/Face-SketchLine_4r-SketchLine_3r-SketchLine_2r-SketchLine_1r")], model.selection("EDGE", "PartSet/OZ"), 180, 0) +Revolution_1.result().setName("Tube") +Revolution_1.result().setTransparency(0.9399999999999999) + +### Create Sketch +Sketch_2 = model.addSketch(Part_1_doc, model.standardPlane("YOZ")) + +### Create SketchArc +SketchArc_1 = Sketch_2.addArc(-80, 0, 10.10993798722564, 4.722461741385164, 10.10993798722563, -4.722461741385561, True) + +### Create SketchProjection +SketchProjection_2 = Sketch_2.addProjection(model.selection("EDGE", "PartSet/OY"), False) +SketchLine_5 = SketchProjection_2.createdFeature() +Sketch_2.setCoincident(SketchArc_1.center(), SketchLine_5.result()) + +### Create SketchProjection +SketchProjection_3 = Sketch_2.addProjection(model.selection("VERTEX", "PartSet/Origin"), False) +SketchPoint_2 = SketchProjection_3.createdFeature() +Sketch_2.setHorizontalDistance(SketchArc_1.center(), SketchAPI_Point(SketchPoint_2).coordinates(), "F_L_1") + +### Create SketchPoint +SketchPoint_3 = Sketch_2.addPoint(10.2336, 0) +SketchPoint_3.setAuxiliary(True) +Sketch_2.setCoincident(SketchPoint_3.coordinates(), SketchArc_1.results()[1]) +Sketch_2.setMiddlePoint(SketchPoint_3.coordinates(), SketchArc_1.results()[1]) +Sketch_2.setCoincident(SketchPoint_3.coordinates(), SketchLine_5.result()) + +### Create SketchProjection +SketchProjection_4 = Sketch_2.addProjection(model.selection("VERTEX", "PartSet/Origin"), False) +SketchPoint_4 = SketchProjection_4.createdFeature() +Sketch_2.setHorizontalDistance(SketchPoint_3.coordinates(), SketchAPI_Point(SketchPoint_4).coordinates(), "F_R_1") + +### Create SketchLine +SketchLine_6 = Sketch_2.addLine(-80, 0, 10.10993798722564, 4.722461741385164) +SketchLine_6.setAuxiliary(True) +Sketch_2.setCoincident(SketchArc_1.center(), SketchLine_6.startPoint()) +Sketch_2.setCoincident(SketchArc_1.startPoint(), SketchLine_6.endPoint()) + +### Create SketchConstraintAngle +Sketch_2.setAngle(SketchLine_5.result(), SketchLine_6.result(), "F_THETA_1", type = "Direct") + +### Create SketchProjection +SketchProjection_5 = Sketch_2.addProjection(model.selection("VERTEX", "PartSet/Origin"), False) +SketchPoint_5 = SketchProjection_5.createdFeature() + +### Create SketchEllipticArc +SketchEllipticArc_1 = Sketch_2.addEllipticArc(-20, 8.956370781951521e-27, -10.21629725685072, 9.783702743149284, 10.10993798723031, 4.722461741243296, 9.440921421952831, 9.565935245237778, False) +[SketchPoint_6, SketchPoint_7, SketchPoint_8, SketchPoint_9, SketchPoint_10, SketchPoint_11, SketchPoint_12, SketchLine_7, SketchLine_8] = SketchEllipticArc_1.construction(center = "aux", firstFocus = "aux", secondFocus = "aux", majorAxisStart = "aux", majorAxisEnd = "aux", minorAxisStart = "aux", minorAxisEnd = "aux", majorAxis = "aux", minorAxis = "aux") +Sketch_2.setCoincident(SketchEllipticArc_1.startPoint(), SketchLine_6.endPoint()) +Sketch_2.setCoincident(SketchAPI_Point(SketchPoint_6).coordinates(), SketchLine_5.result()) +Sketch_2.setTangent(SketchEllipticArc_1.result(), SketchArc_1.results()[1]) + +### Create SketchProjection +SketchProjection_6 = Sketch_2.addProjection(model.selection("VERTEX", "PartSet/Origin"), False) +SketchPoint_13 = SketchProjection_6.createdFeature() +Sketch_2.setHorizontalDistance(SketchAPI_Point(SketchPoint_6).coordinates(), SketchAPI_Point(SketchPoint_13).coordinates(), "F_L_2") + +### Create SketchLine +SketchLine_9 = Sketch_2.addLine(-20, 8.956370781951521e-27, 9.440921421952831, 9.565935245237778) +SketchLine_9.setAuxiliary(True) +Sketch_2.setCoincident(SketchEllipticArc_1.center(), SketchLine_9.startPoint()) +Sketch_2.setCoincident(SketchEllipticArc_1.endPoint(), SketchLine_9.endPoint()) + +### Create SketchConstraintAngle +Sketch_2.setAngle(SketchLine_9.result(), SketchLine_5.result(), "6.*F_THETA_1", type = "Direct") + +### Create SketchConstraintAngle +Sketch_2.setAngle(SketchLine_5.result(), SketchLine_7.result(), 45, type = "Supplementary") + +### Create SketchConstraintMirror +SketchConstraintMirror_1 = Sketch_2.addMirror(SketchLine_5.result(), [SketchEllipticArc_1.result()]) +[SketchEllipticArc_2] = SketchConstraintMirror_1.mirrored() + +### Create SketchLine +SketchLine_10 = Sketch_2.addLine(9.440921421952831, 9.565935245237778, 9.440921421952837, -9.565935245237783) +Sketch_2.setCoincident(SketchEllipticArc_1.endPoint(), SketchLine_10.startPoint()) +Sketch_2.setCoincident(SketchAPI_EllipticArc(SketchEllipticArc_2).endPoint(), SketchLine_10.endPoint()) +model.do() + +### Create Face +Face_1 = model.addFace(Part_1_doc, [model.selection("FACE", "Sketch_2/Face-SketchArc_1_2r-SketchEllipticArc_1f-SketchLine_10f-SketchEllipticArc_2f")]) +Face_1.result().setName("Fissure") + +### Create Group +Group_1 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "Fissure/Modified_Edge&Sketch_2/SketchEllipticArc_1")]) + +### Create Group +Group_2 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "Fissure/Modified_Edge&Sketch_2/SketchArc_1_2")]) + +### Create Group +Group_3 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "Fissure/Modified_Edge&Sketch_2/SketchEllipticArc_2")]) + +### Create Group +Group_4 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "Fissure/Modified_Edge&Sketch_2/SketchLine_10")]) + +### Create Group +Group_5 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "[Tube/Generated_Face&Sketch_1/SketchLine_1][Tube/From_Face]")]) +Group_5.setName("Epaisseur") +Group_5.result().setName("Epaisseur") + +### Create Group +Group_6 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "[Tube/Generated_Face&Sketch_1/SketchLine_4][Tube/From_Face]")]) +Group_6.setName("Hauteur") +Group_6.result().setName("Hauteur") + +### Create Group +Group_7 = model.addGroup(Part_1_doc, "Edges", [model.selection("EDGE", "[Tube/Generated_Face&Sketch_1/SketchLine_4][Tube/Generated_Face&Sketch_1/SketchLine_1]")]) +Group_7.setName("Peripherie") +Group_7.result().setName("Peripherie") + +### Create Export +ficxao = os.path.join(gmu.pathBloc, "materielCasTests", "{}Fiss.xao".format(NOM_OBJET)) +text = ".. Exportation de la géométrie de la fissure dans le fichier '{}'".format(ficxao) +logging.info(text) +_ = model.exportToXAO(Part_1_doc, ficxao, model.selection("FACE", "Fissure"), 'XAO') + +model.end() + +### +### SHAPERSTUDY component +### + +model.publishToShaperStudy() +import SHAPERSTUDY +l_aux = SHAPERSTUDY.shape(model.featureStringId(Revolution_1)) +objet = l_aux[0] +l_groups = l_aux[1:] + +### +### SMESH component +### + +import SMESH, SALOMEDS +from salome.smesh import smeshBuilder + +smesh = smeshBuilder.New() +from salome.StdMeshers import StdMeshersBuilder +Maillage_tube = smesh.Mesh(objet) +smesh.SetName(Maillage_tube, NOM_OBJET) + +for groupe in l_groups: + groupe_nom = groupe.GetName() + if ( groupe_nom[:1] == "E" ): + group_e = groupe + elif ( groupe_nom[:1] == "H" ): + group_h = groupe + elif ( groupe_nom[:1] == "P" ): + group_p = groupe + _ = Maillage_tube.GroupOnGeom(groupe,groupe_nom,SMESH.EDGE) + +Regular_1D = Maillage_tube.Segment() +Nb_Segments_1 = Regular_1D.NumberOfSegments(NB_S_P) +Nb_Segments_1.SetDistrType( 0 ) +Quadrangle_2D = Maillage_tube.Quadrangle(algo=smeshBuilder.QUADRANGLE) +Hexa_3D = Maillage_tube.Hexahedron(algo=smeshBuilder.Hexa) + +Regular_1D_1 = Maillage_tube.Segment(geom=group_e) +Number_of_Segments_1 = Regular_1D_1.NumberOfSegments(NB_S_E) +Propagation_of_1D_Hyp = Regular_1D_1.Propagation() + +Regular_1D_2 = Maillage_tube.Segment(geom=group_h) +Number_of_Segments_2 = Regular_1D_2.NumberOfSegments(NB_S_H) +Propagation_of_1D_Hyp_1 = Regular_1D_2.Propagation() + +is_done = Maillage_tube.Compute() +text = "Maillage_tube.Compute" +if is_done: + logging.info(text+" OK") +else: + text = "Erreur au calcul du maillage.\n" + text + logging.info(text) + raise Exception(text) + +ficmed = os.path.join(gmu.pathBloc, "materielCasTests","{}.med".format(NOM_OBJET)) +text = ".. Archivage du maillage dans le fichier '{}'".format(ficmed) +logging.info(text) +Maillage_tube.ExportMED(ficmed) + +## set object names +smesh.SetName(Maillage_tube.GetMesh(), 'Maillage_tube') +smesh.SetName(Regular_1D.GetAlgorithm(), 'Regular_1D') +smesh.SetName(Nb_Segments_1, 'Nb. Segments_1') +smesh.SetName(Quadrangle_2D.GetAlgorithm(), 'Quadrangle_2D') +smesh.SetName(Hexa_3D.GetAlgorithm(), 'Hexa_3D') + +if salome.sg.hasDesktop(): + salome.sg.updateObjBrowser() From 9b4ce9dbf227329760a2e1fdc4133650e93552db Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 27 Jan 2021 16:38:18 +0100 Subject: [PATCH 33/57] =?UTF-8?q?cosm=C3=A9tique?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/gmu/sortEdges.py | 17 +++++++---------- src/Tools/blocFissure/gmu/sortFaces.py | 17 +++++++---------- .../blocFissure/materielCasTests/cubeAngle.py | 2 -- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/Tools/blocFissure/gmu/sortEdges.py b/src/Tools/blocFissure/gmu/sortEdges.py index 9fc35523d..f43dbf090 100644 --- a/src/Tools/blocFissure/gmu/sortEdges.py +++ b/src/Tools/blocFissure/gmu/sortEdges.py @@ -18,20 +18,17 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""tri par longueur d'edges""" + import logging from .geomsmesh import geompy -# ----------------------------------------------------------------------------- -# --- tri par longueur d'edges - def sortEdges(edgesToSort): - """ - tri des edges par longueur - """ + """tri des edges par longueur""" logging.info('start') - lenEdges = [(geompy.BasicProperties(edge)[0], i, edge) for i, edge in enumerate(edgesToSort)] - lenEdges.sort() - edgesSorted = [edge for length, i, edge in lenEdges] - return edgesSorted, lenEdges[0][0], lenEdges[-1][0] + l_length = [(geompy.BasicProperties(edge)[0], i, edge) for i, edge in enumerate(edgesToSort)] + l_length.sort() + edgesSorted = [edge for length, i, edge in l_length] + return edgesSorted, l_length[0][0], l_length[-1][0] diff --git a/src/Tools/blocFissure/gmu/sortFaces.py b/src/Tools/blocFissure/gmu/sortFaces.py index 411ecf0a5..342a95039 100644 --- a/src/Tools/blocFissure/gmu/sortFaces.py +++ b/src/Tools/blocFissure/gmu/sortFaces.py @@ -18,20 +18,17 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""tri par surface de faces""" + import logging from .geomsmesh import geompy -# ----------------------------------------------------------------------------- -# --- tri par surface de faces - def sortFaces(facesToSort): - """ - tri des faces par surface - """ + """tri des faces par surface""" logging.info('start') - surFaces = [(geompy.BasicProperties(face)[1], i, face) for i, face in enumerate(facesToSort)] - surFaces.sort() - facesSorted = [face for surf, i, face in surFaces] - return facesSorted, surFaces[0][0], surFaces[-1][0] + l_surfaces = [(geompy.BasicProperties(face)[1], i, face) for i, face in enumerate(facesToSort)] + l_surfaces.sort() + facesSorted = [face for surf, i, face in l_surfaces] + return facesSorted, l_surfaces[0][0], l_surfaces[-1][0] diff --git a/src/Tools/blocFissure/materielCasTests/cubeAngle.py b/src/Tools/blocFissure/materielCasTests/cubeAngle.py index 9b7556196..acecb5fb4 100644 --- a/src/Tools/blocFissure/materielCasTests/cubeAngle.py +++ b/src/Tools/blocFissure/materielCasTests/cubeAngle.py @@ -25,8 +25,6 @@ import salome salome.salome_init() -import salome_notebook - import os from blocFissure import gmu From 37d2759a1c717ddec19844ecf6367136fcf2b3e0 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Wed, 27 Jan 2021 18:04:32 +0100 Subject: [PATCH 34/57] Normes python --- src/Tools/blocFissure/CasTests/cubeAngle.py | 38 ++++++++--------- src/Tools/blocFissure/CasTests/cubeAngle2.py | 8 ++-- src/Tools/blocFissure/CasTests/cubeCoin.py | 3 +- src/Tools/blocFissure/CasTests/cubeMilieu.py | 3 +- .../blocFissure/CasTests/cubeTransverse.py | 3 +- src/Tools/blocFissure/CasTests/cylindre.py | 23 ++++------- src/Tools/blocFissure/CasTests/cylindre_2.py | 15 +++---- src/Tools/blocFissure/CasTests/disquePerce.py | 3 +- src/Tools/blocFissure/CasTests/ellipse_1.py | 41 ++++++++++--------- src/Tools/blocFissure/CasTests/ellipse_2.py | 30 +++++++------- .../blocFissure/CasTests/eprouvetteCourbe.py | 39 +++++++++--------- src/Tools/blocFissure/CasTests/tube.py | 39 +++++++++--------- 12 files changed, 117 insertions(+), 128 deletions(-) diff --git a/src/Tools/blocFissure/CasTests/cubeAngle.py b/src/Tools/blocFissure/CasTests/cubeAngle.py index 32f701b01..c3d3db7e1 100644 --- a/src/Tools/blocFissure/CasTests/cubeAngle.py +++ b/src/Tools/blocFissure/CasTests/cubeAngle.py @@ -18,27 +18,21 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -import os -from blocFissure import gmu -from blocFissure.gmu.geomsmesh import geompy, smesh +"""problème de fissure plane coupant 2 faces (angle), débouches normaux, objet plan""" -import math -import GEOM -import SALOMEDS -import SMESH -#import StdMeshers -#import GHS3DPlugin -#import NETGENPlugin +import os import logging +from blocFissure import gmu +from blocFissure.gmu.geomsmesh import geompy, smesh from blocFissure.gmu.fissureGenerique import fissureGenerique - -from blocFissure.gmu.triedreBase import triedreBase from blocFissure.gmu.genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut from blocFissure.gmu.creeZoneDefautDansObjetSain import creeZoneDefautDansObjetSain from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale -O, OX, OY, OZ = triedreBase() +import GEOM +import SALOMEDS +import SMESH class cubeAngle(fissureGenerique): """problème de fissure plane coupant 2 faces (angle), débouches normaux, objet plan""" @@ -47,9 +41,10 @@ class cubeAngle(fissureGenerique): # --------------------------------------------------------------------------- def genereMaillageSain(self, geometriesSaines, meshParams): - logging.info("genereMaillageSain pour '{}'".format(self.nomCas)) + texte = "genereMaillageSain pour '{}'".format(self.nomCas) + logging.info(texte) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngle.med")) + ([objetSain], _) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "CubeAngle.med")) smesh.SetName(objetSain.GetMesh(), "{}_objetSain".format(self.nomProbleme)) return [objetSain, True] # True : maillage hexa @@ -61,14 +56,16 @@ class cubeAngle(fissureGenerique): lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage) rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure """ - logging.info("setParamShapeFissure pour '{}'".format(self.nomCas)) + texte = "genereMaillageSain pour '{}'".format(self.nomCas) + logging.info(texte) self.shapeFissureParams = dict(lgInfluence = 20, rayonPipe = 10) # --------------------------------------------------------------------------- def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams): """Importe la géométrie de la fissure""" - logging.info("genereShapeFissure pour '{}'".format(self.nomCas)) + texte = "genereShapeFissure pour '{}'".format(self.nomCas) + logging.info(texte) lgInfluence = shapeFissureParams['lgInfluence'] @@ -87,7 +84,8 @@ class cubeAngle(fissureGenerique): # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - logging.info("setParamMaillageFissure pour '{}'".format(self.nomCas)) + texte = "setParamMaillageFissure pour '{}'".format(self.nomCas) + logging.info(texte) self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, @@ -104,7 +102,8 @@ class cubeAngle(fissureGenerique): def genereMaillageFissure(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step): - logging.info("genereMaillageFissure pour '{}'".format(self.nomCas)) + texte = "genereMaillageFissure pour '{}'".format(self.nomCas) + logging.info(texte) maillageFissure = construitFissureGenerale(maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step) @@ -122,4 +121,3 @@ class cubeAngle(fissureGenerique): Entity_Quad_Pyramid = 172, \ Entity_Quad_Penta = 64 \ ) - diff --git a/src/Tools/blocFissure/CasTests/cubeAngle2.py b/src/Tools/blocFissure/CasTests/cubeAngle2.py index b7fa02f0e..a1c78684a 100644 --- a/src/Tools/blocFissure/CasTests/cubeAngle2.py +++ b/src/Tools/blocFissure/CasTests/cubeAngle2.py @@ -17,6 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""problème de fissure plane coupant 2 faces (angle)""" import os @@ -25,15 +26,15 @@ from .cubeAngle import cubeAngle class cubeAngle2(cubeAngle): """problème de fissure plane coupant 2 faces (angle), débouches normaux, objet plan - detection d'un probleme de tolerance sur les edges de jonction pipe et face fissure externe + detection d'un probleme de tolerance sur les edges de jonction pipe et face fissure externe """ nomProbleme = "cubeAngle2" # --------------------------------------------------------------------------- def setParamShapeFissure(self): - """ - paramètres de la fissure pour méthode construitFissureGenerale + """paramètres de la fissure pour méthode construitFissureGenerale + lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage) rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure """ @@ -61,4 +62,3 @@ class cubeAngle2(cubeAngle): Entity_Quad_Pyramid = 620, \ Entity_Quad_Penta = 512 \ ) - diff --git a/src/Tools/blocFissure/CasTests/cubeCoin.py b/src/Tools/blocFissure/CasTests/cubeCoin.py index 821145c33..688e351c4 100644 --- a/src/Tools/blocFissure/CasTests/cubeCoin.py +++ b/src/Tools/blocFissure/CasTests/cubeCoin.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""problème de fissure plane coupant le cube dans un coin""" + import os from blocFissure import gmu @@ -45,4 +47,3 @@ referencesMaillageFissure = dict( \ Entity_Quad_Pyramid = 460, \ Entity_Quad_Penta = 80 \ ) - diff --git a/src/Tools/blocFissure/CasTests/cubeMilieu.py b/src/Tools/blocFissure/CasTests/cubeMilieu.py index b276d6b30..06c6f395c 100644 --- a/src/Tools/blocFissure/CasTests/cubeMilieu.py +++ b/src/Tools/blocFissure/CasTests/cubeMilieu.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""problème de fissure plane coupant le cube au milieu""" + import os from blocFissure import gmu @@ -45,4 +47,3 @@ referencesMaillageFissure = dict( \ Entity_Quad_Pyramid = 990, \ Entity_Quad_Penta = 230 \ ) - diff --git a/src/Tools/blocFissure/CasTests/cubeTransverse.py b/src/Tools/blocFissure/CasTests/cubeTransverse.py index 8ddb5bee6..2730591dd 100644 --- a/src/Tools/blocFissure/CasTests/cubeTransverse.py +++ b/src/Tools/blocFissure/CasTests/cubeTransverse.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""problème de fissure plane coupant le cube au milieu""" + import os from blocFissure import gmu @@ -45,4 +47,3 @@ referencesMaillageFissure = dict( \ Entity_Quad_Pyramid = 780, \ Entity_Quad_Penta = 200 \ ) - diff --git a/src/Tools/blocFissure/CasTests/cylindre.py b/src/Tools/blocFissure/CasTests/cylindre.py index d3f6dfb70..adb8c2e38 100644 --- a/src/Tools/blocFissure/CasTests/cylindre.py +++ b/src/Tools/blocFissure/CasTests/cylindre.py @@ -18,27 +18,21 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -import os -from blocFissure import gmu -from blocFissure.gmu.geomsmesh import geompy, smesh +"""problème de fissure plane sur cylindre, grand fond de fissure en arc de cercle""" -import math -import GEOM -import SALOMEDS -import SMESH -#import StdMeshers -#import GHS3DPlugin -#import NETGENPlugin +import os import logging +from blocFissure import gmu +from blocFissure.gmu.geomsmesh import geompy, smesh from blocFissure.gmu.fissureGenerique import fissureGenerique - -from blocFissure.gmu.triedreBase import triedreBase from blocFissure.gmu.genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut from blocFissure.gmu.creeZoneDefautDansObjetSain import creeZoneDefautDansObjetSain from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale -O, OX, OY, OZ = triedreBase() +import GEOM +import SALOMEDS +import SMESH class cylindre(fissureGenerique): """problème de fissure plane sur cylindre, grand fond de fissure en arc de cercle""" @@ -53,7 +47,7 @@ class cylindre(fissureGenerique): """ logging.info("genereMaillageSain %s", self.nomCas) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "CylindreSain.med")) + ([objetSain], _) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "CylindreSain.med")) smesh.SetName(objetSain.GetMesh(), 'objetSain') return [objetSain, True] # True : maillage hexa @@ -122,4 +116,3 @@ class cylindre(fissureGenerique): Entity_Quad_Pyramid = 1110, \ Entity_Quad_Penta = 336 \ ) - diff --git a/src/Tools/blocFissure/CasTests/cylindre_2.py b/src/Tools/blocFissure/CasTests/cylindre_2.py index 9b94dc3f2..6b17ff383 100644 --- a/src/Tools/blocFissure/CasTests/cylindre_2.py +++ b/src/Tools/blocFissure/CasTests/cylindre_2.py @@ -18,25 +18,21 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""problème de fissure plane sur cylindre hexa, fond de fissure complexe : polyline""" + import os +import logging + from blocFissure import gmu from blocFissure.gmu.geomsmesh import geompy, smesh +from blocFissure.gmu.genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut -import math import GEOM import SALOMEDS import SMESH -import logging from .cylindre import cylindre -from blocFissure.gmu.triedreBase import triedreBase -from blocFissure.gmu.genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut -from blocFissure.gmu.creeZoneDefautDansObjetSain import creeZoneDefautDansObjetSain -from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale - -O, OX, OY, OZ = triedreBase() - class cylindre_2(cylindre): """problème de fissure plane sur cylindre hexa, fond de fissure complexe : polyline""" @@ -72,4 +68,3 @@ class cylindre_2(cylindre): Entity_Quad_Pyramid = 1158, \ Entity_Quad_Penta = 384 \ ) - diff --git a/src/Tools/blocFissure/CasTests/disquePerce.py b/src/Tools/blocFissure/CasTests/disquePerce.py index 34211ce29..1c3749155 100644 --- a/src/Tools/blocFissure/CasTests/disquePerce.py +++ b/src/Tools/blocFissure/CasTests/disquePerce.py @@ -18,6 +18,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""disque percé""" + import os from blocFissure import gmu @@ -45,4 +47,3 @@ referencesMaillageFissure = dict ( \ Entity_Quad_Pyramid = 172, \ Entity_Quad_Penta = 64 \ ) - diff --git a/src/Tools/blocFissure/CasTests/ellipse_1.py b/src/Tools/blocFissure/CasTests/ellipse_1.py index 9212f0a7f..273ea859f 100644 --- a/src/Tools/blocFissure/CasTests/ellipse_1.py +++ b/src/Tools/blocFissure/CasTests/ellipse_1.py @@ -18,27 +18,21 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -import os -from blocFissure import gmu -from blocFissure.gmu.geomsmesh import geompy, smesh +"""problème de fissure non plane, débouchante non normale""" -import math -import GEOM -import SALOMEDS -import SMESH -#import StdMeshers -#import GHS3DPlugin -#import NETGENPlugin +import os import logging +from blocFissure import gmu +from blocFissure.gmu.geomsmesh import geompy, smesh from blocFissure.gmu.fissureGenerique import fissureGenerique - -from blocFissure.gmu.triedreBase import triedreBase from blocFissure.gmu.genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut from blocFissure.gmu.creeZoneDefautDansObjetSain import creeZoneDefautDansObjetSain from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale -O, OX, OY, OZ = triedreBase() +import GEOM +import SALOMEDS +import SMESH class ellipse_1(fissureGenerique): """problème de fissure non plane, débouchante non normale""" @@ -53,10 +47,11 @@ class ellipse_1(fissureGenerique): # --------------------------------------------------------------------------- def genereMaillageSain(self, geometriesSaines, meshParams): - logging.info("genereMaillageSain %s", self.nomCas) + texte = "genereMaillageSain pour '{}'".format(self.nomCas) + logging.info(texte) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "boiteSaine.med")) - smesh.SetName(objetSain.GetMesh(), 'objetSain') + ([objetSain], _) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "boiteSaine.med")) + smesh.SetName(objetSain.GetMesh(), "{}_objetSain".format(self.nomProbleme)) return [objetSain, True] # True : maillage hexa @@ -69,13 +64,16 @@ class ellipse_1(fissureGenerique): convexe : optionnel, True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne pointIn_x : optionnel, coordonnée x d'un point dans le solide sain (pour orienter la face) """ - logging.info("setParamShapeFissure %s", self.nomCas) + texte = "genereMaillageSain pour '{}'".format(self.nomCas) + logging.info(texte) self.shapeFissureParams = dict(lgInfluence = 50, rayonPipe = 20) # --------------------------------------------------------------------------- def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams): - logging.info("genereShapeFissure %s", self.nomCas) + """Importe la géométrie de la fissure""" + texte = "genereShapeFissure pour '{}'".format(self.nomCas) + logging.info(texte) lgInfluence = shapeFissureParams['lgInfluence'] @@ -85,14 +83,16 @@ class ellipse_1(fissureGenerique): geompy.addToStudy( shellFiss, 'shellFiss' ) geompy.addToStudyInFather( shellFiss, fondFiss, 'fondFiss' ) - coordsNoeudsFissure = genereMeshCalculZoneDefaut(shellFiss, 5 ,25) centre = None + return [shellFiss, centre, lgInfluence, coordsNoeudsFissure, fondFiss] # --------------------------------------------------------------------------- def setParamMaillageFissure(self): + texte = "setParamMaillageFissure pour '{}'".format(self.nomCas) + logging.info(texte) self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, @@ -109,6 +109,8 @@ class ellipse_1(fissureGenerique): def genereMaillageFissure(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step): + texte = "genereMaillageFissure pour '{}'".format(self.nomCas) + logging.info(texte) maillageFissure = construitFissureGenerale(maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step) @@ -126,4 +128,3 @@ class ellipse_1(fissureGenerique): Entity_Quad_Pyramid = 199, \ Entity_Quad_Penta = 120 \ ) - diff --git a/src/Tools/blocFissure/CasTests/ellipse_2.py b/src/Tools/blocFissure/CasTests/ellipse_2.py index 557a8d678..9fbef9292 100644 --- a/src/Tools/blocFissure/CasTests/ellipse_2.py +++ b/src/Tools/blocFissure/CasTests/ellipse_2.py @@ -18,27 +18,23 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -import os -from blocFissure import gmu -from blocFissure.gmu.geomsmesh import geompy, smesh +"""problème de fissure non plane, débouchante non normale""" -import math -import GEOM -import SALOMEDS -import SMESH -#import StdMeshers -#import GHS3DPlugin -#import NETGENPlugin +import os import logging -from .ellipse_1 import ellipse_1 - -from blocFissure.gmu.triedreBase import triedreBase +from blocFissure import gmu +from blocFissure.gmu.geomsmesh import geompy, smesh +from blocFissure.gmu.fissureGenerique import fissureGenerique from blocFissure.gmu.genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut from blocFissure.gmu.creeZoneDefautDansObjetSain import creeZoneDefautDansObjetSain from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale -O, OX, OY, OZ = triedreBase() +import GEOM +import SALOMEDS +import SMESH + +from .ellipse_1 import ellipse_1 class ellipse_2(ellipse_1): """problème de fissure non plane, débouchante non normale""" @@ -47,7 +43,9 @@ class ellipse_2(ellipse_1): # --------------------------------------------------------------------------- def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams): - logging.info("genereShapeFissure %s", self.nomCas) + """Importe la géométrie de la fissure""" + texte = "genereShapeFissure pour '{}'".format(self.nomCas) + logging.info(texte) lgInfluence = shapeFissureParams['lgInfluence'] @@ -57,10 +55,10 @@ class ellipse_2(ellipse_1): geompy.addToStudy( shellFiss, 'shellFiss' ) geompy.addToStudyInFather( shellFiss, fondFiss, 'fondFiss' ) - coordsNoeudsFissure = genereMeshCalculZoneDefaut(shellFiss, 5 ,25) centre = None + return [shellFiss, centre, lgInfluence, coordsNoeudsFissure, fondFiss] # --------------------------------------------------------------------------- diff --git a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py index 7921c66a1..4c45e54ff 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py @@ -18,27 +18,21 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -import os -from blocFissure import gmu -from blocFissure.gmu.geomsmesh import geompy, smesh +"""problème de fissure plane coupant 3 faces (éprouvette), faces au débouché non planes, incidence presque normale""" -import math -import GEOM -import SALOMEDS -import SMESH -#import StdMeshers -#import GHS3DPlugin -#import NETGENPlugin +import os import logging +from blocFissure import gmu +from blocFissure.gmu.geomsmesh import geompy, smesh from blocFissure.gmu.fissureGenerique import fissureGenerique - -from blocFissure.gmu.triedreBase import triedreBase from blocFissure.gmu.genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut from blocFissure.gmu.creeZoneDefautDansObjetSain import creeZoneDefautDansObjetSain from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale -O, OX, OY, OZ = triedreBase() +import GEOM +import SALOMEDS +import SMESH class eprouvetteCourbe(fissureGenerique): """problème de fissure plane coupant 3 faces (éprouvette), faces au débouché non planes, incidence presque normale""" @@ -47,9 +41,10 @@ class eprouvetteCourbe(fissureGenerique): # --------------------------------------------------------------------------- def genereMaillageSain(self, geometriesSaines, meshParams): - logging.info("genereMaillageSain %s", self.nomCas) + texte = "genereMaillageSain pour '{}'".format(self.nomCas) + logging.info(texte) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteCourbe.med")) + ([objetSain], _) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "EprouvetteCourbe.med")) smesh.SetName(objetSain.GetMesh(), 'objetSain') return [objetSain, True] # True : maillage hexa @@ -63,13 +58,16 @@ class eprouvetteCourbe(fissureGenerique): convexe : optionnel True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne pointIn_x : optionnel coordonnée x d'un point dans le solide sain (pour orienter la face) """ - logging.info("setParamShapeFissure %s", self.nomCas) + texte = "genereMaillageSain pour '{}'".format(self.nomCas) + logging.info(texte) self.shapeFissureParams = dict(lgInfluence = 30, rayonPipe = 10) # --------------------------------------------------------------------------- def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams): - logging.info("genereShapeFissure %s", self.nomCas) + """Importe la géométrie de la fissure""" + texte = "genereShapeFissure pour '{}'".format(self.nomCas) + logging.info(texte) lgInfluence = shapeFissureParams['lgInfluence'] @@ -79,14 +77,16 @@ class eprouvetteCourbe(fissureGenerique): geompy.addToStudy( shellFiss, 'shellFiss' ) geompy.addToStudyInFather( shellFiss, fondFiss, 'fondFiss' ) - coordsNoeudsFissure = genereMeshCalculZoneDefaut(shellFiss, 5 ,10) centre = None + return [shellFiss, centre, lgInfluence, coordsNoeudsFissure, fondFiss] # --------------------------------------------------------------------------- def setParamMaillageFissure(self): + texte = "setParamMaillageFissure pour '{}'".format(self.nomCas) + logging.info(texte) self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, @@ -103,6 +103,8 @@ class eprouvetteCourbe(fissureGenerique): def genereMaillageFissure(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step): + texte = "genereMaillageFissure pour '{}'".format(self.nomCas) + logging.info(texte) maillageFissure = construitFissureGenerale(maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step) @@ -120,4 +122,3 @@ class eprouvetteCourbe(fissureGenerique): Entity_Quad_Pyramid = 578, \ Entity_Quad_Penta = 128 \ ) - diff --git a/src/Tools/blocFissure/CasTests/tube.py b/src/Tools/blocFissure/CasTests/tube.py index cd8a1cb5e..69e89719a 100644 --- a/src/Tools/blocFissure/CasTests/tube.py +++ b/src/Tools/blocFissure/CasTests/tube.py @@ -18,26 +18,22 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -import os -from blocFissure import gmu -from blocFissure.gmu.geomsmesh import geompy, smesh +"""problème de fissure plane dans un tube""" -import math -import GEOM -import SALOMEDS -import SMESH -#import StdMeshers -#import GHS3DPlugin -#import NETGENPlugin +import os import logging +from blocFissure import gmu +from blocFissure.gmu.geomsmesh import geompy, smesh from blocFissure.gmu.fissureGenerique import fissureGenerique - -from blocFissure.gmu.triedreBase import triedreBase from blocFissure.gmu.genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut from blocFissure.gmu.creeZoneDefautDansObjetSain import creeZoneDefautDansObjetSain from blocFissure.gmu.construitFissureGenerale import construitFissureGenerale +import GEOM +import SALOMEDS +import SMESH + class tube(fissureGenerique): """problème de fissure plane dans un tube""" @@ -45,9 +41,10 @@ class tube(fissureGenerique): # --------------------------------------------------------------------------- def genereMaillageSain(self, geometriesSaines, meshParams): - logging.info("genereMaillageSain pour '{}'".format(self.nomCas)) + texte = "genereMaillageSain pour '{}'".format(self.nomCas) + logging.info(texte) - ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "Tube.med")) + ([objetSain], _) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests", "Tube.med")) smesh.SetName(objetSain.GetMesh(), "{}_objetSain".format(self.nomProbleme)) return [objetSain, True] # True : maillage hexa @@ -59,18 +56,19 @@ class tube(fissureGenerique): lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage) rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure """ - logging.info("setParamShapeFissure pour '{}'".format(self.nomCas)) + texte = "genereMaillageSain pour '{}'".format(self.nomCas) + logging.info(texte) self.shapeFissureParams = dict(lgInfluence = 1., rayonPipe = 0.05) # --------------------------------------------------------------------------- def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams): """Importe la géométrie de la fissure""" - logging.info("genereShapeFissure pour '{}'".format(self.nomCas)) + texte = "genereShapeFissure pour '{}'".format(self.nomCas) + logging.info(texte) lgInfluence = shapeFissureParams['lgInfluence'] - (_, shellFiss, _, l_groups, _) = geompy.ImportXAO(os.path.join(gmu.pathBloc, "materielCasTests", "TubeFiss.xao")) l_aux = list() for group in l_groups: @@ -89,7 +87,8 @@ class tube(fissureGenerique): # --------------------------------------------------------------------------- def setParamMaillageFissure(self): - logging.info("setParamMaillageFissure pour '{}'".format(self.nomCas)) + texte = "setParamMaillageFissure pour '{}'".format(self.nomCas) + logging.info(texte) self.maillageFissureParams = dict(nomRep = os.curdir, nomFicSain = self.nomCas, nomFicFissure = 'fissure_' + self.nomCas, @@ -106,7 +105,8 @@ class tube(fissureGenerique): def genereMaillageFissure(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step): - logging.info("genereMaillageFissure pour '{}'".format(self.nomCas)) + texte = "genereMaillageFissure pour '{}'".format(self.nomCas) + logging.info(texte) maillageFissure = construitFissureGenerale(maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams, elementsDefaut, step) @@ -124,4 +124,3 @@ class tube(fissureGenerique): Entity_Quad_Pyramid = 172, \ Entity_Quad_Penta = 64 \ ) - From bb1db63155760ac9727a664331145cb22dd30661 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Thu, 28 Jan 2021 10:35:48 +0100 Subject: [PATCH 35/57] =?UTF-8?q?Mise=20=C3=A0=20jour=20documentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tools/blocFissure/doc/gui.rst | 53 ++++++++++-------- .../blocFissure/doc/images/BF_GUI_capture.png | Bin 44903 -> 68034 bytes src/Tools/blocFissure/doc/pipes.rst | 3 +- src/Tools/blocFissure/doc/principles.rst | 4 +- src/Tools/blocFissure/doc/scripts.rst | 13 +++-- src/Tools/blocFissure/doc/testcases.rst | 6 +- 6 files changed, 47 insertions(+), 32 deletions(-) diff --git a/src/Tools/blocFissure/doc/gui.rst b/src/Tools/blocFissure/doc/gui.rst index af0815088..4d633588e 100644 --- a/src/Tools/blocFissure/doc/gui.rst +++ b/src/Tools/blocFissure/doc/gui.rst @@ -6,23 +6,30 @@ With GUI To make the use of « Bloc Fissure » easier, a Graphical User Interface (GUI) was developed. Inputs are similar to those of :ref:`script mode