From a4dc6572e534f22848d62e9a739877ea25b9a050 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Thu, 8 Apr 2021 16:16:13 +0200 Subject: [PATCH] =?utf8?q?addtostudy=20syst=C3=A9matique?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../blocFissure/gmu/identifieEdgesPeau.py | 9 ++- .../blocFissure/gmu/identifieEdgesPeau_a.py | 11 +-- .../blocFissure/gmu/identifieEdgesPeau_b.py | 11 +-- .../gmu/identifieElementsGeometriquesPeau.py | 3 +- .../blocFissure/gmu/mailleFacesFissure.py | 3 +- src/Tools/blocFissure/gmu/mailleFacesPeau.py | 80 +++++++++++-------- 6 files changed, 67 insertions(+), 50 deletions(-) diff --git a/src/Tools/blocFissure/gmu/identifieEdgesPeau.py b/src/Tools/blocFissure/gmu/identifieEdgesPeau.py index 27b316ce2..ca1972af5 100644 --- a/src/Tools/blocFissure/gmu/identifieEdgesPeau.py +++ b/src/Tools/blocFissure/gmu/identifieEdgesPeau.py @@ -26,7 +26,8 @@ from .identifieEdgesPeau_b import identifieEdgesPeau_b from .identifieEdgesPeau_c import identifieEdgesPeau_c def identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSorted, \ - edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees): + edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees, \ + nro_cas=None): """Identification précise des edges et disques des faces de peau selon index extremité fissure""" logging.info('start') @@ -38,7 +39,8 @@ def identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSo if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau edgesCircPeau, verticesCircPeau = identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauFondIn, \ - endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesListees) + endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesListees, \ + nro_cas) else: edgesCircPeau = list() verticesCircPeau = list() @@ -47,7 +49,8 @@ def identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSo # --- edges de bord de la face de peau groupEdgesBordPeau, bordsVifs = identifieEdgesPeau_b(facePeau, edgesListees, \ - fillingFaceExterne, aretesVivesC, aretesVivesCoupees) + fillingFaceExterne, aretesVivesC, aretesVivesCoupees, \ + nro_cas) # --- edges de la face de peau partagées avec la face de fissure diff --git a/src/Tools/blocFissure/gmu/identifieEdgesPeau_a.py b/src/Tools/blocFissure/gmu/identifieEdgesPeau_a.py index fc872a45a..1f10ceb5e 100644 --- a/src/Tools/blocFissure/gmu/identifieEdgesPeau_a.py +++ b/src/Tools/blocFissure/gmu/identifieEdgesPeau_a.py @@ -28,7 +28,8 @@ from .geomsmesh import geomPublish from .geomsmesh import geomPublishInFather def identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauFondIn, \ - endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesListees): + endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesListees, \ + nro_cas=None): """Identification précise des edges et disques des faces de peau selon index extremité fissure""" logging.info('start') @@ -48,13 +49,13 @@ def identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauF nameEdge = "edgeRadFacePipePeau{}".format(i_aux) facesPipePeau[i_aux] = face endsEdgeFond[i_aux] = sharedVertices[0] - geomPublish(initLog.debug, face, nameFace) - geomPublish(initLog.debug, sharedVertices[0], nameVert) + geomPublish(initLog.debug, face, nameFace, nro_cas) + geomPublish(initLog.debug, sharedVertices[0], nameVert, nro_cas) edgesFace = geompy.ExtractShapes(face, geompy.ShapeType["EDGE"], True) for edge in edgesFace: if geompy.MinDistance(edge, sharedVertices[0]) < 1e-3: edgeRadFacePipePeau[i_aux] = edge - geomPublish(initLog.debug, edge, nameEdge) + geomPublish(initLog.debug, edge, nameEdge, nro_cas) break # --- edges circulaires de la face de peau et points de jonction de la face externe de fissure @@ -67,7 +68,7 @@ def identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauF geompy.UnionList(grpEdgesCirc, edges) edgesCircPeau[i_aux] = grpEdgesCirc name = "edgeCirc{}".format(i_aux) - geomPublishInFather(initLog.debug, facePeau, grpEdgesCirc, name) + geomPublishInFather(initLog.always, facePeau, grpEdgesCirc, name) edgesListees = edgesListees + edges vertices = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["VERTEX"]) grpVertCircPeau = geompy.CreateGroup(facePeau, geompy.ShapeType["VERTEX"]) diff --git a/src/Tools/blocFissure/gmu/identifieEdgesPeau_b.py b/src/Tools/blocFissure/gmu/identifieEdgesPeau_b.py index a166a7517..df79b8b1e 100644 --- a/src/Tools/blocFissure/gmu/identifieEdgesPeau_b.py +++ b/src/Tools/blocFissure/gmu/identifieEdgesPeau_b.py @@ -27,15 +27,16 @@ from .geomsmesh import geompy from .geomsmesh import geomPublishInFather def identifieEdgesPeau_b(facePeau, edgesListees, \ - fillingFaceExterne, aretesVivesC, aretesVivesCoupees): + fillingFaceExterne, aretesVivesC, aretesVivesCoupees, \ + nro_cas=None): """edges de bord de la face de peau""" logging.info('start') edgesFilling = geompy.ExtractShapes(fillingFaceExterne, geompy.ShapeType["EDGE"], False) edgesBords = list() - for i, edge in enumerate(edgesFilling): + for i_aux, edge in enumerate(edgesFilling): edgepeau = geompy.GetInPlace(facePeau, edge) - name = "edgepeau%d"%i + name = "edgepeau{}".format(i_aux) geomPublishInFather(initLog.debug, facePeau,edgepeau, name) logging.debug("edgepeau %s", geompy.ShapeInfo(edgepeau)) if geompy.ShapeInfo(edgepeau)['EDGE'] > 1: @@ -74,7 +75,7 @@ def identifieEdgesPeau_b(facePeau, edgesListees, \ geompy.AddObject(bordsVifs, geompy.GetSubShapeID(facePeau, edge)) if bordsVifs is not None: - geomPublishInFather(initLog.debug, facePeau, bordsVifs, "bordsVifs") + geomPublishInFather(initLog.always, facePeau, bordsVifs, "bordsVifs") groupEdgesBordPeau = geompy.CutGroups(groupEdgesBordPeau, bordsVifs) grptmp = None if len(aretesVivesCoupees) > 0: @@ -89,6 +90,6 @@ def identifieEdgesPeau_b(facePeau, edgesListees, \ aretesVivesCoupees += edv logging.debug("aretesVivesCoupees %s",aretesVivesCoupees) - geomPublishInFather(initLog.debug, facePeau, groupEdgesBordPeau , "EdgesBords") + geomPublishInFather(initLog.always, facePeau, groupEdgesBordPeau , "EdgesBords") return groupEdgesBordPeau, bordsVifs diff --git a/src/Tools/blocFissure/gmu/identifieElementsGeometriquesPeau.py b/src/Tools/blocFissure/gmu/identifieElementsGeometriquesPeau.py index e507fa3ff..e585993b7 100644 --- a/src/Tools/blocFissure/gmu/identifieElementsGeometriquesPeau.py +++ b/src/Tools/blocFissure/gmu/identifieElementsGeometriquesPeau.py @@ -72,7 +72,8 @@ def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesCircPeau, verticesCircPeau, groupEdgesBordPeau, \ bordsVifs, edgesFissurePeau, aretesVivesCoupees) = \ identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSorted, \ - edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees) + edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees, \ + nro_cas) 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] diff --git a/src/Tools/blocFissure/gmu/mailleFacesFissure.py b/src/Tools/blocFissure/gmu/mailleFacesFissure.py index e4f86fcdd..ca14afbd5 100644 --- a/src/Tools/blocFissure/gmu/mailleFacesFissure.py +++ b/src/Tools/blocFissure/gmu/mailleFacesFissure.py @@ -60,8 +60,7 @@ def mailleFacesFissure(faceFissureExterne, \ putName(algo2d, "{}_2d_faceFiss".format(mailleur), i_pref=nro_cas) putName(hypo2d, "hypo2d_faceFiss", i_pref=nro_cas) - texte = "Récupération des arêtes de '{}'".format(edgesPipeFissureExterneC.GetName()) - logging.info(texte) + logging.info("UseExisting1DElements depuis '%s'", edgesPipeFissureExterneC.GetName()) algo1d = meshFaceFiss.UseExisting1DElements(geom=edgesPipeFissureExterneC) hypo1d = algo1d.SourceEdges([ meshPipeGroups['edgeFaceFissGroup'] ],0,0) putName(algo1d.GetSubMesh(), "edgeFissPeau", i_pref=nro_cas) diff --git a/src/Tools/blocFissure/gmu/mailleFacesPeau.py b/src/Tools/blocFissure/gmu/mailleFacesPeau.py index cb3aac04b..4da78f07f 100644 --- a/src/Tools/blocFissure/gmu/mailleFacesPeau.py +++ b/src/Tools/blocFissure/gmu/mailleFacesPeau.py @@ -44,7 +44,8 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ nbFacesFilling = len(partitionsPeauFissFond) boutFromIfil = [None for _ in range(nbFacesFilling)] - if idFillingFromBout[0] != idFillingFromBout[1]: # repérage des extremites du pipe quand elles débouchent sur des faces différentes + # repérage des extremites du pipe quand elles débouchent sur des faces différentes : + if ( idFillingFromBout[0] != idFillingFromBout[1] ): boutFromIfil[idFillingFromBout[0]] = 0 boutFromIfil[idFillingFromBout[1]] = 1 @@ -52,19 +53,48 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ logging.info("nbFacesFilling = %d", nbFacesFilling) meshesFacesPeau = list() for ifil in range(nbFacesFilling): - meshFacePeau = None + if partitionsPeauFissFond[ifil] is None: # face de peau maillage sain intacte + logging.info("face de peau %d intacte", ifil) + facePeau = facesDefaut[ifil] + else: + logging.info("face de peau %d coupée par la fissure", ifil) + # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes) + facePeau = facesPeaux[ifil] + meshFacePeau = smesh.Mesh(facePeau) + putName(meshFacePeau.GetMesh(), "facePeau", ifil, nro_cas) + + if ( mailleur == "MeshGems"): + algo2d = meshFacePeau.Triangle(algo=smeshBuilder.MG_CADSurf) + hypo2d = algo2d.Parameters() + hypo2d.SetPhySize( dmoyen ) + hypo2d.SetMinSize( rayonPipe/float(nbsegRad) ) + hypo2d.SetMaxSize( dmoyen*2. ) + hypo2d.SetChordalError( dmoyen*0.25 ) + hypo2d.SetVerbosity( 0 ) + else: + algo2d = meshFacePeau.Triangle(algo=smeshBuilder.NETGEN_1D2D) + hypo2d = algo2d.Parameters() + hypo2d.SetMaxSize( dmoyen ) + hypo2d.SetOptimize( 1 ) + hypo2d.SetFineness( 2 ) + hypo2d.SetMinSize( rayonPipe/float(nbsegRad) ) + hypo2d.SetChordalError( dmoyen*0.25 ) + hypo2d.SetQuadAllowed( 0 ) + putName(algo2d, "{}_2d_facePeau".format(mailleur), ifil, nro_cas) + putName(hypo2d, "hypo2d_facePeau", ifil, nro_cas) - logging.debug("meshFacePeau %d intacte", ifil) + if partitionsPeauFissFond[ifil] is None: # face de peau maillage sain intacte + + logging.debug("face de peau %d intacte", ifil) # --- 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]) + geomPublishInFather(initLog.always, filling, groupEdgesBordPeau, "EdgesBords", nro_cas) + logging.info("UseExisting1DElements depuis '%s'", groupEdgesBordPeau.GetName()) algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) putName(algo1d.GetSubMesh(), "bordsLibres", ifil, nro_cas) @@ -73,29 +103,31 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ else: - logging.info("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) + logging.info("face de peau %d coupée par la fissure", ifil) edgesCircPeau = edCircPeau[ifil] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe] _ = ptCircPeau[ifil] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe] groupEdgesBordPeau = gpedgeBord[ifil] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine bordsVifs = gpedgeVifs[ifil] # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives edgesFissurePeau = edFissPeau[ifil] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes] - meshFacePeau = smesh.Mesh(facePeau) - + logging.info("UseExisting1DElements depuis groupEdgesBordPeau = '%s'", groupEdgesBordPeau.GetName()) algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) putName(algo1d.GetSubMesh(), "bordsLibres", ifil, nro_cas) putName(algo1d, "algo1d_bordsLibres", ifil, nro_cas) putName(hypo1d, "hypo1d_bordsLibres", ifil, nro_cas) - algo1d = meshFacePeau.UseExisting1DElements(geom=geompy.MakeCompound(edgesFissurePeau)) + objet = geompy.MakeCompound(edgesFissurePeau) + geomPublishInFather(initLog.always, facePeau, objet, "edgesFissurePeau") + logging.info("UseExisting1DElements depuis objet = '%s'", objet.GetName()) + algo1d = meshFacePeau.UseExisting1DElements(geom=objet) hypo1d = algo1d.SourceEdges([ grpEdgesPeauFissureExterne ],0,0) putName(algo1d.GetSubMesh(), "edgePeauFiss", ifil, nro_cas) putName(algo1d, "algo1d_edgePeauFiss", ifil, nro_cas) putName(hypo1d, "hypo1d_edgePeauFiss", ifil, nro_cas) if bordsVifs is not None: + logging.info("UseExisting1DElements depuis bordsVifs = '%s'", bordsVifs.GetName()) algo1d = meshFacePeau.UseExisting1DElements(geom=bordsVifs) hypo1d = algo1d.SourceEdges([ grpAretesVives ],0,0) putName(algo1d.GetSubMesh(), "bordsVifs", ifil, nro_cas) @@ -106,6 +138,7 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ texte = "i_aux = {}".format(i_aux) logging.info(texte) if edgeCirc is not None: + logging.info("UseExisting1DElements depuis edgeCirc ='%s'", edgeCirc.GetName()) algo1d = meshFacePeau.UseExisting1DElements(geom=edgeCirc) # addToStudy() failed ? if boutFromIfil[ifil] is None: hypo1d = algo1d.SourceEdges([ edgesCircPipeGroup[i_aux] ],0,0) @@ -116,27 +149,6 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ putName(algo1d, "algo1d_" + name, ifil, nro_cas) putName(hypo1d, "hypo1d_" + name, ifil, nro_cas) - logging.info("Maillage avec %s", mailleur) - if ( mailleur == "MeshGems"): - algo2d = meshFacePeau.Triangle(algo=smeshBuilder.MG_CADSurf) - hypo2d = algo2d.Parameters() - hypo2d.SetPhySize( dmoyen ) - hypo2d.SetMinSize( rayonPipe/float(nbsegRad) ) - hypo2d.SetMaxSize( dmoyen*2. ) - hypo2d.SetChordalError( dmoyen*0.25 ) - hypo2d.SetVerbosity( 0 ) - else: - algo2d = meshFacePeau.Triangle(algo=smeshBuilder.NETGEN_1D2D) - hypo2d = algo2d.Parameters() - hypo2d.SetMaxSize( dmoyen ) - hypo2d.SetOptimize( 1 ) - hypo2d.SetFineness( 2 ) - hypo2d.SetMinSize( rayonPipe/float(nbsegRad) ) - hypo2d.SetQuadAllowed( 0 ) - putName(algo2d.GetSubMesh(), "facePeau", ifil, nro_cas) - putName(algo2d, "algo2d_facePeau", ifil, nro_cas) - putName(hypo2d, "hypo2d_facePeau", ifil, nro_cas) - is_done = meshFacePeau.Compute() text = "meshFacePeau {} .Compute".format(ifil) if is_done: @@ -146,8 +158,8 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ logging.info(text) raise Exception(text) - GroupFaces = meshFacePeau.CreateEmptyGroup( SMESH.FACE, "facePeau%d"%ifil ) - _ = GroupFaces.AddFrom( meshFacePeau.GetMesh() ) + groupe_des_faces = meshFacePeau.CreateEmptyGroup( SMESH.FACE, "facePeau%d"%ifil ) + _ = groupe_des_faces.AddFrom( meshFacePeau.GetMesh() ) meshesFacesPeau.append(meshFacePeau) return meshesFacesPeau -- 2.39.2