1 # -*- coding: utf-8 -*-
2 # --------------------------------------------------
3 # Copyright (C) 2007-2013 EDF R&D
5 # This library is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU Lesser General Public
7 # License as published by the Free Software Foundation; either
8 # version 2.1 of the License.
10 # This library is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # Lesser General Public License for more details.
15 # You should have received a copy of the GNU Lesser General Public
16 # License along with this library; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 # --------------------------------------------------
27 from decimal import Decimal
28 # repertoire ou sont stockés le catalogue carmel3d
29 # et les fichiers de donnees des materiaux de reference
30 from prefs_CARMEL3D import repIni
32 #print "catalogue carmel"
33 #print "repIni = ", repIni
35 # Version du catalogue
36 VERSION_CATA = "2.3.1 for harmonic problems"
37 # --------------------------------------------------
38 # definition d une classe pour les materiaux
39 # definition d une classe pour les sources
40 # definition d une classe pour les groupes de mailles
41 # --------------------------------------------------
42 class material ( ASSD ) : pass
43 class source ( ASSD ) : pass
44 class grmaille ( ASSD ) : pass
47 # --------------------------------------------------
48 # déclaration du jeu de commandes : 1ere instruction du catalogue obligatoire
49 #---------------------------------------------------
51 JdC = JDC_CATA ( code = 'CARMEL3D',
54 AU_MOINS_UN ('MATERIAL','INCLUDE'),
55 ENSEMBLE ('SOURCE','MESHGROUP'),
58 ##=========================================================
59 # création d'une macro pour traiter les INCLUDE
61 #----------------------------------------------------------
64 INCLUDE = MACRO ( nom = "INCLUDE",
66 UIinfo = { "groupes" : ( "Gestion du travail", ) },
67 sd_prod = opsCarmel.INCLUDE,
68 op_init = opsCarmel.INCLUDE_context,
71 FileName = SIMP ( statut = "o",
72 typ = ('Fichier', 'comm Files (*.comm);;All Files (*)',),
73 fr = u"bibliothèque des matériaux",
74 ang = "material library file",
79 # --------------------------------------------------
80 # definition de groupe de mailles
81 # il est associe a un materiau ou a une source
82 #---------------------------------------------------
84 MESHGROUP = OPER (nom = "MESHGROUP",
87 UIinfo= {"groupes":("Definition",)},
88 fr= u"attribution d'un matériau ou d'une source à un groupe du maillage",
89 ang = "mesh group association to material or source",
92 EXCLUS ('MATERIAL','SOURCE'),
95 # ----------------------------------------------------------
96 # le mot cle SIMP doit etre facultatif sinon la recuperation
97 # des groupes de mailles sous SALOME ne fonctionne pas car
98 # le concept ne peut pas etre nomme car non valide
99 #-----------------------------------------------------------
100 MATERIAL = SIMP (statut="f",
102 ang="name of the linked material",
103 fr =u"nom du matériau associé",
105 SOURCE = SIMP (statut="f",
107 ang="name of the linked source",
108 fr =u"nom de la source associée",
113 #======================================================================
114 # le fichier .PHYS contient 3 blocs et jusqu'a 3 niveaux de sous-blocs
116 #======================================================================
117 # 1er bloc : bloc VERSION
118 # ce bloc est volontairement cache dans l IHM
119 #===================================================
121 VERSION = PROC ( nom = "VERSION",
124 UIinfo= {"groupes":("CACHE",)},
125 ang= "version block definition",
127 #----------------------
128 # Liste des parametres
129 #----------------------
131 NUM = SIMP (statut="o",
134 ang="version number of the physical model",
137 FILETYPE = SIMP (statut="o",
146 #===================================================================
147 # 2eme bloc : bloc MATERIALS
148 #===================================================================
149 # definition des matériaux utilisateurs
150 # a partir des materiaux de reference ou de materiaux generiques
151 #-------------------------------------------------------------------
153 MATERIAL = OPER (nom = "MATERIAL",
156 ang= "material block definition",
157 fr= u"définition d'un matériau",
159 regles=EXCLUS('PERMITTIVITY','CONDUCTIVITY'),
161 #---------------------------------------------------------------------
162 # liste des matériaux de reference fournis par THEMIS et des
163 # materiaux generiques (les materiaux generiques peuvent etre utilises
164 # si aucun materiau de reference ne convient)
165 #---------------------------------------------------------------------
166 # debut commentaire PN pour que le fichier materiaux soit valide
167 # TYPE = SIMP(statut='o',
168 MAT_REF = SIMP(statut='f',
171 # matériaux génériques
174 "ZINSULATOR","ZSURFACIC",
175 "NILMAT","EM_ISOTROPIC","EM_ANISOTROPIC",
177 ang = "generic materials list",
178 fr = u"liste des matériaux génériques",
181 ##############################################################################
182 # Remarque generale a tous les materiaux :
183 # pour conserver l'affichage scientifique le nombre derriere l'exposant doit
184 # etre strictement superieur au nombre de decimales
187 ##----------------------------------------------------------------------------------------------
188 # Données de perméabilité, utilisée pour les diélectriques, conducteurs et impédances de surface
189 #-----------------------------------------------------------------------------------------------
190 #HAS_PERMEABILITY = BLOC(condition="TYPE in ('DIELECTRIC','CONDUCTOR','ZSURFACIC')",
192 #------------------------------------------------
193 # sous bloc niveau 2 : PERMEABILITY
194 #------------------------------------------------
196 PERMEABILITY = FACT ( statut="f",
197 ang ="Permeability properties",
198 fr =u"propriétés de perméabilité du matériau",
199 HOMOGENEOUS = SIMP (statut="o",
202 into = ("TRUE","FALSE"),
203 ang = "the material is homogeneous or not",
204 fr = u"le matériau est homogène ou non",
206 ISOTROPIC = SIMP (statut="o",
209 into = ("TRUE","FALSE"),
210 ang = "the material is isotropic or not",
211 fr = u"le matériau est isotrope ou non",
213 HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
214 TYPE_LAW = SIMP (statut="o",
216 defaut="LINEAR_REAL",
217 into = ("LINEAR_REAL","NONLINEAR"),
218 ang = "harmonic or time-domain linear or nonlinear law only for homogeneous and isotropic materials",
219 fr = u"loi linéaire (fréquentielle ou temporelle) ou non (homogène et isotrope seulement)",
221 VALUE = SIMP (statut="o",
224 ang = "Relative linear permeability value, also used at first nonlinear iteration",
225 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",
227 NONLINEAR_LAW_PROPERTIES = BLOC (condition="LAW=='NONLINEAR'",
228 NATURE = SIMP (statut="o",
231 into = ("SPLINE","MARROCCO","MARROCCO+SATURATION"),
233 fr = u"nature de la loi",
235 SPLINE_LAW_PROPERTIES = BLOC (condition="NATURE=='SPLINE'",
236 FILENAME = SIMP (statut="o",
237 typ=("FichierNoAbs",'All Files (*)',), # l'existence du fichier n'est pas vérifiée
238 ang="data file name",
239 fr =u"nom du fichier contenant les mesures expérimentales B(H)",
241 ), # Fin BLOC SPLINE_PROPERTIES
242 MARROCCO_LAW_PROPERTIES = BLOC (condition="NATURE in ('MARROCCO','MARROCCO+SATURATION')",
243 ALPHA = SIMP (statut="o",
247 ang="alpha parameter",
248 fr =u"paramètre alpha de la loi de Marrocco" ,
250 TAU = SIMP (statut="o",
255 fr =u"paramètre tau de la loi de Marrocco" ,
257 C = SIMP (statut="o",
262 fr =u"paramètre c de la loi de Marrocco" ,
264 EPSILON = SIMP (statut="o",
268 ang="epsilon parameter",
269 fr =u"paramètre epsilon de la loi de Marrocco" ,
271 ), # Fin BLOC MARROCCO_LAW_PROPERTIES
272 SATURATION_LAW_PROPERTIES = BLOC (condition="NATURE=='MARROCCO+SATURATION'",
273 BMAX = SIMP (statut="o",
277 ang="intersection B",
278 fr = u"valeur de B marquant la fin de la loi de Marrocco et le début du raccord à la loi de saturation",
280 HSAT = SIMP (statut="o",
285 fr = u"valeur de H définissant la loi de saturation",
287 BSAT = SIMP (statut="o",
292 fr = u"valeur de B définissant la loi de saturation",
294 JOIN = SIMP (statut="o",
297 into= ("SPLINE","PARABOLIC","LINEAR"),
298 ang="type of join between laws",
299 fr =u"type de raccord entre la loi choisie et la loi de saturation" ,
301 ), # Fin BLOC SATURATION_LAW_PROPERTIES
302 APPLIEDTO = SIMP (statut="o",
304 into=("B(H)&H(B)","B(H)","H(B)"),
306 ang="join applied to",
307 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.",
309 ), # Fin BLOC NONLINEAR_LAW_PROPERTIES
310 ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
311 ), # fin FACT PERMEABILITY
312 #), # Fin BLOC HAS_PERMEABILITY
314 ##------------------------------------------------------------------
315 # Données de permittivité, utilisée pour les diélectriques seulement
316 #-------------------------------------------------------------------
317 #HAS_PERMITTIVITY = BLOC(condition="TYPE == 'DIELECTRIC'",
319 #------------------------------------------------
320 # sous bloc niveau 2 : PERMITTIVITY
321 #------------------------------------------------
322 PERMITTIVITY = FACT ( statut="f",
323 ang ="Permittivity properties",
324 fr = u"propriétés de permittivité du matériau",
325 HOMOGENEOUS = SIMP (statut="o",
328 into = ("TRUE","FALSE"),
329 ang = "the material is homogeneous or not",
330 fr = u"le matériau est homogène ou non",
332 ISOTROPIC = SIMP (statut="o",
335 into = ("TRUE","FALSE"),
336 ang = "the material is isotropic or not",
337 fr = u"le matériau est isotrope ou non",
339 HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
340 LAW = SIMP (statut="o",
345 fr = u"loi linéaire",
347 VALUE = SIMP (statut="o",
350 ang = "enter a complex relative value",
351 fr = u"saisir une valeur complexe relative",
353 ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
354 ), # fin FACT PERMITTIVITY
356 #), # Fin BLOC HAS_PERMITTIVITY
358 ##----------------------------------------------------------------------------------------------
359 # Données de conductivité, utilisée pour les conducteurs et impédances de surface
360 #-----------------------------------------------------------------------------------------------
361 #HAS_CONDUCTIVITY = BLOC(condition="TYPE in ('CONDUCTOR','ZSURFACIC')",
362 #------------------------------------------------
363 # sous bloc niveau 2 : CONDUCTIVITY
364 #------------------------------------------------
365 CONDUCTIVITY = FACT ( statut="f",
366 ang ="Permittivity properties",
367 fr = u"propriétés de permittivité du matériau",
368 HOMOGENEOUS = SIMP (statut="o",
371 into = ("TRUE","FALSE"),
372 ang = "the material is homogeneous or not",
373 fr = u"le matériau est homogène ou non",
375 ISOTROPIC = SIMP (statut="o",
378 into = ("TRUE","FALSE"),
379 ang = "the material is isotropic or not",
380 fr = u"le matériau est isotrope ou non",
382 HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
383 LAW = SIMP (statut="o",
388 fr = u"loi linéaire",
390 VALUE = SIMP (statut="o",
393 ang = "enter a complex relative value",
394 fr = u"saisir une valeur complexe relative",
396 ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
397 ), # fin FACT CONDUCTIVITY
399 #), # Fin BLOC HAS_CONDUCTICITY
401 ###################################################################################################
402 #---------------------------------------------
404 #---------------------------------------
405 # matériau generique de type ZINSULATOR
406 #---------------------------------------
408 # aucun parametre a saisir pour ce materiau
411 ###################################################################################################
412 #---------------------------------------------
414 #---------------------------------------------
415 # matériau generique de type NILMAT (fictif)
416 #---------------------------------------------
418 # aucun parametre a saisir pour ce materiau
421 ###################################################################################################
422 #----------------------------------------------------------
423 # sous bloc niveau 1 : EM_ISOTROPIC_FILES
424 #-------------------------------------------------
425 # matériau isotropique non homogene generique
426 #-------------------------------------------------
427 EM_ISOTROPIC_properties=BLOC(condition="TYPE=='EM_ISOTROPIC'",
429 CONDUCTIVITY_File = SIMP (statut="o",
430 typ=("FichierNoAbs",'MED Files (*.med)',),
431 ang="CONDUCTIVITY MED data file name",
432 fr = u"nom du fichier MED CONDUCTIVITY",
434 PERMEABILITY_File = SIMP (statut="o",
435 typ=("FichierNoAbs",'MED Files (*.med)',),
436 ang="PERMEABILITY MED data file name",
437 fr = u"nom du fichier MED PERMEABILITY",
439 ), # fin bloc EM_ISOTROPIC_properties
442 #---------------------------------------------------
443 # matériau anisotropique non homogene generique
444 #---------------------------------------------------
445 EM_ANISOTROPIC_properties=BLOC(condition="TYPE=='EM_ANISOTROPIC'",
447 PERMEABILITY_File = SIMP (statut="o",
448 #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
449 #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é
450 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.
451 ang="PERMEABILITY .mater data file name",
452 fr ="nom du fichier .mater PERMEABILITY",
454 CONDUCTIVITY_File = SIMP (statut="o",
455 typ=("FichierNoAbs",'.mater Files (*.mater)'),
456 ang="CONDUCTIVITY .mater data file name",
457 fr ="nom du fichier .mater CONDUCTIVITY",
459 ), # fin bloc EM_ANISOTROPIC_properties
462 ) # fin OPER MATERIAL
464 #===================================================================
465 # 3eme bloc : bloc SOURCES
466 #====================================================================
467 # definition des differentes sources qui seront dans le bloc SOURCES
468 #-------------------------------------------------------------------
471 SOURCE = OPER ( nom = "SOURCE",
474 ang = "source definition",
475 fr = u"définition d'une source",
477 regles = (UN_PARMI('STRANDED_INDUCTOR','HPORT','EPORT'), # choix d'un type de source
478 UN_PARMI('WAVEFORM_CONSTANT','WAVEFORM_SINUS'), # choix d'une forme de source
481 #----------------------------------------------------------
482 # sous bloc niveau 1 : stranded inductor source
483 ##---------------------------------------------------------
484 STRANDED_INDUCTOR = FACT(statut='f',
485 ang="Stranded inductor source",
486 fr=u"source de type inducteur bobiné",
487 NTURNS = SIMP (statut="o",
490 ang="number of turns in the inductor",
491 fr= u"nombre de tours dans l'inducteur bobiné",
493 TYPE = SIMP (statut="o",
497 fr= u"source de type courant",
498 ang="current source type",
500 ), # FIN de FACT STRANDED_INDUCTOR
501 HPORT = FACT(statut='f',
502 ang="Magnetic port source",
503 fr=u"source de type port magnétique",
504 TYPE = SIMP (statut="o",
506 into=("VOLTAGE","CURRENT"),
507 fr= u"source de type tension ou courant",
508 ang="voltage or current source type",
510 ), # FIN de FACT HPORT
511 EPORT = FACT(statut='f',
512 ang="Electric port source",
513 fr=u"source de type port électrique",
514 TYPE = SIMP (statut="o",
516 into=("VOLTAGE","CURRENT"),
517 fr= u"source de type tension ou courant",
518 ang="voltage or current source type",
520 ), # FIN de FACT EPORT
521 WAVEFORM_CONSTANT = FACT(statut='f',
522 ang="constant source",
523 fr=u"source constante",
524 AMPLITUDE = SIMP (statut="o",
527 ang = "enter the source magnitude value, in A or V units",
528 fr = u"saisir la valeur de l'amplitude de la source, en unités A ou V",
530 ), # FIN de FACT WAVEFORM_CONSTANT
531 WAVEFORM_SINUS = FACT(statut='f',
532 ang="sinus variation source",
533 fr=u"source variant avec une forme sinusoïdale, définie par son amplitude, sa fréquence et sa phase",
534 AMPLITUDE = SIMP (statut="o",
537 ang = "enter the source magnitude value, in A or V units",
538 fr = u"saisir la valeur de l'amplitude de la source, en unités A ou V",
540 FREQUENCY = SIMP (statut="o",
543 ang = "enter the source frequency value, in Hz units",
544 fr = u"saisir la valeur de la fréquence de la source, en Hz",
546 PHASE = SIMP (statut="o",
549 ang = "enter the source phase value, in degrees units",
550 fr = u"saisir la valeur de la phase de la source, en degrés",
552 ), # FIN de FACT WAVEFORM_SINUS