NEPTUNIX : Un générateur de simulateurs
NEPTUNIX est le fruit d'une collaboration entre GIAT Industries et CS SI.

Contact :    alain.buhsing@free.fr



o Contenu de cette page :
 
oCe qu'est NEPTUNIX oDynamiser le cycle de conception
oMise en oeuvre oCapitalisation du savoir-faire
oRéférences oUne approche industrielle
oImplémentation et téléchargement oUne base théorique solide



o Lire aussi :
oLe langage de description des modèles
oArticle Simouest 1998
oHistorique
oQuestions et réponses

oDiaporama Power Point
oPlaquette PDF

o Installation de Neptunix sur UNIX.
o Installation de Neptunix sur WINDOWS.

o Manuel de référence du langage


oContexte

Le contexte économique oblige les industriels à redéfinir leur offre. Ils doivent s'adapter rapidement au besoin du client, réduire les coûts de production, proposer des produits de plus en plus complexes, et maîtriser les risques techniques. Tout ceci accorde une place plus importante à la phase d’avant-projet, notamment à la simulation informatique.

Il est nécessaire de définir des méthodes capables d'accélérer le cycle d'étude (analyse ® conception ® simulation ® retour d'expérience ® synthèse ® conception). Les outils mis en place doivent automatiser sensiblement les phases sans valeur ajoutée pour les ingénieurs concepteurs.

La capitalisation du savoir-faire est un enjeu stratégique pour l'entreprise. Aussi le formalisme des données doit favoriser la pérennité des modèles.

NEPTUNIX est un outil de calcul numérique à caractère général qui permet de répondre à ces besoins lorsque le comportement temporel des modèles à étudier peut être décrit au moyen d’équations mathématiques.

A partir d'une spécification formelle de haut niveau (un ensemble d'équations) NEPTUNIX génère automatiquement le programme qui simule le comportement du système ainsi décrit : le simulateur.
 



oMise en oeuvre

Le système à modéliser doit d'abord être transcrit au moyen du langage de description des modèles dans un ou plusieurs fichiers-texte. La description textuelle pouvant être complétée par une représentation schématique.

Le modèle étant alors entièrement décrit, on peut générer le simulateur. NEPTUNIX transforme l'ensemble d'équations en un programme qui simule le fonctionnement du système ainsi décrit.

Une fois le simulateur généré, on peut l'exploiter en lui soumettant un jeu de données et en observant les résultats.
 








Simulateur généré
Résultats

Les deux étapes d'une session NEPTUNIX : génération puis exploitation d'un simulateur.

Le système à modéliser peut être suffisamment complexe pour qu'il soit nécessaire de le décomposer en  plusieurs sous-systèmes que l'on convient d'appeler modèles.  Ces modèles peuvent être réutilisés lors d'autres modélisations. On constitue ainsi une modélothèque dédiée à un métier. On utilise une correspondance entre schémas-blocs et macromodèles (modèles appelant d'autres modèles) pour mieux visualiser la hiérarchie des modèles constituant le système.

Le code généré est du FORTRAN 77 standard qui peut être porté sur toute machine acceptant ce type de compilateur. Il suffit de recompiler le code généré sur la machine cible et de le linker avec la bibliothèque de support à l'exploitation.
 


oExploitation et intégration des simulateurs générés

Le simulateur généré peut être :

o Utilisé comme simulateur d'étude : piloté par un jeu de données (les directives) il produit un fichier-résultat.
o Mis au point. On dispose d'un debugger permettant d'effectuer la simulation en mode pas à pas.
o Intégré dans une application sous forme d'un sous-programme ou d'un sous-process.
C'est le même code généré qui peut être utilisé comme simulateur autonome, comme sous-programme ou comme sous-process.

Les directives de simulation sont les données décessaires pour définir la simulation. Elles sontconstituées de :

o Parametres de simulation : date initiale, date finale, pas de calcul minimal et maximal, etc ....
oInitialisation : on peut redéfinir la valeur initiale de toute entité interne au modèle.
oObservations : on sélectionne les variables dont on souhaite sauver les valeurs prises lors de la simulation .
En mode "simulateur d'étude", les directives sont stockées dans un fichier sous forme d'un langage d'exploitation.

Lorsque le simulateur est utilisé comme sous-programme, les paramètres de simulation sont transmises dans ses arguments d'appel.  l'application peut accéder aux variables du modèle au moyen de fonctions d'interrogation et de modification.

Le simulateur est un programme portable. Il peut être exporté dans un autre environnement d'étude ou intégré dans une application.  Pour cela, il suffit de recompiler le source du simulateur  sur la machine hôte et de le relinker avec l'application et la bibliothèque de support à l'exploitation.

Par exemple dans un simulateur de conduite NEPTUNIX peut prendre en charge le "modèle de conduite"  : tenue  de route, suspensions, accélération ... Il "reste" à l'application la connexion avec les capteurs et la génération d'images.
 


+
Modèle de conduite 
+

Simulateur complet


oDynamiser le cycle de conception

Le modèle est décrit au moyen d'équations algébro-différentielles implicites pour sa partie continue, et d'automates pour sa partie événementielle.

NEPTUNIX traduit automatiquement cette spécification abstraite en un programme numérique valide qui simule le fonctionnement du système ainsi décrit.

La production de code informatique pour le calcul numérique étant sans aucune valeur ajoutée pour le concepteur, cette transcription automatique apporte un gain de temps considérable, une plus grande fiabilité et une plus grande souplesse dans l'évolution du modèle.

Libéré de cette intendance informatique, l'ingénieur peut se concentrer sur son métier qui est de modéliser le système étudié.
 

ObjetGraphique Coût du simulateur (cas général)

Coût du simulateur (cas général)

Coût du simulateur avec Neptunix

Ce dessin illustre le gain de productivité dû à la méthode utilisée. Si le simuateur est considéré comme un logiciel développé de façon classique (figure de gauche), on voit apparaître les phases classiques du développement (spécification+ conception, codage, validation) auxquelles on ajoutera une phase de maintenance évolutive qui représente généralement 50 % du coût total du logiciel. Avec NEPTUNIX, la phase de codage disparait, et la phase de maintenance  se trouve considérablement réduite dans la mesure où l'on intervient directement sur une spécification formelle de haut niveau : les équations.
De plus la notion de sous-modèle dans NEPTUNIX permet de constituer de grands systèmes d'équations à partir d'un petit nombre de modèles.

Par exemple un modèle de radiateur  dont le corps chauffant est constitué de 9 cellules on a les chiffres suivants :
 

Tâche à réaliser Modéliser et simuler un radiateur
Nombre de modèles écrits :  6 dont 2 macromodèles
Nombre d'équations écrites Une vingtaine dont 5 réellement complexes (équation de Reynolds)
Nombre d'équations développées 170
Taille du code généré 10 000 lignes de FORTRAN
Durée de l'étude  1 semaine

Visualiser le code du modèle radiateur.nxx


oCapitaliser le savoir-faire

Le langage de description de NEPTUNIX constitue une spécification de haut niveau, définie dans un formalisme proche du modélisateur. On fait apparaître des composants réutilisables, structurés et évolutifs.  La pérennité de ses modèles est donc acquise.

Le support des données est un texte. Il est aisé de gérer ses différentes versions, la traçabilité des évolutions est aussi assurée.

Le texte est un texte structuré défini au moyen d'une grammaire régulière. On peut donc le traiter au moyen des outils standard du traitement des langages (par exemple YACC sur UNIX). Il est aisé de concevoir d'autres traducteurs vers d'autres langages ou d'autres outils. La spécification de base n'est donc pas un format propriétaire.

Les aspects graphiques ont étés volontairement séparés des fichiers-modèles pour des raisons de perennité.  La durée de vie d'une norme graphique est bien plus faible que celle d'un modèle. Les coordonnées graphiques des icônes associées aux modèles figurent donc sur des fichiers séparés.



oUne approche industrielle

NEPTUNIX peut traiter les très grands modèles (+ de 100 000 équations) et générer des simulateurs qui tiennent compte des capacités des compilateurs : taille maximale des sous-programmes, nombre maximal de lignes pour une instruction, etc ...

NEPTUNIX bénéficie d'une longue expérience en terme de modélisation : sa première version fut commercialisée en 1983, et atteignit sa maturité en 1988. Le logiciel fut donc éprouvé sur de nombreux cas limites avant d'être rénové entre 1994 et 1995.

Un environnement de mise au point (un debugger) des simulateurs est intégré à l'outil : on peut effectuer la simulation pas à pas en examinant les variables du modèle et ses caractéristiques numériques.

NEPTUNIX gère les instabilités numériques pouvant survenir en cours de simulation.

NEPTUNIX sait calculer les conditions initiales nécessaires au démarrage de la simulation. Le calcul des conditions initiales est souvent le point le plus délicat lors de la mise en oeuvre des méthodes de résolution implicites.

NEPTUNIX dispose d'avantages spécifiques en matière d'optimisation du temps de calcul des simulateurs générés grâce à l'utilisation des techniques du calcul symbolique : simplification formelle des équations, optimisation du code généré en factorisant les termes communs à plusieurs expressions.

On obtient des simulateurs extrêmement performants en terme de temps d'exécution.



oUne base théorique solide

NEPTUNIX s'appuie sur des travaux issus de deux thèses au CEA. Voir l'article Simouest 98.

L'algorithme numérique de NEPTUNIX gère la cohabitation des parties continues (décrites par des équations différentielles implicites non linéaires) et des parties événementielles (décrites par des automates) ainsi que leurs interactions mutuelles.

Les parties continues sont traitées par un algorithme à pas liés, d'ordre et de pas variable. Cet algorithme est adapté aux systèmes raides qui sont le siège de phénomènes mettant en jeu des dynamiques très différentes. L'algorithme gère le modèle continu jusqu'à la détection d'un événement puis passe la main à l'algorithme de la partie discrète.

L'algorithme numérique de NEPTUNIX pour les parties discrètes gère les événements synchrones, phénomènes induits par les changements d'état en cascade du modèle discret. Lorsque l'état de la partie discrète est stable, NEPTUNIX redémarre l'intégration numérique des parties continues du modèle.
 



oRéférences
 
 

 

CEA

Cinétique du laser à vapeur de cuivre.
Simulateurs de centrales nucléaires : 
  • France : Grenoble et Saclay
  • Grande Bretagne : (5 simulateurs pour Nuclear Power)
  • Chine (Guang Dong)
  • Pays Bas (Petten)

BRGM
Système géochimiques (interactions eau-roches) 
Réseau de réacteurs et procédés de traitement 
Injection de CO2 (couplage avec transport)
Voir : http://www.brgm.fr/taffetas/SCS1.htm
DCN/INDRET Simulation d'appareils propulsifs de frégates
et du porte-avions Charles de Gaulle.
EDF/CNEN Etudes en thermique du bâtiment de centrales nucléaires pour autorités de sûreté
Simulation d'un électrolyseur.
GDF Modélothéque de thermique du bâtiment. (Validée par immeuble expérimental) 
Modèles de réseaux de gaz 
Aide au contrôle commande de chaudières.
Modèle de détendeur de gaz.
GIAT Industries Simulation de conduite de tir,
Asservissement de tourelles.
VALEO Electronique moteur 
Mécanique vibratoire
DASSAULT AVIATION Modélisation d'une torche à plasma
LRBA Conduite d'un missile
BUNDESPOST (Allemagne) Simulation du comportement d'un laser dans des fibres optiques.
Ecole des Mines de Paris
(laboratoire CENERG Sophia Antipolis)
Energétique
Ecole nationale des Ponts et Chaussées 
(laboratoire GISE)
Energétique
ENSICA Toulouse Simulateur d'entraînement d'un hélicoptère
Université Paris XII (laboratoire LETIEF) Energétique
Ecole Centrale de Lille Electronique et électromagnétisme
Université de Savoie Thermique du bâtiment
Ecole des Mines de Nantes Energétique

NEPTUNIX est aussi utilisé dans deux ateliers de modélisation :




oImplémentation

NEPTUNIX est disponible sur toute machine UNIX et sur WINDOWS (32 bits 95, 98 ou NT).

En tant que fourniture logicielle, NEPTUNIX comprend :

Le code intermédiaire est en Fortran 77 ANSI, il est donc nécessaire de posséder un compilateur fortran77 pour générer le simulateur du modèle (compilation du code intermédiaire et édition de liens). On peut utiliser les outils free-ware GNU g77 ou f2c.



oTéléchargement de NEPTUNIX
Création d'une version free-ware en cours.
Code spécifique à HPUX  nxplus_hp_v44.tgz
Code spécifique à Sun  nxplus_sun_v44.tgz
Code spécifique à Dec  nxplus_dec_v44.tgz
Code spécifique à RS6000  nxplus_aix_v44.tgz
Code spécifique à WINDOWS 95, 97,  NT, 2000 ou XP  nxplus_w32_v44.zip
Code spécifique à Linux nxplus_lux_v44.tgz

Voir  comment  installer Neptunix sur UNIX.
Ou    comment  installer Neptunix sur WINDOWS.