Difference between revisions of "ONELAB syntax for Gmsh and GetDP"

From ONELAB
Jump to: navigation, search
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
ONELAB parameters can be defined directly in the input files ('''.geo''' and '''.pro''' files) through the '''DefineConstant''' syntax:
 
ONELAB parameters can be defined directly in the input files ('''.geo''' and '''.pro''' files) through the '''DefineConstant''' syntax:
<syntaxhighlight lang="cpp" enclose="div">
+
<source lang="cpp">
 
DefineConstant[ x = {1, Name "My variable"} ];
 
DefineConstant[ x = {1, Name "My variable"} ];
 
DefineConstant[ x = {1, Name "My variable", Choices {0,1}} ];
 
DefineConstant[ x = {1, Name "My variable", Choices {0,1}} ];
Line 7: Line 7:
 
DefineConstant[ x = {1, Name "My variable", Min 0, Max 50, Step 5} ]
 
DefineConstant[ x = {1, Name "My variable", Min 0, Max 50, Step 5} ]
 
DefineConstant[ x = {1, Name "Variables/Input/My variable", Min 0, Max 50, Step 5} ];
 
DefineConstant[ x = {1, Name "Variables/Input/My variable", Min 0, Max 50, Step 5} ];
</syntaxhighlight>
+
</source>
  
 
When the input file is analyzed, if the parameter has not been previously defined, it takes the value provided in '''DefineConstant''' and is sent to the ONELAB server. The "/" character in a variable name is interpreted as a path separator, and results in the creation of a sub-tree in the graphical user interface. If the input file is re-analyzed later, the value will be updated using the value from the server (unless it is labeled '''ReadOnly''': see below). The same syntax can be used to define string parameters:
 
When the input file is analyzed, if the parameter has not been previously defined, it takes the value provided in '''DefineConstant''' and is sent to the ONELAB server. The "/" character in a variable name is interpreted as a path separator, and results in the creation of a sub-tree in the graphical user interface. If the input file is re-analyzed later, the value will be updated using the value from the server (unless it is labeled '''ReadOnly''': see below). The same syntax can be used to define string parameters:
<syntaxhighlight lang="cpp" enclose="div">
+
<source lang="cpp">
 
DefineConstant[ s = {"a", Name "My string variable"} ];
 
DefineConstant[ s = {"a", Name "My string variable"} ];
 
DefineConstant[ s = {"a", Name "My string variable", Choices {"a", "b", "c"} } ];
 
DefineConstant[ s = {"a", Name "My string variable", Choices {"a", "b", "c"} } ];
 
DefineConstant[ s = {"a", Name "My string variable", Kind "File"} ]
 
DefineConstant[ s = {"a", Name "My string variable", Kind "File"} ]
 
DefineConstant[ s = {"a", Name "Variables/Input/My variable"} ];
 
DefineConstant[ s = {"a", Name "Variables/Input/My variable"} ];
</syntaxhighlight>
+
</source>
  
 
Note that when the code is run without the ONELAB server, the parameters simply take the default values provided by '''DefineConstant'''. An input file modified to create an appealing graphical user interface using ONELAB can thus also be run as-is without ONELAB.
 
Note that when the code is run without the ONELAB server, the parameters simply take the default values provided by '''DefineConstant'''. An input file modified to create an appealing graphical user interface using ONELAB can thus also be run as-is without ONELAB.
  
 
Parameters can also be defined on-the-fly, with the '''DefineNumber''' and '''DefineString''' functions. In this case the affectation always takes place, and the value is either the value in the database (if it exists), or the default value:
 
Parameters can also be defined on-the-fly, with the '''DefineNumber''' and '''DefineString''' functions. In this case the affectation always takes place, and the value is either the value in the database (if it exists), or the default value:
<syntaxhighlight lang="cpp" enclose="div">
+
<source lang="cpp">
 
x = DefineNumber[1, Name "My variable"];
 
x = DefineNumber[1, Name "My variable"];
 
s = DefineString["a", Name "My string variable" ];
 
s = DefineString["a", Name "My string variable" ];
</syntaxhighlight>
+
</source>
 
These on-the-fly definitions are similar to the ones used in [[Python]] clients.
 
These on-the-fly definitions are similar to the ones used in [[Python]] clients.
  
Line 32: Line 32:
 
: The name of the parameter in the ONELAB database, in the form of a "/"-separated path. The '''Name''' attribute is mandatory to exchange the variable with the ONELAB server. If no name (and no other attribute) is given, the '''DefineConstant''' construct can be used to assign default values to local variables (which will not be sent to the ONELAB server).
 
: The name of the parameter in the ONELAB database, in the form of a "/"-separated path. The '''Name''' attribute is mandatory to exchange the variable with the ONELAB server. If no name (and no other attribute) is given, the '''DefineConstant''' construct can be used to assign default values to local variables (which will not be sent to the ONELAB server).
 
;ReadOnly ''0|1''
 
;ReadOnly ''0|1''
: If ReadOnly is set, the value cannot be changed server-side, and the value provided in '''DefineConstant''' is always used
+
: If ReadOnly is set, the value cannot be changed server-side, and the value provided in '''DefineConstant''' is always used.
 
;Highlight ''string''
 
;Highlight ''string''
: Color used to draw the widget in the graphical interface
+
: Color used to draw the widget in the graphical interface.
 
;Visible ''0|1''
 
;Visible ''0|1''
 
: Should the parameter be visible in the interface?
 
: Should the parameter be visible in the interface?
Line 40: Line 40:
 
: Should the subtree containing this variable be closed?
 
: Should the subtree containing this variable be closed?
 
;Help ''string''
 
;Help ''string''
: Help string for this parameter
+
: Help string for this parameter.
 
;AutoCheck ''0|1''
 
;AutoCheck ''0|1''
: Allows to disable automatic "check" (rebuild of the interface) when the value is changed
+
: Allows to disable automatic "check" (rebuild of the interface) when the value is changed.
 
;GmshOption ''string''
 
;GmshOption ''string''
 
: Treat the parameter as the name of a Gmsh option (e.g. '''Mesh.Algorithm'''). Can also be used to force a database reset (with '''ResetDatabase'''), or a full model reset (with '''Reset''').  
 
: Treat the parameter as the name of a Gmsh option (e.g. '''Mesh.Algorithm'''). Can also be used to force a database reset (with '''ResetDatabase'''), or a full model reset (with '''Reset''').  
 
;Label ''string''
 
;Label ''string''
: Alternative label used in the graphical user interface, replacing the part of "Name" located after the last "/"
+
: Alternative label used in the graphical user interface, replacing the part of "Name" located after the last "/".
 +
;Units ''string''
 +
: Appends the given string after the variable name between square brackets.
 +
;ChangedValue ''number''
 +
: The value that the ''changed'' flag will take when the parameter is updated. A zero value thus means that the parameter will appear as never having being changed. Gmsh treats ''changed'' flag values as follows: if ''changed''=1, only the mesh is saved; if ''changed''=2, the model is first remeshed, then the mesh is saved; if ''changed''=3, the model is first reloaded, then remeshed and finally saved.
  
 
== Number attributes ==
 
== Number attributes ==
Line 68: Line 72:
 
: Loop over the parameter (the string indicates the loop imbrication level: currently "1", "2" or "3")
 
: Loop over the parameter (the string indicates the loop imbrication level: currently "1", "2" or "3")
 
;Graph ''string''
 
;Graph ''string''
 +
: Display the list of values stored in the ''choices'' attribute as a 2D graph. The ''string'' encodes for which coordinate (x or y) in the predefined graphs (top left, top right, ...) the values will be used. Each graph is encoded as 4 characters, corresponding to the use of the values as the x, y, x' and y' coordinates (x' and y' are used when two curves should be drawn on the same graph): possible character values are "0" (value not used), "1" (iso-values), "2" (continuous map), "3" (discrete map), "4" (numeric value). The first group of 4 characters controls the pre-defined top-left graph, the second group controls the top-right graph, etc. For example, the ''string'' "0200"  will use the values for the y coordinates on the top-left graph, displaying the curve with the "continuous" style; the ''string'' "10000200" will use the data for the x coordinates on the top-left graph and also use them as the y coordinates on the top-right graph.
  
 
== String attributes ==
 
== String attributes ==
Line 79: Line 84:
 
: Allow multiple selection in choices. The string indicates the initial selection pattern, e.g. "''1001111''".
 
: Allow multiple selection in choices. The string indicates the initial selection pattern, e.g. "''1001111''".
 
;Macro ''string''
 
;Macro ''string''
: Treat the parameter as the filename of a macro that will be run when the parameter is clicked in the interface
+
: If ''string'' is "GmshMergeFile", the parameter is treated as a filename of a macro that will be merged when the parameter is clicked in the interface. If ''string'' is "GmshParseString", the parameter is directly treated as a Gmsh macro that will be parsed when the parameter is clicked in the interface.

Latest revision as of 20:00, 6 November 2016

ONELAB parameters can be defined directly in the input files (.geo and .pro files) through the DefineConstant syntax:

DefineConstant[ x = {1, Name "My variable"} ];
DefineConstant[ x = {1, Name "My variable", Choices {0,1}} ];
DefineConstant[ x = {1, Name "My variable", Choices {0,3,5}} ];
DefineConstant[ x = {1, Name "My variable", Choices {0="Zero",3="Three", 5="Five"}} ];
DefineConstant[ x = {1, Name "My variable", Min 0, Max 50, Step 5} ]
DefineConstant[ x = {1, Name "Variables/Input/My variable", Min 0, Max 50, Step 5} ];

When the input file is analyzed, if the parameter has not been previously defined, it takes the value provided in DefineConstant and is sent to the ONELAB server. The "/" character in a variable name is interpreted as a path separator, and results in the creation of a sub-tree in the graphical user interface. If the input file is re-analyzed later, the value will be updated using the value from the server (unless it is labeled ReadOnly: see below). The same syntax can be used to define string parameters:

DefineConstant[ s = {"a", Name "My string variable"} ];
DefineConstant[ s = {"a", Name "My string variable", Choices {"a", "b", "c"} } ];
DefineConstant[ s = {"a", Name "My string variable", Kind "File"} ]
DefineConstant[ s = {"a", Name "Variables/Input/My variable"} ];

Note that when the code is run without the ONELAB server, the parameters simply take the default values provided by DefineConstant. An input file modified to create an appealing graphical user interface using ONELAB can thus also be run as-is without ONELAB.

Parameters can also be defined on-the-fly, with the DefineNumber and DefineString functions. In this case the affectation always takes place, and the value is either the value in the database (if it exists), or the default value:

x = DefineNumber[1, Name "My variable"];
s = DefineString["a", Name "My string variable" ];

These on-the-fly definitions are similar to the ones used in Python clients.

Common parameter attributes

Here's the list of attributes available for all ONELAB parameters:

Name string
The name of the parameter in the ONELAB database, in the form of a "/"-separated path. The Name attribute is mandatory to exchange the variable with the ONELAB server. If no name (and no other attribute) is given, the DefineConstant construct can be used to assign default values to local variables (which will not be sent to the ONELAB server).
ReadOnly 0|1
If ReadOnly is set, the value cannot be changed server-side, and the value provided in DefineConstant is always used.
Highlight string
Color used to draw the widget in the graphical interface.
Visible 0|1
Should the parameter be visible in the interface?
Closed 0|1
Should the subtree containing this variable be closed?
Help string
Help string for this parameter.
AutoCheck 0|1
Allows to disable automatic "check" (rebuild of the interface) when the value is changed.
GmshOption string
Treat the parameter as the name of a Gmsh option (e.g. Mesh.Algorithm). Can also be used to force a database reset (with ResetDatabase), or a full model reset (with Reset).
Label string
Alternative label used in the graphical user interface, replacing the part of "Name" located after the last "/".
Units string
Appends the given string after the variable name between square brackets.
ChangedValue number
The value that the changed flag will take when the parameter is updated. A zero value thus means that the parameter will appear as never having being changed. Gmsh treats changed flag values as follows: if changed=1, only the mesh is saved; if changed=2, the model is first remeshed, then the mesh is saved; if changed=3, the model is first reloaded, then remeshed and finally saved.

Number attributes

In addition, numbers can take the following specific attributes:

Min number
Minimum value allowed when scrolling in the interface, and when looping on the parameter
Max number
Maximum value allowed when scrolling in the interface, and when looping on the parameter
Step number
Step value used when scrolling in the interface, and when looping on the parameter
Range {min, max, step}
Alternate syntax for Min, Max and Step
Choices{number, number, ...}
Possible choices for the parameter
Choices{number=string, number=string, ...}
Possible choices for the parameter, with string labels for each choice
ReadOnlyRange 0|1
Treat the range (or the choices, if they are provided) as read-only
Loop string
Loop over the parameter (the string indicates the loop imbrication level: currently "1", "2" or "3")
Graph string
Display the list of values stored in the choices attribute as a 2D graph. The string encodes for which coordinate (x or y) in the predefined graphs (top left, top right, ...) the values will be used. Each graph is encoded as 4 characters, corresponding to the use of the values as the x, y, x' and y' coordinates (x' and y' are used when two curves should be drawn on the same graph): possible character values are "0" (value not used), "1" (iso-values), "2" (continuous map), "3" (discrete map), "4" (numeric value). The first group of 4 characters controls the pre-defined top-left graph, the second group controls the top-right graph, etc. For example, the string "0200" will use the values for the y coordinates on the top-left graph, displaying the curve with the "continuous" style; the string "10000200" will use the data for the x coordinates on the top-left graph and also use them as the y coordinates on the top-right graph.

String attributes

String accepts the following specific attributes:

Kind string
Mutable kind of the string (currently: "file")
Choices {string, string, ...}
Possible choices for the parameter
MultipleSelection string
Allow multiple selection in choices. The string indicates the initial selection pattern, e.g. "1001111".
Macro string
If string is "GmshMergeFile", the parameter is treated as a filename of a macro that will be merged when the parameter is clicked in the interface. If string is "GmshParseString", the parameter is directly treated as a Gmsh macro that will be parsed when the parameter is clicked in the interface.