I have been working on implementing a solar system system simulator in C++ - but am getting incorrect results on the order of 10^10 km, and it seems that the planets are moving directly away from the sun. I suspect that there is a mistake in the integrator (Velocity Verlet) that I have posted below. It would be appreciated if I could get someone to check that, assuming that the rest of the program is correct, the integrator is working. The code should be self-explanatory.(adsbygoogle = window.adsbygoogle || []).push({});

Thanks!

Code (C):void verlet(System& system, Trajectory& trajectory, double delta){

long n = trajectory.get_number_of_rows();

long n_bodies = system.get_number_of_bodies();

double delta2 = pow(delta, 2);

std::cout << "Starting integrator." << std::endl;

for (int i = 0; i < n; ++i) {

if(i == 0){

std::vector<Vector3 > x0 = system.get_positions();

std::vector<Vector3> v0 = system.get_velocities();

trajectory.set_position(x0, v0);

system.set_positions(x0);

system.set_velocities(v0);

}

else {

std::vector<Vector3> x0 = trajectory.get_positions_at_index(i-1);

std::vector<Vector3> v0 = trajectory.get_velocities_at_index(i-1);

std::vector<Vector3> a0 = system.get_accelerations();

std::vector<Vector3> x1 {};

for (long j = 0; j < n_bodies; ++j) {

x1.emplace_back(x0[j] + v0[j] * delta + delta2 * 0.5 * a0[j]);

}

system.set_positions(x1);

std::vector<Vector3 > a1 = system.get_accelerations();

std::vector<Vector3 > v1;

for (long k = 0; k < n_bodies; ++k) {

v1.emplace_back(v0[k] + 0.5 *( a0[k] + a1[k]) * delta );

}

system.set_velocities(v1);

trajectory.set_position(x1, v1);

}

}

std::cout << "Integration finished." << std::endl;

}

**Physics Forums - The Fusion of Science and Community**

Join Physics Forums Today!

The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

# Velocity Verlet C++ implementation

Tags:

Have something to add?

Draft saved
Draft deleted

Loading...

Similar Threads - Velocity Verlet implementation | Date |
---|---|

Verlet algorithm: Why am I getting this output? | Jan 26, 2016 |

Damping the Velocity | Jan 3, 2016 |

Velocity from a data set | May 14, 2013 |

Calculating unit vector for velocity | Jul 31, 2009 |

VPython Sphere Velocity Problem | Nov 30, 2008 |

**Physics Forums - The Fusion of Science and Community**