CellGPU
0.8.0
GPU-accelerated simulations of cells
|
A class that implements simple Brownian particle dynamics in 2D. More...
#include <brownianParticleDynamics.h>
Public Member Functions | |
brownianParticleDynamics () | |
base constructor sets the default time step size | |
brownianParticleDynamics (int N) | |
additionally set the number of particles and initialize things More... | |
virtual void | integrateEquationsOfMotion () |
the fundamental function that models will call, using vectors of different data structures More... | |
virtual void | integrateEquationsOfMotionCPU () |
call the CPU routine to integrate the e.o.m. More... | |
virtual void | integrateEquationsOfMotionGPU () |
call the GPU routine to integrate the e.o.m. More... | |
Dscalar | getT () |
Get temperature, T. | |
void | setT (Dscalar _T) |
Set temperature, T. | |
Dscalar | getMu () |
Get the inverse friction constant, mu. | |
void | setMu (Dscalar _mu) |
Set the value of the inverse friction coefficient. | |
virtual void | set2DModel (shared_ptr< Simple2DModel > _model) |
virtual function to allow the model to be a derived class More... | |
virtual void | spatialSorting (const vector< int > &reIndexer) |
call the Simple2DCell spatial vertex sorter, and re-index arrays of cell activity More... | |
int | getTimestep () |
get the number of timesteps run | |
Dscalar | getTime () |
get the current simulation time | |
virtual void | setDeltaT (Dscalar dt) |
Set the simulation time stepsize. | |
virtual void | performUpdate () |
performUpdate just maps to integrateEquationsOfMotion | |
virtual void | setReproducible (bool rep) |
Set whether the source of noise should always use the same random numbers. | |
void | reIndexRNG (GPUArray< curandState > &array) |
re-index the any RNGs associated with the e.o.m. | |
virtual void | Update (int timestep) |
The fundamental function that a controlling Simulation can call. | |
void | setPeriod (int _p) |
set the period | |
void | setPhase (int _p) |
set the phase | |
virtual void | spatialSorting () |
allow for spatial sorting to be called if necessary... | |
virtual void | setGPU () |
Enforce GPU-only operation. This is the default mode, so this method need not be called most of the time. | |
virtual void | setCPU () |
Enforce CPU-only operation. Derived classes might have to do more work when the CPU mode is invoked. | |
int | getNdof () |
Get the number of degrees of freedom of the equation of motion. | |
void | setNdof (int _n) |
Set the number of degrees of freedom of the equation of motion. | |
Public Attributes | |
shared_ptr< Simple2DModel > | model |
A pointer to a Simple2DModel that the updater acts on. | |
Protected Member Functions | |
void | reIndexArray (GPUArray< int > &array) |
Re-index cell arrays after a spatial sorting has occured. | |
void | reIndexArray (GPUArray< Dscalar > &array) |
why use templates when you can type more? | |
void | reIndexArray (GPUArray< Dscalar2 > &array) |
why use templates when you can type more? | |
Protected Attributes | |
shared_ptr< Simple2DCell > | cellModel |
A shared pointer to a simple cell model. | |
Dscalar | Temperature |
The temperature. That right there is an A-plus level doxygen description. | |
Dscalar | mu |
The value of the inverse friction constant. | |
int | Timestep |
Count the number of integration timesteps. | |
Dscalar | deltaT |
The time stepsize of the simulation. | |
GPUArray< Dscalar2 > | displacements |
an internal GPUArray for holding displacements | |
noiseSource | noise |
A source of noise for the equation of motion. | |
int | Period |
The period of the updater... the updater will work every Period timesteps. | |
int | Phase |
The phase of the updater... the updater will work every Period timesteps offset by a phase. | |
bool | GPUcompute |
whether the updater does its work on the GPU or not | |
int | Ndof |
The number of degrees of freedom the equations of motion need to know about. | |
vector< int > | reIndexing |
a vector of the re-indexing information | |
A class that implements simple Brownian particle dynamics in 2D.
implements r = mu*F t + sqrt(2 T t ) R(T), where mu is the inverse drag, KT is the temperature, and R(T) is a delta-correlated Gaussian noise. Noise is defined in two dimensions so that the short time diffusion constant is D = KT mu
brownianParticleDynamics::brownianParticleDynamics | ( | int | _N | ) |
additionally set the number of particles and initialize things
An extremely simple constructor that does nothing, but enforces default GPU operation
the | number of points in the system (cells or particles) |
References simpleEquationOfMotion::deltaT, simpleEquationOfMotion::displacements, updater::GPUcompute, noiseSource::initialize(), mu, updater::Ndof, updaterWithNoise::noise, GPUArray< T >::resize(), Temperature, and simpleEquationOfMotion::Timestep.
|
virtual |
the fundamental function that models will call, using vectors of different data structures
Advances brownian dynamics by one time step
Reimplemented from simpleEquationOfMotion.
References cellModel, simpleEquationOfMotion::displacements, updater::GPUcompute, noiseSource::initialize(), integrateEquationsOfMotionCPU(), integrateEquationsOfMotionGPU(), updater::Ndof, updaterWithNoise::noise, GPUArray< T >::resize(), and simpleEquationOfMotion::Timestep.
Referenced by brownianParticleDynamics().
|
virtual |
call the CPU routine to integrate the e.o.m.
The straightforward CPU implementation
References cellModel, simpleEquationOfMotion::displacements, access_location::host, updater::Ndof, access_mode::overwrite, and access_mode::read.
Referenced by brownianParticleDynamics(), and integrateEquationsOfMotion().
|
virtual |
call the GPU routine to integrate the e.o.m.
The straightforward GPU implementation
References cellModel, ArrayHandle< T >::data, simpleEquationOfMotion::deltaT, access_location::device, simpleEquationOfMotion::displacements, gpu_brownian_eom_integration(), mu, updater::Ndof, updaterWithNoise::noise, access_mode::overwrite, access_mode::read, access_mode::readwrite, noiseSource::RNGs, and Temperature.
Referenced by brownianParticleDynamics(), and integrateEquationsOfMotion().
|
virtual |
virtual function to allow the model to be a derived class
Set the shared pointer of the base class to passed variable
Reimplemented from updater.
References cellModel, and updater::model.
|
virtual |
call the Simple2DCell spatial vertex sorter, and re-index arrays of cell activity
When spatial sorting is performed, re-index the array of cuda RNGs... This function is currently commented out, for greater flexibility (i.e., to not require that the indexToTag (or Itt) be the re-indexing array), since that assumes cell and not particle-based dynamics