Update n-body sources and binary for rust. Add bench results (#172)

This commit is contained in:
Max Graey
2018-07-21 15:11:39 +03:00
committed by Daniel Wirtz
parent 00fb45fcad
commit 813d2e33c8
15 changed files with 704 additions and 779 deletions

View File

@ -7,6 +7,7 @@ const compiled = new WebAssembly.Module(
const imports = {
env: {
memory: new WebAssembly.Memory({ initial: 10 }),
abort: (filename, line, column) => {
throw Error("abort called at " + line + ":" + colum);
}

View File

@ -36,62 +36,60 @@ function Sun(): Body {
function Jupiter(): Body {
return new Body(
4.84143144246472090e+00,
4.84143144246472090e+00,
-1.16032004402742839e+00,
-1.03622044471123109e-01,
1.66007664274403694e-03 * DAYS_PER_YEAR,
7.69901118419740425e-03 * DAYS_PER_YEAR,
1.66007664274403694e-03 * DAYS_PER_YEAR,
7.69901118419740425e-03 * DAYS_PER_YEAR,
-6.90460016972063023e-05 * DAYS_PER_YEAR,
9.54791938424326609e-04 * SOLAR_MASS
9.54791938424326609e-04 * SOLAR_MASS
);
}
function Saturn(): Body {
return new Body(
8.34336671824457987e+00,
4.12479856412430479e+00,
8.34336671824457987e+00,
4.12479856412430479e+00,
-4.03523417114321381e-01,
-2.76742510726862411e-03 * DAYS_PER_YEAR,
4.99852801234917238e-03 * DAYS_PER_YEAR,
2.30417297573763929e-05 * DAYS_PER_YEAR,
2.85885980666130812e-04 * SOLAR_MASS
4.99852801234917238e-03 * DAYS_PER_YEAR,
2.30417297573763929e-05 * DAYS_PER_YEAR,
2.85885980666130812e-04 * SOLAR_MASS
);
}
function Uranus(): Body {
return new Body(
1.28943695621391310e+01,
1.28943695621391310e+01,
-1.51111514016986312e+01,
-2.23307578892655734e-01,
2.96460137564761618e-03 * DAYS_PER_YEAR,
2.37847173959480950e-03 * DAYS_PER_YEAR,
2.96460137564761618e-03 * DAYS_PER_YEAR,
2.37847173959480950e-03 * DAYS_PER_YEAR,
-2.96589568540237556e-05 * DAYS_PER_YEAR,
4.36624404335156298e-05 * SOLAR_MASS
4.36624404335156298e-05 * SOLAR_MASS
);
}
function Neptune(): Body {
return new Body(
1.53796971148509165e+01,
1.53796971148509165e+01,
-2.59193146099879641e+01,
1.79258772950371181e-01,
2.68067772490389322e-03 * DAYS_PER_YEAR,
1.62824170038242295e-03 * DAYS_PER_YEAR,
1.79258772950371181e-01,
2.68067772490389322e-03 * DAYS_PER_YEAR,
1.62824170038242295e-03 * DAYS_PER_YEAR,
-9.51592254519715870e-05 * DAYS_PER_YEAR,
5.15138902046611451e-05 * SOLAR_MASS
5.15138902046611451e-05 * SOLAR_MASS
);
}
class NBodySystem {
constructor(
public bodies: Body[]
) {
constructor(public bodies: Body[]) {
var px: float = 0.0;
var py: float = 0.0;
var pz: float = 0.0;
var size = bodies.length;
for (let i = 0; i < size; i++) {
for (let i = 0; i < size; ++i) {
let b = unchecked(bodies[i]);
let m = b.mass;
px += b.vx * m;
@ -197,16 +195,11 @@ export function init(): void {
]);
}
export function getBody(index: i32): Body | null {
var bodies = system.bodies;
return <u32>index < <u32>bodies.length ? bodies[index] : null;
}
export function step(): float {
system.advance(0.01);
return system.energy();
}
export function bench(steps: u32): void {
for (let i: u32 = 0; i < steps; i++) system.advance(0.01);
for (let i: u32 = 0; i < steps; ++i) system.advance(0.01);
}