(dt, n, bodies=SYSTEM, pairs=PAIRS)
| 51 | |
| 52 | |
| 53 | def advance(dt, n, bodies=SYSTEM, pairs=PAIRS): |
| 54 | for i in range(n): |
| 55 | for (([x1, y1, z1], v1, m1), |
| 56 | ([x2, y2, z2], v2, m2)) in pairs: |
| 57 | dx = x1 - x2 |
| 58 | dy = y1 - y2 |
| 59 | dz = z1 - z2 |
| 60 | mag = dt * ((dx * dx + dy * dy + dz * dz) ** (-1.5)) |
| 61 | b1m = m1 * mag |
| 62 | b2m = m2 * mag |
| 63 | v1[0] -= dx * b2m |
| 64 | v1[1] -= dy * b2m |
| 65 | v1[2] -= dz * b2m |
| 66 | v2[0] += dx * b1m |
| 67 | v2[1] += dy * b1m |
| 68 | v2[2] += dz * b1m |
| 69 | for (r, [vx, vy, vz], m) in bodies: |
| 70 | r[0] += dt * vx |
| 71 | r[1] += dt * vy |
| 72 | r[2] += dt * vz |
| 73 | |
| 74 | |
| 75 | def report_energy(bodies=SYSTEM, pairs=PAIRS, e=0.0): |
no outgoing calls
no test coverage detected