Salome HOME
Copyright update 2022
[modules/smesh.git] / src / Tools / blocFissure / gmu / fissureGenerique.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2014-2022  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   maillageFissure = None
38   geomParams = dict()
39   meshParams = dict()
40   shapeFissureParams = dict()
41   maillageFissureParams = dict()
42
43   def __init__(self, numeroCas):
44     initEtude()
45     self.numeroCas = numeroCas
46     self.nomCas = self.nomProbleme +"_%d"%(self.numeroCas)
47     self.fissureLongue = False
48     self.referencesMaillageFissure = None
49
50   def setParamGeometrieSaine(self):
51     """setParamGeometrieSaine"""
52     self.geomParams = dict()
53
54   def genereGeometrieSaine(self, geomParams):
55     """genereGeometrieSaine"""
56     geometriesSaines = [None]
57     return geometriesSaines
58
59   def setParamMaillageSain(self):
60     """setParamMaillageSain"""
61     self.meshParams = dict()
62
63   def genereMaillageSain(self, geometriesSaines, meshParams):
64     """genereMaillageSain"""
65     maillagesSains = [None]
66     return maillagesSains
67
68   def setParamShapeFissure(self):
69     """setParamShapeFissure"""
70     self.shapeFissureParams = dict()
71
72   def genereShapeFissure(self, geometriesSaines, geomParams, shapeFissureParams, mailleur="MeshGems"):
73     """genereShapeFissure"""
74     shapesFissure = [None]
75     return shapesFissure
76
77   def setParamMaillageFissure(self):
78     """setParamMaillageFissure"""
79     self.maillageFissureParams = dict()
80
81   def genereZoneDefaut(self, geometriesSaines, maillagesSains, shapesFissure, shapeFissureParams, maillageFissureParams):
82     """genereZoneDefaut"""
83     elementsDefaut = [None]
84     return elementsDefaut
85
86   def genereMaillageFissure(self, geometriesSaines, maillagesSains, \
87                                   shapesFissure, shapeFissureParams, \
88                                   maillageFissureParams, elementsDefaut, step, \
89                                   mailleur="MeshGems"):
90     """genereMaillageFissure"""
91     maillageFissure = None
92     return maillageFissure
93
94   def setReferencesMaillageFissure(self):
95     """setReferencesMaillageFissure"""
96     referencesMaillageFissure = dict()
97     return referencesMaillageFissure
98
99   def mailleur2d3d(self):
100     """Le mailleur : NETGEN ou MeshGems"""
101     #mailleur = "MeshGems"
102     mailleur = "NETGEN"
103     return mailleur
104
105 # ---------------------------------------------------------------------------
106
107   def executeProbleme(self, step=-1):
108     """executeProbleme"""
109     texte = " --- fissureGenerique.executeProbleme pour '{}', step = {}".format(self.nomCas,step)
110     logging.info(texte)
111     if step == 0:
112       return
113
114     self.setParamGeometrieSaine()
115     geometriesSaines = self.genereGeometrieSaine(self.geomParams)
116     if step == 1:
117       return
118
119     self.setParamMaillageSain()
120     maillagesSains = self.genereMaillageSain(geometriesSaines, self.meshParams)
121     if step == 2:
122       return
123
124     self.setParamShapeFissure()
125     mailleur = self.mailleur2d3d()
126     shapesFissure = self.genereShapeFissure(geometriesSaines, self.geomParams, self.shapeFissureParams, mailleur)
127     if step == 3:
128       return
129
130     self.setParamMaillageFissure()
131     elementsDefaut = self.genereZoneDefaut(geometriesSaines, maillagesSains, \
132                                            shapesFissure, self.shapeFissureParams, self.maillageFissureParams)
133     if step == 4:
134       return
135
136     self.maillageFissure = self.genereMaillageFissure(geometriesSaines, maillagesSains, \
137                                                       shapesFissure, self.shapeFissureParams, self.maillageFissureParams, \
138                                                       elementsDefaut, step, mailleur)
139
140     self.setReferencesMaillageFissure()
141     ok_maillage = getStatsMaillageFissure(self.maillageFissure, self.referencesMaillageFissure, self.maillageFissureParams)
142     return ok_maillage