//Macro to be overwritten in multithreaded versions, called before the graphics is allowed to draw anything
#define BeforeDraw() \
+System_Compute(&universe); \
+universe.steps += 1; \
if (options.verbosity != 0 && universe.steps % options.verbosity == 0) \
DisplayStatistics(); \
-System_Compute(&universe);
+
const char * input; // initial body field
const char * output; // file to write final positions / velocities of bodies to
const char * program; // program name
- unsigned num_threads; // number of worker threads to spawn (must be greater than 1 for any to be spawned)
- unsigned nested_threads; // number of threads to nest computations with (must be greater than 1 for any to be spawned)
- unsigned num_steps; // number of steps to run before stopping (run indefinately if equal to zero)
- unsigned timeout; // number of seconds to run before stopping (run indefinately if equal to zero)
+ int num_threads; // number of worker threads to spawn (must be greater than 1 for any to be spawned)
+ int nested_threads; // number of threads to nest computations with (must be greater than 1 for any to be spawned)
+ int num_steps; // number of steps to run before stopping (run indefinately if less than zero)
+ int timeout; // number of seconds to run before stopping (run indefinately if less than zero)
bool draw_graphics; // whether or not to actually draw graphics
bool pedantic_graphics; // whether the graphics thread will synchronise with the computation thread (true) or just draw as fast as possible (false)
bool print_positions; // print positions of bodies to stdout on every step
- unsigned verbosity; // print statistics every number of steps indicated by this variable
+ int verbosity; // print statistics every number of steps indicated by this variable
clock_t start_clock; // clock cycles done when simulation starts
struct timeval start_time; // time at which simulation starts
} Options;