Salome HOME
Merge branch 'master' into gni/evolution
[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   """construction de la fissure générale - inventaire des faces de peau coupées par la fissure
34
35 pour chaque face de peau : 0, 1 ou 2 faces débouchante du fond de fissure
36                            0, 1 ou plus edges de la face de fissure externe au pipe
37   """
38   logging.info('start')
39
40   nbFacesFilling = len(partitionsPeauFissFond)
41   texte = "nbFacesFilling : {} ".format(nbFacesFilling)
42   logging.info(texte)
43
44   ptEdgeFond = [ list()  for i in range(nbFacesFilling)] # pour chaque face [points edge fond de fissure aux débouchés du pipe]
45   fsPipePeau = [ list()  for i in range(nbFacesFilling)] # pour chaque face [faces du pipe débouchantes]
46   edRadFPiPo = [ list()  for i in range(nbFacesFilling)] # pour chaque face [edge radiale des faces du pipe débouchantes ]
47   fsFissuExt = [ list()  for i in range(nbFacesFilling)] # pour chaque face [faces de fissure externes au pipe]
48   edFisExtPe = [ list()  for i in range(nbFacesFilling)] # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)]
49   edFisExtPi = [ list()  for i in range(nbFacesFilling)] # pour chaque face [edge commun au pipe des faces de fissure externes]
50   facesPeaux = [None for i in range(nbFacesFilling)] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes)
51   edCircPeau = [ list()  for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe]
52   ptCircPeau = [ list()  for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe]
53   gpedgeBord = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
54   gpedgeVifs = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupes subshape des edges aux arêtes vives entre fillings
55   edFissPeau = [ list()  for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
56   ptFisExtPi = [ list()  for i in range(nbFacesFilling)] # pour chaque face de peau : [point commun edFissPeau edCircPeau]
57
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)
63       ptEdgeFond[ifil] = dataPPFF['endsEdgeFond']
64       fsPipePeau[ifil] = dataPPFF['facesPipePeau']
65       edRadFPiPo[ifil] = dataPPFF['edgeRadFacePipePeau']
66       fsFissuExt[ifil] = dataPPFF['facesFissExt']
67       edFisExtPe[ifil] = dataPPFF['edgesFissExtPeau']
68       edFisExtPi[ifil] = dataPPFF['edgesFissExtPipe']
69       facesPeaux[ifil] = dataPPFF['facePeau']
70       edCircPeau[ifil] = dataPPFF['edgesCircPeau']
71       ptCircPeau[ifil] = dataPPFF['verticesCircPeau']
72       gpedgeBord[ifil] = dataPPFF['groupEdgesBordPeau']
73       gpedgeVifs[ifil] = dataPPFF['bordsVifs']
74       edFissPeau[ifil] = dataPPFF['edgesFissurePeau']
75       ptFisExtPi[ifil] = dataPPFF['verticesPipePeau']
76
77   facesPipePeau = list()
78   edgeRadFacePipePeau = list()
79   for ifil in range(nbFacesFilling):
80     facesPipePeau += fsPipePeau[ifil]
81     edgeRadFacePipePeau += edRadFPiPo[ifil]
82
83   for i, avc in enumerate(aretesVivesCoupees):
84     name = "areteViveCoupee%d"%i
85     geomPublish(initLog.debug, avc, name)
86
87   return ptEdgeFond, fsFissuExt, edFisExtPe, edFisExtPi, facesPeaux, edCircPeau, \
88          ptCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, ptFisExtPi, \
89          edgeRadFacePipePeau, facesPipePeau