Gibiane

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Gibiane est un langage de programmation développé par le Commissariat à l’énergie atomique et aux énergies alternatives (CEA) au début des années 80[1] sur la base du langage Fortran 77[2]. Ce langage est la base des codes de calcul neutronique déterministes APOLLO2 et CRONOS2. Il est également le code de base du logiciel de calcul par éléments finis Cast3M, également développé par le CEA[3].

Gibiane est un langage de haut niveau qui est interprété et orienté objet destiné au calcul éléments finis, agissant comme interface textuelle entre l'utilisateur et le code de calcul[4]. Sa syntaxe a la particularité d'être exprimée en français[5]. Soumis à diverses évolutions depuis sa création, Gibiane est aujourd'hui conforme à l'approche orientée objet de la normalisation UML[6].

L'objectif initial de la création de Gibiane est de supprimer la phase de programmation demandant à l'utilisateur un savoir-faire extérieur à son domaine d'activité pour qu'il se concentre sur la spécification du problème particulier à résoudre[7].

Syntaxe[modifier | modifier le code]

Les instructions élémentaires en Gibiane prennent la forme :

RESULTAT = OPERATEUR OPERANDES ;

Chaque instruction se termine par un point-virgule « ; ».

Il est possible d'ajouter des lignes de commentaire en ajoutant le caractère étoile « * » en début de ligne.

Les commandes sont lues et exécutées ligne à ligne. La fin du programme est indiqué par la commande[5] :

FIN ;

Gibiane est insensible à la casse des caractères, l'interpréteur remplaçant les minuscules par des majuscules. Les quotes encadrant des caractères marquent la définition d’une chaîne de caractères à prendre sans modification.

Priorité d'exécution[modifier | modifier le code]

L’exécution des commandes s'effectue de gauche à droite[5]. Ainsi la commande :

X = 3 + 5 * 8 ;

retourne la valeur X = 64.

Il est possible de préciser l’ordre d’exécution des commandes à l’aide de parenthèses[5].

X = 3 + ( 5 * 8 ) ;

retourne alors la valeur X = 43.

Il peut y avoir autant de parenthèses emboitées que nécessaires, la règle étant d’exécuter d’abord les parenthèses en commençant à chaque fois par la plus interne qui se trouve le plus à gauche.

Limitations[5][modifier | modifier le code]

  • Les commandes ne sont analysées que sur les 72 premiers caractères de chaque ligne, résurgence de l'utilisation des cartes perforées.
  • Le nom d’un objet ne peut pas faire plus de 8 caractères.
  • L’instruction est lue et exécutée de gauche à droite sans notion de hiérarchie entre opérateurs.

Opérateurs de base[modifier | modifier le code]

Opérateurs de type LOGIQUE[modifier | modifier le code]

VRAI
FAUX
ET
OU
NON (Négation d'une proposition logique)
EGA (Comparer si deux objets sont égaux)
NEG (Comparer si deux objets ne sont pas égaux)

Opérateurs logiques de comparaison[modifier | modifier le code]

L’opérateur « SI » permet, suivant la valeur d'un objet de type LOGIQUE d’exécuter une séquence une commandes ou une autre. Ainsi dans l'exemple ci dessous, lorsque « A » est égale à « B » la suite de commandes 1 s'exécute, sinon c'est la suite de commande 2 qui s'exécute.

SI ( A EGA B ) ;
suite de commandes 1
SINON;
suite de commandes 2
FINSI;

Boucles d'exécution répétitive[modifier | modifier le code]

L’opérateur « REPETER » permet de définir une séquence de commandes à exécuter autant de fois que nécessaire. Dans l'exemple ci-dessous la suite de commande est répétée NFOIS.

REPETER NOMBOUCL NFOIS;
suite de commandes
FIN NOMBOUCL ;

L'opérateur « SI » peut être utilisé à l'intérieur d'une boucle « REPETER ».

A l’intérieur d’une séquence REPETER l’opérateur ITERER permet de créer des exceptions dans la boucle d'exécution en sautant la partie finale de la séquence.

I = 0 ;
REPETER NOMBOUCL 4;
I = I + 1;
SI ( I EGA 2 ) ; ITERER NOMBOUCL ; FINSI;
MESSAGE ’ I VAUT ’ I ;
FIN NOMBOUCL ;

produit les résultats :

I VAUT 1
I VAUT 3
I VAUT 4

Principaux objets[modifier | modifier le code]

  • ENTIER : Nombre entier
  • FLOTTANT : Nombre réel
  • LISTENTI : Liste de nombres entiers
  • LISTREEL : Liste de nombres réels
  • MOT : Mot
  • LOGIQUE : Objet logique
  • LISTMOTS : Liste de mots
  • TABLE : Groupe d'objets indexés par objets
  • EVOLUTION : Représentation d'une fonction numérique
  • NUAGE : Ensemble d'éléments

Programmes utilisant Gibiane[modifier | modifier le code]

  • CAST3M, logiciel de calcul par la méthode des éléments finis pour la mécanique des structures et des fluides notamment utilisé dans le secteur de l’énergie nucléaire[8]
  • APPOLO2, un code de calcul spectral multigroupe à deux dimensions résolvant l’équation du transport des neutrons[9]
  • CRONOS2, un code de calcul à 3 dimensions utilisé pour la conception et l’expertise des cœurs des réacteurs nucléaires[2]
  • FLICA4, dédié aux calculs d’écoulements diphasiques pour des régimes aussi bien stationnaires que transitoires, pour rendre compte du comportement thermohydraulique des cœurs de réacteurs nucléaires[10]
  • ISAS (Integrated safety analysis code system), un programme pour les analyses de séquences accidentelles[11]

Notes et références[modifier | modifier le code]

  1. Christian Queinnec, Le langage de commande GIBIANE : Description informelle, Révision 2.2, Université Paris 6, LIP6, (lire en ligne)
  2. a et b Christine Fedon-Magnaud, The Saphyr system : An overview (PHYSOR 2002, Seoul, Korea), (lire en ligne)
  3. « Présentation de Cast3M | Cast3M », sur www-cast3m.cea.fr (consulté le 4 octobre 2016)
  4. Ramón Antonio Otón Martínez, Multidimensional modelling of multiphase reactive mixture (Doctoral Thesis) : Caracterización de la movilización y combustión de mezclas bifásicas de gases y partículas en procesos transitorios, Universidad Polytécnica de Cartagena, , 303 p. (lire en ligne), p. 238
  5. a, b, c, d et e Thierry Charras, Utiliser Cast3m : Langage Gibiane, CEA, (lire en ligne)
  6. Rigobert Tchienkoua, Programmer en Gibiane - Tome 1 : Structures de données & Algorithmes associés, Éditions GrassFields Paris
  7. M. Dumas et J.B. Thomas, Superviseur de codes modulaires : Génération automatique du langage de commande, Symposium GRECO-GIS on structures calculation, (lire en ligne)
  8. Emmanuelle Le Fichoux (ENSTA), Utiliser Cast3m : Présentation et utilisation de Cast3m, CEA,
  9. S. Loubière, R. Sanchez, M. Coste, Alain Hébert, Z. Stankovski, C. Van Der Gucht et I. Zmijarevic, APOLLO2 Twelve Years Later : paper presented at the international conference on mathematics and computation, reactor physics and environmental analysis in nuclear applications, Madrid, Spain,
  10. P. Raymond, G. Allaire, G. Boudsocq, D. Caruge, T. de Gramont et I. Toumi, FLICA-4 (Version 1) A computer code for three dimensional thermal analysis of nuclear reactor cores, International conference on mathematics and computations, reactor physics and environmental analyses (Portland Oregon, USA), (lire en ligne)
  11. M.T. Porfiri et G. Cambi, Integrated safety analysis code system (ISAS) application for accident sequence analyses, Elsevier, (lire en ligne)

Voir aussi[modifier | modifier le code]