1 # -*- coding: utf-8 -*-
\r
2 # --------------------------------------------------
\r
3 # Copyright (C) 2007-2013 EDF R&D
\r
5 # This library is free software; you can redistribute it and/or
\r
6 # modify it under the terms of the GNU Lesser General Public
\r
7 # License as published by the Free Software Foundation; either
\r
8 # version 2.1 of the License.
\r
10 # This library is distributed in the hope that it will be useful,
\r
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
\r
13 # Lesser General Public License for more details.
\r
15 # You should have received a copy of the GNU Lesser General Public
\r
16 # License along with this library; if not, write to the Free Software
\r
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\r
19 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
\r
21 # --------------------------------------------------
\r
27 from decimal import Decimal
\r
28 # repertoire ou sont stockés le catalogue carmel3d
\r
29 # et les fichiers de donnees des materiaux de reference
\r
30 from prefs_CARMEL3D import repIni
\r
32 #print "catalogue carmel"
\r
33 #print "repIni = ", repIni
\r
35 # Version du catalogue
\r
36 VERSION_CATA = "2.3.1 for harmonic problems"
\r
37 # --------------------------------------------------
\r
38 # definition d une classe pour les materiaux
\r
39 # definition d une classe pour les sources
\r
40 # definition d une classe pour les groupes de mailles
\r
41 # --------------------------------------------------
\r
42 class material ( ASSD ) : pass
\r
43 class source ( ASSD ) : pass
\r
44 class grmaille ( ASSD ) : pass
\r
47 # --------------------------------------------------
\r
48 # déclaration du jeu de commandes : 1ere instruction du catalogue obligatoire
\r
49 #---------------------------------------------------
\r
51 ##=========================================================
\r
52 JdC = JDC_CATA ( code = 'CARMEL3D',
\r
55 AU_MOINS_UN ('MATERIAL','INCLUDE'),
\r
56 AU_MOINS_UN ('SOURCE','INCLUDE'),
\r
57 AU_MOINS_UN ('MESHGROUP'),
\r
60 ##=========================================================
\r
61 # création d'une macro pour traiter les INCLUDE
\r
63 #----------------------------------------------------------
\r
66 INCLUDE = MACRO ( nom = "INCLUDE",
\r
68 UIinfo = { "groupes" : ( "Gestion du travail", ) },
\r
69 sd_prod = opsCarmel.INCLUDE,
\r
70 op_init = opsCarmel.INCLUDE_context,
\r
73 FileName = SIMP ( statut = "o",
\r
74 typ = ('Fichier', 'comm Files (*.comm);;All Files (*)',),
\r
75 fr = u"bibliothèque des matériaux",
\r
76 ang = "material library file",
\r
80 # --------------------------------------------------
\r
81 # definition de groupe de mailles
\r
82 # il est associe a un materiau ou a une source
\r
83 #---------------------------------------------------
\r
85 MESHGROUP = OPER (nom = "MESHGROUP",
\r
88 UIinfo= {"groupes":("Definition",)},
\r
89 fr= u"attribution d'un matériau ou d'une source à un groupe du maillage",
\r
90 ang = "mesh group association to material or source",
\r
93 EXCLUS ('MATERIAL','SOURCE'),
\r
96 # ----------------------------------------------------------
\r
97 # le mot cle SIMP doit etre facultatif sinon la recuperation
\r
98 # des groupes de mailles sous SALOME ne fonctionne pas car
\r
99 # le concept ne peut pas etre nomme car non valide
\r
100 #-----------------------------------------------------------
\r
101 MATERIAL = SIMP (statut="f",
\r
103 ang="name of the linked material",
\r
104 fr =u"nom du matériau associé",
\r
106 SOURCE = SIMP (statut="f",
\r
108 ang="name of the linked source",
\r
109 fr =u"nom de la source associée",
\r
114 #======================================================================
\r
115 # le fichier .PHYS contient 3 blocs et jusqu'a 3 niveaux de sous-blocs
\r
117 #======================================================================
\r
118 # 1er bloc : bloc VERSION
\r
119 # ce bloc est volontairement cache dans l IHM
\r
120 #===================================================
\r
122 VERSION = PROC ( nom = "VERSION",
\r
125 UIinfo= {"groupes":("CACHE",)},
\r
126 ang= "version block definition",
\r
128 #----------------------
\r
129 # Liste des parametres
\r
130 #----------------------
\r
132 NUM = SIMP (statut="o",
\r
135 ang="version number of the physical model",
\r
138 FILETYPE = SIMP (statut="o",
\r
145 ) # Fin PROC VERSION
\r
147 #===================================================================
\r
148 # 2eme bloc : bloc MATERIALS
\r
149 #===================================================================
\r
150 # definition des matériaux utilisateurs
\r
151 # a partir des materiaux de reference ou de materiaux generiques
\r
152 #-------------------------------------------------------------------
\r
154 MATERIAL = OPER (nom = "MATERIAL",
\r
157 ang= "material block definition",
\r
158 fr= u"définition d'un matériau",
\r
160 regles=EXCLUS('PERMITTIVITY','CONDUCTIVITY'),
\r
162 #---------------------------------------------------------------------
\r
163 # liste des matériaux de reference fournis par THEMIS et des
\r
164 # materiaux generiques (les materiaux generiques peuvent etre utilises
\r
165 # si aucun materiau de reference ne convient)
\r
166 #---------------------------------------------------------------------
\r
167 TYPE = SIMP(statut='o',
\r
170 # matériaux génériques
\r
173 "ZINSULATOR","ZSURFACIC",
\r
174 "NILMAT","EM_ISOTROPIC","EM_ANISOTROPIC",
\r
176 ang = "generic materials list",
\r
177 fr = u"liste des matériaux génériques",
\r
180 ##############################################################################
\r
181 # Remarque generale a tous les materiaux :
\r
182 # pour conserver l'affichage scientifique le nombre derriere l'exposant doit
\r
183 # etre strictement superieur au nombre de decimales
\r
186 ##----------------------------------------------------------------------------------------------
\r
187 # Données de perméabilité, utilisée pour les diélectriques, conducteurs et impédances de surface
\r
188 #-----------------------------------------------------------------------------------------------
\r
189 #HAS_PERMEABILITY = BLOC(condition="TYPE in ('DIELECTRIC','CONDUCTOR','ZSURFACIC')",
\r
191 #------------------------------------------------
\r
192 # sous bloc niveau 2 : PERMEABILITY
\r
193 #------------------------------------------------
\r
195 PERMEABILITY = FACT ( statut="f",
\r
196 ang ="Permeability properties",
\r
197 fr =u"propriétés de perméabilité du matériau",
\r
198 HOMOGENEOUS = SIMP (statut="o",
\r
201 into = ("TRUE","FALSE"),
\r
202 ang = "the material is homogeneous or not",
\r
203 fr = u"le matériau est homogène ou non",
\r
205 ISOTROPIC = SIMP (statut="o",
\r
208 into = ("TRUE","FALSE"),
\r
209 ang = "the material is isotropic or not",
\r
210 fr = u"le matériau est isotrope ou non",
\r
212 HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
\r
213 LAW = SIMP (statut="o",
\r
216 into = ("LINEAR","NONLINEAR"),
\r
217 ang = "harmonic or time-domain linear or nonlinear law only for homogeneous and isotropic materials",
\r
218 fr = u"loi linéaire (fréquentielle ou temporelle) ou non (homogène et isotrope seulement)",
\r
220 VALUE = SIMP (statut="o",
\r
223 ang = "Relative linear permeability value, also used at first nonlinear iteration",
\r
224 fr = u"Valeur de la perméabilité relative à l'air utilisée pour une loi linéaire ou pour la première itération non-linéaire",
\r
226 NONLINEAR_LAW_PROPERTIES = BLOC (condition="LAW=='NONLINEAR'",
\r
227 NATURE = SIMP (statut="o",
\r
230 into = ("SPLINE","MARROCCO","MARROCCO+SATURATION"),
\r
231 ang = "nature law",
\r
232 fr = u"nature de la loi",
\r
234 SPLINE_LAW_PROPERTIES = BLOC (condition="NATURE=='SPLINE'",
\r
235 FILENAME = SIMP (statut="o",
\r
236 typ=("FichierNoAbs",'All Files (*)',), # l'existence du fichier n'est pas vérifiée
\r
237 ang="data file name",
\r
238 fr =u"nom du fichier contenant les mesures expérimentales B(H)",
\r
240 ), # Fin BLOC SPLINE_PROPERTIES
\r
241 MARROCCO_LAW_PROPERTIES = BLOC (condition="NATURE in ('MARROCCO','MARROCCO+SATURATION')",
\r
242 ALPHA = SIMP (statut="o",
\r
246 ang="alpha parameter",
\r
247 fr =u"paramètre alpha de la loi de Marrocco" ,
\r
249 TAU = SIMP (statut="o",
\r
253 ang="tau parameter",
\r
254 fr =u"paramètre tau de la loi de Marrocco" ,
\r
256 C = SIMP (statut="o",
\r
261 fr =u"paramètre c de la loi de Marrocco" ,
\r
263 EPSILON = SIMP (statut="o",
\r
267 ang="epsilon parameter",
\r
268 fr =u"paramètre epsilon de la loi de Marrocco" ,
\r
270 ), # Fin BLOC MARROCCO_LAW_PROPERTIES
\r
271 SATURATION_LAW_PROPERTIES = BLOC (condition="NATURE=='MARROCCO+SATURATION'",
\r
272 BMAX = SIMP (statut="o",
\r
276 ang="intersection B",
\r
277 fr = u"valeur de B marquant la fin de la loi de Marrocco et le début du raccord à la loi de saturation",
\r
279 HSAT = SIMP (statut="o",
\r
284 fr = u"valeur de H définissant la loi de saturation",
\r
286 BSAT = SIMP (statut="o",
\r
291 fr = u"valeur de B définissant la loi de saturation",
\r
293 JOIN = SIMP (statut="o",
\r
296 into= ("SPLINE","PARABOLIC","LINEAR"),
\r
297 ang="type of join between laws",
\r
298 fr =u"type de raccord entre la loi choisie et la loi de saturation" ,
\r
300 ), # Fin BLOC SATURATION_LAW_PROPERTIES
\r
301 APPLIEDTO = SIMP (statut="o",
\r
303 into=("B(H)&H(B)","B(H)","H(B)"),
\r
304 defaut="B(H)&H(B)",
\r
305 ang="join applied to",
\r
306 fr =u"Le raccord tel que défini est appliqué à la courbe B(H) seulement, à la courbe H(B) seulement ou aux deux courbes à la fois. Dans les deux premiers cas, le raccord de la courbe H(B) est inversé numériquement à partir du raccord défini pour la courbe B(H), et vice-versa.",
\r
308 ), # Fin BLOC NONLINEAR_LAW_PROPERTIES
\r
309 ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
\r
310 ), # fin FACT PERMEABILITY
\r
311 #), # Fin BLOC HAS_PERMEABILITY
\r
313 ##------------------------------------------------------------------
\r
314 # Données de permittivité, utilisée pour les diélectriques seulement
\r
315 #-------------------------------------------------------------------
\r
316 #HAS_PERMITTIVITY = BLOC(condition="TYPE == 'DIELECTRIC'",
\r
318 #------------------------------------------------
\r
319 # sous bloc niveau 2 : PERMITTIVITY
\r
320 #------------------------------------------------
\r
321 PERMITTIVITY = FACT ( statut="f",
\r
322 ang ="Permittivity properties",
\r
323 fr = u"propriétés de permittivité du matériau",
\r
324 HOMOGENEOUS = SIMP (statut="o",
\r
327 into = ("TRUE","FALSE"),
\r
328 ang = "the material is homogeneous or not",
\r
329 fr = u"le matériau est homogène ou non",
\r
331 ISOTROPIC = SIMP (statut="o",
\r
334 into = ("TRUE","FALSE"),
\r
335 ang = "the material is isotropic or not",
\r
336 fr = u"le matériau est isotrope ou non",
\r
338 HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
\r
339 LAW = SIMP (statut="o",
\r
342 into = ("LINEAR",),
\r
343 ang = "linear law",
\r
344 fr = u"loi linéaire",
\r
346 VALUE = SIMP (statut="o",
\r
349 ang = "enter a complex relative value",
\r
350 fr = u"saisir une valeur complexe relative",
\r
352 ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
\r
353 ), # fin FACT PERMITTIVITY
\r
355 #), # Fin BLOC HAS_PERMITTIVITY
\r
357 ##----------------------------------------------------------------------------------------------
\r
358 # Données de conductivité, utilisée pour les conducteurs et impédances de surface
\r
359 #-----------------------------------------------------------------------------------------------
\r
360 #HAS_CONDUCTIVITY = BLOC(condition="TYPE in ('CONDUCTOR','ZSURFACIC')",
\r
361 #------------------------------------------------
\r
362 # sous bloc niveau 2 : CONDUCTIVITY
\r
363 #------------------------------------------------
\r
364 CONDUCTIVITY = FACT ( statut="f",
\r
365 ang ="Permittivity properties",
\r
366 fr = u"propriétés de permittivité du matériau",
\r
367 HOMOGENEOUS = SIMP (statut="o",
\r
370 into = ("TRUE","FALSE"),
\r
371 ang = "the material is homogeneous or not",
\r
372 fr = u"le matériau est homogène ou non",
\r
374 ISOTROPIC = SIMP (statut="o",
\r
377 into = ("TRUE","FALSE"),
\r
378 ang = "the material is isotropic or not",
\r
379 fr = u"le matériau est isotrope ou non",
\r
381 HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
\r
382 LAW = SIMP (statut="o",
\r
385 into = ("LINEAR",),
\r
386 ang = "linear law",
\r
387 fr = u"loi linéaire",
\r
389 VALUE = SIMP (statut="o",
\r
392 ang = "enter a complex relative value",
\r
393 fr = u"saisir une valeur complexe relative",
\r
395 ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
\r
396 ), # fin FACT CONDUCTIVITY
\r
398 #), # Fin BLOC HAS_CONDUCTICITY
\r
400 ###################################################################################################
\r
401 #---------------------------------------------
\r
402 # sous bloc niveau 1
\r
403 #---------------------------------------
\r
404 # matériau generique de type ZINSULATOR
\r
405 #---------------------------------------
\r
407 # aucun parametre a saisir pour ce materiau
\r
410 ###################################################################################################
\r
411 #---------------------------------------------
\r
412 # sous bloc niveau 1
\r
413 #---------------------------------------------
\r
414 # matériau generique de type NILMAT (fictif)
\r
415 #---------------------------------------------
\r
417 # aucun parametre a saisir pour ce materiau
\r
420 ###################################################################################################
\r
421 #----------------------------------------------------------
\r
422 # sous bloc niveau 1 : EM_ISOTROPIC_FILES
\r
423 #-------------------------------------------------
\r
424 # matériau isotropique non homogene generique
\r
425 #-------------------------------------------------
\r
426 EM_ISOTROPIC_properties=BLOC(condition="TYPE=='EM_ISOTROPIC'",
\r
428 CONDUCTIVITY_File = SIMP (statut="o",
\r
429 typ=("FichierNoAbs",'MED Files (*.med)',),
\r
430 ang="CONDUCTIVITY MED data file name",
\r
431 fr = u"nom du fichier MED CONDUCTIVITY",
\r
433 PERMEABILITY_File = SIMP (statut="o",
\r
434 typ=("FichierNoAbs",'MED Files (*.med)',),
\r
435 ang="PERMEABILITY MED data file name",
\r
436 fr = u"nom du fichier MED PERMEABILITY",
\r
438 ), # fin bloc EM_ISOTROPIC_properties
\r
441 #---------------------------------------------------
\r
442 # matériau anisotropique non homogene generique
\r
443 #---------------------------------------------------
\r
444 EM_ANISOTROPIC_properties=BLOC(condition="TYPE=='EM_ANISOTROPIC'",
\r
446 PERMEABILITY_File = SIMP (statut="o",
\r
447 #typ=("Fichier",'.mater Files (*.mater)'), # le fichier doit exister dans le répertoire d'où on lancer Eficas si le fichier est défini par un nom relatif, ce qui est trop contraignant
\r
448 #typ=("Fichier",'.mater Files (*.mater)','Sauvegarde'), # Le fichier peut ne pas exister, mais on propose de le sauvegarder et d'écraser un fichier existant : pas approprié
\r
449 typ=("FichierNoAbs",'.mater Files (*.mater)'), # l'existence du fichier n'est pas vérifiée, mais on peut le sélectionner quand même via la navigateur. C'est suffisant et permet une bibliothèque de matériaux.
\r
450 ang="PERMEABILITY .mater data file name",
\r
451 fr ="nom du fichier .mater PERMEABILITY",
\r
453 CONDUCTIVITY_File = SIMP (statut="o",
\r
454 typ=("FichierNoAbs",'.mater Files (*.mater)'),
\r
455 ang="CONDUCTIVITY .mater data file name",
\r
456 fr ="nom du fichier .mater CONDUCTIVITY",
\r
458 ), # fin bloc EM_ANISOTROPIC_properties
\r
461 ) # fin OPER MATERIAL
\r
463 #===================================================================
\r
464 # 3eme bloc : bloc SOURCES
\r
465 #====================================================================
\r
466 # definition des differentes sources qui seront dans le bloc SOURCES
\r
467 #-------------------------------------------------------------------
\r
470 SOURCE = OPER ( nom = "SOURCE",
\r
473 ang = "source definition",
\r
474 fr = u"définition d'une source",
\r
476 regles = (UN_PARMI('STRANDED_INDUCTOR','HPORT','EPORT'), # choix d'un type de source
\r
477 UN_PARMI('WAVEFORM_CONSTANT','WAVEFORM_SINUS'), # choix d'une forme de source
\r
480 #----------------------------------------------------------
\r
481 # sous bloc niveau 1 : stranded inductor source
\r
482 ##---------------------------------------------------------
\r
483 STRANDED_INDUCTOR = FACT(statut='f',
\r
484 ang="Stranded inductor source",
\r
485 fr=u"source de type inducteur bobiné",
\r
486 NTURNS = SIMP (statut="o",
\r
489 ang="number of turns in the inductor",
\r
490 fr= u"nombre de tours dans l'inducteur bobiné",
\r
492 TYPE = SIMP (statut="o",
\r
496 fr= u"source de type courant",
\r
497 ang="current source type",
\r
499 ), # FIN de FACT STRANDED_INDUCTOR
\r
500 HPORT = FACT(statut='f',
\r
501 ang="Magnetic port source",
\r
502 fr=u"source de type port magnétique",
\r
503 TYPE = SIMP (statut="o",
\r
505 into=("VOLTAGE","CURRENT"),
\r
506 fr= u"source de type tension ou courant",
\r
507 ang="voltage or current source type",
\r
509 ), # FIN de FACT HPORT
\r
510 EPORT = FACT(statut='f',
\r
511 ang="Electric port source",
\r
512 fr=u"source de type port électrique",
\r
513 TYPE = SIMP (statut="o",
\r
515 into=("VOLTAGE","CURRENT"),
\r
516 fr= u"source de type tension ou courant",
\r
517 ang="voltage or current source type",
\r
519 ), # FIN de FACT EPORT
\r
520 WAVEFORM_CONSTANT = FACT(statut='f',
\r
521 ang="constant source",
\r
522 fr=u"source constante",
\r
523 AMPLITUDE = SIMP (statut="o",
\r
526 ang = "enter the source magnitude value, in A or V units",
\r
527 fr = u"saisir la valeur de l'amplitude de la source, en unités A ou V",
\r
529 ), # FIN de FACT WAVEFORM_CONSTANT
\r
530 WAVEFORM_SINUS = FACT(statut='f',
\r
531 ang="sinus variation source",
\r
532 fr=u"source variant avec une forme sinusoïdale, définie par son amplitude, sa fréquence et sa phase",
\r
533 AMPLITUDE = SIMP (statut="o",
\r
536 ang = "enter the source magnitude value, in A or V units",
\r
537 fr = u"saisir la valeur de l'amplitude de la source, en unités A ou V",
\r
539 FREQUENCY = SIMP (statut="o",
\r
542 ang = "enter the source frequency value, in Hz units",
\r
543 fr = u"saisir la valeur de la fréquence de la source, en Hz",
\r
545 PHASE = SIMP (statut="o",
\r
548 ang = "enter the source phase value, in degrees units",
\r
549 fr = u"saisir la valeur de la phase de la source, en degrés",
\r
551 ), # FIN de FACT WAVEFORM_SINUS
\r
552 ) # Fin OPER SOURCE
\r