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
Ce qu'est NEPTUNIX | Dynamiser le cycle de conception |
Mise en oeuvre | Capitalisation du savoir-faire |
Références | Une approche industrielle |
Implémentation et téléchargement | Une base théorique solide |
Le langage de description des modèles
Article Simouest 1998
Historique
Questions et réponsesDiaporama Power Point
Plaquette PDF
Installation de Neptunix sur UNIX.
Installation de Neptunix sur WINDOWS.
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.
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é |
|
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.
Exploitation et intégration des simulateurs générés
Le simulateur généré peut être :
Utilisé comme simulateur d'étude : piloté par un jeu de données (les directives) il produit un fichier-résultat.C'est le même code généré qui peut être utilisé comme simulateur autonome, comme sous-programme ou comme sous-process.
Mis au point. On dispose d'un debugger permettant d'effectuer la simulation en mode pas à pas.
Intégré dans une application sous forme d'un sous-programme ou d'un sous-process.
Les directives de simulation sont les données décessaires pour définir la simulation. Elles sontconstituées de :
Parametres de simulation : date initiale, date finale, pas de calcul minimal et maximal, etc ....En mode "simulateur d'étude", les directives sont stockées dans un fichier sous forme d'un langage d'exploitation.
Initialisation : on peut redéfinir la valeur initiale de toute entité interne au modèle.
Observations : on sélectionne les variables dont on souhaite sauver les valeurs prises lors de la simulation .
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.
+ |
Simulateur complet |
Dynamiser 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é.
Coût du simulateur (cas général) |
Coût du simulateur avec Neptunix |
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.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.
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
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.
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.
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.
CEA |
Cinétique du laser à
vapeur de
cuivre. Simulateurs de centrales nucléaires :
|
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 :
NEPTUNIX est disponible sur toute machine UNIX et sur WINDOWS (32 bits 95, 98 ou NT).
En tant que fourniture logicielle, NEPTUNIX comprend :
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.