Salome HOME
Merge branch 'gni/evolution'
[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(shapesFissure, shapeFissureParams, \
43                         maillageFissureParams, elementsDefaut, \
44                         mailleur="MeshGems", nro_cas=None):
45   """Procédure complète de construction d'une fissure longue"""
46   logging.info('start')
47   logging.info("Usage du mailleur %s pour le cas n°%s", mailleur, nro_cas)
48
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
54
55   profondeur  = shapeFissureParams['profondeur']
56   rayonPipe   = profondeur/4.0
57
58   nomRep            = maillageFissureParams['nomRep']
59   nomFicSain        = maillageFissureParams['nomFicSain']
60   nomFicFissure     = maillageFissureParams['nomFicFissure']
61
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
69
70   #fichierMaillageSain = os.path.join(nomRep, '{}.med'.format(nomFicSain))
71   fichierMaillageFissure = os.path.join(nomRep, '{}.med'.format(nomFicFissure))
72
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]
87
88   facePorteFissure =  shapeDefaut
89   WirePorteFondFissure = wiretube
90   fillingFaceExterne = facesDefaut[0]
91   logging.debug("fillingFaceExterne %s", fillingFaceExterne)
92   geomPublish(initLog.debug, fillingFaceExterne, "fillingFaceExterne")
93
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, \
104                                     mailleur, nro_cas )
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, \
115                                     internalBoundary, \
116                                     nro_cas)
117
118   # --- maillage pipe fond fissure
119
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, \
125             nro_cas)
126
127   # --- maillage face de peau
128
129   meshFacePeau, groupEdgesPeauFiss = \
130             insereFissureLongue_d ( facePeau, edgePeauFiss, groupEdgesBordPeau, bordsLibres, \
131                                     groupsDemiCerclesPeau, groups_demiCercles, verticesOutCercles, \
132                                     nbSegGenLong, nbSegGenBout, profondeur, \
133                                     mailleur, nro_cas )
134
135   # --- maillage face de fissure
136
137   meshFaceFiss = \
138             insereFissureLongue_e ( faceFiss, edgePeauFiss, groupEdgesPeauFiss, group_generFiss, groupEdgesFaceFissPipe, \
139                                     profondeur, rayonPipe, \
140                                     mailleur, nro_cas )
141
142   # --- maillage meshBoiteDefaut
143
144   meshBoiteDefaut, group_faceFissInPipe, group_faceFissOutPipe = \
145             insereFissureLongue_f ( internalBoundary, meshFondFiss, meshFacePeau, meshFaceFiss, \
146                                     mailleur, nro_cas )
147
148
149   # --- maillage complet
150   maillageComplet = \
151             insereFissureLongue_g (nomFicFissure, fichierMaillageFissure, nomFicSain, maillageSain, \
152                           meshBoiteDefaut, facePorteFissure, \
153                           group_faceFissInPipe, group_faceFissOutPipe, \
154                           zoneDefaut, zoneDefaut_skin, zoneDefaut_internalEdges, zoneDefaut_internalFaces, \
155                           nro_cas)
156
157   if salome.sg.hasDesktop():
158     salome.sg.updateObjBrowser()
159
160   return  maillageComplet