N-body gravity simulation in 2 or 3 dimensions using numpy
All checks were successful
Lint / MyPy (push) Successful in 1m5s
You know, I don't think this makes it more readable. The problem is really that MPL's typed interface isn't very good, especially when dealing with 3D graphs, so I've gotta do a bunch of workaround to get around it. |
||
---|---|---|
.forgejo/workflows | ||
data | ||
.gitignore | ||
data.py | ||
gen_data.py | ||
main.py | ||
physics.py | ||
README.md | ||
requirements.txt |
nbody
Threw this together to get more comfortable with Numpy. Can simulate a few hundred bodies in 2 or 3 dimensions without much hassle.
To set up:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
To run:
# 2d simulation
./main.py -f 2d/simple.csv
# 3d simulation, increased gravity
./main.py -f 3d/some.csv -g 30
To create a new start state:
# New 3d simulation of 100 particles in 300x200 box with max velocity components 2 and mass up to 3
./gen_data.py -c 100 -w 300 -h 200 -v 2 -m 3 > data/2d/new.csv
# New 3d simulation of 500 particles in 1000^3 box with velocity components up to 3 and mass up to 5
./gen_data.py -c 500 -d 1000 -w 1000 -h 1000 -v 3 -m 5 > data/3d/new.csv