To help scientists test their simulators, we provide a dedicated tool able to split a simulation run into isolated simulator dataset tests.
(english below)
Français
Cet outil accessible sous Linux est autonome, il fonctionne avec OpenFLUID 2.1.11 et 2.2.1 mais demande une installation spécifique.
L’objectif de cet outil est d’automatiser la création de tests isolés de simulateurs à partir d’une simulation. Un test de simulateur OpenFLUID est un dataset de test (.IN) avec potentiellement une référence de sortie (.REF). Le test d’un simulateur est dit isolé quand le modèle du test ne contient que le simulateur en question. Il peut être lancé de manière autonome.
L’objectif final de cet outil est la comparaison automatique des sorties du dataset isolé avec les données de référence du test. La comparaison peut se faire via l’outil de comparaison des sorties OpenFLUID développé en parallèle.
Un test de simulateur permet de :
Tester un simulateur est une étape importante lors de son développement. Il s’agit souvent d’une tâche complexe, c’est pourquoi cet outil permet la création de tests isolés de manière automatique afin d’aider le modélisateur.
Voici un aperçu simple d’une isolation des simulateurs d’un modèle exemple :
model.fluidx :
<?xml version="1.0" standalone="yes"?>
<openfluid>
<model>
<simulator ID="SimA" enabled="1"></simulator>
<simulator ID="SimB" enabled="1"></simulator>
<simulator ID="SimC" enabled="1"></simulator>
</model>
</openfluid>
Test SimA - model :
<model>
<!-- generators -->
<simulator ID="SimA" enabled="1"></simulator>
</model>
Test SimB - model :
<model>
<!-- generators -->
<simulator ID="SimB" enabled="1"></simulator>
</model>
Test SimC - model :
<model>
<!-- generators -->
<simulator ID="SimC" enabled="1"></simulator>
</model>
Pour obtenir des informations sur l’utilisation de cet outil, consultez la documentation de Sim:Isolation.
Une isolation du simulateur est permise via l’ajout de générateurs à injection de fichier dans le modèle isolé. Pour chaque variable utilisée, requise ou mise à jour par un simulateur, un générateur est créé. Il fournit les données nécessaires en se basant sur la sortie globale du projet à isoler, ou sur des données intermédiaires en cas de variables mises à jour.
Il est important de noter que dans certains cas, une isolation totale n’est pas possible, notamment si un simulateur a besoin d’un ou plusieurs autres simulateurs pour fonctionner correctement (événements, production d’attributs, etc…)
Suite à la sortie de la version 2.2.1 de OpenFLUID, il est maintenant possible d’utiliser des générateurs à injection de fichier (colonne unique) pour tous les types de variable produites par OpenFLUID. Sim:Isolation déduit le type de chaque variable et crée un générateur pour le type correspondant.
Pour la version 2.1.11 de OpenFLUID, ces générateurs n’existent pas nativement. Des simulateurs faisant office de générateurs à injection de fichiers sont créées pour gérer tous les types détectés.
English
This tool available on Linux is standalone, it works with OpenFLUID 2.1.11 and 2.2.1 but requires a dedicated installation.
The purpose of this tool is to automate the creation of isolated simulator tests from a simulation. An OpenFLUID simulator test is defined by a test dataset (.IN) with a potential output reference (.REF). A simulator test is said to be isolated when the test model contains only the simulator itself. It can be run independently.
The final objective of this tool is to automatically compare the outputs of the isolated dataset with the test reference data. The comparison can be done using the OpenFLUID output comparison tool.
A simulator test allows to:
Testing a simulator is an important step in its development. This is frequently a complex task, which is why this tool enables the automatic creation of isolated tests to assist modelers.
For information on the use of this tool, check the Sim:Isolation documentation.
Here is a simple example of isolating simulators in a sample model:
model.fluidx :
<?xml version="1.0" standalone="yes"?>
<openfluid>
<model>
<simulator ID="SimA" enabled="1"></simulator>
<simulator ID="SimB" enabled="1"></simulator>
<simulator ID="SimC" enabled="1"></simulator>
</model>
</openfluid>
Test SimA - model :
<model>
<!-- generators -->
<simulator ID="SimA" enabled="1"></simulator>
</model>
Test SimB - model :
<model>
<!-- generators -->
<simulator ID="SimB" enabled="1"></simulator>
</model>
Test SimC - model :
<model>
<!-- generators -->
<simulator ID="SimC" enabled="1"></simulator>
</model>
Simulator isolation is possible by using file injection generators in the isolated model. For each variable used, required or updated by a simulator, a generator is created. It provides the necessary data based on the overall output of the project to be isolated, or on intermediate data in case of updated variables.
It is important to note that in some cases, total isolation is not possible, especially if a simulator depends on one or more other simulators to run properly (events, attribute production, etc.).
With the release of OpenFLUID version 2.2.1, it is now possible to use file injection generators (single column) for all types of variables produced by OpenFLUID. Sim:Isolation deduces the type of each variable and creates a corresponding generator.
For version 2.1.11 of OpenFLUID, these generators do not exist natively. Simulators acting as file injection generators are created to handle all detected types.