1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2014-2021 EDF R&D
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 """procédure complète de construction d'une fissure longue"""
28 from .geomsmesh import geomPublish
32 from .insereFissureLongue_a import insereFissureLongue_a
33 from .insereFissureLongue_b import insereFissureLongue_b
34 from .insereFissureLongue_c import insereFissureLongue_c
35 from .insereFissureLongue_d import insereFissureLongue_d
36 from .insereFissureLongue_e import insereFissureLongue_e
37 from .insereFissureLongue_f import insereFissureLongue_f
38 from .insereFissureLongue_g import insereFissureLongue_g
40 # -----------------------------------------------------------------------------
42 def insereFissureLongue(geometriesSaines, \
43 shapesFissure, shapeFissureParams, \
44 maillageFissureParams, elementsDefaut, \
45 step=-1, mailleur="MeshGems", nro_cas=-1):
46 """procedure complete fissure longue"""
48 logging.info("Usage du mailleur %s pour le cas n° %d", mailleur, nro_cas)
50 #geometrieSaine = geometriesSaines[0]
51 shapeDefaut = shapesFissure[0] # face de fissure, debordant
52 #tailleDefaut = shapesFissure[2]
53 wiretube = shapesFissure[4] # wire fond de fissure, debordant
54 planfiss = shapesFissure[7] # plan de fissure
55 pipefiss = shapesFissure[8] # pipe, debordant
57 profondeur = shapeFissureParams['profondeur']
58 rayonPipe = profondeur/4.0
60 nomRep = maillageFissureParams['nomRep']
61 nomFicSain = maillageFissureParams['nomFicSain']
62 nomFicFissure = maillageFissureParams['nomFicFissure']
64 #nbsegExt = maillageFissureParams['nbsegExt'] # 5
65 #nbsegGen = maillageFissureParams['nbsegGen'] # 25
66 #nbsegRad = maillageFissureParams['nbsegRad'] # 5
67 #scaleRad = maillageFissureParams['scaleRad'] # 4
68 #nbsegCercle = maillageFissureParams['nbsegCercle'] # 6
69 #nbsegFis = maillageFissureParams['nbsegFis'] # 20
70 #lensegEllipsoide = maillageFissureParams['lensegEllipso'] # 1.0
72 #fichierMaillageSain = os.path.join(nomRep, '{}.med'.format(nomFicSain))
73 fichierMaillageFissure = os.path.join(nomRep, '{}.med'.format(nomFicFissure))
75 facesDefaut = elementsDefaut[0]
76 #centreDefaut = elementsDefaut[1]
77 #normalDefaut = elementsDefaut[2]
78 #extrusionDefaut = elementsDefaut[3]
79 #dmoyen = elementsDefaut[4]
80 #bordsPartages = elementsDefaut[5]
81 #fillconts = elementsDefaut[6]
82 #idFilToCont = elementsDefaut[7]
83 maillageSain = elementsDefaut[8]
84 internalBoundary = elementsDefaut[9]
85 zoneDefaut = elementsDefaut[10]
86 zoneDefaut_skin = elementsDefaut[11]
87 zoneDefaut_internalFaces = elementsDefaut[12]
88 zoneDefaut_internalEdges = elementsDefaut[13]
90 facePorteFissure = shapeDefaut
91 WirePorteFondFissure = wiretube
92 fillingFaceExterne = facesDefaut[0]
93 logging.debug("fillingFaceExterne %s", fillingFaceExterne)
94 geomPublish(initLog.debug, fillingFaceExterne, "fillingFaceExterne")
96 # -----------------------------------------------------------------------------
97 # --- peau et face de fissure
98 edgesInside, centreFondFiss, tangentFondFiss, \
99 planBord1, planBord2 , \
100 facePeau, faceFiss, verticesOutCercles, verticesEdgePeauFiss, \
101 edgePeauFiss, demiCerclesPeau, \
102 groupEdgesBordPeau, groupsDemiCerclesPeau, groupEdgesFaceFissPipe = \
103 insereFissureLongue_a (facePorteFissure, WirePorteFondFissure, \
104 fillingFaceExterne, \
105 pipefiss, rayonPipe, \
107 # -----------------------------------------------------------------------------
108 # --- pipe de fond de fissure
109 pipeFondFiss, disques, rayons, \
110 demiCercles, generatrices, \
111 VerticesEndPipeFiss, bordsLibres, \
112 groupFaceFissInPipe, groupEdgeFondFiss, groupsDemiCerclesPipe, groupGenerFiss = \
113 insereFissureLongue_b (edgesInside, centreFondFiss, tangentFondFiss, \
114 planfiss, planBord1, planBord2, \
115 facePeau, verticesOutCercles, verticesEdgePeauFiss, \
116 fillingFaceExterne, rayonPipe, \
119 # --- maillage pipe fond fissure
121 meshFondFiss, groups_demiCercles, group_generFiss, nbSegGenLong, nbSegGenBout = \
122 insereFissureLongue_c (pipeFondFiss, disques, rayons, demiCercles, demiCerclesPeau, generatrices, \
123 VerticesEndPipeFiss, verticesEdgePeauFiss, \
124 groupFaceFissInPipe, groupEdgeFondFiss, groupsDemiCerclesPipe, groupGenerFiss, \
125 profondeur, rayonPipe, \
128 # --- maillage face de peau
130 meshFacePeau, groupEdgesPeauFiss = \
131 insereFissureLongue_d ( facePeau, edgePeauFiss, groupEdgesBordPeau, bordsLibres, \
132 groupsDemiCerclesPeau, groups_demiCercles, verticesOutCercles, \
133 nbSegGenLong, nbSegGenBout, profondeur, \
136 # --- maillage face de fissure
139 insereFissureLongue_e ( faceFiss, edgePeauFiss, groupEdgesPeauFiss, group_generFiss, groupEdgesFaceFissPipe, \
140 profondeur, rayonPipe, \
143 # --- maillage meshBoiteDefaut
145 meshBoiteDefaut, group_faceFissInPipe, group_faceFissOutPipe = \
146 insereFissureLongue_f ( internalBoundary, meshFondFiss, meshFacePeau, meshFaceFiss, \
150 # --- maillage complet
152 insereFissureLongue_g (nomFicFissure, fichierMaillageFissure, nomFicSain, maillageSain, \
153 meshBoiteDefaut, facePorteFissure, \
154 group_faceFissInPipe, group_faceFissOutPipe, \
155 zoneDefaut, zoneDefaut_skin, zoneDefaut_internalEdges, zoneDefaut_internalFaces, \
159 if salome.sg.hasDesktop():
160 salome.sg.updateObjBrowser()
162 return maillageComplet