Skip to main content

# nBody

### A GPU-accelerated N-body particle simulator and animator

Create complex particle simulations the easy way: a high-level package for designing and simulating large-scale particle interactions. Let nBody do the hard work for you!

## Features

Easy to use – and fast – nBody can simulate:

  • Gravitational acceleration

  • Coulomb interactions

  • Particle collisions

nBody is highly optimized:

Animated [`matplotlib`](https://matplotlib.org/ “Matplotlib”) visualizations included for 2-D simulations. 3-D animations are also supported through the use of [`vpython`](https://vpython.org/ “VPython”).

## Quick-Start

Using `numpy` arrays, you will need:

  • An initial position array `x` with shape `(N,p)`
    • N is the number of particles

    • p is the number of dimensions

  • An initial velocity array `v` with shape `(N,p)`

  • An array of masses `m```with shape ```(N,)`

  • An array of charges `q` with shape `(N,)`

  • An array of radii `r` with shape `(N,)`

A possible configuration is as follows:

import numpy as np x = np.random.normal(0, 10, (N,p)) # Positions v = np.random.normal(0, 2, (N,p)) # Velocities m = np.random.normal(8, 1, (N, )) # Masses q = np.random.normal(0, 1E-6, (N, )) # Charges r = np.random.normal(1, 0.1, (N, )) # Radii

m[m < 0] = np.abs(m[m < 0]) m[m == 0] = 1E-3

Next, pass these arrays in the given order to the `spheres` function, so as to create a new instance `S` of class `System` with the above conditions.

from nbody import * S = spheres(x, v, m, q, r)

After selecting a simulation runtime `T` and (optional) time-step `dt`, use the `solve` method to calculate the particles’ trajectories.

S.solve(T, dt)

If the system is 2-D such that `p == 2`, an animation can be created and saved to file; here, the filename `quick_start` is chosen, and will produce a file `animations/quick_start.mp4`.

animate(S, “quick_start”)

If the system is 3-D such that `p == 3`, animations can be created but not saved to file – simply omit the string argument shown above, and no warnings will be raised.

Once the `solve` method has been called, it is also possible to save the `System` instance to file; in this case, the data will be saved to a directory `saved/quick_start`.

save(S, “quick_start”)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nbody-0.0.4.tar.gz (18.0 kB view details)

Uploaded Source

File details

Details for the file nbody-0.0.4.tar.gz.

File metadata

  • Download URL: nbody-0.0.4.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.8

File hashes

Hashes for nbody-0.0.4.tar.gz
Algorithm Hash digest
SHA256 c9dfb5076b6b734c344e20642460b3401d71bf1ee6594c3e173ef31acbc30924
MD5 cda0c88791670150527406ea5cdd2f91
BLAKE2b-256 022e0813eaf2ff8386a2fd328d3f8367b6880e44b4b6b1603066fd21e6da6dc3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.4 This release

1 file

0.0.3

1 file

0.0.2

1 file

0.0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page