Difference between revisions of "ONELAB scripting syntax"

From ONELAB
Jump to: navigation, search
m (moved Clients intefacés to ONELAB scripting syntax: switch to English)
(Principe général)
Line 1: Line 1:
=== Principe général ===
+
=== General principle ===
  
L'utilisation de ONELAB n'est cependant pas limitée aux codes '''encapsulés'''.
+
ONELAB can be used to interface virtually any solver or data treatment code and build with them metamodel relatively high complexities.  
N'importe quel autre programme de calcul scientifique peut également utiliser ONELAB, mais cette fois-ci au travers d'une interface.
+
The interfacing principle is based on the preprocessor principle.
On appelle ces clients des clients '''interfacés'''.
 
 
 
La syntaxe d'interfaçage se base sur le principe du [http://fr.wikipedia.org/wiki/Préprocesseur préprocesseur].
 
Le préprocesseur ONELAB effectue des inclusions/exclusions conditionnelles de lignes de code et des substitutions de valeurs pour délivrer en sortie un fichier d'entrée valide pour le client.
 
Etant donné que l'interface ONELAB est générique, càd qu'elle est identique pour tous les clients interfacés, toutes ces opérations sont réalisées sans jamais interpréter le code du client qui est considéré comme une suite de caractères sans signification.
 
 
 
Pour donner un exemple très simple, supposons qu'un client ''XYZ'' utilise un fichier d'entrée de type ''model.xyz'' contenant:
 
<nowiki>
 
...
 
B =  C + 2*0.005 + D
 
...
 
</nowiki>
 
et que la valeur 0.005 soit celle d'un paramètre L=0.005 l'on veut mettre en commun avec un autre client via le serveur ONELAB.
 
L'interfaçage ONELAB se fera en définissant un fichier ''model.xyz.ol'' contenant
 
<nowiki>
 
OL.parameter L.number(0.005,Parameters/1Geometry,Length);
 
...
 
B =  C + 2*OL.getValue(L) + D
 
...
 
</nowiki>
 
La commande ''OL.parameter'' définit le paramètre ''Parameters/1Geometry/L'' sur le serveur ONELAB
 
et lui attribue la valeur par défaut 0.005 et le label "Length".
 
Lors de la conversion du fichier ''model.xyz.ol'', le préprocesseur repère les commandes ONELAB grâce au tag ''OL.'',
 
les traite et génère en sortie un fichier ''model.xyz'' syntaxiquement correct pour le client ''XYZ'',
 
à savoir dans ce cas-ci
 
<nowiki>
 
...
 
B =  C + 2*0.004 + D
 
...
 
</nowiki>
 
si la valeur du paramètre ''L'' sur le serveur ONELAB est, au moment de la génération, 0.004 et non la valeur par défaut.
 
 
 
Il faut également enregistrer le solveur ''XYZ'' comme client auprès du server ONELAB.
 
Cela se fait par la création d'un fichier ''model.ol'' contenant
 
<nowiki>
 
OL.client XYZ.register(interfaced);
 
OL.client XYZ/InputFiles.Set(model.sif.ol);
 
</nowiki>
 
  
 
=== Syntaxe détaillée ===
 
=== Syntaxe détaillée ===

Revision as of 11:53, 17 September 2012

General principle

ONELAB can be used to interface virtually any solver or data treatment code and build with them metamodel relatively high complexities. The interfacing principle is based on the preprocessor principle.

Syntaxe détaillée

  • Définition des clients
OL.client client_def; <client_def; ...>
client_def est une des commandes suivantes:
name.register(interfaced|encapsulated);
enregistre un client de type interfacé ou encapsulé" (obligatoire)
name.Path(path)
définit le path système de l'exécutable (interactif)
name/InputFiles.Set(file,...)
définit la liste des fichiers d'entrée (obligatoire)
name/OutputFiles.Set(file,...)
définit la liste des fichiers de sortie (facultatif)
name.PreLineOptions(options)
définit des options en ligne de commande à placer avant la liste des fichiers d'entrée (facultatif)
name.LineOptions('options)
définit des options en ligne de commande à placer après la liste des fichiers d'entrée (facultatif)
name.Active(0|1)
définit si le client est appelé ou non lors de l'exécution (valeur par défaut:1)
  • Définition des paramètres
OL.parameter param_def; <param_def; ...>
param_def est une des commandes suivantes:
name.number(Value,Path,Range,ShortHelp)
définit un paramètre numérique Path/name, lui attribue la valeur Value et le range Range.
La donnée Range est soit a:b:c (p.ex. 1:10:1) où a est la valeur minimale, b la valeur maximale et c le step; soit a:b#nn est le nombre de steps.
name.string(Value,Path,ShortHelp)
définit un paramètre de type string
  • Branchements conditionnels
OL.iftrue(param)
lignes de codes transférées si le paramètre "param est différent de 0 ou ""
OL.else
lignes de codes transférées si le paramètre "param est égal à 0 ""
OL.endif
  • Inclusion d'un fichier
OL.include(file)
insère à cet endroit le résultat de la conversion du fichier file
  • Substitution de valeur
OL.getValue(name)
insère à cet endroit la valeur du paramètre name sur le serveur ONELAB. Cette commande peut apparaître plusieurs fois sur une même ligne.

Exemple

Fichier d'entrée pour Gmsh
ERROR in secure-include.php: /onelab_files/elmerfem/CRYO/cryo.geo does not look like a URL, and doesn't exist as a file.

Direct link to file `elmerfem/CRYO/cryo.geo'


Définition des clients ONELAB
ERROR in secure-include.php: /onelab_files/elmerfem/CRYO/cryo.ol does not look like a URL, and doesn't exist as a file.

Direct link to file `elmerfem/CRYO/cryo.ol'


Fichier d'entrée poyr ElmerFem
ERROR in secure-include.php: /onelab_files/elmerfem/CRYO/cryo.sif.ol does not look like a URL, and doesn't exist as a file.

Direct link to file `elmerfem/CRYO/cryo.sif.ol'