Difference between revisions of "ONELAB scripting syntax"

From ONELAB
Jump to: navigation, search
Line 1: Line 1:
 +
=== Principe général ===
 +
 
L'utilisation de ONELAB n'est cependant pas limitée aux codes '''encapsulés'''.  
 
L'utilisation de ONELAB n'est cependant pas limitée aux codes '''encapsulés'''.  
 
N'importe quel autre programme de calcul scientifique peut également utiliser ONELAB, mais cette fois-ci au travers d'une interface.  
 
N'importe quel autre programme de calcul scientifique peut également utiliser ONELAB, mais cette fois-ci au travers d'une interface.  
Line 7: Line 9:
 
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.
 
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 ''nom.xyz'' contenant:
+
Pour donner un exemple très simple, supposons qu'un client ''XYZ'' utilise un fichier d'entrée de type ''model.xyz'' contenant:
 
  <nowiki>
 
  <nowiki>
 
  L=0.005 // longueur
 
  L=0.005 // longueur
 
  ... code
 
  ... code
  B =  C + 2*L + D
+
  B =  C + 2*0.005 + D
 
  ... code  
 
  ... code  
 
  </nowiki>
 
  </nowiki>
et que l'on veuille mettre le paramètre ''L'' en commun avec un autre client via le serveur ONELAB.
+
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 ''nom.xyz.ol'' contenant
+
L'interfaçage ONELAB se fera en définissant un fichier ''model.xyz.ol'' contenant
 
  <nowiki>
 
  <nowiki>
 
OL.parameter L.number(0.005,Parameters/1Geometry,Length);  
 
OL.parameter L.number(0.005,Parameters/1Geometry,Length);  
Line 25: Line 27:
 
et lui attribue la valeur par défaut 0.005 et le label "Length".  
 
et lui attribue la valeur par défaut 0.005 et le label "Length".  
 
Lors de la conversion, ONELAB repère les commandes ONELAB grâce au tag ''OL.'',
 
Lors de la conversion, ONELAB repère les commandes ONELAB grâce au tag ''OL.'',
les traite et génère un fichier ''nom.xyz'' syntaxiquement correct pour le client ''XYZ'':
+
les traite et génère un fichier ''model.xyz'' syntaxiquement correct pour le client ''XYZ'':
 
  <nowiki>
 
  <nowiki>
 
... code
 
... code
Line 33: Line 35:
 
si la valeur du paramètre ''L'' sur le serveur ONELAB au moment de la génération est 0.004,
 
si la valeur du paramètre ''L'' sur le serveur ONELAB au moment de la génération est 0.004,
 
et non la valeur par défaut.
 
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 ===
 +
==== Définition des clients ====
 +
 +
* Définition des paramètres
 +
;OL.parameter param_def; <param_def; ...>
 +
:définitions de paramètres ou d'attributs de paramètres, séparées par des point-virgules
 +
;param_def=
 +
;name.number(Value,Path,ShortHelp);
 +
;name.MinMax(Min,Max,Step);
 +
;name.string(Value,Path,ShortHelp);
 +
 +
* Branchements conditionnels
 +
;OL.iftrue(param)
 +
 +
* Inclusion d'un fichier
 +
;OL.include(filename)

Revision as of 15:49, 3 February 2012

Principe général

L'utilisation de ONELAB n'est cependant pas limitée aux codes encapsulés. N'importe quel autre programme de calcul scientifique peut également utiliser ONELAB, mais cette fois-ci au travers d'une interface. On appelle ces clients des clients interfacés.

La syntaxe d'interfaçage se base sur le principe du 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:

 L=0.005 // longueur
 ... code
 B =  C + 2*0.005 + D
 ... code 
 

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

OL.parameter L.number(0.005,Parameters/1Geometry,Length); 
... code
B =  C + 2*OL.getValue(L) + D
... code 

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, ONELAB repère les commandes ONELAB grâce au tag OL., les traite et génère un fichier model.xyz syntaxiquement correct pour le client XYZ:

... code
B =  C + 2*0.004 + D
... code 

si la valeur du paramètre L sur le serveur ONELAB au moment de la génération est 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

OL.client XYZ.register(interfaced);
OL.client XYZ.InputFiles.Set(model.sif.ol);


Syntaxe détaillée

Définition des clients

  • Définition des paramètres
OL.parameter param_def; <param_def; ...>
définitions de paramètres ou d'attributs de paramètres, séparées par des point-virgules
param_def=
name.number(Value,Path,ShortHelp);
name.MinMax(Min,Max,Step);
name.string(Value,Path,ShortHelp);
  • Branchements conditionnels
OL.iftrue(param)
  • Inclusion d'un fichier
OL.include(filename)