Python Simulating Gravitational Interactions in a Particle System

AI Thread Summary
The discussion focuses on simulating gravitational interactions in a particle system for a solar system project. It emphasizes starting with a two-body simulation that incorporates gravitational acceleration, where each particle influences others through their fields. The need to extend the simulation to a three-body system is highlighted, along with the importance of calculating all accelerations before updating positions and velocities using Euler's method. A code snippet is provided, but it requires adjustments to account for variable acceleration based on gravitational forces rather than constant acceleration. The conversation underscores the necessity of measuring distances between particles to accurately compute gravitational effects.
Jozefina Gramatikova
Messages
62
Reaction score
9
I have a project to make the solar system. I am trying to start from somwhere. On the notes it says that we need to start by creating a System of Particles
  • Two-body simulation (Circular motion)
  • Implement Gravitational acceleration
    Each particle (planet) could have its own field.
    • I.e. Each particle loops over all the other bodies to get the effect of all the other fields on it.
  • Extend to three body system
Need to create all accelerations in one step before updating the positions and velocities.
I have to use the Euler's method.

I have my code from last week where we had to simulate a projectile with constant acceleration.
Here is my code:
Python:
import numpy as np

class Particle:

position = np.array([0,0,0])
velocity = np.array([0,0,0])
acceleration = np.array([0,0,0])

def __init__(self, initialPosition, initialVelocity, initialAcceleration, Name, mass):
    self.position = initialPosition
    self.velocity = initialVelocity
    self.acceleration = initialAcceleration
    self.Name = Name
    self.mass = mass

def update(self, deltaT):
    self.position = self.position + self.velocity*deltaT
    self.velocity = self.velocity + self.acceleration*deltaT
def __repr__(self):
    return 'Particle: %10s, Mass: %.5e, Position: %s, Velocity: %s, Acceleration:%s'%
                   (self.Name,self.mass,self.position, self.velocity,self.acceleration)
Pls help!
 
Technology news on Phys.org
This is not a trivial request. Have you done some research with Google?

There are many examples of similar problems solved with Python that you could look at and learn how to write your own.
 
  • Like
Likes QuantumQuest
I have done my research. I am sorry, but couldn't find something like this.
 
What exactly do you need help with?
Is your sim not doing what it's supposed to?
 
OK, that is a good beginning for a particle. But a particle in a gravitational field, does not have a constant acceleration. The acceleration experienced by a particle of mass m under the influence of an external force F, is given by the 2nd law of Newton:
\vec{a} = \vec{F}/m
The force your particle will experience will be the gravitational one from the other particle 2, and will be the gravitational law:
\vec{F}= -\frac{G m_1 m_2}{|r_1-r_2|^2} \hat{r_{12}} = -\frac{G m_1 m_2}{|\vec{r_1} - \vec{r_2}|^3} (\vec{r}_1 - \vec{r}_2), (where \hat{r_{12}} the unit vector pointing from the particle 2>1).

and so you can see that the force depends on the relative distance between the particle 1 and 2 (and so it's not constant). Start from defining a way to measure the distance between your particles then. That distance can be used to determine the vector of acceleration per unit of time and the latter will affect the movement of your particles.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...

Similar threads

Back
Top