Salome HOME
poursuite du découpage en fonctions plus simples
[modules/smesh.git] / src / Tools / blocFissure / gmu / identifieElementsGeometriquesPeau.py
1 # -*- coding: utf-8 -*-
2
3 import logging
4
5 from identifieElementsFissure import identifieElementsFissure
6 from identifieElementsDebouchants import identifieElementsDebouchants
7 from trouveEdgesFissPeau import trouveEdgesFissPeau
8 from identifieFacesPeau import identifieFacesPeau
9 from identifieEdgesPeau import identifieEdgesPeau
10
11 def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss,
12                                       edgesFondFiss, wireFondFiss, aretesVivesC,
13                                       facesDefaut, centreFondFiss, rayonPipe,
14                                       aretesVivesCoupees):
15   """
16   """
17   logging.info('start')
18   fillingFaceExterne = facesDefaut[ifil]
19
20   logging.debug("traitement partitionPeauFissFond %s", ifil)
21   
22   # --- identification edges fond de fissure, edges pipe sur la face de fissure, edges prolongées
23   #     edges internes communes pipe et fissure, points communs edges fissure peau et edges circulaires
24   
25   (edgesPipeIn, verticesPipePeau, edgesFondIn, facesInside, facesOnside) = identifieElementsFissure(ifil, facesDefaut, partitionPeauFissFond,
26                                                                                                     edgesPipeFiss, edgesFondFiss, aretesVivesC,
27                                                                                                     fillingFaceExterne, centreFondFiss)
28   
29   # --- elements débouchants (intersection pipe et peau), indexés selon les edges du fond de fissure (edgesFondIn)
30   
31   (verticesEdgesFondIn, pipexts, cercles,
32    facesFissExt, edgesFissExtPeau, edgesFissExtPipe) = identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond,
33                                                                                     edgesFondIn, edgesFondFiss, wireFondFiss,
34                                                                                     aretesVivesC, fillingFaceExterne,
35                                                                                     edgesPipeIn, verticesPipePeau, rayonPipe,
36                                                                                     facesInside, facesOnside)
37
38   # --- pour les faces de peau sans extremité débouchante de fissure, il faut recenser les edges de fissure sur la face de peau
39
40   if len(verticesPipePeau) == 0: # aucune extrémité du pipe sur cette face de peau
41     edgesFissExtPeau = trouveEdgesFissPeau(facesInside, facesOnside, edgesPipeIn, edgesFondIn, partitionPeauFissFond, edgesFissExtPeau)
42     
43   # --- inventaire des faces de peau : face de peau percée du pipe, extrémités du pipe
44   
45   (facePeau, facesPeauSorted, edgesPeauFondIn) = identifieFacesPeau(ifil, verticesPipePeau, facesOnside, wireFondFiss,
46                                                                     verticesEdgesFondIn, pipexts, cercles,
47                                                                     fillingFaceExterne, centreFondFiss)
48   
49   # --- identification précise des edges et disques des faces de peau selon index extremité fissure
50   
51   (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau,
52    edgesCircPeau, verticesCircPeau, groupEdgesBordPeau,
53    bordsVifs, edgesFissurePeau, aretesVivesCoupees) = identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSorted,
54                                                                          edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees)
55   
56   dataPPFF = dict(endsEdgeFond        = endsEdgeFond,        # pour chaque face [points edge fond de fissure aux débouchés du pipe]
57                   facesPipePeau       = facesPipePeau,       # pour chaque face [face
58                   edgeRadFacePipePeau = edgeRadFacePipePeau, # pour chaque face [edge radiale des faces du pipe débouchantes ]
59                   facesFissExt        = facesFissExt,        # pour chaque face [faces de fissure externes au pipe]
60                   edgesFissExtPeau    = edgesFissExtPeau,    # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)]
61                   edgesFissExtPipe    = edgesFissExtPipe,    # pour chaque face [edge commun au pipe des faces de fissure externes]
62                   facePeau            = facePeau,            # pour chaque face : la face de peau finale a mailler (percee des faces débouchantes)
63                   edgesCircPeau       = edgesCircPeau,       # pour chaque face de peau : [groupe subshapes edges circulaires aux débouchés du pipe]
64                   verticesCircPeau    = verticesCircPeau,    # pour chaque face de peau : [groupe subshapes points sur edges circulaires aux débouchés du pipe]
65                   groupEdgesBordPeau  = groupEdgesBordPeau,  # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
66                   bordsVifs           = bordsVifs,           # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives
67                   edgesFissurePeau    = edgesFissurePeau,    # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
68                   verticesPipePeau    = verticesPipePeau     # pour chaque face de peau : [point commun edFissPeau edCircPeau]
69                   )  
70
71   return dataPPFF, aretesVivesCoupees
72