1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2014-2023 EDF
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(shapesFissure, shapeFissureParams, \
43 maillageFissureParams, elementsDefaut, \
44 mailleur="MeshGems", nro_cas=None):
45 """Procédure complète de construction d'une fissure longue"""
47 logging.info("Usage du mailleur %s pour le cas n°%s", mailleur, nro_cas)
49 shapeDefaut = shapesFissure[0] # face de fissure, debordant
50 #tailleDefaut = shapesFissure[2]
51 wiretube = shapesFissure[4] # wire fond de fissure, debordant
52 planfiss = shapesFissure[7] # plan de fissure
53 pipefiss = shapesFissure[8] # pipe, debordant
55 profondeur = shapeFissureParams['profondeur']
56 rayonPipe = profondeur/4.0
58 nomRep = maillageFissureParams['nomRep']
59 nomFicSain = maillageFissureParams['nomFicSain']
60 nomFicFissure = maillageFissureParams['nomFicFissure']
62 #nbsegExt = maillageFissureParams['nbsegExt'] # 5
63 #nbsegGen = maillageFissureParams['nbsegGen'] # 25
64 #nbsegRad = maillageFissureParams['nbsegRad'] # 5
65 #scaleRad = maillageFissureParams['scaleRad'] # 4
66 #nbsegCercle = maillageFissureParams['nbsegCercle'] # 6
67 #nbsegFis = maillageFissureParams['nbsegFis'] # 20
68 #lensegEllipsoide = maillageFissureParams['lensegEllipso'] # 1.0
70 #fichierMaillageSain = os.path.join(nomRep, '{}.med'.format(nomFicSain))
71 fichierMaillageFissure = os.path.join(nomRep, '{}.med'.format(nomFicFissure))
73 facesDefaut = elementsDefaut[0]
74 #centreDefaut = elementsDefaut[1]
75 #normalDefaut = elementsDefaut[2]
76 #extrusionDefaut = elementsDefaut[3]
77 #dmoyen = elementsDefaut[4]
78 #bordsPartages = elementsDefaut[5]
79 #fillconts = elementsDefaut[6]
80 #idFilToCont = elementsDefaut[7]
81 maillageSain = elementsDefaut[8]
82 internalBoundary = elementsDefaut[9]
83 zoneDefaut = elementsDefaut[10]
84 zoneDefaut_skin = elementsDefaut[11]
85 zoneDefaut_internalFaces = elementsDefaut[12]
86 zoneDefaut_internalEdges = elementsDefaut[13]
88 facePorteFissure = shapeDefaut
89 WirePorteFondFissure = wiretube
90 fillingFaceExterne = facesDefaut[0]
91 logging.debug("fillingFaceExterne %s", fillingFaceExterne)
92 geomPublish(initLog.debug, fillingFaceExterne, "fillingFaceExterne")
94 # -----------------------------------------------------------------------------
95 # --- peau et face de fissure
96 edgesInside, centreFondFiss, tangentFondFiss, \
97 planBord1, planBord2 , \
98 facePeau, faceFiss, verticesOutCercles, verticesEdgePeauFiss, \
99 edgePeauFiss, demiCerclesPeau, \
100 groupEdgesBordPeau, groupsDemiCerclesPeau, groupEdgesFaceFissPipe = \
101 insereFissureLongue_a (facePorteFissure, WirePorteFondFissure, \
102 fillingFaceExterne, \
103 pipefiss, rayonPipe, \
105 # -----------------------------------------------------------------------------
106 # --- pipe de fond de fissure
107 pipeFondFiss, disques, rayons, \
108 demiCercles, generatrices, \
109 VerticesEndPipeFiss, bordsLibres, \
110 groupFaceFissInPipe, groupEdgeFondFiss, groupsDemiCerclesPipe, groupGenerFiss = \
111 insereFissureLongue_b (edgesInside, centreFondFiss, tangentFondFiss, \
112 planfiss, planBord1, planBord2, \
113 facePeau, verticesOutCercles, verticesEdgePeauFiss, \
114 fillingFaceExterne, rayonPipe, \
118 # --- maillage pipe fond fissure
120 meshFondFiss, groups_demiCercles, group_generFiss, nbSegGenLong, nbSegGenBout = \
121 insereFissureLongue_c (pipeFondFiss, disques, rayons, demiCercles, demiCerclesPeau, generatrices, \
122 VerticesEndPipeFiss, verticesEdgePeauFiss, \
123 groupFaceFissInPipe, groupEdgeFondFiss, groupsDemiCerclesPipe, groupGenerFiss, \
124 profondeur, rayonPipe, \
127 # --- maillage face de peau
129 meshFacePeau, groupEdgesPeauFiss = \
130 insereFissureLongue_d ( facePeau, edgePeauFiss, groupEdgesBordPeau, bordsLibres, \
131 groupsDemiCerclesPeau, groups_demiCercles, verticesOutCercles, \
132 nbSegGenLong, nbSegGenBout, profondeur, \
135 # --- maillage face de fissure
138 insereFissureLongue_e ( faceFiss, edgePeauFiss, groupEdgesPeauFiss, group_generFiss, groupEdgesFaceFissPipe, \
139 profondeur, rayonPipe, \
142 # --- maillage meshBoiteDefaut
144 meshBoiteDefaut, group_faceFissInPipe, group_faceFissOutPipe = \
145 insereFissureLongue_f ( internalBoundary, meshFondFiss, meshFacePeau, meshFaceFiss, \
149 # --- maillage complet
151 insereFissureLongue_g (nomFicFissure, fichierMaillageFissure, nomFicSain, maillageSain, \
152 meshBoiteDefaut, facePorteFissure, \
153 group_faceFissInPipe, group_faceFissOutPipe, \
154 zoneDefaut, zoneDefaut_skin, zoneDefaut_internalEdges, zoneDefaut_internalFaces, \
157 if salome.sg.hasDesktop():
158 salome.sg.updateObjBrowser()
160 return maillageComplet