int main() { // Initialize Variables Sim sim = loadInit(); DataExporter de(outpath, sim); // If init file missing, write template init file. Otherwise, simulate. if (!loaded) { cout << "No valid init file exists. Creating template init file..." << endl; writeTemplateInit(); } else // Simulate { de.start(); cout << endl << "Simulating..." << endl; while (sim.t < end_t) { sim.advance(dt); de.log(); } de.write(); } return 0; }
/** Runs the simulation with different starting positions for * ball 2, printing the final velocity angles of each ball for * each iteration. Used to find a set of initial conditions * corresponding with those stipulated in a sample problem. */ void bruteForceAngles(int coord, double start, double step, int n) { for (int i = 0; i < n; i++) { Sim sim = loadInit(); sim.balls[1].s[coord] = start + i * step; while (sim.t < end_t) sim.advance(dt); cout << "b2.s[" << coord <<"] " << start + i * step << " ; theta 1 = " << 180 / M_PI * atan(sim.balls[0].v[1] / sim.balls[0].v[0]); cout << " theta 2 = " << 180 / M_PI * atan(sim.balls[1].v[1] / sim.balls[1].v[0]) << endl; } }