Les SD globales =============== Toutes les structures de données globales échangées dans Code_Aster existent dans l’espace Python. Il existe trois types de SDglobales: * Les SD globales strictement Python: elles n’existent que dans l’espace Python et n’ont pas leur pendant dans l’espace Fortran. * Les SD globales strictement Fortran: elles existent dans l’espace Python mais sont simplement déclarées comme étant des types. Elles n’ont ni méthode, ni attribut spécifique (c'est-à-dire autres que ceux de la classe chapeau ASSD). * Les SD globales mixtes. Elles existent dans l’espace Python, ont des méthodes et/ou des attributs spécifiques. De plus, elles existent dans l’espace Fortran. La déclaration des SD globales est faite dans les fichiers code_aster/Cata/Legacy/DS/co_*\*.py. Ces SD globales qui sont transmises d'une commande à une autre sont baptisées «concepts»: ce sont les objets Python connus du jeu de commandes. Les concepts dérivent tous, directement ou indirectement, de la classe chapeau ASSD. L'attribut de classe cata_sdj (comme «catalogue de structure de données Jeveux») précise la classe Python qui définit la structure de données Fortran. Par exemple: cata_sdj = 'SD.sd_fonction.sd_fonction_aster' qui indique que la structure de données Fortran des fonctions est définie par la classe sd_fonction_aster du module sd_fonction.py dans la bibliothèque SD. Par la suite, on s'intéresse aux objets JEVEUX des SD et à leur vérification. Le mécanisme de vérification des SD globales est activé dans la plupart des cas-tests, sauf lorsque cette vérification est trop coûteuse ou bien échoue. L’activation se fait de deux manières: * Globalement, sur tout le fichier de commande, via le mot-clef SDVERI=’OUI’dans la commande DEBUT * Localement, entre chaque commande, via le mot-clef SDVERI=’OUI’dans la commande DEBUG La vérification est du ressort du développeur de la structure de données globales. Comme on utilise une classe Python, les vérifications peuvent être aussi poussées que nécessaires (nom et type des objets JEVEUX, cohérence des dimensions, SDspécialisées suivant les opérateurs, etc.). SD purement en Python --------------------- Il en existe très peu. Il est recommandé de déclarer ce genre de classes, dans le fichier de commandes (ou dans un module Python importé dans le fichier de commandes). Il existe actuellement quatre classes de ce type. Voici leur déclaration dans DataStructure.py: .. code-block:: text class no (GEOM): pass class grno(GEOM): pass class ma (GEOM): pass class grma(GEOM): pass Ces classes dérivent toutes de la classe mère GEOM décrite dans le fichier N_GEOM de la bibliothèque bibpyt/Noyau. Elles ne servent qu’à définir un type spécifique pour les entités géométriques pour la gestion des mots-clefs GROUP_MA/GROUP_NO dans le décodeur syntaxique du catalogue des commandes. SD avec espace Fortran ---------------------- Toutes ces classes sont importées dans l'entête du catalogue (code_aster/Cata/DataStructure.py). Exemples: .. code-block:: text class cabl_precont(ASSD): cata_sdj = "SD.sd_cabl_precont.sd_cabl_precont" cabl_precontest une classe purement Fortran, aucune méthode spécifique n'est définie. cham_elemest une classe contenant, par exemple, une méthode EXTR_COMP qui lui est propre. Les classes peuvent aussi hériter d’autres classes. Par exemple, la classe evol_nolihérite de la classe evol_sdaster, qui hérite elle-même de la classe resultat_sdaster. Comme dit précédemment, l'attribut cata_sdj déclare la classe utilisée pour décrire et vérifier les objets JEVEUX de la SD fortran associée au concept (mode SDVERI). Ces classes sont toutes regroupées dans le répertoire (bibliothèque python) bibpyt/SD, sous le nom sd_***\*.py. .. code-block:: text