d2.07.01 Règles concernant les entrées/sorties#

Résumé :

Ce document liste les règles concernant les entrées/sorties que doivent respecter les développeurs d’ Aster .

Table des matières

Les différents fichiers d’Aster et leur usage#

Bases de données : “GLOBALE”, “VOLATILE”#

(IN/OUT) ce sont les fichiers à accès direct gérés par JEVEUX. JEVEUX est le seul à lire/écrire sur ces fichiers.

Fichiers généraux et indispensables#

  • (IN) fichier de commandes (.comm) et (d’include) : ces fichiers sont uniquement lus par le superviseur,

  • (OUT) fichier ‘erreur’ : seul UTMESS peut y écrire ; on y trouve une trace des erreurs,

  • (OUT) fichier ‘MESSAGE’ : on y trouve :

  • les impressions des UTMESS,

  • les impressions d‘INFO (voir § 3.5 ),

  • l’échos des commandes par le superviseur,

  • (OUT) fichier ‘RESULTAT’ : on y trouve les informations demandées explicitement par l’utilisateur : l’impression au format “Aster” des résultats (commandes IMPR_RESU, …), s’ajoute à cela :

  • les impressions des UTMESS : alarmes et erreurs,

  • le récapitulatif des temps passés dans les diverses commandes.

Remarque :

En gros, la différence entre les fichiers ‘MESSAGE ’ et ‘RESULTAT ’ est la suivante :→ le fichier ‘RESULTAT” contient les informations intéressant le commanditaire de l’étude,→ le fichier ‘MESSAGE ’ contient les informations intéressant celui qui réalise l’étude pour contrôler les déroulements des calculs.

Fichiers particuliers#

Ce sont les autres fichiers. Ils sont dit “particuliers” car ils ne sont utilisés que par quelques commandes ou procédures. Par exemple :

  • fichier maillage Aster (.mail),

  • fichier maillage Gibi (.mgib),

Les différents types de messages#

Lorsqu’un programmeur souhaite imprimer des informations dans un fichier, il est important pour lui d’essayer de “typer” ces informations, car de ce type, découle le nom du fichier où l’on imprime et la façon d’imprimer : UTMESS ou WRITE.

L’erreur#

Elle empêche la poursuite du calcul. On doit toujours utiliser UTMESS <F> (ou <E>) (cf. [D6.04.01]).

L’alarme#

La poursuite du calcul est possible mais l’usage est fortement déconseillé ;

Exemples : module d’Young négatif, affections en double, …

Il faut utiliser UTMESS <A>

Le résultat#

C’est un résultat de l’étude. Il est demandé explicitement par l’utilisateur.

Il faut utiliser WRITE (IFR, …)…

où IFR est l’unité logique du fichier résultat :

  • ‘RESULTAT’ (au format Aster ),

  • ‘IDEAS’ (au format IDEAS),

L’écho des données#

Exemples :

“Vous avez choisi la méthode TRUC”

“Pour l’option ‘PLUS PETITE‘, les fréquences sont ignorées.

Ces impressions doivent être évitées : elles ne font que répéter ce que l’utilisateur a écrit ou ce qui doit être dit dans la Documentation d’Utilisation (Manuel U).

L’INFO#

C’est une information qui concerne le déroulement du calcul.

Exemples :

  • nombre d’itérations pour converger,

  • coefficient de conditionnement des Lagranges,

  • critère de convergence atteint, …

Ce peut être aussi une information plus “informatique” :

  • taille mémoire (ou disque) d’une matrice

  • temps passé dans la factorisation d’une matrice,

Ce peut être enfin une information destinée à rassurer l’utilisateur (confirmation de ses données) :

  • nombre de nœuds, de mailles,

  • liste de nœuds susceptibles d’entrer en contact.

L’écriture des INFO est faite par des WRITE sur le fichier ‘message’ il faut respecter les règles du § 6 .

Les informations de type INFO sont associées à un niveau (1 ou 2) : une INFO de niveau 1 est plus importante qu’une INFO de niveau 2. Les INFO de niveau 1 seront décrites systématiquement dans le Manuel d’Utilisation (cf.[D6.04.02] ) Elles sont contractuelles.

  • Lorsque le l’utilisateur demande INFO : 1 (défaut), on imprime les INFO de niveau 1.

  • Lorsqu’il demande INFO : 2, on imprime les INFO de niveau 1 et de niveau 2.

Lecture / écriture dans un fichier différent de “ERREUR” ou “MESSAGE”#

Les commandes faisant des lectures / écritures dans un fichier différent des fichiers ‘ERREUR’ ou ‘MESSAGE’ sont en nombre limité.

  • Si une commande lit un fichier, on essaiera de lui donner un nom de la forme LIRE_XXX : LIRE_MAILLAGE, LIRE_FONCTION, …,

  • si une commande écrit dans un fichier, on essaiera de lui donner un nom de la forme IMPR_XXX : IMPR_RESU, IMPR_TABLE, …,

  • les commandes d’interface d’entrée : PRE_IDEAS, PRE_GIBI, … lisent en général sur un fichier et écrivent dans un autre.

  • Les commandes ne doivent pas lire et écrire dans des fichiers sauf si elles sont conçues pour cela (cf. R2). Les fichiers ne doivent pas être utilisés pour s’échanger de l’information entre commandes (les SD sont là pour cela) ni pour faire de la “pagination” mémoire (c’est JEVEUX qui s’en charge).

  • Les commandes qui lisent/écrivent dans des fichiers le font toujours explicitement. C’est-a-dire qu’elles utilisent des mot clés standard :

/ FICHIER: lorsque le fichier est nommé

/ UNITE_XXX: lorsqu’on utilise l’unité logique du fichier hormis les commandes LIRE_XXX(qui sont des opérateurs) les autres commandes qui lisent et écrivent dans des fichiers sont toutes des procédures (IMPR_XXX, PRE_XXX, …) ce qui veut dire que leur rôle est de lire et/ou écrire.

Émission de message d’erreur ou d’alarme#

  • Toutes commande peut émettre un message d’erreur (arrêt plus ou moins immédiat) ou d’alarme (on continue l’exécution). Pour cela, elle utilisera exclusivement la routine UTMESS [D6.04.01]).

Les messages émis iront alors automatiquement dans les “bons” fichiers pré déterminés : ‘ERREUR‘, ‘MESSAGE’ et ‘RESULTAT‘.

Écriture de messages d’information, mot clé INFO#

Dans ce paragraphe, on appelle INFO, un message d’information.

  • Une INFO est toujours écrite par un WRITE. L’unité logique (du fichier ‘MESSAGE‘) est toujours récupérée par la routine INFNIV.

  • Une INFO a un niveau : 1 ou 2. Les INFO de niveau 1 sont contractuelles ; elles sont décrites dans la Documentation d’Utilisation. Le responsable de la commande doit présenter en réunion EDA toute évolution des INFO de niveau 1.

  • Le niveau d’impression choisi par l’utilisateur (1 ou 2) l’est toujours via le mot clé INFO : /1 /2. La valeur 1 est toujours la valeur par défaut.

Lorsque l’utilisateur demande INFO : 2, cela veut dire qu’il désire les INFO de niveau 1 et de niveau 2.

  • Traitement du mot clé INFO dans une commande OP00XX : CALL INFMAJ()

  • Impression d’une INFO de niveau 1 :

CALL INFNIV (INF, NIV) ! récupération de l’unité logique et du niveau d’impression demandé IF (NIV.GE.1) WRITE (INF, FMT) …

  • Impression d’une INFO de niveau 2 :

CALL INFNN (INF, NIV)

IF (NIV.EQ.2) WRITE (INF, FMT) …