edlrun)
EDL Runner (edlrun) is a program that runs experiments
built in software, i.e. computer simulations. Its main purpose is to make working with
Experiment Description Language (EDL) easier.
edlrun achieves this by defining a standard way of handling input and output
parameters to an experiment. As long as an experiment developer sticks to this standard,
edlrun will handle reading input parameters from, and writing output parameters
to, EDL documents. The experiment developer need not know anything about EDL (or even XML),
yet is able to process EDL documents using edlrun.
For experiment developers that do know how to handle EDL (and XML) documents,
edlrun is still a useful utility. It handles the EDL/XML part, leaving only the
experiment part to the developer. Concentrating the handling of EDL/XML into a single utility
means that not every simulation needs XML handling capabilities, resulting in smaller programs.
It also means there is only a single utility that needs to be changed whenever EDL evolves.
When an EDL document is available, calling edlrun with the name of the EDL document
as a parameter on the command-line will cause edlrun to perform the experiment that
is described in the EDL document. Wildcards (*, ?) are supported in filenames, so calling
edlrun *.edl will perform the experiments described in all the EDL documents in
the current directory. edlrun's ability to perform experiments depends on a
standard way of dealing with input and output parameters.
As stated before, edlrun presents the input parameters to the simulation program
in a standard format. It does so by providing each input parameter on the command-line, using
the following syntax:
-i<name>[(<index>)]=<value><unit>.
The part between [] is optional, and is used to specify indexed values.
For example, a "simulation program" called calcArea that calculates the
area of a rectangle would expect two input parameters: width and height. When fed an EDL
document containing the following input fragment:
<input> <inputItem id="I1" name="width" unit="m" value="3"/> <inputItem id="I2" name="height" unit="dm" value="40"/> </input>
edlrun will issue the following call: calcArea -iwidth=3m -iheight=40dm.
And when fed an EDL document containing the following input fragment:
<input>
<inputRangeItem id="I1" name="size" unit="m">
<inputRangeItem index="0" value="3"/>
<inputRangeItem index="1" value="4"/>
</inputRange>
</input>
edlrun will issue the following call: calcArea -isize(0)=3m -isize(1)=4m.
edlrun expects the output parameters of the experiment to be written to a result file.
This allows both console programs and GUI ones to be used as simulation programs.
The name of the result file should be the same as that of the simulation program,
but with the .out extension, e.g.
calcArea.out. Each output parameter should be written on a separate line in
this file, using the following format:
<name>[(<index>)]=<value><unit>.
The part between [] is optional, and is used to specify indexed values.
For example, when the calcArea program creates the following
calcArea.out result file:
area=12m
edlrun will update the EDL document with the following output
fragment:
<output> <outputItem id="O1" name="area" unit="m" value="12"/> </output>
And when a simulation program creates the following result file:
temperature(0)=273K temperature(1)=283K
edlrun will update the EDL document with the following output
fragment:
<output>
<outputRange id="O1" name="temperature" unit="K">
<outputRangeItem index="0" value="273"/>
<outputRangeItem index="1" value="283"/>
</outputRange>
</output>