The BruteForceAlgorithm class executes the simple O(n^2) method. More...
#include <bruteforcealgorithm.h>
Public Member Functions | |
BruteForceAlgorithm (int xIn, int yIn, int numParticles) | |
Constructs a 2d BruteForceAlgorithm. More... | |
BruteForceAlgorithm (int xIn, int yIn, int zIn, int numParticles) | |
Constructs a 3d BruteForceAlgorithm. More... | |
BruteForceAlgorithm (int xIn, int yIn, int zIn, int numParticles, double centerMass) | |
Constructs a 3d BruteForceAlgorithm with orbital Physics. More... | |
Public Member Functions inherited from Algorithm | |
Algorithm (double xIn, double yIn) | |
Constructs a 2 dimensional Algorithm. More... | |
Algorithm (double xIn, double yIn, double zIn) | |
Constructs a 3 dimensional Algorithm. More... | |
Algorithm (double xIn, double yIn, double zIn, double centerMass) | |
Constructs a 3 dimensional Algorithm with orbital Physics. More... | |
std::vector< Particle * > | getParticles () |
Returns the vector of Particles that the algorithm is tracking. More... | |
std::queue< Collision * > * | getCollisions () |
Returns the queue of Collisions that we haven't entered the warning window yet. More... | |
MultiQueue * | getPositionQueue () |
Returns the MultiQueue that contains upcoming Positions for each Particle. More... | |
std::mutex * | getCollisionMutex () |
Returns the Mutex locking the Collision queue. More... | |
Particle * | getCenterOfGravity () |
Returns the massive Particle in the center responsible for Gravitation. More... | |
int | getNumParts () |
Returns the number of Particles the Algorithm is tracking. More... | |
int | getTimestep () |
Returns the timestep the Algorithm is currently calculating. More... | |
double | getSystemKE () |
Returns the system kinetic energy which is updated each timestep. More... | |
double | getSystemPE () |
Returns system potential energy which is updated each timestep. More... | |
Physics * | getPhysics () |
Returns the Physics object working for this Algorithm. More... | |
void | setNumParts (int numParticles) |
Sets the number of Particles the Algorithm is tracking. More... | |
void | createParticles2D (int numParticles) |
Sets the number of Particles, then generates that many to track. More... | |
void | createParticles3D (int numParticles) |
Sets the number of Particles, then generates that many to track. More... | |
void | createParticlesOrbit (int numParticles) |
Sets the number of Particles, then generates that many to track. More... | |
void | respawnParticle (Particle *particle) |
void | enqueueCollisions (std::vector< Collision * > collisions) |
Pushes Collisions from the most recent timestep onto the queue of upcoming Collision$s. More... | |
void | runOneTimestep () |
Calculates the next timestep. More... | |
void | run () |
void | stop () |
void | stepTime () |
Calculates the next timestep and sets running to true. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from Algorithm | |
Particle * | generateParticleIn2D (int i) |
Particle * | generateParticleIn3D (int i) |
Particle * | generateParticleInOrbit (int i) |
void | regenerateParticleInOrbit (Particle *p) |
bool | checkForOverlap (Particle *p) |
void | enqueuePositions () |
void | updateSystemKE () |
void | updateSystemPE () |
void | rescaleVelocities () |
void | checkTimestep () |
Protected Attributes inherited from Algorithm | |
std::vector< Particle * > | particles |
std::queue< Collision * > | collisionQueue |
std::mutex | collisionMutex |
MultiQueue * | positionQueue |
Physics * | physics |
bool | running |
int | numParts |
int | timestep |
double | xWinSize |
double | yWinSize |
double | zWinSize |
double | systemKE |
double | systemPE |
The BruteForceAlgorithm class executes the simple O(n^2) method.
This class stores the data necessary to track particle movements. At each timestep, it compares the Position of each Particle with that of each other Particle to see if they are farther appart than the sum of ther radii. if not, then a Collision has happened, and it gets resolved.
BruteForceAlgorithm::BruteForceAlgorithm | ( | int | xIn, |
int | yIn, | ||
int | numParticles | ||
) |
Constructs a 2d BruteForceAlgorithm.
This calls Algorithm::Algorithm() then creates the appropriate number of particles in 2 dimensional space.
xIn | the size of the x dimension of the space. |
yIn | the size of the y dimension of the space. |
numParticles | the number of Particles to spawn and track. |
BruteForceAlgorithm::BruteForceAlgorithm | ( | int | xIn, |
int | yIn, | ||
int | zIn, | ||
int | numParticles | ||
) |
Constructs a 3d BruteForceAlgorithm.
This calls Algorithm::Algorithm() then creates the appropriate number of particles in 3 dimensional space.
xIn | the size of the x dimension of the space. |
yIn | the size of the y dimension of the space. |
zIn | the size of the z dimension of the space. |
numParticles | the number of Particles to spawn and track. |
BruteForceAlgorithm::BruteForceAlgorithm | ( | int | xIn, |
int | yIn, | ||
int | zIn, | ||
int | numParticles, | ||
double | centerMass | ||
) |
Constructs a 3d BruteForceAlgorithm with orbital Physics.
This calls Algorithm::Algorithm() then creates the appropriate number of particles in 3 dimensional space with circular orbits.