(bodies=SYSTEM, pairs=PAIRS, e=0.0)
| 73 | |
| 74 | |
| 75 | def report_energy(bodies=SYSTEM, pairs=PAIRS, e=0.0): |
| 76 | for (((x1, y1, z1), v1, m1), |
| 77 | ((x2, y2, z2), v2, m2)) in pairs: |
| 78 | dx = x1 - x2 |
| 79 | dy = y1 - y2 |
| 80 | dz = z1 - z2 |
| 81 | e -= (m1 * m2) / ((dx * dx + dy * dy + dz * dz) ** 0.5) |
| 82 | for (r, [vx, vy, vz], m) in bodies: |
| 83 | e += m * (vx * vx + vy * vy + vz * vz) / 2. |
| 84 | |
| 85 | |
| 86 | def offset_momentum(ref, bodies=SYSTEM, px=0.0, py=0.0, pz=0.0): |