Salome HOME
gestion des listes et label sur 2
[tools/eficas.git] / Carmel3D / Carmel3D_Cata_frequentiel_V1.py
1 # -*- coding: utf-8 -*-
2 # --------------------------------------------------
3 # Copyright (C) 2007-2013   EDF R&D
4 #
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.
9 #
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.
14 #
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
18 #
19 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #
21 # --------------------------------------------------
22
23 import os
24 import sys
25 from Accas import *
26 import types
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
31
32 #print "catalogue carmel"
33 #print "repIni = ", repIni
34
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 
47
48 #CONTEXT.debug = 1
49 # --------------------------------------------------
50 # déclaration du jeu de commandes : 1ere instruction du catalogue obligatoire 
51 #---------------------------------------------------
52
53 ##=========================================================
54 JdC = JDC_CATA ( code = 'CARMEL3D',
55                 execmodul = None,
56                  regles =(
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'),
66                            ),
67                  ) # Fin JDC_CATA
68
69 import opsCarmel
70
71 #======================================================================
72 # 1er bloc : bloc VERSION
73 # ce bloc est volontairement cache dans l IHM 
74 #===================================================
75
76 VERSION = PROC ( nom = "VERSION",
77                         op = None,
78                         repetable = 'n',
79                         UIinfo= {"groupes":("CACHE",)},
80                         ang= "version block definition", 
81
82 #----------------------
83 # Liste des parametres
84 #----------------------
85         
86    NUM      = SIMP (statut="o",
87                     typ="I",
88             defaut=1, 
89                     ang="version number of the physical model", 
90                     into=( 1,),
91                    ),
92    FILETYPE = SIMP (statut="o",
93                     typ="TXM",
94             defaut="PHYS", 
95                     ang="file type",
96                     into=( "PHYS",),
97                    ),
98                    
99 ) # Fin PROC VERSION
100
101 PARAMETERS= PROC ( nom = "PARAMETERS",
102                  op = None,
103                  repetable = 'n',
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",
113                                 ),
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).",
117                                            ),
118     
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.",
122                                                 ), 
123     
124     Formulation=SIMP(statut='o', typ='TXM', into=("TOMEGA","APHI"), 
125                                                  ang="Problem formulation.",
126                                                  fr =u"Formulation du problème.",
127                                                 ), 
128
129     FREQUENCY = SIMP (statut="o",
130                  typ="R",
131                  defaut=50.0, 
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",
134                  val_min=0.0,
135                 ),
136  
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.",
140                                                 ), 
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.",
144                                                 ), 
145
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.",
149                                                 ), 
150 ) # Fin PROC PARAMETERS
151
152 SOLVEUR = PROC ( nom ="SOLVEUR",
153           op=None,
154           repetable = 'n',
155           UIinfo= {"groupes":("1) Parametres",)},
156           ang= "Solver parameters for this study", 
157           fr= u"Paramètres liés au solveur de l'étude", 
158           
159           Type= SIMP (statut="o",
160                               typ="TXM",
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.",
165                             ), 
166                                       
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.",
173                                                         ), 
174                                    
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.",
181                                                       ), 
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.",
185                                                                               ), 
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.",
189                                                                     ), 
190                               ), 
191                                 
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.",
198                                                                    ), 
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.",
202                                                                    ), 
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.",
206                                                                    ), 
207                               ), 
208                 ), 
209     )
210
211 POST_COMMANDS = PROC ( nom = "POST_COMMANDS",
212                                                 op = None,
213                                                 repetable = 'n',
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é
218     # Grandeurs globales
219     GLOBAL = FACT ( statut="f", 
220                                 ang ="Post-processing of global quantities",
221                                 fr  =u"Post-traitement des grandeurs globales",
222                                 ), 
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"), 
229                          ), 
230     # Ligne de coupe
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)."
237                                                              ), 
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)."
241                                                              ), 
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."
245                                                              ), 
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."
249                                                              ), 
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."
253                                                              ), 
254                          ), 
255     # Plan de coupe
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."
262                                                              ), 
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."
266                                                              ), 
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."
270                                                              ), 
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."
274                                                              ), 
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."
278                                                              ), 
279                          ), 
280             
281 ) # Fin PROC POST_COMMANDS
282
283
284 #======================================================================
285 # le fichier .PHYS contient 3 blocs et jusqu'a 3 niveaux de sous-blocs
286
287 #======================================================================
288
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 #-------------------------------------------------------------------
295
296 MATERIAL = OPER (nom = "MATERIAL",
297                  op = None,
298                  repetable = 'n',
299                  UIinfo = { "groupes" : ( "2) Proprietes", ) },
300                  ang= "real material block definition", 
301                  fr= u"définition d'un matériau réel", 
302                  sd_prod= material,
303  #                regles=EXCLUS('PERMITTIVITY','CONDUCTIVITY'),
304
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',
311                              typ='TXM',
312                              into=(
313 #  matériaux génériques 
314                                  "DIELECTRIC",
315                                  "CONDUCTOR",
316                                   "ZINSULATOR","ZSURFACIC",
317                                  "NILMAT","EM_ISOTROPIC","EM_ANISOTROPIC",
318                              ),
319                              ang = "generic materials list",
320                              fr  = u"liste des matériaux génériques",
321                             ),
322
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 
327 #
328
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')",
333
334 #------------------------------------------------
335 # sous bloc niveau 2 : PERMEABILITY
336 #------------------------------------------------
337 #
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",
343                                             typ="TXM",
344                                             defaut="TRUE",
345                                             into = ("TRUE","FALSE"),
346                                             ang = "the material is homogeneous or not",
347                                             fr  = u"le matériau est homogène ou non",
348                                            ),
349                         ISOTROPIC = SIMP (statut="o",
350                                           typ="TXM",
351                                           defaut="TRUE",
352                                           into = ("TRUE","FALSE"),
353                                           ang = "the material is isotropic or not",
354                                           fr  = u"le matériau est isotrope ou non",
355                                          ),
356                    HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
357                         LAW = SIMP (statut="o",
358                                     typ="TXM",
359                                     defaut="LINEAR",
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)",
363                                    ), 
364                         VALUE = SIMP (statut="o",
365                                       typ="C", 
366                                       defaut=1,
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",
369                                      ),
370
371                     NONLINEAR_LAW_PROPERTIES = BLOC (condition="LAW=='NONLINEAR'",
372                         NATURE = SIMP (statut="o",
373                                        typ="TXM",
374                                        defaut="MARROCCO",
375                                        into = ("SPLINE","MARROCCO","MARROCCO+SATURATION"),
376                                        ang = "nature law",
377                                        fr  = u"nature de la loi",
378                                       ),
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)",
384                                         ),
385                      ), # Fin BLOC SPLINE_PROPERTIES
386                      MARROCCO_LAW_PROPERTIES = BLOC (condition="NATURE in ('MARROCCO','MARROCCO+SATURATION')",
387                         ALPHA = SIMP (statut="o", 
388                                       typ="R",
389                                       defaut=0,
390                                       val_min=0,
391                                       ang="alpha parameter",
392                                       fr =u"paramètre alpha de la loi de Marrocco" ,
393                                      ),
394                         TAU = SIMP (statut="o", 
395                                     typ="R",
396                                     defaut=0,
397                                     val_min=0,
398                                     ang="tau parameter",
399                                     fr =u"paramètre tau de la loi de Marrocco" ,
400                                    ),
401                         C = SIMP (statut="o", 
402                                   typ="R",
403                                   defaut=0,
404                                   val_min=0,
405                                   ang="c parameter",
406                                   fr =u"paramètre c de la loi de Marrocco" ,
407                                  ),
408                         EPSILON = SIMP (statut="o", 
409                                         typ="R",
410                                         defaut=0,
411                                         val_min=0,
412                                         ang="epsilon parameter",
413                                         fr =u"paramètre epsilon de la loi de Marrocco" ,
414                                        ),
415                      ), # Fin BLOC MARROCCO_LAW_PROPERTIES
416                      SATURATION_LAW_PROPERTIES = BLOC (condition="NATURE=='MARROCCO+SATURATION'",
417                         BMAX = SIMP (statut="o", 
418                                      typ="R",
419                                      defaut=0,
420                                      val_min=0,
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",
423                                     ),
424                         HSAT = SIMP (statut="o", 
425                                      typ="R",
426                                      defaut=0,
427                                      val_min=0,
428                                      ang="H value",
429                                      fr = u"valeur de H définissant la loi de saturation",
430                                     ),
431                         BSAT = SIMP (statut="o", 
432                                      typ="R",
433                                      defaut=0,
434                                      val_min=0,
435                                      ang="B value",
436                                      fr = u"valeur de B définissant la loi de saturation",
437                                     ),
438                         JOIN = SIMP (statut="o", 
439                                      typ="TXM",
440                                      defaut="SPLINE",
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" ,
444                                     ),
445                      ), # Fin BLOC SATURATION_LAW_PROPERTIES
446                         APPLIEDTO = SIMP (statut="o",    
447                                           typ="TXM",   
448                                           into=("B(H)&H(B)","B(H)","H(B)"),
449                                           defaut="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.",
452                                          ),
453                     ), # Fin BLOC NONLINEAR_LAW_PROPERTIES
454                    ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
455              ), 
456     ),# fin FACT PERMEABILITY
457
458
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 #------------------------------------------------
466   
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",
472                                             typ="TXM",
473                                             defaut="TRUE",
474                                             into = ("TRUE","FALSE"),
475                                             ang = "the material is homogeneous or not",
476                                             fr  = u"le matériau est homogène ou non",
477                                            ),
478                         ISOTROPIC = SIMP (statut="o",
479                                           typ="TXM",
480                                           defaut="TRUE",
481                                           into = ("TRUE","FALSE"),
482                                           ang = "the material is isotropic or not",
483                                           fr  = u"le matériau est isotrope ou non",
484                                          ),
485                        HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
486                         LAW = SIMP (statut="o",
487                                     typ="TXM",
488                                     defaut="LINEAR",
489                                     into = ("LINEAR",),
490                                     ang = "linear law",
491                                     fr  = u"loi linéaire",
492                                    ),
493                         VALUE = SIMP (statut="o",
494                                       typ="C", 
495                                       defaut=1, 
496                                       ang = "enter a complex relative value",
497                                       fr = u"saisir une valeur complexe relative",
498                                      ),
499                        ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
500                       ), 
501
502              ), 
503
504             
505         # fin FACT CONDUCTIVITY
506
507    
508
509 ###################################################################################################
510 #---------------------------------------------
511 # sous bloc niveau 1  
512 #---------------------------------------
513 # matériau generique de type ZINSULATOR 
514 #---------------------------------------
515   
516 # aucun parametre a saisir pour ce materiau
517
518
519 ###################################################################################################
520 #---------------------------------------------
521 # sous bloc niveau 1     
522 #---------------------------------------------
523 # matériau generique de type NILMAT (fictif)  
524 #---------------------------------------------
525   
526 # aucun parametre a saisir pour ce materiau
527
528
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'", 
536                  regles =(
537                            AU_MOINS_UN ('CONDUCTIVITY_File','PERMEABILITY_File'),
538                            ),
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",
543                                     ),
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",
548                                     ),
549    ), # fin bloc EM_ISOTROPIC_properties
550
551     
552 #---------------------------------------------------
553 # matériau  anisotropique non homogene generique 
554 #---------------------------------------------------
555    EM_ANISOTROPIC_properties=BLOC(condition="TYPE=='EM_ANISOTROPIC'",
556                  regles =(
557                            AU_MOINS_UN ('CONDUCTIVITY_File','PERMEABILITY_File'),
558                            ),                 
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",
565                                     ),
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",
570                                     ),
571    ), # fin bloc EM_ANISOTROPIC_properties
572
573
574 #------------------------------------------------------------------
575 # Données de permittivité, utilisée pour les diélectriques seulement
576 #-------------------------------------------------------------------
577   #HAS_PERMITTIVITY = BLOC(condition="TYPE == 'DIELECTRIC'",
578
579 #------------------------------------------------
580 # sous bloc niveau 2 : PERMITTIVITY
581 #------------------------------------------------
582
583  Utiliser_la_permittivite = SIMP (statut='o', 
584                                  typ='TXM',
585                                  into = ("OUI","NON"),
586                                  defaut="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.",
589                                 ), 
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",
595                                             typ="TXM",
596                                             defaut="TRUE",
597                                             into = ("TRUE","FALSE"),
598                                             ang = "the material is homogeneous or not",
599                                             fr  = u"le matériau est homogène ou non",
600                                            ),
601                         ISOTROPIC = SIMP (statut="o",
602                                           typ="TXM",
603                                           defaut="TRUE",
604                                           into = ("TRUE","FALSE"),
605                                           ang = "the material is isotropic or not",
606                                           fr  = u"le matériau est isotrope ou non",
607                                          ),
608                        HOMOGENEOUS_ISOTROPIC_PROPERTIES = BLOC (condition="HOMOGENEOUS=='TRUE' and ISOTROPIC=='TRUE'",
609                         LAW = SIMP (statut="o",
610                                     typ="TXM",
611                                     defaut="LINEAR",
612                                     into = ("LINEAR",),
613                                     ang = "linear law",
614                                     fr  = u"loi linéaire",
615                                    ),
616                         VALUE = SIMP (statut="o",
617                                       typ="C", 
618                                       defaut=1,
619                                       ang = "enter a complex relative value",
620                                       fr = u"saisir une valeur complexe relative",
621                                      ),
622                        ), # Fin BLOC HOMOGENEOUS_ISOTROPIC_PROPERTIES
623                     ), 
624                 ),# fin FACT PERMITTIVITY
625
626         )  # fin OPER MATERIAL
627     
628     
629
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 
634
635
636 #===================================================================
637 # 3eme bloc : bloc SOURCES
638 #====================================================================
639 # definition des differentes sources qui seront dans le bloc SOURCES
640 #-------------------------------------------------------------------
641
642
643
644 SOURCE = OPER ( nom = "SOURCE",
645                 op = None,
646                 repetable = 'n',
647                 UIinfo = { "groupes" : ( "2) Proprietes", ) },
648                 ang = "source definition", 
649                 fr = u"définition d'une source", 
650                 sd_prod = 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
653                         
654
655 #----------------------------------------------------------
656 # sous bloc niveau 1 : stranded inductor source 
657 ##---------------------------------------------------------
658         Type=SIMP(statut='o', 
659                                 typ='TXM', 
660                                 into=("STRANDED_INDUCTOR", "HPORT", "EPORT"), 
661                                 ang = "Source type", 
662                                 fr = u"Type de source", 
663                                 ), 
664
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",
670                                                         typ="I",
671                                                         defaut=1,
672                                                         ang="number of turns in the inductor",
673                                                         fr= u"nombre de tours dans l'inducteur bobiné",
674                                                        ),
675                                          TYPE = SIMP (statut="o",
676                                                       typ="TXM",
677                                                       defaut="CURRENT",
678                                                       into=("CURRENT",),
679                                                       fr= u"source de type courant",
680                                                       ang="current source type",
681                                                      ),
682                                 ), 
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",
689                                           typ="TXM",
690                                           into=("VOLTAGE","CURRENT"),
691                                           fr= u"source de type tension ou courant",
692                                           ang="voltage or current source type",
693                                          ),
694                 ), 
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",
701                                           typ="TXM",
702                                           into=("VOLTAGE","CURRENT"),
703                                           fr= u"source de type tension ou courant",
704                                           ang="voltage or current source type",
705                                          ),
706                 ), 
707             ),# FIN de FACT EPORT
708             
709             Signal=SIMP(statut='o', 
710                                 typ='TXM', 
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", 
714                                 ), 
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",
720                                                            typ="R", 
721                                                            defaut=1,
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",
724                                                           ),
725                 ),
726             ),# FIN de FACT WAVEFORM_CONSTANT
727             
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",
733                                                         typ="R", 
734                                                         defaut=1,
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",
737                                                        ),
738                                       FREQUENCY = SIMP (statut="o",
739                                                         typ="R", 
740                                                         defaut=0.0,
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",
743                                                        ),
744                                       PHASE = SIMP (statut="o",
745                                                     typ="R", 
746                                                     defaut=0.0,
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",
749                                                    ),
750                 ), 
751             ),# FIN de FACT WAVEFORM_SINUS
752
753        
754 )# Fin OPER SOURCE
755
756
757 STRANDED_INDUCTOR_GEOMETRY=OPER(nom="STRANDED_INDUCTOR_GEOMETRY",
758             op=None,
759             repetable = 'n',
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",
764             
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.",
768                                 ), 
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.",
773                                         ),  
774                     ),               
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.",
778                                         ),  
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.",
782                                         ),  
783 )              
784
785 #=========================================================
786 # création d'une macro pour traiter les INCLUDE
787 #
788 #----------------------------------------------------------
789
790 INCLUDE = MACRO ( nom = "INCLUDE",
791                  op = None,
792                  UIinfo = { "groupes" : ( "3) Bibliotheque", ) },
793                  sd_prod = opsCarmel.INCLUDE,
794                  op_init = opsCarmel.INCLUDE_context,
795                  fichier_ini = 1,
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.",
798  
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)",
803                      ),
804   
805  ) # Fin MACRO 
806
807 MESHGROUP  = OPER (nom = "MESHGROUP",
808                 op = None,
809                 repetable = 'n',
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", 
813                 sd_prod= grmaille,
814                 regles =(
815                          EXCLUS ('MATERIAL','SOURCE'),
816                            ),
817
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'), 
825                         defaut="default", 
826                         ang="Domain used with stranded inductors or topological holes.",
827                         fr =u"Domaine utilisé par les inducteurs bobinés ou les trous topologiques.",
828                         ), 
829
830               MATERIAL =  SIMP (statut="f",
831                         typ=(material),
832                         ang="name of the linked real or imaginary material",
833                         fr =u"nom du matériau réel ou imaginaire associé",
834                                 ), 
835               SOURCE =  SIMP (statut="f",
836                         typ=(source,),
837                         ang="name of the linked source",
838                         fr =u"nom de la source associée",
839                                 ), 
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",
844                                                    )
845                       )
846
847 # --------------------------------------------------
848 # definition de macro-groupe de mailles
849 # il est associe a un  materiau, source ou inducteur bobiné en morceaux
850 #---------------------------------------------------
851
852 MACRO_GROUPE = OPER (nom="MACRO_GROUPE", 
853                     op=None, 
854                     repetable='n', 
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.", 
859                     regles =(
860                              EXCLUS ('MATERIAL','SOURCE'),
861                            ),
862               Domaine = SIMP (statut='f',
863                                             typ=(grmaille, 'TXM'), 
864                                             defaut="default", 
865                                             ang="Domain used with stranded inductors or topological holes.",
866                                             fr =u"Domaine utilisé par les inducteurs bobinés ou les trous topologiques.",
867                                            ),  
868
869               MATERIAL =  SIMP (statut="f",
870                                             typ=(material,),
871                                             ang="name of the linked real or imaginary material",
872                                             fr =u"nom du matériau réel ou imaginaire associé",
873                                     ), 
874               SOURCE =  SIMP (statut="f",
875                                         typ=(source,),
876                                         ang="name of the linked source",
877                                         fr =u"nom de la source associée",
878                                     ), 
879                LISTE_MESHGROUP=SIMP(statut='f',# facultatif pour l'acquisition automatique des groupes du maillage
880                                                         typ=(grmaille,),
881                                                         min=1,max=100,                     
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.",
884                                                         ), 
885 ) # Fin OPER