]> SALOME platform Git repositories - modules/smesh.git/blob - src/Tools/blocFissure/CasTests/fissure_Coude.py
Salome HOME
Install tests.set
[modules/smesh.git] / src / Tools / blocFissure / CasTests / fissure_Coude.py
1 # -*- coding: utf-8 -*-
2
3 from blocFissure import gmu
4 from blocFissure.gmu.geomsmesh import geompy, smesh
5
6 import math
7 import GEOM
8 import SALOMEDS
9 import SMESH
10 #import StdMeshers
11 #import GHS3DPlugin
12 #import NETGENPlugin
13 import logging
14
15 from blocFissure.gmu.fissureGenerique import fissureGenerique
16
17 from blocFissure.gmu.triedreBase import triedreBase
18 from blocFissure.gmu.genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut
19 from blocFissure.gmu.creeZoneDefautDansObjetSain import creeZoneDefautDansObjetSain
20 from blocFissure.gmu.insereFissureLongue import insereFissureLongue
21
22 O, OX, OY, OZ = triedreBase()
23
24 class fissure_Coude(fissureGenerique):
25   """
26   problème de fissure du Coude : version de base
27   maillage hexa
28   """
29
30   nomProbleme = "tuyau_Coude"
31
32   # ---------------------------------------------------------------------------
33   def setParamGeometrieSaine(self):
34     """
35     Paramètres géométriques du tuyau coudé sain:
36     angleCoude
37     r_cintr
38     l_tube_p1
39     l_tube_p2
40     epais
41     de
42     """
43     self.geomParams = dict(angleCoude = 60,
44                            r_cintr    = 1200,
45                            l_tube_p1  = 1600,
46                            l_tube_p2  = 1200,
47                            epais      = 40,
48                            de         = 760)
49
50   # ---------------------------------------------------------------------------
51   def genereGeometrieSaine(self, geomParams):
52     logging.info("genereGeometrieSaine %s", self.nomCas)
53
54     angleCoude = geomParams['angleCoude']
55     r_cintr    = geomParams['r_cintr']
56     l_tube_p1  = geomParams['l_tube_p1']
57     l_tube_p2  = geomParams['l_tube_p2']
58     epais      = geomParams['epais']
59     de         = geomParams['de']
60
61     centre = geompy.MakeVertex(0, 0, -l_tube_p1)
62     Disk_1 = geompy.MakeDiskPntVecR(centre, OZ, de/2.)
63     Disk_2 = geompy.MakeDiskPntVecR(centre, OZ, de/2. -epais)
64     Cut_1 = geompy.MakeCut(Disk_1, Disk_2)
65     Extrusion_1 = geompy.MakePrismVecH(Cut_1, OZ, l_tube_p1)
66     axe = geompy.MakeTranslation(OY, -r_cintr, 0, -l_tube_p1)
67     Revolution_1 = geompy.MakeRevolution(Cut_1, axe, angleCoude*math.pi/180.0)
68     Rotation_1 = geompy.MakeRotation(Cut_1, axe, angleCoude*math.pi/180.0)
69     Rotation_2 = geompy.MakeRotation(OZ, OY, angleCoude*math.pi/180.0)
70     Extrusion_2 = geompy.MakePrismVecH(Rotation_1, Rotation_2, -l_tube_p2)
71     Plane_1 = geompy.MakePlaneLCS(None, 100000, 3)
72     geompy.addToStudy( Plane_1, "Plane_1" )
73     geompy.addToStudy( Extrusion_1, "Extrusion_1" )
74     geompy.addToStudy( Revolution_1, "Revolution_1" )
75     geompy.addToStudy( Extrusion_2, "Extrusion_2" )
76
77     P1 = O
78     geompy.addToStudy( P1, "P1" )
79     op2 = geompy.MakeVertex(0, 0, -l_tube_p1)
80     P2 = geompy.MakeRotation(op2, axe, angleCoude*math.pi/180.0)
81     P2 = geompy.MakeTranslationVectorDistance(P2, Rotation_2, -l_tube_p2)
82     geompy.addToStudy( P2, "P2" )
83
84     # --- tube coude sain
85
86     geometrieSaine = geompy.MakePartition([Extrusion_1, Revolution_1, Extrusion_2, P1, P2], [Plane_1], [], [], geompy.ShapeType["SOLID"], 0, [], 1)
87     geompy.addToStudy( geometrieSaine, self.nomCas )
88     [P1, P2] = geompy.RestoreGivenSubShapes(geometrieSaine, [P1, P2], GEOM.FSM_GetInPlaceByHistory, False, True)
89
90     [ep, circ_g, circ_d, long_p2, long_coude, long_p1] = geompy.Propagate(geometrieSaine)
91     geompy.addToStudyInFather( geometrieSaine, long_p1, 'long_p1' )
92     geompy.addToStudyInFather( geometrieSaine, ep, 'ep' )
93     geompy.addToStudyInFather( geometrieSaine, long_coude, 'long_coude' )
94     geompy.addToStudyInFather( geometrieSaine, circ_g, 'circ_g' )
95     geompy.addToStudyInFather( geometrieSaine, circ_d, 'circ_d' )
96     geompy.addToStudyInFather( geometrieSaine, long_p2, 'long_p2' )
97
98     # --- face extremite tube (EXTUBE)
99
100     facesIds = geompy.GetShapesOnPlaneIDs(geometrieSaine, geompy.ShapeType["FACE"], OZ, GEOM.ST_ON)
101     EXTUBE = geompy.CreateGroup(geometrieSaine, geompy.ShapeType["FACE"])
102     geompy.UnionIDs(EXTUBE, facesIds)
103     geompy.addToStudyInFather( geometrieSaine, EXTUBE, 'EXTUBE' )
104
105     # --- edge bord extremite tube (BORDTU)
106
107     edge1Ids = geompy.GetShapesOnPlaneIDs(geometrieSaine, geompy.ShapeType["EDGE"], OZ, GEOM.ST_ON)
108     edge2Ids = geompy.GetShapesOnCylinderIDs(geometrieSaine, geompy.ShapeType["EDGE"], OZ, de/2., GEOM.ST_ON)
109     edgesIds = []
110     for edge in edge1Ids:
111       if edge in edge2Ids:
112         edgesIds.append(edge)
113     BORDTU = geompy.CreateGroup(geometrieSaine, geompy.ShapeType["EDGE"])
114     geompy.UnionIDs(BORDTU, edgesIds)
115     geompy.addToStudyInFather( geometrieSaine, BORDTU, 'BORDTU' )
116
117     # --- face origine tube (CLGV)
118
119     pp2 = geompy.MakeTranslationVectorDistance(P2, Rotation_2, 10)
120     vec2 = geompy.MakeVector(P2, pp2)
121     #geompy.addToStudy(vec2, 'vec2')
122     facesIds = geompy.GetShapesOnPlaneIDs(geometrieSaine, geompy.ShapeType["FACE"], vec2, GEOM.ST_ON)
123     CLGV = geompy.CreateGroup(geometrieSaine, geompy.ShapeType["FACE"])
124     geompy.UnionIDs(CLGV, facesIds)
125     geompy.addToStudyInFather( geometrieSaine, CLGV, 'CLGV' )
126
127     # --- peau tube interieur (PEAUINT)
128
129     extru1 = geompy.MakePrismVecH(Disk_2, OZ, l_tube_p1)
130     revol1 = geompy.MakeRevolution(Disk_2, axe, angleCoude*math.pi/180.0)
131     rot1 = geompy.MakeRotation(Disk_2, axe, angleCoude*math.pi/180.0)
132     extru2 = geompy.MakePrismVecH(rot1, Rotation_2, -l_tube_p2)
133     interne = geompy.MakeFuse(extru1, revol1)
134     interne = geompy.MakeFuse(extru2, interne)
135     geompy.addToStudy(interne, 'interne')
136     facesIds = geompy.GetShapesOnShapeIDs(interne, geometrieSaine, geompy.ShapeType["FACE"], GEOM.ST_ONIN)
137     PEAUINT = geompy.CreateGroup(geometrieSaine, geompy.ShapeType["FACE"])
138     geompy.UnionIDs(PEAUINT, facesIds)
139     geompy.addToStudyInFather( geometrieSaine, PEAUINT, 'PEAUINT' )
140
141     # --- peau tube exterieur (PEAUEXT)
142
143     Disk_3 = geompy.MakeDiskPntVecR(centre, OZ, de/2. +epais)
144     couronne1 = geompy.MakeCut(Disk_3, Disk_1)
145     extru1 = geompy.MakePrismVecH(couronne1, OZ, l_tube_p1)
146     revol1 = geompy.MakeRevolution(couronne1, axe, angleCoude*math.pi/180.0)
147     rot1 = geompy.MakeRotation(couronne1, axe, angleCoude*math.pi/180.0)
148     extru2 = geompy.MakePrismVecH(rot1, Rotation_2, -l_tube_p2)
149     externe = geompy.MakeFuse(extru1, revol1)
150     externe = geompy.MakeFuse(extru2, externe)
151     geompy.addToStudy(externe, 'externe')
152     facesIds = geompy.GetShapesOnShapeIDs(externe, geometrieSaine, geompy.ShapeType["FACE"], GEOM.ST_ON)
153     PEAUEXT = geompy.CreateGroup(geometrieSaine, geompy.ShapeType["FACE"])
154     geompy.UnionIDs(PEAUEXT, facesIds)
155     geompy.addToStudyInFather( geometrieSaine, PEAUEXT, 'PEAUEXT' )
156
157     # --- solide sain
158
159     volIds = geompy.SubShapeAllIDs(geometrieSaine, geompy.ShapeType["SOLID"])
160     COUDE = geompy.CreateGroup(geometrieSaine, geompy.ShapeType["SOLID"])
161     geompy.UnionIDs(COUDE, volIds)
162     geompy.addToStudyInFather( geometrieSaine, COUDE, 'COUDSAIN' )
163
164     geometriesSaines = [geometrieSaine, long_p1, ep, long_coude, circ_g, circ_d, long_p2, P1, P2, EXTUBE, BORDTU, CLGV, PEAUINT, PEAUEXT, COUDE]
165
166     return geometriesSaines
167
168   # ---------------------------------------------------------------------------
169   def setParamMaillageSain(self):
170     self.meshParams = dict(n_long_p1    = 16,
171                            n_ep         = 3,
172                            n_long_coude = 15,
173                            n_circ_g     = 20,
174                            n_circ_d     = 20,
175                            n_long_p2    = 12)
176
177   # ---------------------------------------------------------------------------
178   def genereMaillageSain(self, geometriesSaines, meshParams):
179     logging.info("genereMaillageSain %s", self.nomCas)
180
181     geometrieSaine = geometriesSaines[0]
182     long_p1        = geometriesSaines[1]
183     ep             = geometriesSaines[2]
184     long_coude     = geometriesSaines[3]
185     circ_g         = geometriesSaines[4]
186     circ_d         = geometriesSaines[5]
187     long_p2        = geometriesSaines[6]
188     P1             = geometriesSaines[7]
189     P2             = geometriesSaines[8]
190     EXTUBE         = geometriesSaines[9]
191     BORDTU         = geometriesSaines[10]
192     CLGV           = geometriesSaines[11]
193     PEAUINT        = geometriesSaines[12]
194     PEAUEXT        = geometriesSaines[13]
195     COUDE          = geometriesSaines[14]
196
197     n_long_p1    = meshParams['n_long_p1']
198     n_ep         = meshParams['n_ep']
199     n_long_coude = meshParams['n_long_coude']
200     n_circ_g     = meshParams['n_circ_g']
201     n_circ_d     = meshParams['n_circ_d']
202     n_long_p2    = meshParams['n_long_p2']
203
204     maillageSain = smesh.Mesh(geometrieSaine)
205
206     algo3d = maillageSain.Hexahedron()
207     algo2d = maillageSain.Quadrangle()
208     smesh.SetName(algo3d, "algo3d_maillageSain")
209     smesh.SetName(algo2d, "algo2d_maillageSain")
210
211     algo1d_long_p1 = maillageSain.Segment(geom=long_p1)
212     hypo1d_long_p1 = algo1d_long_p1.NumberOfSegments(n_long_p1)
213     smesh.SetName(algo1d_long_p1, "algo1d_long_p1")
214     smesh.SetName(hypo1d_long_p1, "hypo1d_long_p1")
215
216     algo1d_ep = maillageSain.Segment(geom=ep)
217     hypo1d_ep = algo1d_ep.NumberOfSegments(n_ep)
218     smesh.SetName(algo1d_ep, "algo1d_ep")
219     smesh.SetName(hypo1d_ep, "hypo1d_ep")
220
221     algo1d_long_coude = maillageSain.Segment(geom=long_coude)
222     hypo1d_long_coude = algo1d_long_coude.NumberOfSegments(n_long_coude)
223     smesh.SetName(algo1d_long_coude, "algo1d_long_coude")
224     smesh.SetName(hypo1d_long_coude, "hypo1d_long_coude")
225
226     algo1d_circ_g = maillageSain.Segment(geom=circ_g)
227     hypo1d_circ_g = algo1d_circ_g.NumberOfSegments(n_circ_g)
228     smesh.SetName(algo1d_circ_g, "algo1d_circ_g")
229     smesh.SetName(hypo1d_circ_g, "hypo1d_circ_g")
230
231     algo1d_circ_d = maillageSain.Segment(geom=circ_d)
232     hypo1d_circ_d = algo1d_circ_d.NumberOfSegments(n_circ_d)
233     smesh.SetName(algo1d_circ_d, "algo1d_circ_d")
234     smesh.SetName(hypo1d_circ_d, "hypo1d_circ_d")
235
236     algo1d_long_p2 = maillageSain.Segment(geom=long_p2)
237     hypo1d_long_p2 = algo1d_long_p2.NumberOfSegments(n_long_p2)
238     smesh.SetName(algo1d_long_p2, "algo1d_long_p2")
239     smesh.SetName(hypo1d_long_p2, "hypo1d_long_p2")
240
241     isDone = maillageSain.Compute()
242
243     mp1 = maillageSain.GroupOnGeom(P1,'P1',SMESH.NODE)
244     mp2 = maillageSain.GroupOnGeom(P2,'P2',SMESH.NODE)
245     ext = maillageSain.GroupOnGeom(EXTUBE,'EXTUBE',SMESH.FACE)
246     btu = maillageSain.GroupOnGeom(BORDTU,'BORDTU',SMESH.EDGE)
247     clg = maillageSain.GroupOnGeom(CLGV,'CLGV',SMESH.FACE)
248     pei = maillageSain.GroupOnGeom(PEAUINT,'PEAUINT',SMESH.FACE)
249     pex = maillageSain.GroupOnGeom(PEAUEXT,'PEAUEXT',SMESH.FACE)
250     cou = maillageSain.GroupOnGeom(COUDE,'COUDSAIN',SMESH.VOLUME)
251
252     return [maillageSain, True] # True : maillage hexa
253
254   # ---------------------------------------------------------------------------
255   def setParamShapeFissure(self):
256     """
257     paramètres de la fissure
258     profondeur  : 0 < profondeur <= épaisseur
259     azimut      : entre 0 et 360°
260     alpha       : 0 < alpha < angleCoude
261     longueur    : <=2*profondeur ==> ellipse, >2*profondeur = fissure longue
262     lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
263     orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
264     externe     : True : fissure face externe, False : fissure face interne
265     """
266     logging.info("setParamShapeFissure %s", self.nomCas)
267     self.shapeFissureParams = dict(profondeur  = 10,
268                                    azimut      = 160,
269                                    alpha       = 20,
270                                    longueur    = 400,
271                                    orientation = 90,
272                                    lgInfluence = 0,
273                                    elliptique  = False,
274                                    externe     = True)
275
276   # ---------------------------------------------------------------------------
277   def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams):
278     logging.info("genereShapeFissure %s", self.nomCas)
279     logging.info("shapeFissureParams %s", shapeFissureParams)
280
281     angleCoude = geomParams['angleCoude']
282     r_cintr    = geomParams['r_cintr']
283     l_tube_p1  = geomParams['l_tube_p1']
284     l_tube_p2  = geomParams['l_tube_p2']
285     epais      = geomParams['epais']
286     de         = geomParams['de']
287
288     profondeur  = shapeFissureParams['profondeur']
289     azimut      = shapeFissureParams['azimut']
290     alpha       = shapeFissureParams['alpha']
291     longueur    = shapeFissureParams['longueur']
292     orientation = shapeFissureParams['orientation']
293     externe     = shapeFissureParams['externe']
294     lgInfluence = shapeFissureParams['lgInfluence']
295
296     azimut = -azimut # axe inverse / ASCOUF
297     axe = geompy.MakeTranslation(OY, -r_cintr, 0, -l_tube_p1)
298
299     if not lgInfluence:
300       lgInfluence = profondeur
301
302     if longueur > 2*profondeur:
303       self.fissureLongue=True
304     else:
305       self.fissureLongue=False
306
307     self.circonferentielle = False
308     self.longitudinale = False
309     if self.fissureLongue and (abs(orientation) < 45) :
310       self.longitudinale = True
311     elif self.fissureLongue:
312       self.circonferentielle = True
313
314     if self.circonferentielle:
315       if externe:
316         raybor = de/2.
317         rayint = raybor - profondeur
318         rayext = raybor + profondeur
319       else:
320         rayext = de/2. - epais
321         rayint = raybor + profondeur
322         rayext = raybor - profondeur
323       lgfond = longueur -2*profondeur
324       angle = lgfond/(2*raybor)
325       pb = geompy.MakeVertex(raybor, 0, 0)
326       pi = geompy.MakeVertex(rayint, 0, 0)
327       pe = geompy.MakeVertex(rayext, 0, 0)
328       pl = geompy.MakeVertex(raybor, profondeur, 0)
329       pr = geompy.MakeVertex(raybor, -profondeur, 0)
330       pil = geompy.MakeRotation(pi, OZ, angle)
331       pll = geompy.MakeRotation(pl, OZ, angle)
332       pel = geompy.MakeRotation(pe, OZ, angle)
333       pir = geompy.MakeRotation(pi, OZ, -angle)
334       prr = geompy.MakeRotation(pr, OZ, -angle)
335       per = geompy.MakeRotation(pe, OZ, -angle)
336       arcl = geompy.MakeArc(pil, pll, pel)
337       arcr = geompy.MakeArc(pir, prr, per)
338       arci = geompy.MakeArc(pil, pi, pir)
339       arce = geompy.MakeArc(pel, pe, per)
340       wire0 = geompy.MakeWire([arcr, arci, arcl])
341       cercle0 = geompy.MakeCircle(O, OY, profondeur/4.0)
342       cercle0 = geompy.MakeRotation(cercle0, OY, math.pi/2.0)
343       cercle0 = geompy.MakeTranslationTwoPoints(cercle0, O, pi)
344       facetube0 = geompy.MakeFaceWires([cercle0], 1)
345       facetubel = geompy.MakeRotation(facetube0, OZ, angle)
346       facetuber = geompy.MakeRotation(facetube0, OZ, -angle)
347       face0 = geompy.MakeFaceWires([arcl,arci, arce, arcr], 1)
348       plan0 = geompy.MakePlane(O, OZ, 10000)
349       geompy.addToStudy( face0, 'facefissOrig' )
350       face1 = geompy.MakeRotation(face0, OZ, azimut*math.pi/180.)
351       face2 = geompy.MakeTranslation(face1, 0, 0, -l_tube_p1)
352       facefiss = geompy.MakeRotation(face2, axe, alpha*math.pi/180.)
353       geompy.addToStudy( facefiss, 'facefissPlace' )
354       centre = geompy.MakeRotation(pb, OZ, azimut*math.pi/180.)
355       centre = geompy.MakeTranslation(centre, 0, 0, -l_tube_p1)
356       centre = geompy.MakeRotation(centre, axe, alpha*math.pi/180.)
357       geompy.addToStudy( centre, 'centrefissPlace' )
358       arcr = geompy.MakeRotation(arcr, OZ, azimut*math.pi/180.)
359       arcr = geompy.MakeTranslation(arcr, 0, 0, -l_tube_p1)
360       arcr = geompy.MakeRotation(arcr, axe, alpha*math.pi/180.)
361       arci = geompy.MakeRotation(arci, OZ, azimut*math.pi/180.)
362       arci = geompy.MakeTranslation(arci, 0, 0, -l_tube_p1)
363       arci = geompy.MakeRotation(arci, axe, alpha*math.pi/180.)
364       arcl = geompy.MakeRotation(arcl, OZ, azimut*math.pi/180.)
365       arcl = geompy.MakeTranslation(arcl, 0, 0, -l_tube_p1)
366       arcl = geompy.MakeRotation(arcl, axe, alpha*math.pi/180.)
367       wiretube = geompy.MakeRotation(wire0, OZ, azimut*math.pi/180.)
368       wiretube = geompy.MakeTranslation(wiretube, 0, 0, -l_tube_p1)
369       wiretube = geompy.MakeRotation(wiretube, axe, alpha*math.pi/180.)
370       geompy.addToStudy(wiretube, 'wiretubePlace' )
371       facetubel = geompy.MakeRotation(facetubel, OZ, azimut*math.pi/180.)
372       facetubel = geompy.MakeTranslation(facetubel, 0, 0, -l_tube_p1)
373       facetubel = geompy.MakeRotation(facetubel, axe, alpha*math.pi/180.)
374       geompy.addToStudy(facetubel, 'facetubeGauche' )
375       facetuber = geompy.MakeRotation(facetuber, OZ, azimut*math.pi/180.)
376       facetuber = geompy.MakeTranslation(facetuber, 0, 0, -l_tube_p1)
377       facetuber = geompy.MakeRotation(facetuber, axe, alpha*math.pi/180.)
378       geompy.addToStudy(facetuber, 'facetubeDroit' )
379       planfiss = geompy.MakeRotation(plan0, OZ, azimut*math.pi/180.)
380       planfiss = geompy.MakeTranslation(planfiss, 0, 0, -l_tube_p1)
381       planfiss = geompy.MakeRotation(planfiss, axe, alpha*math.pi/180.)
382       geompy.addToStudy(planfiss, 'planfissPlace' )
383       pipefissl = geompy.MakePipe(facetubel, arcl)
384       pipefissi = geompy.MakePipe(facetubel, arci)
385       pipefissr = geompy.MakePipe(facetuber, arcr)
386       pipefiss = geompy.MakePartition([pipefissl, pipefissi, pipefissr], [planfiss, wiretube], [], [], geompy.ShapeType["SOLID"], 0, [], 0)
387       geompy.addToStudy(pipefiss, 'pipefissPlace' )
388
389
390     elif self.longitudinale:
391       if externe:
392         raybor = r_cintr + de/2.
393         rayint = raybor - profondeur
394         rayext = raybor + profondeur
395       else:
396         rayext = r_cintr + de/2. - epais
397         rayint = raybor + profondeur
398         rayext = raybor - profondeur
399       lgfond = longueur -2*profondeur
400       angle = lgfond/(2*raybor)
401       pb = geompy.MakeVertex(-raybor, 0, 0)
402       pi = geompy.MakeVertex(-rayint, 0, 0)
403       pe = geompy.MakeVertex(-rayext, 0, 0)
404       pl = geompy.MakeVertex(-raybor, 0, -profondeur)
405       pr = geompy.MakeVertex(-raybor, 0, profondeur)
406       pil = geompy.MakeRotation(pi, OY, -angle)
407       pll = geompy.MakeRotation(pl, OY, -angle)
408       pel = geompy.MakeRotation(pe, OY, -angle)
409       pir = geompy.MakeRotation(pi, OY, angle)
410       prr = geompy.MakeRotation(pr, OY, angle)
411       per = geompy.MakeRotation(pe, OY, angle)
412       arcl = geompy.MakeArc(pil, pll, pel)
413       arcr = geompy.MakeArc(pir, prr, per)
414       arci = geompy.MakeArc(pil, pi, pir)
415       arce = geompy.MakeArc(pel, pe, per)
416       geompy.addToStudy( arcl, 'arcl' )
417       geompy.addToStudy( arcr, 'arcr' )
418       geompy.addToStudy( arci, 'arci' )
419       geompy.addToStudy( arce, 'arce' )
420       wire0 = geompy.MakeWire([arcr, arci, arcl])
421       cercle0 = geompy.MakeCircle(O, OZ, profondeur/4.0)
422       #cercle0 = geompy.MakeRotation(cercle0, OZ, math.pi/2.0)
423       cercle0 = geompy.MakeTranslationTwoPoints(cercle0, O, pi)
424       geompy.addToStudy( cercle0, 'cercle0' )
425       facetube0 = geompy.MakeFaceWires([cercle0], 1)
426       facetubel = geompy.MakeRotation(facetube0, OY, -angle)
427       facetuber = geompy.MakeRotation(facetube0, OY, angle)
428       geompy.addToStudy(facetubel , 'facetubel' )
429       geompy.addToStudy( facetuber, 'facetuber' )
430       face0 = geompy.MakeFaceWires([arcl,arci, arce, arcr], 1)
431       plan0 = geompy.MakePlane(O, OY, 10000)
432       geompy.addToStudy( face0, 'facefissOrig' )
433       facefiss = geompy.MakeRotation(face0, OY, alpha*math.pi/180.)
434       geompy.addToStudy( facefiss, 'facefissPlace' )
435       centre = geompy.MakeRotation(pb, OY, alpha*math.pi/180.)
436       geompy.addToStudy( centre, 'centrefissPlace' )
437       arcr = geompy.MakeRotation(arcr, OY, alpha*math.pi/180.)
438       arci = geompy.MakeRotation(arci, OY, alpha*math.pi/180.)
439       arcl = geompy.MakeRotation(arcl, OY, alpha*math.pi/180.)
440       wiretube = geompy.MakeRotation(wire0, OY, alpha*math.pi/180.)
441       geompy.addToStudy(wiretube, 'wiretubePlace' )
442       facetubel = geompy.MakeRotation(facetubel, OY, alpha*math.pi/180.)
443       geompy.addToStudy(facetubel, 'facetubeGauche' )
444       facetuber = geompy.MakeRotation(facetuber, OY, alpha*math.pi/180.)
445       geompy.addToStudy(facetubel, 'facetubeDroit' )
446       planfiss = geompy.MakeRotation(plan0, OY, alpha*math.pi/180.)
447       geompy.addToStudy(planfiss, 'planfissPlace' )
448       pipefissl = geompy.MakePipe(facetubel, arcl)
449       pipefissi = geompy.MakePipe(facetubel, arci)
450       pipefissr = geompy.MakePipe(facetuber, arcr)
451       pipefiss = geompy.MakePartition([pipefissl, pipefissi, pipefissr], [planfiss, wiretube], [], [], geompy.ShapeType["SOLID"], 0, [], 0)
452       geompy.addToStudy(pipefiss, 'pipefissPlace' )
453     else:
454       pass
455
456     coordsNoeudsFissure = genereMeshCalculZoneDefaut(facefiss, 5 ,10)
457
458     return [facefiss, centre, lgInfluence, coordsNoeudsFissure, wiretube, facetubel, facetuber, planfiss, pipefiss]
459
460   # ---------------------------------------------------------------------------
461   def setParamMaillageFissure(self):
462     self.maillageFissureParams = dict(nomRep        = '.',
463                                       nomFicSain    = self.nomCas,
464                                       nomFicFissure = 'fissure_' + self.nomCas,
465                                       nbsegExt      = 5,
466                                       nbsegGen      = 25,
467                                       nbsegRad      = 5,
468                                       scaleRad      = 4,
469                                       nbsegCercle   = 6,
470                                       nbsegFis      = 20,
471                                       lensegEllipso = 1.0)
472
473   # ---------------------------------------------------------------------------
474   def genereZoneDefaut(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams):
475     elementsDefaut = creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams)
476     return elementsDefaut
477
478   # ---------------------------------------------------------------------------
479   def genereMaillageFissure(self, geometriesSaines, maillagesSains,
480                             shapesFissure, shapeFissureParams,
481                             maillageFissureParams, elementsDefaut, step):
482     maillageFissure = insereFissureLongue(geometriesSaines, maillagesSains,
483                                           shapesFissure, shapeFissureParams,
484                                           maillageFissureParams, elementsDefaut, step)
485     return maillageFissure
486
487   # ---------------------------------------------------------------------------
488   def setReferencesMaillageFissure(self):
489     self.referencesMaillageFissure = dict(Entity_Node            = 77491,
490                                           Entity_Quad_Edge       = 1006,
491                                           Entity_Quad_Triangle   = 2412,
492                                           Entity_Quad_Quadrangle = 6710,
493                                           Entity_Quad_Tetra      = 20853,
494                                           Entity_Quad_Hexa       = 8656,
495                                           Entity_Quad_Penta      = 1176,
496                                           Entity_Quad_Pyramid    = 1232)
497