Running a Parameter Sweep in VSim/Vorpal

One can run a parameter sweep by creating a script (.bat file for Windows or .sh file for Linux/Mac).

After following the instructions in Running Vorpal from the Command Line, you should be able to run on the command line. The argument -iargs can be used to pass a parameter value to your input file for running.

vorpalser -i myFile.pre -iargs FREQUENCY=1.e9

If you are content with running one file at a time (eg for relatively quick simulations, or where all simulations scale perfectly onto all the cores you have available), the quickest way to scan through a set of frequencies, for instance, might be to write a script (.bat or .sh) to loop over the values.

Linux/Mac

A basic example to loop through a number of wavelengths (2-10 by steps of 1) in the emPlaneWave example is as follows:

for number in `seq 2 1 10` ; do
  vorpalser -i emPlaneWaveT.pre -iargs WAVELENGTHS=$number -o emPlaneWaveT_${number} \
  > emPlaneWaveT_${number}.log
done

Windows

A basic example to loop through a number of wavelengths (2-10 by steps of 1) in the emPlaneWave example is as follows:

FOR /L %n IN (2,1,10) DO vorpalser.exe -i emPlaneWaveT.pre -iargs WAVELENGTHS=%n \
-o emPlaneWaveT_%n > emPlaneWaveT_%n.log

In a batch file, use %%n in the above command.

Additionally you may want to use VSimComposer for visualisation after the simulation is complete, which requires you to have the .pre file in the run directory, and one directory per simulation. The script below was written for a cygwin machine with four cores. One core was kept clear so that the machine did not slow too much. The wc ... | cut -f2 -d" " approach will not work for larger core counts as the format of wc will change if there are more characters. The awk command is pretty standard and would be better. This is principally to provide inspiration if you wish to do something more complex. If you have comments and suggestions please email technical support.