X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FTools%2FblocFissure%2Fgmu%2FconstruitMaillagePipe.py;h=0f5576a24b1a7c582cc4af28537ed3868d2d7ceb;hp=e08ba47c343c2046005a8347966984560b5e2fd8;hb=81adb7985f3c35fa2a7778eb4d2346832536ddc9;hpb=cfa45d551fd47dd3648dea6e50ac74329b0d9e5d diff --git a/src/Tools/blocFissure/gmu/construitMaillagePipe.py b/src/Tools/blocFissure/gmu/construitMaillagePipe.py index e08ba47c3..0f5576a24 100644 --- a/src/Tools/blocFissure/gmu/construitMaillagePipe.py +++ b/src/Tools/blocFissure/gmu/construitMaillagePipe.py @@ -1,15 +1,32 @@ # -*- 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 +# +"""Maillage du pipe""" import logging -from geomsmesh import geompy -from geomsmesh import smesh +from .geomsmesh import geompy +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") @@ -20,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] @@ -49,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 @@ -93,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 @@ -105,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) @@ -123,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) @@ -154,16 +173,20 @@ 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 + + #if meshPipe: + #text = "Arrêt rapide.\n" + #logging.info(text) + #raise Exception(text) + return (meshPipe, meshPipeGroups, edgesCircPipeGroup)