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