LibSimController
acquire data from LibSim instrumented simulations
Purpose
Retrieve simulation data during the runtime of LibSim instrumented simulations.
Data Preparation
The LibSim instrumented simulation must initialize MPI with MPI_Init_thread and thread support MPI_THREAD_MULTIPLE.
Ports
Ports are dynamically created depending on the data the simulation provides. Data for unconnected ports is not requested from LibSim.
Parameters
name |
description |
type |
|---|---|---|
path |
path to a .sim2 file or directory containing these files |
String |
simulation_name |
the name of the simulation as used in the filename of the sim2 file |
String |
vtk_variables |
sort the variable data on the grid from VTK ordering to Vistles |
Int |
constant_grids |
are the grids the same for every timestep? |
Int |
frequency |
frequency in which data is retrieved from the simulation |
Int |
combine_grids |
combine all structure grids on a rank to a single unstructured grid |
Int |
keep_timesteps |
keep data of processed timestep of this execution |
Int |
Depending on the connected ports and the frequency parameter the module requests data from the simulation. Once the simulation generates the requested data the module is automatically executed.
Simulation Specific Commands
Connected simulations might provide additional commands that are (for now) represented by parameters. Changing one of these parameters triggers the displayed action in the simulation, while the actual value of bolean parameters is meaningless the simulation can also specify commands that take a string as argument. These commands are represented as string input parameters and send their string value to the simulation on change.
Usage Examples
Mandelbrot example
-Download the Mandelbrot simulation and edit the Makefile as described. Additionally set “CXX=mpic++” and add -DPARALLEL to CXXFLAGS
-Open mandelbrot.C and change:
/* Initialize MPI */
MPI_Init(&argc, &argv);
to
/* Initialize MPI */
int provided = MPI_THREAD_SINGLE;
MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided);
For multi process Vistle:
-build and run the simulation.
make
export LD_LIBRARY_PATH=~/src/vistle/build/lib"
mpirun -np 2 ./mandelbrot
-start vistle in a new terminal
export MPISIZE=2
vistle
-start the LibSimController module and set the path parameter to the LibSim file.
The default location for these files is:
$HOME/.visit/simulations/hash.mandelbrot_par.sim2.
For single process Vistle:
-build and run the simulation.
make
export VISTLE_ROOT=~/src/vistle/build/
export LD_LIBRARY_PATH=$VISTLE_ROOT/lib"
#to use COVER
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/src/covise/archsuffix/lib"
export COVISEDIR=$HOME/src/covise
export COVISE_PATH=$VISTLE_ROOT:$COVISEDIR
mpirun -np 2 ./mandelbrot
-start vistle hub in a new terminal with the LibSim start option and the path to the sim2 file
export MPISIZE=2
vistle -l $HOME/.visit/simulations/hash.mandelbrot_par.sim2
-start the LibSimController module
For both versions:
The module should now display two output ports: AMR mesh and mandelbrot.
-enable VTK variables for the LibSimController module
-connect the mandelbrot port with the following modues as shown in the picture:

-enable quad for Domainsurface
-pres step in the LibSimController module to execute one timestep or type step in the commandline of the simulation
-in COVER view all and rotate the image. Use Navigation/Center view to allign the image. The rusult should look like:

Acknowledgements
Developed through funding from the EXCELLERAT centre of excellence.