Salome HOME
f053e93bfeba254e9dd66f8ba41192f3750e7105
[modules/smesh.git] / src / Tools / blocFissure / gmu / fissureGenerique.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 """fissureGenerique"""
21
22 import logging
23
24 from blocFissure import gmu
25 from .initEtude import initEtude
26 from .getStatsMaillageFissure import getStatsMaillageFissure
27
28 class fissureGenerique(object):
29   """classe générique problème fissure:
30
31   génération géométrie et maillage sain
32   définition et positionnement d'une fissure
33   génération d'un bloc défaut inséré dans le maillage sain
34   """
35
36   nomProbleme = "fissureGenerique"
37   geomParams = dict()
38   meshParams = dict()
39   shapeFissureParams = dict()
40   maillageFissureParams = dict()
41
42   def __init__(self, numeroCas):
43     initEtude()
44     self.numeroCas = numeroCas
45     self.nomCas = self.nomProbleme +"_%d"%(self.numeroCas)
46     self.fissureLongue = False
47     self.referencesMaillageFissure = None
48
49   def setParamGeometrieSaine(self):
50     """setParamGeometrieSaine"""
51     self.geomParams = dict()
52
53   def genereGeometrieSaine(self, geomParams):
54     """genereGeometrieSaine"""
55     geometriesSaines = [None]
56     return geometriesSaines
57
58   def setParamMaillageSain(self):
59     """setParamMaillageSain"""
60     self.meshParams = dict()
61
62   def genereMaillageSain(self, geometriesSaines, meshParams):
63     """genereMaillageSain"""
64     maillagesSains = [None]
65     return maillagesSains
66
67   def setParamShapeFissure(self):
68     """setParamShapeFissure"""
69     self.shapeFissureParams = dict()
70
71   def genereShapeFissure(self, geometriesSaines, geomParams, shapeFissureParams, mailleur="MeshGems"):
72     """genereShapeFissure"""
73     shapesFissure = [None]
74     return shapesFissure
75
76   def setParamMaillageFissure(self):
77     """setParamMaillageFissure"""
78     self.maillageFissureParams = dict()
79
80   def genereZoneDefaut(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams):
81     """genereZoneDefaut"""
82     elementsDefaut = [None]
83     return elementsDefaut
84
85   def genereMaillageFissure(self, geometriesSaines, maillagesSains, \
86                                   shapesFissure, shapeFissureParams, \
87                                   maillageFissureParams, elementsDefaut, step, \
88                                   mailleur="MeshGems"):
89     """genereMaillageFissure"""
90     maillageFissure = None
91     return maillageFissure
92
93   def setReferencesMaillageFissure(self):
94     """setReferencesMaillageFissure"""
95     referencesMaillageFissure = dict()
96     return referencesMaillageFissure
97
98   def mailleur2d3d(self):
99     """Le mailleur : NETGEN ou MeshGems"""
100     #mailleur = "MeshGems"
101     mailleur = "NETGEN"
102     return mailleur
103
104 # ---------------------------------------------------------------------------
105
106   def executeProbleme(self, step=-1):
107     """executeProbleme"""
108     texte = " --- fissureGenerique.executeProbleme pour '{}', step = {}".format(self.nomCas,step)
109     logging.info(texte)
110     if step == 0:
111       return
112
113     self.setParamGeometrieSaine()
114     geometriesSaines = self.genereGeometrieSaine(self.geomParams)
115     if step == 1:
116       return
117
118     self.setParamMaillageSain()
119     maillagesSains = self.genereMaillageSain(geometriesSaines, self.meshParams)
120     if step == 2:
121       return
122
123     self.setParamShapeFissure()
124     mailleur = self.mailleur2d3d()
125     shapesFissure = self.genereShapeFissure(geometriesSaines, self.geomParams, self.shapeFissureParams, mailleur)
126     if step == 3:
127       return
128
129     self.setParamMaillageFissure()
130     elementsDefaut = self.genereZoneDefaut(geometriesSaines, maillagesSains, \
131                                            shapesFissure, self.shapeFissureParams, self.maillageFissureParams)
132     if step == 4:
133       return
134
135     maillageFissure = self.genereMaillageFissure(geometriesSaines, maillagesSains, \
136                                                  shapesFissure, self.shapeFissureParams, self.maillageFissureParams, \
137                                                  elementsDefaut, step, mailleur)
138
139     self.setReferencesMaillageFissure()
140     ok_maillage = getStatsMaillageFissure(maillageFissure, self.referencesMaillageFissure, self.maillageFissureParams)
141     return ok_maillage