1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2014-2024 CEA, EDF
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 """construction de la fissure générale - inventaire des faces de peau coupées par la fissure"""
23 from .geomsmesh import geomPublish
26 from .identifieElementsGeometriquesPeau import identifieElementsGeometriquesPeau
28 # -----------------------------------------------------------------------------
30 def construitFissureGenerale_b( partitionsPeauFissFond, \
31 edgesPipeFiss, edgesFondFiss, wireFondFiss, aretesVivesC, \
32 facesDefaut, centreFondFiss, rayonPipe, aretesVivesCoupees, \
34 """construction de la fissure générale - inventaire des faces de peau coupées par la fissure
36 pour chaque face de peau : 0, 1 ou 2 faces débouchante du fond de fissure
37 0, 1 ou plus edges de la face de fissure externe au pipe
41 nbFacesFilling = len(partitionsPeauFissFond)
42 texte = "nbFacesFilling : {} ".format(nbFacesFilling)
45 ptEdgeFond = [ list() for _ in range(nbFacesFilling)] # pour chaque face [points edge fond de fissure aux débouchés du pipe]
46 fsPipePeau = [ list() for _ in range(nbFacesFilling)] # pour chaque face [faces du pipe débouchantes]
47 edRadFPiPo = [ list() for _ in range(nbFacesFilling)] # pour chaque face [edge radiale des faces du pipe débouchantes ]
48 fsFissuExt = [ list() for _ in range(nbFacesFilling)] # pour chaque face [faces de fissure externes au pipe]
49 edFisExtPe = [ list() for _ in range(nbFacesFilling)] # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)]
50 edFisExtPi = [ list() for _ in range(nbFacesFilling)] # pour chaque face [edge commun au pipe des faces de fissure externes]
51 facesPeaux = [None for _ in range(nbFacesFilling)] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes)
52 edCircPeau = [ list() for _ in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe]
53 gpedgeBord = [None for _ in range(nbFacesFilling)] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
54 gpedgeVifs = [None for _ in range(nbFacesFilling)] # pour chaque face de peau : groupes subshape des edges aux arêtes vives entre fillings
55 edFissPeau = [ list() for _ in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
56 ptFisExtPi = [ list() for _ in range(nbFacesFilling)] # pour chaque face de peau : [point commun edFissPeau edCircPeau]
58 for ifil, partitionPeauFissFond in enumerate(partitionsPeauFissFond):
59 if partitionPeauFissFond is not None:
60 dataPPFF,aretesVivesCoupees = identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, \
61 edgesPipeFiss, edgesFondFiss, wireFondFiss, aretesVivesC, \
62 facesDefaut, centreFondFiss, rayonPipe, aretesVivesCoupees, \
64 ptEdgeFond[ifil] = dataPPFF['endsEdgeFond']
65 fsPipePeau[ifil] = dataPPFF['facesPipePeau']
66 edRadFPiPo[ifil] = dataPPFF['edgeRadFacePipePeau']
67 fsFissuExt[ifil] = dataPPFF['facesFissExt']
68 edFisExtPe[ifil] = dataPPFF['edgesFissExtPeau']
69 edFisExtPi[ifil] = dataPPFF['edgesFissExtPipe']
70 facesPeaux[ifil] = dataPPFF['facePeau']
71 edCircPeau[ifil] = dataPPFF['edgesCircPeau']
72 gpedgeBord[ifil] = dataPPFF['groupEdgesBordPeau']
73 gpedgeVifs[ifil] = dataPPFF['bordsVifs']
74 edFissPeau[ifil] = dataPPFF['edgesFissurePeau']
75 ptFisExtPi[ifil] = dataPPFF['verticesPipePeau']
77 facesPipePeau = list()
78 edgeRadFacePipePeau = list()
79 for ifil in range(nbFacesFilling):
80 facesPipePeau += fsPipePeau[ifil]
81 edgeRadFacePipePeau += edRadFPiPo[ifil]
83 for i_aux, avc in enumerate(aretesVivesCoupees):
84 name = "areteViveCoupee{}".format(i_aux)
85 geomPublish(initLog.debug, avc, name, nro_cas)
87 return ptEdgeFond, fsFissuExt, edFisExtPe, edFisExtPi, facesPeaux, edCircPeau, \
88 gpedgeBord, gpedgeVifs, edFissPeau, ptFisExtPi, \
89 edgeRadFacePipePeau, facesPipePeau