Salome HOME
Bos #23995 [CEA 24030] ParaView 5.9: fix volumes selection
[modules/smesh.git] / src / Tools / blocFissure / gmu / insereFissureLongue.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 """procédure complète de construction d'une fissure longue"""
21
22 import os
23
24 import logging
25
26 import salome
27
28 from .geomsmesh import geomPublish
29
30 from . import initLog
31
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
39
40 # -----------------------------------------------------------------------------
41
42 def insereFissureLongue(geometriesSaines, \
43                         shapesFissure, shapeFissureParams, \
44                         maillageFissureParams, elementsDefaut, \
45                         step=-1, mailleur="MeshGems", nro_cas=None):
46   """procedure complete fissure longue"""
47   logging.info('start')
48   logging.info("Usage du mailleur %s pour le cas n°%s", mailleur, nro_cas)
49
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
56
57   profondeur  = shapeFissureParams['profondeur']
58   rayonPipe   = profondeur/4.0
59
60   nomRep            = maillageFissureParams['nomRep']
61   nomFicSain        = maillageFissureParams['nomFicSain']
62   nomFicFissure     = maillageFissureParams['nomFicFissure']
63
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
71
72   #fichierMaillageSain = os.path.join(nomRep, '{}.med'.format(nomFicSain))
73   fichierMaillageFissure = os.path.join(nomRep, '{}.med'.format(nomFicFissure))
74
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]
89
90   facePorteFissure =  shapeDefaut
91   WirePorteFondFissure = wiretube
92   fillingFaceExterne = facesDefaut[0]
93   logging.debug("fillingFaceExterne %s", fillingFaceExterne)
94   geomPublish(initLog.debug, fillingFaceExterne, "fillingFaceExterne")
95
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, \
106                                     mailleur, nro_cas )
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, \
117                                     internalBoundary, \
118                                     nro_cas)
119
120   # --- maillage pipe fond fissure
121
122   meshFondFiss, groups_demiCercles, group_generFiss, nbSegGenLong, nbSegGenBout = \
123             insereFissureLongue_c (pipeFondFiss, disques, rayons, demiCercles, demiCerclesPeau, generatrices, \
124             VerticesEndPipeFiss, verticesEdgePeauFiss, \
125             groupFaceFissInPipe, groupEdgeFondFiss, groupsDemiCerclesPipe, groupGenerFiss, \
126             profondeur, rayonPipe, \
127             nro_cas)
128
129   # --- maillage face de peau
130
131   meshFacePeau, groupEdgesPeauFiss = \
132             insereFissureLongue_d ( facePeau, edgePeauFiss, groupEdgesBordPeau, bordsLibres, \
133                                     groupsDemiCerclesPeau, groups_demiCercles, verticesOutCercles, \
134                                     nbSegGenLong, nbSegGenBout, profondeur, \
135                                     mailleur, nro_cas )
136
137   # --- maillage face de fissure
138
139   meshFaceFiss = \
140             insereFissureLongue_e ( faceFiss, edgePeauFiss, groupEdgesPeauFiss, group_generFiss, groupEdgesFaceFissPipe, \
141                                     profondeur, rayonPipe, \
142                                     mailleur, nro_cas )
143
144   # --- maillage meshBoiteDefaut
145
146   meshBoiteDefaut, group_faceFissInPipe, group_faceFissOutPipe = \
147             insereFissureLongue_f ( internalBoundary, meshFondFiss, meshFacePeau, meshFaceFiss, \
148                                     mailleur, nro_cas )
149
150
151   # --- maillage complet
152   maillageComplet = \
153             insereFissureLongue_g (nomFicFissure, fichierMaillageFissure, nomFicSain, maillageSain, \
154                           meshBoiteDefaut, facePorteFissure, \
155                           group_faceFissInPipe, group_faceFissOutPipe, \
156                           zoneDefaut, zoneDefaut_skin, zoneDefaut_internalEdges, zoneDefaut_internalFaces, \
157                           nro_cas)
158
159   if salome.sg.hasDesktop():
160     salome.sg.updateObjBrowser()
161
162   return  maillageComplet