The normal arrows indicate operations occurring before runtime whereas the bold arrows indicate the file dependencies at runtime when executing the simulator. Red font is used with system programs like the C++ compiler and linker. Blue font indicates the SPARK programs and files used in the build process.
What's new concerns the process of explicitly specifying the driver function to be used by the executable simulator. First, the C++ source file mydriver.cpp where the driver function is implemented is compiled to produce the object file mydriver.o. Then the object file is linked along with the other object files for the atomic classes to generate the executable simulator mydriver.exe
To solve multiple problems in the same driver function, each problem topology must be described through a corresponding *.cpp file or *.xml file, depending on how the problem is to be built. There are no limitations as to how many different problem topologies (each defined in a different *.cpp file or *.xml file) can be used in the same driver function.
Of course, it is possible to instantiate multiple instances of the same problem topology (e.g., defined in the spring.xml file ) as long as each instance is assigned a unique name in the process space (e.g., one instance could be named "MySpring1" and the other instance "MySpring2").
Also, for each problem instance being simulated, corresponding *.run and *.prf files must be specified.
See Implementation of the SPARK Driver Function for more infomation on how to implement the driver function for a SPARK simulator using the problem driver API.
gmake -f multiproblem.makefile PROJ=mydriver SUBPROBLEMS="../problem1 ../problem2" <enter>
This will generate an executable simulator mydriver.exe as well as the needed dynamic libraries containing the compiled atomic classes. The makefile assumes that the problem files are located in directories with the same names.
See Multi-problem command file for a more detailed explanation of the multiproblem makefile.