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 = "Code_Carmel3D 2.4.0 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
45 class stranded_inductor_geometry ( ASSD ) : pass
46 class macro_groupe ( ASSD ) : pass
49 # --------------------------------------------------
50 # déclaration du jeu de commandes : 1ere instruction du catalogue obligatoire
51 #---------------------------------------------------
53 ##=========================================================
54 JdC = JDC_CATA ( code = 'CARMEL3D',
57 AU_MOINS_UN ('PARAMETERS'),
58 AU_PLUS_UN ('PARAMETERS'),
59 AU_MOINS_UN ('SOLVEUR'),
60 AU_PLUS_UN ('SOLVEUR'),
61 AU_MOINS_UN ('POST_COMMANDS'),
62 AU_PLUS_UN ('POST_COMMANDS'),
63 AU_MOINS_UN ('MATERIAL','INCLUDE'),
64 AU_MOINS_UN ('SOURCE','INCLUDE'),
65 AU_MOINS_UN ('MESHGROUP'),
71 #======================================================================
72 # 1er bloc : bloc VERSION
73 # ce bloc est volontairement cache dans l IHM
74 #===================================================
76 VERSION = PROC ( nom = "VERSION",
79 UIinfo= {"groupes":("CACHE",)},
80 ang= "version block definition",
82 #----------------------
83 # Liste des parametres
84 #----------------------
86 NUM = SIMP (statut="o",
89 ang="version number of the physical model",
92 FILETYPE = SIMP (statut="o",
101 PARAMETERS= PROC ( nom = "PARAMETERS",
104 UIinfo = { "groupes" : ( "1) Parametres", ) },
105 ang= "General parameters for this study",
106 fr= u"Paramètres généraux de l'étude",
107 #----------------------
108 # Liste des parametres
109 #----------------------
110 RepCarmel=SIMP(typ='Repertoire', statut='o',
111 ang= "Code_Carmel3D executables directory",
112 fr= u"Répertoire contenant les programmes de Code_Carmel3D",
114 Fichier_maillage = SIMP (statut="o", typ=("FichierNoAbs",'All Files (*)',), # l'existence du fichier n'est pas vérifiée
115 ang="Mesh file path (relative, aka file name, or absolute path).",
116 fr =u"Emplacement du fichier contenant le maillage (relatif, i.e., nom du fichier, ou absolu, i.e., chemin complet).",
119 Echelle_du_maillage = SIMP (statut='o', typ="TXM", defaut= "Millimetre", into = ("Metre", "Millimetre"),
120 ang="Mesh geometry units.",
121 fr =u"Unités géométriques du maillage.",
124 Formulation=SIMP(statut='o', typ='TXM', into=("TOMEGA","APHI"),
125 ang="Problem formulation.",
126 fr =u"Formulation du problème.",
129 FREQUENCY = SIMP (statut="o",
132 ang = "enter the source frequency value, in Hz units",
133 fr = u"saisir la valeur de la fréquence de la source, en Hz",
137 Realiser_topologie_gendof = SIMP (statut='o', typ="TXM", defaut="TRUE", into=("TRUE", "FALSE"),
138 ang="Build topology (.car file) using gendof.exe.",
139 fr =u"Construction de la topologie (fichier .car) en éxécutant gendof.exe.",
141 Resoudre_probleme = SIMP (statut='o', typ="TXM", defaut="TRUE", into=("TRUE", "FALSE"),
142 ang="Solve the problem using fcarmel.exe.",
143 fr =u"Résolution du problème en éxécutant fcarmel.exe.",
146 Realiser_post_traitement_aposteriori = SIMP (statut='o', typ="TXM", defaut="TRUE", into=("TRUE", "FALSE"),
147 ang="Make post-processing using postprocess.exe.",
148 fr =u"Réalisation du post-traitement en éxécutant postprocess.exe.",
150 ) # Fin PROC PARAMETERS
152 SOLVEUR = PROC ( nom ="SOLVEUR",
155 UIinfo= {"groupes":("1) Parametres",)},
156 ang= "Solver parameters for this study",
157 fr= u"Paramètres liés au solveur de l'étude",
159 Type= SIMP (statut="o",
161 into=('Solveur_lineaire',),
162 defaut='Solveur_lineaire',
163 ang="Linear solver only for harmonic problems.",
164 fr =u"Solveur linéaire seulement pour les problèmes fréquentiels.",
167 Solveur_lineaire=BLOC(condition="Type=='Solveur_lineaire'",
168 ang="This block contains whole linear solver properties.",
169 fr =u"Ce bloc contient toutes les propriétés du solveur linéaire.",
170 Methode_lineaire=SIMP(statut='o', typ='TXM', into=("Methode iterative BICGCR", "Methode directe MUMPS"),
171 ang="Algorithm used for this linear solver.",
172 fr =u"Méthode (algorithme) utilisée par ce solveur linéaire.",
175 Parametres_methode_iterative_BICGCR=BLOC(condition="Methode_lineaire=='Methode iterative BICGCR'",
176 ang="This block contains whole BICGCR algorithm properties used for the linear solver.",
177 fr =u"Ce bloc contient toutes les propriétés de la méthode BICGCR utilisée par le solveur linéaire.",
178 Precision=SIMP(statut='o', typ='R', defaut=1e-9,
179 ang="Accuracy on linear computations.",
180 fr =u"Précision du calcul linéaire.",
182 Nombre_iterations_max=SIMP(statut='o', typ='I',defaut=10000,
183 ang="Maximal number of iterations.",
184 fr =u"Nombre maximal d'itérations.",
186 Preconditionneur=SIMP(statut='f', typ='TXM', into=("Jacobi"), defaut='Jacobi',
187 ang="Preconditioner choice. Jacobi only.",
188 fr =u"Choix du préconditioneur. Jacobi disponible seulement.",
192 Parametres_methode_directe_MUMPS=BLOC(condition="Methode_lineaire=='Methode directe MUMPS'",
193 ang="This block contains whole MUMPS properties used for the linear solver.",
194 fr =u"Ce bloc contient toutes les propriétés de la méthode MUMPS utilisée par le solveur linéaire.",
195 Type_de_matrice=SIMP(statut='o', typ='I', defaut=2,
196 ang="Matrix type (symetry). 2: symetric. Please refer to MUMPS documentation.",
197 fr =u"Type de matrice (symétrie). Choisir 2 pour une matrice symétrique. Expliqué dans la documentation MUMPS.",
199 ICNTL_Control_Parameters=SIMP(statut='o', typ='I', defaut=7,
200 ang="ICNTL control parameter. Please refer to MUMPS documentation.",
201 fr =u"Paramètre de contrôle ICNTL. Expliqué dans la documentation MUMPS.",
203 CNTL_Control_Parameters=SIMP(statut='o', typ='I', defaut=5,
204 ang="CNTL control parameter. Please refer to MUMPS documentation.",
205 fr =u"Paramètre de contrôle CNTL. Expliqué dans la documentation MUMPS.",
211 POST_COMMANDS = PROC ( nom = "POST_COMMANDS",
214 UIinfo = { "groupes" : ( "1) Parametres", ) },
215 ang= "post-processing commands .cmd or .post file",
216 fr= u"fichiers .cmd ou .post de commandes de post-traitement",
217 # Sous-parties, moins indentées pour améliorer la lisibilité
219 GLOBAL = FACT ( statut="f",
220 ang ="Post-processing of global quantities",
221 fr =u"Post-traitement des grandeurs globales",
223 # Carte de tous les champs possibles
224 VISU = FACT ( statut="f",
225 ang ="Post-processing of field maps",
226 fr =u"Post-traitement des cartes de champ",
227 VISU_Format=SIMP(statut='o', typ='TXM', into=("MED", "VTK"), defaut="MED"),
228 VISU_Type=SIMP(statut='o', typ='TXM', into=("ELEMENT", "NOEUD"), defaut="ELEMENT"),
231 CUTLINE = FACT ( statut="f",
232 ang = "Post-processing of one cutline",
233 fr = u"Post-traitement d'une ligne de coupe",
234 first_point = SIMP(statut='o', typ='R', min=3, max=3,
235 ang="First point of the cutline (cartesian coordinates).",
236 fr=u"Point de départ (premier point) de la ligne de coupe (coordonnées cartésiennes)."
238 last_point = SIMP(statut='o', typ='R', min=3, max=3,
239 ang="Last point of the cutline (cartesian coordinates).",
240 fr=u"Point d'arrivée (dernier point) de la ligne de coupe (coordonnées cartésiennes)."
242 number_of_points = SIMP(statut='o', typ='I',
243 ang="Number of points of the cutline.",
244 fr=u"Nombre de points de la ligne de coupe."
246 name = SIMP(statut='o', typ='TXM',
247 ang="Name of the cutline, used in the output filename.",
248 fr=u"Nom de la ligne de coupe, utilisé dans le nom du fichier de sortie."
250 field = SIMP(statut='o', typ='TXM', into=("H", "B", "J", "E"),
251 ang="Field on which the cutline is applied.",
252 fr=u"Champ pour lequel la ligne de coupe est définie."
256 CUTPLANE = FACT ( statut="f",
257 ang = "Post-processing of one cutplane",
258 fr = u"Post-traitement d'un plan de coupe",
259 normal_vector = SIMP(statut='o', typ='TXM', into=("Ox", "Oy", "Oz"),
260 ang="Cutplane normal vector, i.e., perpendicular axis, 3 possible cartesian values: Ox, Oy, Oz.",
261 fr=u"Vecteur normal au plan de coupe, i.e., son axe perpendiculaire, parmi les 3 valeurs cartésiennes Ox, Oy et Oz."
263 plane_position = SIMP(statut='o', typ='R',
264 ang="Cutplane position, i.e., its coordinate along the normal vector axis.",
265 fr=u"Position du plan de coupe, i.e., coordonnée le long de l'axe de vecteur normal."
267 number_of_points = SIMP(statut='o', typ='I', min=2, max=2,
268 ang="Number of points on the cutplane, which define a cartesian grid along its canonical directions, e.g., Ox and Oy if plane normal to Oz.",
269 fr=u"Nombre de points sur le plan de coupe dans les deux directions (grille cartésienne), e.g., Ox et Oy si le plan est normal à Oz."
271 name = SIMP(statut='o', typ='TXM',
272 ang="Name of the cutplane, used in the output filename.",
273 fr=u"Nom du plan de coupe, utilisé dans le nom du fichier de sortie."
275 field = SIMP(statut='o', typ='TXM', into=("H", "B", "J", "E"),
276 ang="Field on which the cutplane is applied.",
277 fr=u"Champ pour lequel le plan de coupe est défini."
281 ) # Fin PROC POST_COMMANDS
284 #======================================================================
285 # le fichier .PHYS contient 3 blocs et jusqu'a 3 niveaux de sous-blocs
287 #======================================================================
289 #===================================================================
290 # 2eme bloc : bloc MATERIALS
291 #===================================================================
292 # definition des matériaux utilisateurs
293 # a partir des materiaux de reference ou de materiaux generiques
294 #-------------------------------------------------------------------
296 MATERIAL = OPER (nom = "MATERIAL",
299 UIinfo = { "groupes" : ( "2) Proprietes", ) },
300 ang= "real material block definition",
301 fr= u"définition d'un matériau réel",
303 # regles=EXCLUS('PERMITTIVITY','CONDUCTIVITY'),
305 #---------------------------------------------------------------------
306 # liste des matériaux de reference fournis par THEMIS et des
307 # materiaux generiques (les materiaux generiques peuvent etre utilises
308 # si aucun materiau de reference ne convient)
309 #---------------------------------------------------------------------
310 TYPE = SIMP(statut='o',
313 # matériaux génériques
316 "ZINSULATOR","ZSURFACIC",
317 "NILMAT","EM_ISOTROPIC","EM_ANISOTROPIC",
319 ang = "generic materials list",
320 fr = u"liste des matériaux génériques",
323 ##############################################################################
324 # Remarque generale a tous les materiaux :
325 # pour conserver l'affichage scientifique le nombre derriere l'exposant doit
326 # etre strictement superieur au nombre de decimales
329 ##----------------------------------------------------------------------------------------------
330 # Données de perméabilité, utilisée pour les diélectriques, conducteurs et impédances de surface
331 #-----------------------------------------------------------------------------------------------
332 #HAS_PERMEABILITY = BLOC(condition="TYPE in ('DIELECTRIC','CONDUCTOR','ZSURFACIC')",
334 #------------------------------------------------
335 # sous bloc niveau 2 : PERMEABILITY
336 #------------------------------------------------
338 PERMEABILITY_properties = BLOC (condition="TYPE=='DIELECTRIC' or TYPE=='CONDUCTOR'",
339 PERMEABILITY = FACT ( statut="o",
340 ang ="Permeability properties",
341 fr =u"propriétés de perméabilité du matériau",
342 HOMOGENEOUS = SIMP (statut="o",
345 into = ("TRUE","FALSE"),
346 ang = "the material is homogeneous or not",
347 fr = u"le matériau est homogène ou non",
349 ISOTROPIC = SIMP (statut="o",
352 into = ("TRUE","FALSE"),
353 ang = "the material is isotropic or not",
354 fr = u"le matériau est isotrope ou non",
356 HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
357 LAW = SIMP (statut="o",
360 into = ("LINEAR","NONLINEAR"),
361 ang = "harmonic or time-domain linear or nonlinear law only for homogeneous and isotropic materials",
362 fr = u"loi linéaire (fréquentielle ou temporelle) ou non (homogène et isotrope seulement)",
364 VALUE = SIMP (statut="o",
367 ang = "Relative linear permeability value, also used at first nonlinear iteration",
368 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",
371 NONLINEAR_LAW_PROPERTIES = BLOC (condition="LAW=='NONLINEAR'",
372 NATURE = SIMP (statut="o",
375 into = ("SPLINE","MARROCCO","MARROCCO+SATURATION"),
377 fr = u"nature de la loi",
379 SPLINE_LAW_PROPERTIES = BLOC (condition="NATURE=='SPLINE'",
380 FILENAME = SIMP (statut="o",
381 typ=("FichierNoAbs",'All Files (*)',), # l'existence du fichier n'est pas vérifiée
382 ang="data file name",
383 fr =u"nom du fichier contenant les mesures expérimentales B(H)",
385 ), # Fin BLOC SPLINE_PROPERTIES
386 MARROCCO_LAW_PROPERTIES = BLOC (condition="NATURE in ('MARROCCO','MARROCCO+SATURATION')",
387 ALPHA = SIMP (statut="o",
391 ang="alpha parameter",
392 fr =u"paramètre alpha de la loi de Marrocco" ,
394 TAU = SIMP (statut="o",
399 fr =u"paramètre tau de la loi de Marrocco" ,
401 C = SIMP (statut="o",
406 fr =u"paramètre c de la loi de Marrocco" ,
408 EPSILON = SIMP (statut="o",
412 ang="epsilon parameter",
413 fr =u"paramètre epsilon de la loi de Marrocco" ,
415 ), # Fin BLOC MARROCCO_LAW_PROPERTIES
416 SATURATION_LAW_PROPERTIES = BLOC (condition="NATURE=='MARROCCO+SATURATION'",
417 BMAX = SIMP (statut="o",
421 ang="intersection B",
422 fr = u"valeur de B marquant la fin de la loi de Marrocco et le début du raccord à la loi de saturation",
424 HSAT = SIMP (statut="o",
429 fr = u"valeur de H définissant la loi de saturation",
431 BSAT = SIMP (statut="o",
436 fr = u"valeur de B définissant la loi de saturation",
438 JOIN = SIMP (statut="o",
441 into= ("SPLINE","PARABOLIC","LINEAR"),
442 ang="type of join between laws",
443 fr =u"type de raccord entre la loi choisie et la loi de saturation" ,
445 ), # Fin BLOC SATURATION_LAW_PROPERTIES
446 APPLIEDTO = SIMP (statut="o",
448 into=("B(H)&H(B)","B(H)","H(B)"),
450 ang="join applied to",
451 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.",
453 ), # Fin BLOC NONLINEAR_LAW_PROPERTIES
454 ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
456 ),# fin FACT PERMEABILITY
459 ##----------------------------------------------------------------------------------------------
460 # Données de conductivité, utilisée pour les conducteurs et impédances de surface
461 #-----------------------------------------------------------------------------------------------
462 #HAS_CONDUCTIVITY = BLOC(condition="TYPE in ('CONDUCTOR','ZSURFACIC')",
463 #------------------------------------------------
464 # sous bloc niveau 2 : CONDUCTIVITY
465 #------------------------------------------------
467 CONDUCTIVITY_properties= BLOC (condition="TYPE=='CONDUCTOR'",
468 CONDUCTIVITY = FACT ( statut="o",
469 ang ="Permittivity properties",
470 fr = u"propriétés de permittivité du matériau",
471 HOMOGENEOUS = SIMP (statut="o",
474 into = ("TRUE","FALSE"),
475 ang = "the material is homogeneous or not",
476 fr = u"le matériau est homogène ou non",
478 ISOTROPIC = SIMP (statut="o",
481 into = ("TRUE","FALSE"),
482 ang = "the material is isotropic or not",
483 fr = u"le matériau est isotrope ou non",
485 HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
486 LAW = SIMP (statut="o",
491 fr = u"loi linéaire",
493 VALUE = SIMP (statut="o",
496 ang = "enter a complex relative value",
497 fr = u"saisir une valeur complexe relative",
499 ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
505 # fin FACT CONDUCTIVITY
509 ###################################################################################################
510 #---------------------------------------------
512 #---------------------------------------
513 # matériau generique de type ZINSULATOR
514 #---------------------------------------
516 # aucun parametre a saisir pour ce materiau
519 ###################################################################################################
520 #---------------------------------------------
522 #---------------------------------------------
523 # matériau generique de type NILMAT (fictif)
524 #---------------------------------------------
526 # aucun parametre a saisir pour ce materiau
529 ###################################################################################################
530 #----------------------------------------------------------
531 # sous bloc niveau 1 : EM_ISOTROPIC_FILES
532 #-------------------------------------------------
533 # matériau isotropique non homogene generique
534 #-------------------------------------------------
535 EM_ISOTROPIC_properties=BLOC(condition="TYPE=='EM_ISOTROPIC'",
537 AU_MOINS_UN ('CONDUCTIVITY_File','PERMEABILITY_File'),
539 CONDUCTIVITY_File = SIMP (statut="f",
540 typ=("FichierNoAbs",'MED Files (*.med)',),
541 ang="CONDUCTIVITY MED data file name",
542 fr = u"nom du fichier MED CONDUCTIVITY",
544 PERMEABILITY_File = SIMP (statut="f",
545 typ=("FichierNoAbs",'MED Files (*.med)',),
546 ang="PERMEABILITY MED data file name",
547 fr = u"nom du fichier MED PERMEABILITY",
549 ), # fin bloc EM_ISOTROPIC_properties
552 #---------------------------------------------------
553 # matériau anisotropique non homogene generique
554 #---------------------------------------------------
555 EM_ANISOTROPIC_properties=BLOC(condition="TYPE=='EM_ANISOTROPIC'",
557 AU_MOINS_UN ('CONDUCTIVITY_File','PERMEABILITY_File'),
559 PERMEABILITY_File = SIMP (statut="f",
560 #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
561 #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é
562 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.
563 ang="PERMEABILITY .mater data file name",
564 fr ="nom du fichier .mater PERMEABILITY",
566 CONDUCTIVITY_File = SIMP (statut="f",
567 typ=("FichierNoAbs",'.mater Files (*.mater)'),
568 ang="CONDUCTIVITY .mater data file name",
569 fr ="nom du fichier .mater CONDUCTIVITY",
571 ), # fin bloc EM_ANISOTROPIC_properties
574 #------------------------------------------------------------------
575 # Données de permittivité, utilisée pour les diélectriques seulement
576 #-------------------------------------------------------------------
577 #HAS_PERMITTIVITY = BLOC(condition="TYPE == 'DIELECTRIC'",
579 #------------------------------------------------
580 # sous bloc niveau 2 : PERMITTIVITY
581 #------------------------------------------------
583 Utiliser_la_permittivite = SIMP (statut='o',
585 into = ("OUI","NON"),
587 ang ="Optionnaly use permittivity or not (default)",
588 fr = u"Utilisation optionnelle de la permittivité du matériau. Pas d'utilisation par défaut.",
590 PERMITTIVITY_properties = BLOC (condition="Utiliser_la_permittivite=='OUI'",
591 PERMITTIVITY = FACT ( statut="o",
592 ang ="Permittivity properties",
593 fr = u"propriétés de permittivité du matériau",
594 HOMOGENEOUS = SIMP (statut="o",
597 into = ("TRUE","FALSE"),
598 ang = "the material is homogeneous or not",
599 fr = u"le matériau est homogène ou non",
601 ISOTROPIC = SIMP (statut="o",
604 into = ("TRUE","FALSE"),
605 ang = "the material is isotropic or not",
606 fr = u"le matériau est isotrope ou non",
608 HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
609 LAW = SIMP (statut="o",
614 fr = u"loi linéaire",
616 VALUE = SIMP (statut="o",
619 ang = "enter a complex relative value",
620 fr = u"saisir une valeur complexe relative",
622 ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
624 ),# fin FACT PERMITTIVITY
626 ) # fin OPER MATERIAL
630 ##############################################################################
631 # Remarque generale a tous les materiaux :
632 # pour conserver l'affichage scientifique le nombre derriere l'exposant doit
633 # etre strictement superieur au nombre de decimales
636 #===================================================================
637 # 3eme bloc : bloc SOURCES
638 #====================================================================
639 # definition des differentes sources qui seront dans le bloc SOURCES
640 #-------------------------------------------------------------------
644 SOURCE = OPER ( nom = "SOURCE",
647 UIinfo = { "groupes" : ( "2) Proprietes", ) },
648 ang = "source definition",
649 fr = u"définition d'une source",
651 # regles = (UN_PARMI('STRANDED_INDUCTOR','HPORT','EPORT'), # choix d'un type de source
652 # UN_PARMI('WAVEFORM_CONSTANT','WAVEFORM_SINUS'), # choix d'une forme de source
655 #----------------------------------------------------------
656 # sous bloc niveau 1 : stranded inductor source
657 ##---------------------------------------------------------
658 Type=SIMP(statut='o',
660 into=("STRANDED_INDUCTOR", "HPORT", "EPORT"),
662 fr = u"Type de source",
665 STRANDED_INDUCTOR_properties = BLOC (condition="Type=='STRANDED_INDUCTOR'",
666 STRANDED_INDUCTOR = FACT(statut='o',
667 ang="Stranded inductor source",
668 fr=u"source de type inducteur bobiné",
669 NTURNS = SIMP (statut="o",
672 ang="number of turns in the inductor",
673 fr= u"nombre de tours dans l'inducteur bobiné",
675 TYPE = SIMP (statut="o",
679 fr= u"source de type courant",
680 ang="current source type",
683 ),# FIN de FACT STRANDED_INDUCTOR
684 HPORT_properties = BLOC (condition="Type=='HPORT'",
685 HPORT = FACT(statut='o',
686 ang="Magnetic port source",
687 fr=u"source de type port magnétique",
688 TYPE = SIMP (statut="o",
690 into=("VOLTAGE","CURRENT"),
691 fr= u"source de type tension ou courant",
692 ang="voltage or current source type",
695 ),# FIN de FACT HPORT
696 EPORT_properties = BLOC (condition="Type=='EPORT'",
697 EPORT = FACT(statut='o',
698 ang="Electric port source",
699 fr=u"source de type port électrique",
700 TYPE = SIMP (statut="o",
702 into=("VOLTAGE","CURRENT"),
703 fr= u"source de type tension ou courant",
704 ang="voltage or current source type",
707 ),# FIN de FACT EPORT
709 Signal=SIMP(statut='o',
711 into=("WAVEFORM_CONSTANT", "WAVEFORM_SINUS"),
712 ang = "Signal type, i.e., source evolution shape",
713 fr = u"Type de signal, i.e., forme de la source",
715 WAVEFORM_CONSTANT_properties = BLOC (condition="Signal=='WAVEFORM_CONSTANT'",
716 WAVEFORM_CONSTANT = FACT(statut='o',
717 ang="constant source",
718 fr=u"source constante",
719 AMPLITUDE = SIMP (statut="o",
722 ang = "enter the source magnitude value, in A or V units",
723 fr = u"saisir la valeur de l'amplitude de la source, en unités A ou V",
726 ),# FIN de FACT WAVEFORM_CONSTANT
728 WAVEFORM_SINUS_properties = BLOC (condition="Signal=='WAVEFORM_SINUS'",
729 WAVEFORM_SINUS = FACT(statut='o',
730 ang="sinus variation source",
731 fr=u"source variant avec une forme sinusoïdale, définie par son amplitude, sa fréquence et sa phase",
732 AMPLITUDE = SIMP (statut="o",
735 ang = "enter the source magnitude value, in A or V units",
736 fr = u"saisir la valeur de l'amplitude de la source, en unités A ou V",
738 FREQUENCY = SIMP (statut="o",
741 ang = "enter the source frequency value, in Hz units",
742 fr = u"saisir la valeur de la fréquence de la source, en Hz",
744 PHASE = SIMP (statut="o",
747 ang = "enter the source phase value, in degrees units",
748 fr = u"saisir la valeur de la phase de la source, en degrés",
751 ),# FIN de FACT WAVEFORM_SINUS
757 STRANDED_INDUCTOR_GEOMETRY=OPER(nom="STRANDED_INDUCTOR_GEOMETRY",
760 sd_prod=stranded_inductor_geometry,
761 UIinfo = { "groupes" : ( "2) Proprietes", ) },
762 ang = "Geometry properties (shape, direction, etc.) for this stranded inductor",
763 fr = u"Propriétés géométriques de cet inducteur bobiné, e.g., forme, direction, sens",
765 Forme=SIMP(statut='o', typ="TXM", into=("Droit", "Circulaire"),
766 ang = "Stranded inductor shape. Straight or circular.",
767 fr = u"Forme de l'inducteur bobiné (complet ou morceau) : droit ou circulaire.",
769 Propriete= BLOC (condition="Forme=='Circulaire'",
770 Centre=SIMP(statut='o',typ='R',min=3,max=3,
771 ang = "Circular stranded inductor rotation center (cartesian coordinates).",
772 fr = u"Centre de rotation, en coordonnées cartésiennes, de l'inducteur bobiné (complet ou morceau) circulaire.",
775 Direction=SIMP(statut='o',typ='R',min=3,max=3,
776 ang = "Stranded inductor direction (or rotation) axis for the straight (circular) inductor (cartesian coordinates).",
777 fr = u"Axe indiquant la direction de l'inducteur bobiné droit, ou l'axe de rotation (support : Centre) de l'inducteur circulaire, en coordonnées cartésiennes.",
779 Section=SIMP(statut='o', typ='R',
780 ang = "Stranded inductor section (m^2).",
781 fr = u"Section de l'inducteur bobiné, en m^2.",
785 #=========================================================
786 # création d'une macro pour traiter les INCLUDE
788 #----------------------------------------------------------
790 INCLUDE = MACRO ( nom = "INCLUDE",
792 UIinfo = { "groupes" : ( "3) Bibliotheque", ) },
793 sd_prod = opsCarmel.INCLUDE,
794 op_init = opsCarmel.INCLUDE_context,
796 ang = "Used in order to add external material, source, etc. libraries to the study.",
797 fr = u"Permet d'utiliser des bibliothèques de matériaux, sources, etc., dans l'étude.",
799 FileName = SIMP ( statut = "o",
800 typ = ('Fichier', 'comm Files (*.comm);;All Files (*)',),
801 fr = u"Emplacement du fichier (chemin absolu ou relatif) contenant la bibliothèque des matériaux, etc.",
802 ang = "material library file (full or relative path)",
807 MESHGROUP = OPER (nom = "MESHGROUP",
810 UIinfo= {"groupes":("4) Maillage",)},
811 fr= u"attribution d'un matériau ou d'une source à un groupe du maillage",
812 ang = "mesh group association to material or source",
815 EXCLUS ('MATERIAL','SOURCE'),
818 # ----------------------------------------------------------
819 # le mot cle SIMP doit etre facultatif sinon la recuperation
820 # des groupes de mailles sous SALOME ne fonctionne pas car
821 # le concept ne peut pas etre nomme car non valide
822 #-----------------------------------------------------------
823 Domaine = SIMP (statut="f",
824 typ=(grmaille, 'TXM'),
826 ang="Domain used with stranded inductors or topological holes.",
827 fr =u"Domaine utilisé par les inducteurs bobinés ou les trous topologiques.",
830 MATERIAL = SIMP (statut="f",
832 ang="name of the linked real or imaginary material",
833 fr =u"nom du matériau réel ou imaginaire associé",
835 SOURCE = SIMP (statut="f",
837 ang="name of the linked source",
838 fr =u"nom de la source associée",
840 STRANDED_INDUCTOR_GEOMETRY = SIMP ( statut="f",
841 typ=(stranded_inductor_geometry),
842 ang="name of the linked stranded inductor geometry",
843 fr =u"nom de la géométrie d'inducteur bobiné associée",
847 # --------------------------------------------------
848 # definition de macro-groupe de mailles
849 # il est associe a un materiau, source ou inducteur bobiné en morceaux
850 #---------------------------------------------------
852 MACRO_GROUPE = OPER (nom="MACRO_GROUPE",
855 sd_prod=macro_groupe,
856 UIinfo = { "groupes" : ( "4) Maillage", ) },
857 fr=u"Macro-groupe = liste de groupes de maillage, e.g., inducteur bobiné en morceaux.",
858 ang=u"Macro-groupe = liste of mesh groups, e.g., stranded inductor defined as several parts.",
860 EXCLUS ('MATERIAL','SOURCE'),
862 Domaine = SIMP (statut='f',
863 typ=(grmaille, 'TXM'),
865 ang="Domain used with stranded inductors or topological holes.",
866 fr =u"Domaine utilisé par les inducteurs bobinés ou les trous topologiques.",
869 MATERIAL = SIMP (statut="f",
871 ang="name of the linked real or imaginary material",
872 fr =u"nom du matériau réel ou imaginaire associé",
874 SOURCE = SIMP (statut="f",
876 ang="name of the linked source",
877 fr =u"nom de la source associée",
879 LISTE_MESHGROUP=SIMP(statut='f',# facultatif pour l'acquisition automatique des groupes du maillage
882 ang="Ordered list of associated mesh groups, e.g., stranded inductor parts or topological hole parts.",
883 fr =u"Liste ordonnée de groupes de maillage associés entre eux, e.g., morceaux d'un inducteur bobiné ou d'un trou topologique.",