Salome HOME
Merge from V7_3_BR (09/01/2014)
[modules/smesh.git] / src / Tools / blocFissure / CasTests / eprouvetteDroite.py
1 # -*- coding: utf-8 -*-
2
3 import os
4 from blocFissure import gmu
5 from blocFissure.gmu.geomsmesh import geompy, smesh
6
7 import os
8 import math
9 import GEOM
10 import SALOMEDS
11 import SMESH
12 #import StdMeshers
13 #import GHS3DPlugin
14 #import NETGENPlugin
15 import logging
16
17 from blocFissure.gmu.fissureGenerique import fissureGenerique
18
19 from blocFissure.gmu.triedreBase import triedreBase
20 from blocFissure.gmu.genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut
21 from blocFissure.gmu.creeZoneDefautDansObjetSain import creeZoneDefautDansObjetSain
22 from blocFissure.gmu.insereFissureGenerale import insereFissureGenerale
23
24 O, OX, OY, OZ = triedreBase()
25
26 class eprouvetteDroite(fissureGenerique):
27   """
28   problème de fissure plane coupant 3 faces (éprouvette), débouches normaux, objet plan
29   """
30
31   nomProbleme = "eprouvetteDroite"
32
33   # ---------------------------------------------------------------------------
34   def genereMaillageSain(self, geometriesSaines, meshParams):
35     logging.info("genereMaillageSain %s", self.nomCas)
36
37     ([objetSain], status) = smesh.CreateMeshesFromMED(os.path.join(gmu.pathBloc, "materielCasTests/eprouvetteDroite.med"))
38     smesh.SetName(objetSain.GetMesh(), 'objetSain')
39
40     return [objetSain, True] # True : maillage hexa
41
42   # ---------------------------------------------------------------------------
43   def setParamShapeFissure(self):
44     """
45     paramètres de la fissure pour méthode insereFissureGenerale
46     lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage)
47     rayonPipe   : le rayon du pile maillé en hexa autour du fond de fissure
48     convexe     : optionnel True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne
49     pointIn_x   : optionnel coordonnée x d'un point dans le solide sain (pour orienter la face)
50     """
51     logging.info("setParamShapeFissure %s", self.nomCas)
52     self.shapeFissureParams = dict(lgInfluence = 30,
53                                    rayonPipe   = 10,
54                                    lenSegPipe  = 6)
55
56   # ---------------------------------------------------------------------------
57   def genereShapeFissure( self, geometriesSaines, geomParams, shapeFissureParams):
58     logging.info("genereShapeFissure %s", self.nomCas)
59
60     lgInfluence = shapeFissureParams['lgInfluence']
61
62     shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteDroiteFiss_1.brep"), "BREP")
63     fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"])
64     geompy.UnionIDs(fondFiss, [8])
65     geompy.addToStudy( shellFiss, 'shellFiss' )
66     geompy.addToStudyInFather( shellFiss, fondFiss, 'fondFiss' )
67
68
69     coordsNoeudsFissure = genereMeshCalculZoneDefaut(shellFiss, 5 ,10)
70
71     centre = None
72     return [shellFiss, centre, lgInfluence, coordsNoeudsFissure, fondFiss]
73
74   # ---------------------------------------------------------------------------
75   def setParamMaillageFissure(self):
76     self.maillageFissureParams = dict(nomRep           = '.',
77                                       nomFicSain       = self.nomCas,
78                                       nomFicFissure    = 'fissure_' + self.nomCas,
79                                       nbsegRad         = 5,
80                                       nbsegCercle      = 8,
81                                       areteFaceFissure = 15)
82
83   # ---------------------------------------------------------------------------
84   def genereZoneDefaut(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams):
85     elementsDefaut = creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams)
86     return elementsDefaut
87
88   # ---------------------------------------------------------------------------
89   def genereMaillageFissure(self, geometriesSaines, maillagesSains,
90                             shapesFissure, shapeFissureParams,
91                             maillageFissureParams, elementsDefaut, step):
92     maillageFissure = insereFissureGenerale(maillagesSains,
93                                             shapesFissure, shapeFissureParams,
94                                             maillageFissureParams, elementsDefaut, step)
95     return maillageFissure
96
97   # ---------------------------------------------------------------------------
98   def setReferencesMaillageFissure(self):
99     self.referencesMaillageFissure = dict(Entity_Quad_Pyramid    = 368,
100                                           Entity_Quad_Triangle   = 798,
101                                           Entity_Quad_Edge       = 491,
102                                           Entity_Quad_Penta      = 88,
103                                           Entity_Quad_Hexa       = 9692,
104                                           Entity_Node            = 52652,
105                                           Entity_Quad_Tetra      = 5093,
106                                           Entity_Quad_Quadrangle = 3750)
107