Salome HOME
simplification
[modules/smesh.git] / src / Tools / blocFissure / gmu / construitFissureGenerale_b.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2014-2020  EDF R&D
3 #
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.
8 #
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.
13 #
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
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 """construction de la fissure générale - inventaire des faces de peau coupées par la fissure"""
21
22 import logging
23 from .geomsmesh import geomPublish
24 from . import initLog
25
26 from .identifieElementsGeometriquesPeau import identifieElementsGeometriquesPeau
27
28 # -----------------------------------------------------------------------------
29
30 def construitFissureGenerale_b( partitionsPeauFissFond, \
31                                 edgesPipeFiss, edgesFondFiss, wireFondFiss, aretesVivesC, \
32                                 facesDefaut, centreFondFiss, rayonPipe, aretesVivesCoupees, \
33                                 nro_cas=None ):
34   """construction de la fissure générale - inventaire des faces de peau coupées par la fissure
35
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
38   """
39   logging.info('start')
40
41   nbFacesFilling = len(partitionsPeauFissFond)
42   texte = "nbFacesFilling : {} ".format(nbFacesFilling)
43   logging.info(texte)
44
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   ptCircPeau = [ list() for _ in range(nbFacesFilling)] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe]
54   gpedgeBord = [None for _ in range(nbFacesFilling)] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
55   gpedgeVifs = [None for _ in range(nbFacesFilling)] # pour chaque face de peau : groupes subshape des edges aux arêtes vives entre fillings
56   edFissPeau = [ list() for _ in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
57   ptFisExtPi = [ list() for _ in range(nbFacesFilling)] # pour chaque face de peau : [point commun edFissPeau edCircPeau]
58
59   for ifil, partitionPeauFissFond in enumerate(partitionsPeauFissFond):
60     if partitionPeauFissFond is not None:
61       dataPPFF,aretesVivesCoupees = identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, \
62                                                                       edgesPipeFiss, edgesFondFiss, wireFondFiss, aretesVivesC, \
63                                                                       facesDefaut, centreFondFiss, rayonPipe, aretesVivesCoupees, \
64                                                                       nro_cas)
65       ptEdgeFond[ifil] = dataPPFF['endsEdgeFond']
66       fsPipePeau[ifil] = dataPPFF['facesPipePeau']
67       edRadFPiPo[ifil] = dataPPFF['edgeRadFacePipePeau']
68       fsFissuExt[ifil] = dataPPFF['facesFissExt']
69       edFisExtPe[ifil] = dataPPFF['edgesFissExtPeau']
70       edFisExtPi[ifil] = dataPPFF['edgesFissExtPipe']
71       facesPeaux[ifil] = dataPPFF['facePeau']
72       edCircPeau[ifil] = dataPPFF['edgesCircPeau']
73       ptCircPeau[ifil] = dataPPFF['verticesCircPeau']
74       gpedgeBord[ifil] = dataPPFF['groupEdgesBordPeau']
75       gpedgeVifs[ifil] = dataPPFF['bordsVifs']
76       edFissPeau[ifil] = dataPPFF['edgesFissurePeau']
77       ptFisExtPi[ifil] = dataPPFF['verticesPipePeau']
78
79   facesPipePeau = list()
80   edgeRadFacePipePeau = list()
81   for ifil in range(nbFacesFilling):
82     facesPipePeau += fsPipePeau[ifil]
83     edgeRadFacePipePeau += edRadFPiPo[ifil]
84
85   for i_aux, avc in enumerate(aretesVivesCoupees):
86     name = "areteViveCoupee{}".format(i_aux)
87     geomPublish(initLog.debug, avc, name, nro_cas)
88
89   return ptEdgeFond, fsFissuExt, edFisExtPe, edFisExtPi, facesPeaux, edCircPeau, \
90          ptCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, ptFisExtPi, \
91          edgeRadFacePipePeau, facesPipePeau