/**
* Test if solver solves similar to Euler
*/
public void testCompareWithEuler() {
Particle p = new ParticleFull();
ConstantForce f = new ConstantForce();
double step = 0.00001d;
Solver solver2 = new Euler();
f.ex = 1.234;
f.ey = 3.456;
f.bz = 7.890;
f.gx = 2.468;
f.gy = 3.579;
f.drag = 5.432;
p.setX(23.456);
p.setY(35.689);
p.setRadius(13.579);
p.setVx(12.345);
p.setVy(76.543);
p.setMass(7.654);
p.setCharge(5.432);
Particle pcopy = p.copy();
Particle p2 = p.copy();
solver.prepare(p, f, step);
solver2.prepare(p2, f, step);
for (int i=0; i<100; i++)
{
solver.step(p, f, step);
solver2.step(p2, f, step);
}
solver.complete(p, f, step);
solver2.complete(p2, f, step);
if (VERBOSE) {
System.out.println("" + this.getClass().getSimpleName());
System.out.println("x: " + pcopy.getX() + " -> " + p2.getX() + " vs. " + p.getX());
System.out.println("y: " + pcopy.getY() + " -> " + p2.getY() + " vs. " + p.getY());
}
double accuracy = 0.001d;
assertAlmostEquals("x", p2.getX(), p.getX(), accuracy);
assertAlmostEquals("y", p2.getY(), p.getY(), accuracy);
assertAlmostEquals("vx", p2.getVx(), p.getVx(), accuracy);
assertAlmostEquals("vy", p2.getVy(), p.getVy(), accuracy);
}