6. Quelques questions#

6.1. Comment savoir quel fichier catalogue est utilisé par un calcul ?#

La situation est la suivante:

  1. un calcul a été exécuté avec Code_Aster ;

  2. plusieurs fichiers de catalogue des commandes sont présents dans l’environnement;

  3. l’utilisateur – ou le développeur – veut savoir celui qui est effectivement utilisé.

Une solution peut être la suivante:

  1. importer le catalogue dans le fichier de commande, par exemple dans ahlv100a.comm;

  2. insérer dans le fichier de commande la séquence suivante qui:

  • importe le catalogue,

  • écrit la référence du catalogue sur la sortie standard,

  • interrompt le traitement.

import cata, sys print “ahlv100a.comm:cata= “,cata sys.exit(0)

Avec cette séquence, on obtient un résultat du style suivant:

cata=<module “cata” from “/home/salome/yessayan/Devel/Asterv7/bibpyt/Cata/cata.pyc”>

D’où l’on déduit que le catalogue utilisé peut se trouver dans le fichier:

/home/salome/yessayan/Devel/Asterv7/bibpyt/Cata/cata.py

6.2. Comment le mode DEBUG est-il géré ?#

Dans Eficas et dans le superviseur - en fait, dans tout script Python - le mode DEBUG est géré via une variable standard définie dans l’espace de noms global __builtin__: __debug__. En mode normal d’interprétation (python main.py), __debug__ est mise à 1 (dansmain.pyc) mais en mode optimisé (python –o main.py) __debug__ est mise à 0 (dans main.pyo)

A tout instant, dans tout les modules, la variable __debug__ peut être utilisée pour conditionner le traitement.

6.3. Où le catalogue de commande est-il chargé dans la mémoire#

Que ce soit dans le superviseur ou dans l’interface graphique Eficas, JdC, l’objet Python contenant le catalogue est créé dans module cata du package Cata. Plus exactement, JdC est créé au moment où le module cata est importé: l’import est réalisé dans la méthode imports de la classe SUPERV module Execution/E_SUPERV. Après l’import, l’objet JdC contient – dans son attribut commandes, de type list - la définition de toutes les commandes disponibles ainsi que celle de tous les mots-clés associés à chaque commande.

6.3.1. Création de l’objet JdC#

Au début du script cata.py , le JdC est déclaré par l’instruction:

JdC = JDC_CATA(code=”ASTER”, execmodul=None, regles = (AU_MOINS_UN(“DEBUT”,”POURSUITE”), AU_MOINS_UN(“FIN”), A_CLASSER((“DEBUT”,”POURSUITE”),”FIN”)))

Cette instruction fait principalement appel à la méthode __init__ de la classe N_JDC_CATA.JDC_CATA (package Noyau). Dans cette méthode, l’objet JdC créé est enregistré dans la l’espace global __builtins__ , par l’intermédiaire de la variable _cata dans le module CONTEXT: __builtins__[ « CONTEXT » ]._cata.

Une référence sur le catalogue courant est toujours disponible dans l‘espace de noms global __builtins__.

6.3.2. Chargement des entités du catalogue dans l’objet JdC#

Après la création le chargement s’effectue toujours au moment de l’import du catalogue dans la méthode imports, en créant des objets des types

  1. OPER:

  2. PROC:

  3. MACRO:

6.4. Où le jeu de commandes est-il exécuté par le superviseur ?#

Le jeu de commande j (objet de type Accas.A_JDC.JDC) est exécuté dans la méthode Execute de la classe SUPERV dans le module E_SUPERV du package Execution.

Deux cas sont possibles:

  1. En mode PAR_LOT=’OUI’ (dans le script l’attribut j.par_lot du jeu de commande est positionné à ‘OUI’), le traitement est effectué par l’appel

j.exec_compile();

  1. En mode PAR_LOT=’NON’ (dans le script l’attribut j.par_lot du jeu de commande est positionné à ‘NON’), le traitement est effectué par l’appel

ier= self.ParLotMixte( j ).

6.5. A quoi sert le mot-clé _F utilisé dans le fichier de commande ?#

Dans le fichier de commande, un mot-clé facteur est introduit par la chaîne de caractères _F. En fait cette chaîne de caractères est un nom de classe qui prend en charge la création en mémoire du dictionnaire correspondant au mot-clé facteur à partir d’une description utilisant le signe égal ’=’ et des parenthèses plutôt que les deux points ’:’ et les accolades qu’il faudrait utiliser avec un dictionnaire Python standard.

Par exemple:

ELAS= _F( E = 2.1E11, NU = 0.3, ALPHA = 1.E-5, RHO = 8000. )

est équivalent à :

ELAS={ E : 2.1E11, NU : 0.3, ALPHA : 1.E-5, RHO : 8000.}

Cette présentation est davantage adaptée aux souhaits des utilisateurs finals et à la tradition du langage de commande de Code_Aster .

6.6. Où l’interface getvxx du jeu de commande se trouve-telle ?#

Les méthodes getvxx appartiennent à la classe ETAPE définie dans le module B_ETAPE du package Build.