Salome HOME
Merge from V7_3_BR (09/01/2014)
[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     cercle1 = geompy.MakeCircle(centre, OZ, de/2.)
144     extru1 = geompy.MakePrismVecH(cercle1, OZ, l_tube_p1)
145     revol1 = geompy.MakeRevolution(cercle1, axe, angleCoude*math.pi/180.0)
146     rot1 = geompy.MakeRotation(cercle1, axe, angleCoude*math.pi/180.0)
147     extru2 = geompy.MakePrismVecH(rot1, Rotation_2, -l_tube_p2)
148     externe = geompy.MakeFuse(extru1, revol1)
149     externe = geompy.MakeFuse(extru2, externe)
150     geompy.addToStudy(externe, 'externe')
151     facesIds = geompy.GetShapesOnShapeIDs(externe, geometrieSaine, geompy.ShapeType["FACE"], GEOM.ST_ON)
152     PEAUEXT = geompy.CreateGroup(geometrieSaine, geompy.ShapeType["FACE"])
153     geompy.UnionIDs(PEAUEXT, facesIds)
154     geompy.addToStudyInFather( geometrieSaine, PEAUEXT, 'PEAUEXT' )
155
156     # --- solide sain
157
158     volIds = geompy.SubShapeAllIDs(geometrieSaine, geompy.ShapeType["SOLID"])
159     COUDE = geompy.CreateGroup(geometrieSaine, geompy.ShapeType["SOLID"])
160     geompy.UnionIDs(COUDE, volIds)
161     geompy.addToStudyInFather( geometrieSaine, COUDE, 'COUDSAIN' )
162
163     geometriesSaines = [geometrieSaine, long_p1, ep, long_coude, circ_g, circ_d, long_p2, P1, P2, EXTUBE, BORDTU, CLGV, PEAUINT, PEAUEXT, COUDE]
164
165     return geometriesSaines
166
167   # ---------------------------------------------------------------------------
168   def setParamMaillageSain(self):
169     self.meshParams = dict(n_long_p1    = 16,
170                            n_ep         = 3,
171                            n_long_coude = 15,
172                            n_circ_g     = 20,
173                            n_circ_d     = 20,
174                            n_long_p2    = 12)
175
176   # ---------------------------------------------------------------------------
177   def genereMaillageSain(self, geometriesSaines, meshParams):
178     logging.info("genereMaillageSain %s", self.nomCas)
179
180     geometrieSaine = geometriesSaines[0]
181     long_p1        = geometriesSaines[1]
182     ep             = geometriesSaines[2]
183     long_coude     = geometriesSaines[3]
184     circ_g         = geometriesSaines[4]
185     circ_d         = geometriesSaines[5]
186     long_p2        = geometriesSaines[6]
187     P1             = geometriesSaines[7]
188     P2             = geometriesSaines[8]
189     EXTUBE         = geometriesSaines[9]
190     BORDTU         = geometriesSaines[10]
191     CLGV           = geometriesSaines[11]
192     PEAUINT        = geometriesSaines[12]
193     PEAUEXT        = geometriesSaines[13]
194     COUDE          = geometriesSaines[14]
195
196     n_long_p1    = meshParams['n_long_p1']
197     n_ep         = meshParams['n_ep']
198     n_long_coude = meshParams['n_long_coude']
199     n_circ_g     = meshParams['n_circ_g']
200     n_circ_d     = meshParams['n_circ_d']
201     n_long_p2    = meshParams['n_long_p2']
202
203     maillageSain = smesh.Mesh(geometrieSaine)
204
205     algo3d = maillageSain.Hexahedron()
206     algo2d = maillageSain.Quadrangle()
207     smesh.SetName(algo3d, "algo3d_maillageSain")
208     smesh.SetName(algo2d, "algo2d_maillageSain")
209
210     algo1d_long_p1 = maillageSain.Segment(geom=long_p1)
211     hypo1d_long_p1 = algo1d_long_p1.NumberOfSegments(n_long_p1)
212     smesh.SetName(algo1d_long_p1, "algo1d_long_p1")
213     smesh.SetName(hypo1d_long_p1, "hypo1d_long_p1")
214
215     algo1d_ep = maillageSain.Segment(geom=ep)
216     hypo1d_ep = algo1d_ep.NumberOfSegments(n_ep)
217     smesh.SetName(algo1d_ep, "algo1d_ep")
218     smesh.SetName(hypo1d_ep, "hypo1d_ep")
219
220     algo1d_long_coude = maillageSain.Segment(geom=long_coude)
221     hypo1d_long_coude = algo1d_long_coude.NumberOfSegments(n_long_coude)
222     smesh.SetName(algo1d_long_coude, "algo1d_long_coude")
223     smesh.SetName(hypo1d_long_coude, "hypo1d_long_coude")
224
225     algo1d_circ_g = maillageSain.Segment(geom=circ_g)
226     hypo1d_circ_g = algo1d_circ_g.NumberOfSegments(n_circ_g)
227     smesh.SetName(algo1d_circ_g, "algo1d_circ_g")
228     smesh.SetName(hypo1d_circ_g, "hypo1d_circ_g")
229
230     algo1d_circ_d = maillageSain.Segment(geom=circ_d)
231     hypo1d_circ_d = algo1d_circ_d.NumberOfSegments(n_circ_d)
232     smesh.SetName(algo1d_circ_d, "algo1d_circ_d")
233     smesh.SetName(hypo1d_circ_d, "hypo1d_circ_d")
234
235     algo1d_long_p2 = maillageSain.Segment(geom=long_p2)
236     hypo1d_long_p2 = algo1d_long_p2.NumberOfSegments(n_long_p2)
237     smesh.SetName(algo1d_long_p2, "algo1d_long_p2")
238     smesh.SetName(hypo1d_long_p2, "hypo1d_long_p2")
239
240     isDone = maillageSain.Compute()
241
242     mp1 = maillageSain.GroupOnGeom(P1,'P1',SMESH.NODE)
243     mp2 = maillageSain.GroupOnGeom(P2,'P2',SMESH.NODE)
244     ext = maillageSain.GroupOnGeom(EXTUBE,'EXTUBE',SMESH.FACE)
245     btu = maillageSain.GroupOnGeom(BORDTU,'BORDTU',SMESH.EDGE)
246     clg = maillageSain.GroupOnGeom(CLGV,'CLGV',SMESH.FACE)
247     pei = maillageSain.GroupOnGeom(PEAUINT,'PEAUINT',SMESH.FACE)
248     pex = maillageSain.GroupOnGeom(PEAUEXT,'PEAUEXT',SMESH.FACE)
249     cou = maillageSain.GroupOnGeom(COUDE,'COUDSAIN',SMESH.VOLUME)
250
251     return [maillageSain, True] # True : maillage hexa
252
253   # ---------------------------------------------------------------------------
254   def setParamShapeFissure(self):
255     """
256     paramètres de la fissure
257     profondeur  : 0 < profondeur <= épaisseur
258     azimut      : entre 0 et 360°
259     alpha       : 0 < alpha < angleCoude
260     longueur    : <=2*profondeur ==> ellipse, >2*profondeur = fissure longue
261     lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
262     orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
263     externe     : True : fissure face externe, False : fissure face interne
264     """
265     logging.info("setParamShapeFissure %s", self.nomCas)
266     self.shapeFissureParams = dict(profondeur  = 10,
267                                    azimut      = 160,
268                                    alpha       = 20,
269                                    longueur    = 400,
270                                    orientation = 90,
271                                    lgInfluence = 0,
272                                    elliptique  = False,
273                                    externe     = True)
274
275   # ---------------------------------------------------------------------------
276   def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams):
277     logging.info("genereShapeFissure %s", self.nomCas)
278     logging.info("shapeFissureParams %s", shapeFissureParams)
279
280     angleCoude = geomParams['angleCoude']
281     r_cintr    = geomParams['r_cintr']
282     l_tube_p1  = geomParams['l_tube_p1']
283     l_tube_p2  = geomParams['l_tube_p2']
284     epais      = geomParams['epais']
285     de         = geomParams['de']
286
287     profondeur  = shapeFissureParams['profondeur']
288     azimut      = shapeFissureParams['azimut']
289     alpha       = shapeFissureParams['alpha']
290     longueur    = shapeFissureParams['longueur']
291     orientation = shapeFissureParams['orientation']
292     externe     = shapeFissureParams['externe']
293     lgInfluence = shapeFissureParams['lgInfluence']
294
295     azimut = -azimut # axe inverse / ASCOUF
296     axe = geompy.MakeTranslation(OY, -r_cintr, 0, -l_tube_p1)
297     
298     if not lgInfluence:
299       lgInfluence = profondeur
300
301     if longueur > 2*profondeur:
302       self.fissureLongue=True
303     else:
304       self.fissureLongue=False
305
306     self.circonferentielle = False
307     self.longitudinale = False
308     if self.fissureLongue and (abs(orientation) < 45) :
309       self.longitudinale = True
310     elif self.fissureLongue:
311       self.circonferentielle = True
312
313     if self.circonferentielle:
314       if externe:
315         raybor = de/2.
316         rayint = raybor - profondeur
317         rayext = raybor + profondeur
318       else:
319         rayext = de/2. - epais
320         rayint = raybor + profondeur
321         rayext = raybor - profondeur
322       lgfond = longueur -2*profondeur
323       angle = lgfond/(2*raybor)
324       pb = geompy.MakeVertex(raybor, 0, 0)
325       pi = geompy.MakeVertex(rayint, 0, 0)
326       pe = geompy.MakeVertex(rayext, 0, 0)
327       pl = geompy.MakeVertex(raybor, profondeur, 0)
328       pr = geompy.MakeVertex(raybor, -profondeur, 0)
329       pil = geompy.MakeRotation(pi, OZ, angle)
330       pll = geompy.MakeRotation(pl, OZ, angle)
331       pel = geompy.MakeRotation(pe, OZ, angle)
332       pir = geompy.MakeRotation(pi, OZ, -angle)
333       prr = geompy.MakeRotation(pr, OZ, -angle)
334       per = geompy.MakeRotation(pe, OZ, -angle)
335       arcl = geompy.MakeArc(pil, pll, pel)
336       arcr = geompy.MakeArc(pir, prr, per)
337       arci = geompy.MakeArc(pil, pi, pir)
338       arce = geompy.MakeArc(pel, pe, per)
339       wire0 = geompy.MakeWire([arcr, arci, arcl])
340       cercle0 = geompy.MakeCircle(O, OY, profondeur/4.0)
341       cercle0 = geompy.MakeRotation(cercle0, OY, math.pi/2.0)
342       cercle0 = geompy.MakeTranslationTwoPoints(cercle0, O, pi)
343       facetube0 = geompy.MakeFaceWires([cercle0], 1)
344       facetubel = geompy.MakeRotation(facetube0, OZ, angle)
345       facetuber = geompy.MakeRotation(facetube0, OZ, -angle)
346       face0 = geompy.MakeFaceWires([arcl,arci, arce, arcr], 1)
347       plan0 = geompy.MakePlane(O, OZ, 10000)
348       geompy.addToStudy( face0, 'facefissOrig' )
349       face1 = geompy.MakeRotation(face0, OZ, azimut*math.pi/180.)
350       face2 = geompy.MakeTranslation(face1, 0, 0, -l_tube_p1)
351       facefiss = geompy.MakeRotation(face2, axe, alpha*math.pi/180.)
352       geompy.addToStudy( facefiss, 'facefissPlace' )
353       centre = geompy.MakeRotation(pb, OZ, azimut*math.pi/180.)
354       centre = geompy.MakeTranslation(centre, 0, 0, -l_tube_p1)
355       centre = geompy.MakeRotation(centre, axe, alpha*math.pi/180.)
356       geompy.addToStudy( centre, 'centrefissPlace' )
357       arcr = geompy.MakeRotation(arcr, OZ, azimut*math.pi/180.)
358       arcr = geompy.MakeTranslation(arcr, 0, 0, -l_tube_p1)
359       arcr = geompy.MakeRotation(arcr, axe, alpha*math.pi/180.)
360       arci = geompy.MakeRotation(arci, OZ, azimut*math.pi/180.)
361       arci = geompy.MakeTranslation(arci, 0, 0, -l_tube_p1)
362       arci = geompy.MakeRotation(arci, axe, alpha*math.pi/180.)
363       arcl = geompy.MakeRotation(arcl, OZ, azimut*math.pi/180.)
364       arcl = geompy.MakeTranslation(arcl, 0, 0, -l_tube_p1)
365       arcl = geompy.MakeRotation(arcl, axe, alpha*math.pi/180.)
366       wiretube = geompy.MakeRotation(wire0, OZ, azimut*math.pi/180.)
367       wiretube = geompy.MakeTranslation(wiretube, 0, 0, -l_tube_p1)
368       wiretube = geompy.MakeRotation(wiretube, axe, alpha*math.pi/180.)
369       geompy.addToStudy(wiretube, 'wiretubePlace' )
370       facetubel = geompy.MakeRotation(facetubel, OZ, azimut*math.pi/180.)
371       facetubel = geompy.MakeTranslation(facetubel, 0, 0, -l_tube_p1)
372       facetubel = geompy.MakeRotation(facetubel, axe, alpha*math.pi/180.)
373       geompy.addToStudy(facetubel, 'facetubeGauche' )
374       facetuber = geompy.MakeRotation(facetuber, OZ, azimut*math.pi/180.)
375       facetuber = geompy.MakeTranslation(facetuber, 0, 0, -l_tube_p1)
376       facetuber = geompy.MakeRotation(facetuber, axe, alpha*math.pi/180.)
377       geompy.addToStudy(facetuber, 'facetubeDroit' )
378       planfiss = geompy.MakeRotation(plan0, OZ, azimut*math.pi/180.)
379       planfiss = geompy.MakeTranslation(planfiss, 0, 0, -l_tube_p1)
380       planfiss = geompy.MakeRotation(planfiss, axe, alpha*math.pi/180.)
381       geompy.addToStudy(planfiss, 'planfissPlace' )
382       pipefissl = geompy.MakePipe(facetubel, arcl)
383       pipefissi = geompy.MakePipe(facetubel, arci)
384       pipefissr = geompy.MakePipe(facetuber, arcr)
385       pipefiss = geompy.MakePartition([pipefissl, pipefissi, pipefissr], [planfiss, wiretube], [], [], geompy.ShapeType["SOLID"], 0, [], 0)
386       geompy.addToStudy(pipefiss, 'pipefissPlace' )
387
388
389     elif self.longitudinale:
390       if externe:
391         raybor = r_cintr + de/2.
392         rayint = raybor - profondeur
393         rayext = raybor + profondeur
394       else:
395         rayext = r_cintr + de/2. - epais
396         rayint = raybor + profondeur
397         rayext = raybor - profondeur
398       lgfond = longueur -2*profondeur
399       angle = lgfond/(2*raybor)
400       pb = geompy.MakeVertex(-raybor, 0, 0)
401       pi = geompy.MakeVertex(-rayint, 0, 0)
402       pe = geompy.MakeVertex(-rayext, 0, 0)
403       pl = geompy.MakeVertex(-raybor, 0, -profondeur)
404       pr = geompy.MakeVertex(-raybor, 0, profondeur)
405       pil = geompy.MakeRotation(pi, OY, -angle)
406       pll = geompy.MakeRotation(pl, OY, -angle)
407       pel = geompy.MakeRotation(pe, OY, -angle)
408       pir = geompy.MakeRotation(pi, OY, angle)
409       prr = geompy.MakeRotation(pr, OY, angle)
410       per = geompy.MakeRotation(pe, OY, angle)
411       arcl = geompy.MakeArc(pil, pll, pel)
412       arcr = geompy.MakeArc(pir, prr, per)
413       arci = geompy.MakeArc(pil, pi, pir)
414       arce = geompy.MakeArc(pel, pe, per)
415       geompy.addToStudy( arcl, 'arcl' )
416       geompy.addToStudy( arcr, 'arcr' )
417       geompy.addToStudy( arci, 'arci' )
418       geompy.addToStudy( arce, 'arce' )
419       wire0 = geompy.MakeWire([arcr, arci, arcl])
420       cercle0 = geompy.MakeCircle(O, OZ, profondeur/4.0)
421       #cercle0 = geompy.MakeRotation(cercle0, OZ, math.pi/2.0)
422       cercle0 = geompy.MakeTranslationTwoPoints(cercle0, O, pi)
423       geompy.addToStudy( cercle0, 'cercle0' )
424       facetube0 = geompy.MakeFaceWires([cercle0], 1)
425       facetubel = geompy.MakeRotation(facetube0, OY, -angle)
426       facetuber = geompy.MakeRotation(facetube0, OY, angle)
427       geompy.addToStudy(facetubel , 'facetubel' )
428       geompy.addToStudy( facetuber, 'facetuber' )
429       face0 = geompy.MakeFaceWires([arcl,arci, arce, arcr], 1)
430       plan0 = geompy.MakePlane(O, OY, 10000)
431       geompy.addToStudy( face0, 'facefissOrig' )
432       facefiss = geompy.MakeRotation(face0, OY, alpha*math.pi/180.)
433       geompy.addToStudy( facefiss, 'facefissPlace' )
434       centre = geompy.MakeRotation(pb, OY, alpha*math.pi/180.)
435       geompy.addToStudy( centre, 'centrefissPlace' )
436       arcr = geompy.MakeRotation(arcr, OY, alpha*math.pi/180.)
437       arci = geompy.MakeRotation(arci, OY, alpha*math.pi/180.)
438       arcl = geompy.MakeRotation(arcl, OY, alpha*math.pi/180.)
439       wiretube = geompy.MakeRotation(wire0, OY, alpha*math.pi/180.)
440       geompy.addToStudy(wiretube, 'wiretubePlace' )
441       facetubel = geompy.MakeRotation(facetubel, OY, alpha*math.pi/180.)
442       geompy.addToStudy(facetubel, 'facetubeGauche' )
443       facetuber = geompy.MakeRotation(facetuber, OY, alpha*math.pi/180.)
444       geompy.addToStudy(facetubel, 'facetubeDroit' )
445       planfiss = geompy.MakeRotation(plan0, OY, alpha*math.pi/180.)
446       geompy.addToStudy(planfiss, 'planfissPlace' )
447       pipefissl = geompy.MakePipe(facetubel, arcl)
448       pipefissi = geompy.MakePipe(facetubel, arci)
449       pipefissr = geompy.MakePipe(facetuber, arcr)
450       pipefiss = geompy.MakePartition([pipefissl, pipefissi, pipefissr], [planfiss, wiretube], [], [], geompy.ShapeType["SOLID"], 0, [], 0)
451       geompy.addToStudy(pipefiss, 'pipefissPlace' )
452     else:
453       pass
454
455     coordsNoeudsFissure = genereMeshCalculZoneDefaut(facefiss, 5 ,10)
456
457     return [facefiss, centre, lgInfluence, coordsNoeudsFissure, wiretube, facetubel, facetuber, planfiss, pipefiss]
458
459   # ---------------------------------------------------------------------------
460   def setParamMaillageFissure(self):
461     self.maillageFissureParams = dict(nomRep        = '.',
462                                       nomFicSain    = self.nomCas,
463                                       nomFicFissure = 'fissure_' + self.nomCas,
464                                       nbsegExt      = 5,
465                                       nbsegGen      = 25,
466                                       nbsegRad      = 5,
467                                       scaleRad      = 4,
468                                       nbsegCercle   = 6,
469                                       nbsegFis      = 20,
470                                       lensegEllipso = 1.0)
471
472   # ---------------------------------------------------------------------------
473   def genereZoneDefaut(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams):
474     elementsDefaut = creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams)
475     return elementsDefaut
476
477   # ---------------------------------------------------------------------------
478   def genereMaillageFissure(self, geometriesSaines, maillagesSains,
479                             shapesFissure, shapeFissureParams,
480                             maillageFissureParams, elementsDefaut, step):
481     maillageFissure = insereFissureLongue(geometriesSaines, maillagesSains,
482                                           shapesFissure, shapeFissureParams,
483                                           maillageFissureParams, elementsDefaut, step)
484     return maillageFissure
485
486   # ---------------------------------------------------------------------------
487   def setReferencesMaillageFissure(self):
488     self.referencesMaillageFissure = dict(Entity_Node            = 77491,
489                                           Entity_Quad_Edge       = 1006,
490                                           Entity_Quad_Triangle   = 2412,
491                                           Entity_Quad_Quadrangle = 6710,
492                                           Entity_Quad_Tetra      = 20853,
493                                           Entity_Quad_Hexa       = 8656,
494                                           Entity_Quad_Penta      = 1176,
495                                           Entity_Quad_Pyramid    = 1232)
496