X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FTools%2FblocFissure%2Fgmu%2FmailleFacesPeau.py;h=a647ce577994abf30a1bce7ee5ff48380c87c2d8;hb=7e714e8fc0d0884011007c9daed6e6e492402693;hp=e8289c22f9af556af4c827cea668230e30ab7341;hpb=6cdcd4fb150ef14b95d677a7a8942ae2cfd2ac86;p=modules%2Fsmesh.git diff --git a/src/Tools/blocFissure/gmu/mailleFacesPeau.py b/src/Tools/blocFissure/gmu/mailleFacesPeau.py index e8289c22f..a647ce577 100644 --- a/src/Tools/blocFissure/gmu/mailleFacesPeau.py +++ b/src/Tools/blocFissure/gmu/mailleFacesPeau.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2014-2021 EDF R&D +# Copyright (C) 2014-2023 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 @@ -34,7 +34,7 @@ from . import initLog from .putName import putName def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ - facesPeaux, edCircPeau, ptCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, \ + facesPeaux, edCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, \ bordsLibres, grpEdgesPeauFissureExterne, grpAretesVives, \ edgesCircPipeGroup, dmoyen, rayonPipe, nbsegRad, \ mailleur="MeshGems", nro_cas=None): @@ -79,10 +79,11 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ hypo2d.SetOptimize( 1 ) hypo2d.SetFineness( 2 ) hypo2d.SetMinSize( rayonPipe/float(nbsegRad) ) + hypo2d.SetChordalErrorEnabled (True) hypo2d.SetChordalError( dmoyen*0.25 ) + hypo2d.SetUseSurfaceCurvature (True) hypo2d.SetQuadAllowed( 0 ) - putName(algo2d, "{}_2d_facePeau".format(mailleur), ifil, nro_cas) - putName(hypo2d, "hypo2d_facePeau", ifil, nro_cas) + putName(hypo2d, "{}_2d_facePeau".format(mailleur), ifil, nro_cas) if partitionsPeauFissFond[ifil] is None: # face de peau maillage sain intacte @@ -90,64 +91,63 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ # --- 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.always, filling, groupEdgesBordPeau, "EdgesBords", nro_cas) + gpedgeBord[ifil] = geompy.CreateGroup(filling, geompy.ShapeType["EDGE"]) + geompy.UnionList(gpedgeBord[ifil], edgesFilling) + geomPublishInFather(initLog.always, filling, gpedgeBord[ifil], "EdgesBords", nro_cas) - logging.info("UseExisting1DElements depuis '%s'", groupEdgesBordPeau.GetName()) - algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) - hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) + logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ + gpedgeBord[ifil].GetName(), bordsLibres.GetName()) + algo1d = meshFacePeau.UseExisting1DElements(geom=gpedgeBord[ifil]) putName(algo1d.GetSubMesh(), "bordsLibres", ifil, nro_cas) - putName(algo1d, "algo1d_bordsLibres", ifil, nro_cas) - putName(hypo1d, "hypo1d_bordsLibres", ifil, nro_cas) + hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) + putName(hypo1d, "SourceEdges_{}".format(bordsLibres.GetName()), ifil, nro_cas) else: 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] - - logging.info("UseExisting1DElements depuis groupEdgesBordPeau = '%s'", groupEdgesBordPeau.GetName()) - algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) - hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) + # edCircPeau[ifil] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe] + # gpedgeBord[ifil] : pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine + # gpedgeVifs[ifil] : pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives + # edFissPeau[ifil] : pour chaque face de peau : [subshape edge en peau des faces de fissure externes] + + logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ + gpedgeBord[ifil].GetName(), bordsLibres.GetName()) + algo1d = meshFacePeau.UseExisting1DElements(geom=gpedgeBord[ifil]) putName(algo1d.GetSubMesh(), "bordsLibres", ifil, nro_cas) - putName(algo1d, "algo1d_bordsLibres", ifil, nro_cas) - putName(hypo1d, "hypo1d_bordsLibres", ifil, nro_cas) + hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) + putName(hypo1d, "SourceEdges_{}".format(bordsLibres.GetName()), i_pref=nro_cas) - objet = geompy.MakeCompound(edgesFissurePeau) - geomPublishInFather(initLog.always, facePeau, objet, "edgesFissurePeau") - logging.info("UseExisting1DElements depuis objet = '%s'", objet.GetName()) + objet = geompy.MakeCompound(edFissPeau[ifil]) + geomPublishInFather(initLog.always, facePeau, objet, "edFissPeau_{}".format(ifil)) + logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ + objet.GetName(), grpEdgesPeauFissureExterne.GetName()) algo1d = meshFacePeau.UseExisting1DElements(geom=objet) + putName(algo1d.GetSubMesh(), objet.GetName(), i_pref=nro_cas) 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) + putName(hypo1d, "SourceEdges_{}".format(grpEdgesPeauFissureExterne.GetName()), i_pref=nro_cas) - if bordsVifs is not None: - logging.info("UseExisting1DElements depuis bordsVifs = '%s'", bordsVifs.GetName()) - algo1d = meshFacePeau.UseExisting1DElements(geom=bordsVifs) + if gpedgeVifs[ifil] is not None: + logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ + gpedgeVifs[ifil].GetName(), grpAretesVives.GetName()) + algo1d = meshFacePeau.UseExisting1DElements(geom=gpedgeVifs[ifil]) + putName(algo1d.GetSubMesh(), "gpedgeVifs", ifil, nro_cas) hypo1d = algo1d.SourceEdges([ grpAretesVives ],0,0) - putName(algo1d.GetSubMesh(), "bordsVifs", ifil, nro_cas) - putName(algo1d, "algo1d_bordsVifs", ifil, nro_cas) - putName(hypo1d, "hypo1d_bordsVifs", ifil, nro_cas) + putName(hypo1d, "SourceEdges_{}".format(grpAretesVives.GetName()), i_pref=nro_cas) - for i_aux, edgeCirc in enumerate(edgesCircPeau): + for i_aux, edgeCirc in enumerate(edCircPeau[ifil]): 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) + groupe = edgesCircPipeGroup[i_aux] else: - hypo1d = algo1d.SourceEdges([ edgesCircPipeGroup[boutFromIfil[ifil]] ],0,0) - name = "cercle{}".format(i_aux) - putName(algo1d.GetSubMesh(), name, ifil, nro_cas) - putName(algo1d, "algo1d_" + name, ifil, nro_cas) - putName(hypo1d, "hypo1d_" + name, ifil, nro_cas) + groupe = edgesCircPipeGroup[boutFromIfil[ifil]] + logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ + edgeCirc.GetName(), groupe.GetName()) + algo1d = meshFacePeau.UseExisting1DElements(geom=edgeCirc) # addToStudy() failed ? + putName(algo1d.GetSubMesh(), groupe.GetName(), i_pref=nro_cas) + hypo1d = algo1d.SourceEdges([ groupe ],0,0) + putName(hypo1d, "SourceEdges_{}".format(groupe.GetName()), i_pref=nro_cas) is_done = meshFacePeau.Compute() text = "meshFacePeau {} .Compute".format(ifil)