CellGPU  0.8.0
GPU-accelerated simulations of cells
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
brownianParticleDynamics Class Reference

A class that implements simple Brownian particle dynamics in 2D. More...

#include <brownianParticleDynamics.h>

Inheritance diagram for brownianParticleDynamics:
Inheritance graph
[legend]

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< Simple2DModelmodel
 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< Simple2DCellcellModel
 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
 

Detailed Description

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

Constructor & Destructor Documentation

◆ brownianParticleDynamics()

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

Parameters
thenumber 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.

Member Function Documentation

◆ integrateEquationsOfMotion()

void brownianParticleDynamics::integrateEquationsOfMotion ( )
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().

◆ integrateEquationsOfMotionCPU()

void brownianParticleDynamics::integrateEquationsOfMotionCPU ( )
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().

◆ integrateEquationsOfMotionGPU()

void brownianParticleDynamics::integrateEquationsOfMotionGPU ( )
virtual

◆ set2DModel()

void brownianParticleDynamics::set2DModel ( shared_ptr< Simple2DModel _model)
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.

◆ spatialSorting()

void brownianParticleDynamics::spatialSorting ( const vector< int > &  reIndexer)
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


The documentation for this class was generated from the following files: