Salome HOME
bos #24228 [CEA 24217][Windows] cannot compile SMESH: additional fix.
[modules/smesh.git] / src / Tools / blocFissure / gmu / identifieElementsGeometriquesPeau.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2014-2021  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 """Identification des éléments géométriques de la face de peau"""
21
22 import logging
23
24 from .identifieElementsFissure import identifieElementsFissure
25 from .identifieElementsDebouchants import identifieElementsDebouchants
26 from .trouveEdgesFissPeau import trouveEdgesFissPeau
27 from .identifieFacesPeau import identifieFacesPeau
28 from .identifieEdgesPeau import identifieEdgesPeau
29
30 def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss, \
31                                       edgesFondFiss, wireFondFiss, aretesVivesC, \
32                                       facesDefaut, centreFondFiss, rayonPipe, \
33                                       aretesVivesCoupees, \
34                                       nro_cas=None):
35   """Identification des éléments géométriques de la face de peau"""
36   logging.info('start')
37   fillingFaceExterne = facesDefaut[ifil]
38
39   logging.debug("traitement partitionPeauFissFond %s", ifil)
40
41   # --- identification edges fond de fissure, edges pipe sur la face de fissure, edges prolongées
42   #     edges internes communes pipe et fissure, points communs edges fissure peau et edges circulaires
43
44   (edgesPipeIn, verticesPipePeau, edgesFondIn, facesInside, facesOnside) = \
45                            identifieElementsFissure(ifil, facesDefaut, partitionPeauFissFond, \
46                                                     edgesPipeFiss, edgesFondFiss, aretesVivesC, \
47                                                     fillingFaceExterne, centreFondFiss)
48
49   # --- elements débouchants (intersection pipe et peau), indexés selon les edges du fond de fissure (edgesFondIn)
50
51   (verticesEdgesFondIn, pipexts, cercles,
52    facesFissExt, edgesFissExtPeau, edgesFissExtPipe) = identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond, \
53                                                                                     edgesFondIn, edgesFondFiss, wireFondFiss, \
54                                                                                     aretesVivesC, fillingFaceExterne, \
55                                                                                     edgesPipeIn, verticesPipePeau, rayonPipe, \
56                                                                                     facesInside, facesOnside)
57
58   # --- pour les faces de peau sans extremité débouchante de fissure, il faut recenser les edges de fissure sur la face de peau
59
60   if len(verticesPipePeau) == 0: # aucune extrémité du pipe sur cette face de peau
61     edgesFissExtPeau = trouveEdgesFissPeau(facesInside, facesOnside, edgesPipeIn, edgesFondIn, partitionPeauFissFond, edgesFissExtPeau)
62
63   # --- inventaire des faces de peau : face de peau percée du pipe, extrémités du pipe
64
65   (facePeau, facesPeauSorted, edgesPeauFondIn) = identifieFacesPeau(ifil, verticesPipePeau, facesOnside, wireFondFiss, \
66                                                                     verticesEdgesFondIn, pipexts, cercles, \
67                                                                     fillingFaceExterne, centreFondFiss, \
68                                                                     nro_cas)
69
70   # --- identification précise des edges et disques des faces de peau selon index extremité fissure
71
72   (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesCircPeau, verticesCircPeau, groupEdgesBordPeau, \
73   bordsVifs, edgesFissurePeau, aretesVivesCoupees) = \
74                                               identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSorted, \
75                                                                 edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees, \
76                                                                 nro_cas)
77
78   dataPPFF = dict(endsEdgeFond        = endsEdgeFond,        # pour chaque face [points edge fond de fissure aux débouchés du pipe]
79                   facesPipePeau       = facesPipePeau,       # pour chaque face [faces du pipe débouchantes]
80                   edgeRadFacePipePeau = edgeRadFacePipePeau, # pour chaque face [edge radiale des faces du pipe débouchantes ]
81                   facesFissExt        = facesFissExt,        # pour chaque face [faces de fissure externes au pipe]
82                   edgesFissExtPeau    = edgesFissExtPeau,    # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)]
83                   edgesFissExtPipe    = edgesFissExtPipe,    # pour chaque face [edge commun au pipe des faces de fissure externes]
84                   facePeau            = facePeau,            # pour chaque face : la face de peau finale a mailler (percee des faces débouchantes)
85                   edgesCircPeau       = edgesCircPeau,       # pour chaque face de peau : [groupe subshapes edges circulaires aux débouchés du pipe]
86                   verticesCircPeau    = verticesCircPeau,    # pour chaque face de peau : [groupe subshapes points sur edges circulaires aux débouchés du pipe]
87                   groupEdgesBordPeau  = groupEdgesBordPeau,  # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
88                   bordsVifs           = bordsVifs,           # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives
89                   edgesFissurePeau    = edgesFissurePeau,    # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
90                   verticesPipePeau    = verticesPipePeau     # pour chaque face de peau : [point commun edFissPeau edCircPeau]
91                  )
92
93   return dataPPFF, aretesVivesCoupees