Salome HOME
9d085f5e9ceadb56e78f7043dfcd7b485df73436
[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, mailleur="MeshGems"):
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, shapeFissureParams, maillageFissureParams):
76     """genereZoneDefaut"""
77     elementsDefaut = [None]
78     return elementsDefaut
79
80   def genereMaillageFissure(self, geometriesSaines, maillagesSains, \
81                                   shapesFissure, shapeFissureParams, \
82                                   maillageFissureParams, elementsDefaut, step, \
83                                   mailleur="MeshGems"):
84     """genereMaillageFissure"""
85     maillageFissure = None
86     return maillageFissure
87
88   def setReferencesMaillageFissure(self):
89     """setReferencesMaillageFissure"""
90     referencesMaillageFissure = dict()
91     return referencesMaillageFissure
92
93   def mailleur2d3d(self):
94     """Le mailleur : NETGEN ou MeshGems"""
95     #mailleur = "MeshGems"
96     mailleur = "NETGEN"
97     return mailleur
98
99 # ---------------------------------------------------------------------------
100
101   def executeProbleme(self, step=-1):
102     """executeProbleme"""
103     texte = " --- fissureGenerique.executeProbleme pour '{}', step = {}".format(self.nomCas,step)
104     logging.info(texte)
105     if step == 0:
106       return
107
108     self.setParamGeometrieSaine()
109     geometriesSaines = self.genereGeometrieSaine(self.geomParams)
110     if step == 1:
111       return
112     logging.info("AAAAAAAAAAAAAAAAAAAA")
113
114     self.setParamMaillageSain()
115     maillagesSains = self.genereMaillageSain(geometriesSaines, self.meshParams)
116     if step == 2:
117       return
118     logging.info("BBBBBBBBBBBBBBBBBBBBB")
119
120     self.setParamShapeFissure()
121     mailleur = self.mailleur2d3d()
122     shapesFissure = self.genereShapeFissure(geometriesSaines, self.geomParams, self.shapeFissureParams, mailleur)
123     if step == 3:
124       return
125     logging.info("CCCCCCCCCCCCCCCCCCCCCCCC")
126
127     self.setParamMaillageFissure()
128     elementsDefaut = self.genereZoneDefaut(geometriesSaines, maillagesSains, \
129                                            shapesFissure, self.shapeFissureParams, self.maillageFissureParams)
130     if step == 4:
131       return
132     logging.info("DDDDDDDDDDDDDDDDDDDD")
133
134     maillageFissure = self.genereMaillageFissure(geometriesSaines, maillagesSains, \
135                                                  shapesFissure, self.shapeFissureParams, self.maillageFissureParams, \
136                                                  elementsDefaut, step, mailleur)
137
138     logging.info("EEEEEEEEEEEEEEEEEES")
139     self.setReferencesMaillageFissure()
140     ok_maillage = getStatsMaillageFissure(maillageFissure, self.referencesMaillageFissure, self.maillageFissureParams)
141     return ok_maillage