Open Qmin
0.8.0
GPU-accelerated Q-tensor-based liquid crystal simulations
|
#include <multirankQTensorLatticeModel.h>
Public Member Functions | |
multirankQTensorLatticeModel (int lx, int ly, int lz, bool _xHalo, bool _yHalo, bool _zHalo, bool _useGPU=false, bool _neverGPU=false) | |
virtual scalar | getClassSize () |
return size of data in class in GB More... | |
void | determineBufferLayout () |
int3 | indexToPosition (int idx) |
given an 0 <= index < totalSites, return the local lattice position More... | |
int | positionToIndex (int3 &pos) |
given a local lattice position, return the index in the expanded data arrays More... | |
int | positionToIndex (int px, int py, int pz) |
void | getBufferInt3FromIndex (int idx, int3 &pos, int directionType, bool sending) |
void | prepareSendingBuffer (int directionType=-1) |
Fill the appropriate part of the sending buffer...if GPU, fill it all in one function call. More... | |
void | readReceivingBuffer (int directionType=-1) |
Fill the appropriate part of data from the receiving buffer...if GPU, fill it all in one function call. More... | |
virtual int | getNeighbors (int target, vector< int > &neighbors, int &neighs, int stencilType=0) |
this implementation knows that extra neighbors are after N in the data arrays More... | |
virtual void | moveParticles (GPUArray< dVec > &displacements, scalar scale=1.) |
(possibly) need to rewrite how the Q tensors update with respect to a displacement call More... | |
virtual void | moveParticles (GPUArray< dVec > &dofs, GPUArray< dVec > &displacements, scalar scale=1.) |
move a different GPU array according to the same rules More... | |
void | setNematicQTensorRandomly (noiseSource &noise, scalar s0, bool globallyAligned=false) |
initialize each d.o.f., also passing in the value of the nematicity More... | |
void | getAverageEigenvalues () |
get field-averaged eigenvalues More... | |
void | createBoundaryFromFile (string fname, bool verbose=false) |
import a boundary object from a (carefully prepared) text file More... | |
void | createSimpleFlatWallNormal (int plane, int xyz, boundaryObject &bObj) |
create a flat wall at the specified location, on either an x,y, or z plane, with anchoring given by the boundary object More... | |
void | createSimpleFlatWallZNormal (int zPlane, boundaryObject &bObj) |
create a flat wall (with z-normal) at the specified location, with anchoring given by the boundary object More... | |
void | createSimpleSpherialColloid (scalar3 center, scalar radius, boundaryObject &bObj) |
create a spherical colloid with anchoring given by the boundary object (with surface normal the director direction) More... | |
void | computeDefectMeasures (int defectType) |
compute different measures of whether a site is a defect More... | |
void | setSpinsRandomly (noiseSource &noise) |
initialize each d.o.f. to be a unit spin on the sphere More... | |
void | sliceIndices (bool _s=true) |
decide to slice sites More... | |
int | latticeSiteToLinearIndex (const int3 &target) |
given a triple, determine what More... | |
virtual void | fillNeighborLists (int stencilType=0) |
store the neighbors of each lattice site. The i'th neighbor of site j is given by neighboringSites[neighborIndex(i,j)] More... | |
virtual dVec | averagePosition () |
return the mean spin More... | |
virtual void | displaceBoundaryObject (int objectIndex, int motionDirection, int magnitude) |
Displace a boundary object (and surface sites) by one of the six primitive cubic lattice directions. More... | |
void | createBoundaryObject (vector< int > &latticeSites, boundaryType _type, scalar Param1, scalar Param2) |
assign a collection of lattice sites to a new boundaryObject More... | |
void | initializeSimpleModel (int n) |
initialize the size of the basic data structure arrays More... | |
virtual void | setGPU (bool _useGPU=true) |
Enforce GPU operation. More... | |
virtual int | getNumberOfParticles () |
get the number of degrees of freedom, defaulting to the number of cells More... | |
virtual void | computeForces (bool zeroOutForces=false) |
do everything unusual to compute additional forces... by default, sets forces to zero More... | |
void | setParticlePositions (GPUArray< dVec > &newPositions) |
void | setParticlePositions (vector< dVec > &newPositions) |
void | setParticlePositionsRandomly (noiseSource &noise) |
scalar | setVelocitiesMaxwellBoltzmann (scalar T, noiseSource &noise) |
Set velocities via a temperature. The return value is the total kinetic energy. More... | |
virtual scalar | computeKineticEnergy (bool verbose=false) |
compute the current KE More... | |
virtual scalar | computeInstantaneousTemperature (bool fixedMomentum=true) |
compute the dimension-dependent instantaneous temperature More... | |
virtual void | spatialSorting () |
do everything necessary to perform a Hilbert sort More... | |
virtual GPUArray< dVec > & | returnPositions () |
return a reference to the GPUArray of positions More... | |
virtual GPUArray< dVec > & | returnForces () |
return a reference to the GPUArray of the current forces More... | |
virtual GPUArray< int > & | returnTypes () |
return a reference to the GPUArray of the integer types More... | |
virtual GPUArray< dVec > & | returnVelocities () |
return a reference to the GPUArray of the current velocities More... | |
virtual GPUArray< scalar > & | returnDefectMeasures () |
return a reference to the GPUArray of the current defects More... | |
virtual void | setNThreads (int n) |
allow for setting multiple threads More... | |
virtual void | freeGPUArrays (bool freeVelocities, bool freeRadii, bool freeMasses) |
some situations do not require us to maintain various data structures More... | |
Public Attributes | |
int | totalSites |
N is the number of sites controlled, totalSites includes halo sites. More... | |
bool | xHalo |
bool | yHalo |
bool | zHalo |
int | myRank |
int3 | latticeSites |
vector< int2 > | transferStartStopIndexes |
list of start/stop elements in the transfer arrays for the halo sites More... | |
GPUArray< int > | intTransferBufferSend |
GPUArray< scalar > | doubleTransferBufferSend |
GPUArray< int > | intTransferBufferReceive |
GPUArray< scalar > | doubleTransferBufferReceive |
Index3D | latticeIndex |
indexer for lattice sites More... | |
Index2D | neighborIndex |
indexer for neighbors More... | |
GPUArray< int > | neighboringSites |
List of neighboring lattice sites. More... | |
GPUArray< boundaryObject > | boundaries |
list of the non-bulk objects in the simulations More... | |
vector< GPUArray< int > > | boundarySites |
A vector that keeps track of the sites associated with each boundary object. More... | |
vector< GPUArray< int > > | surfaceSites |
A vector that keeps track of the surface sites associated with each boundary object. More... | |
vector< int > | boundaryState |
A vector of flags that specifies the state of each boundary object...most schemes will be 0 = fixed boundary, 1 = movable boudnary. More... | |
vector< scalar3 > | boundaryForce |
The force (from integrating the stress tensor) on each object. More... | |
GPUArray< pair< int, dVec > > | boundaryMoveAssist1 |
An assist vector that can keep track of changes to boundary sites during a move. First element is the index a Qtensor (second ) will move to. More... | |
GPUArray< pair< int, dVec > > | boundaryMoveAssist2 |
An assist vector that can keep track of changes to surface sites during a move. First element is the index a Qtensor (second ) will move to. More... | |
bool | selfForceCompute |
Does this model have a special force it needs to compute itself? More... | |
BoxPtr | Box |
The space in which the particles live. More... | |
bool | forcesComputed |
Are the forces current? set to false after every call to moveParticles. set to true after the SIMULATION calls computeForces. More... | |
GPUArray< scalar > | defectMeasures |
scalars that can represent different defect measures More... | |
bool | neverGPU |
Whereas useGPU can be turned on and off, neverGPU is fixed. More... | |
Protected Member Functions | |
void | initializeNSites () |
a utility function for initialization More... | |
Protected Attributes | |
bool | sliceSites |
should we use a memory-efficient slicing scheme? More... | |
int | L |
lattice sites per edge More... | |
bool | normalizeSpins |
normalize vector length when moving spins? More... | |
shared_ptr< kernelTuner > | moveParticlesTuner |
performance for the moveParticles kernel More... | |
int | N |
The number of particles. More... | |
int | nThreads =1 |
number of threads to use More... | |
GPUArray< dVec > | positions |
particle positions More... | |
GPUArray< dVec > | velocities |
particle velocities More... | |
GPUArray< dVec > | forces |
Forces on particles. More... | |
GPUArray< int > | types |
particle types More... | |
bool | useGPU |
particle radii More... | |
In the nomenclature of multi-rank models, the "type" of lattice sites corresponds to: -2 --> sites that might be communicated to other ranks (this value can be overwritten) -1 --> sites that border at least one boundary (colloid, wall, etc.) 0 --> bulk sites [positive number] --> sites that are part of a boundary object
multirankQTensorLatticeModel::multirankQTensorLatticeModel | ( | int | lx, |
int | ly, | ||
int | lz, | ||
bool | _xHalo, | ||
bool | _yHalo, | ||
bool | _zHalo, | ||
bool | _useGPU = false , |
||
bool | _neverGPU = false |
||
) |
References ArrayHandle< T >::data, determineBufferLayout(), doubleTransferBufferReceive, doubleTransferBufferSend, simpleModel::forces, indexToPosition(), intTransferBufferReceive, intTransferBufferSend, latticeSites, simpleModel::N, simpleModel::neverGPU, GPUArray< T >::noGPU, simpleModel::positions, GPUArray< T >::resize(), totalSites, transferStartStopIndexes, simpleModel::types, simpleModel::velocities, xHalo, yHalo, and zHalo.
|
inlinevirtual |
return size of data in class in GB
Reimplemented from qTensorLatticeModel.
References doubleTransferBufferReceive, doubleTransferBufferSend, qTensorLatticeModel::getClassSize(), GPUArray< T >::getNumElements(), intTransferBufferReceive, intTransferBufferSend, scalar, and transferStartStopIndexes.
void multirankQTensorLatticeModel::determineBufferLayout | ( | ) |
During halo site communication, each rank will first completely fill the send buffer, and then send/receives within the buffers will be performed. Finally, the entire receive buffer will be transfered into the expanded data arrays. To facilitate this, a specific layout of the transfer buffers will be adopted for easy package/send/receive patterns: the x = 0 face will be the first (Ly*Lz) elemetents, followed by the other faces, the edges, and finally the 8 corners.
References doubleTransferBufferReceive, doubleTransferBufferSend, intTransferBufferReceive, intTransferBufferSend, latticeSites, GPUArray< T >::resize(), and transferStartStopIndexes.
Referenced by multirankQTensorLatticeModel().
int3 multirankQTensorLatticeModel::indexToPosition | ( | int | idx | ) |
given an 0 <= index < totalSites, return the local lattice position
References getBufferInt3FromIndex(), idx, Index3D::inverseIndex(), cubicLattice::latticeIndex, simpleModel::N, totalSites, and transferStartStopIndexes.
Referenced by multirankQTensorLatticeModel().
int multirankQTensorLatticeModel::positionToIndex | ( | int3 & | pos | ) |
given a local lattice position, return the index in the expanded data arrays
Given the buffer layout below, determine the data array index of a given position
References cubicLattice::latticeIndex, latticeSites, simpleModel::N, ordered(), transferStartStopIndexes, xHalo, yHalo, and zHalo.
Referenced by getNeighbors(), positionToIndex(), and prepareSendingBuffer().
|
inline |
References positionToIndex().
void multirankQTensorLatticeModel::getBufferInt3FromIndex | ( | int | idx, |
int3 & | pos, | ||
int | directionType, | ||
bool | sending | ||
) |
Meant to be used with idx in (transferStartStopIndexes[directionType].x to ".y)
idx | the linear index in between 0 and the maximum number of extended sites |
pos | gets filled with the right lattice position, with correct send/receive dependence |
directionType | an int specifying the type of face/edge/corner. See comments in determingBufferLayout() for the mapping between 0 and 25 to the possibilities |
sending | flag the either restricts pos to be withing 0 and latticeSites, or the halo sites if fase |
References idx, index, latticeSites, and transferStartStopIndexes.
Referenced by indexToPosition(), and prepareSendingBuffer().
void multirankQTensorLatticeModel::prepareSendingBuffer | ( | int | directionType = -1 | ) |
Fill the appropriate part of the sending buffer...if GPU, fill it all in one function call.
References ArrayHandle< T >::data, access_location::device, doubleTransferBufferSend, getBufferInt3FromIndex(), gpu_prepareSendingBuffer(), access_location::host, intTransferBufferSend, cubicLattice::latticeIndex, latticeSites, simpleModel::positions, positionToIndex(), access_mode::read, access_mode::readwrite, transferStartStopIndexes, simpleModel::types, and simpleModel::useGPU.
void multirankQTensorLatticeModel::readReceivingBuffer | ( | int | directionType = -1 | ) |
Fill the appropriate part of data from the receiving buffer...if GPU, fill it all in one function call.
References ArrayHandle< T >::data, access_location::device, doubleTransferBufferReceive, gpu_copyReceivingBuffer(), access_location::host, intTransferBufferReceive, simpleModel::N, simpleModel::positions, access_mode::read, access_mode::readwrite, transferStartStopIndexes, simpleModel::types, and simpleModel::useGPU.
|
virtual |
this implementation knows that extra neighbors are after N in the data arrays
Reimplemented from cubicLattice.
References Index3D::inverseIndex(), cubicLattice::latticeIndex, positionToIndex(), and cubicLattice::sliceSites.
|
virtualinherited |
(possibly) need to rewrite how the Q tensors update with respect to a displacement call
Reimplemented from cubicLattice.
References ArrayHandle< T >::data, access_location::device, gpu_update_qTensor(), access_location::host, cubicLattice::moveParticlesTuner, simpleModel::N, simpleModel::positions, access_mode::read, access_mode::readwrite, and simpleModel::useGPU.
|
virtualinherited |
move a different GPU array according to the same rules
References ArrayHandle< T >::data, access_location::device, gpu_update_spins(), access_location::host, simpleModel::N, norm(), cubicLattice::normalizeSpins, access_mode::read, access_mode::readwrite, scalar, and simpleModel::useGPU.
|
inherited |
initialize each d.o.f., also passing in the value of the nematicity
References ArrayHandle< T >::data, access_location::device, noiseSource::getRealUniform(), gpu_set_random_nematic_qTensors(), access_location::host, noiseSource::initialize(), noiseSource::initializeGPURNGs(), n, simpleModel::N, PI, simpleModel::positions, qTensorFromDirector(), access_mode::read, access_mode::readwrite, noiseSource::RNGs, scalar, scalar3, simpleModel::types, and simpleModel::useGPU.
|
inherited |
get field-averaged eigenvalues
References ArrayHandle< T >::data, eigenvaluesOfQ(), access_location::host, n, simpleModel::N, simpleModel::positions, access_mode::read, scalar, and simpleModel::types.
|
inherited |
import a boundary object from a (carefully prepared) text file
Reads a carefully prepared text file to create a new boundary object... The first line must be a single integer specifying the number of objects to be read in.
Each subsequent block must be formatted as follows (with no additional lines between the blocks): The first line MUST be formatted as a b c d where a=0 means homeotropic, a=1 means degeneratePlanar b is a scalar setting the anchoring strength c is the preferred value of S0 d is an integer specifying the number of sites.
Every subsequent line MUST be x y z Qxx Qxy Qxz Qyy Qyz, where x y z are the integer lattice sites, and the Q-tensor components correspond to the desired anchoring conditions. For homeotropic boundaries, Q^B = 3 S_0/2*(\nu^s \nu^s - \delta_{ab}/3), where \nu^s is the locally preferred director. For degenerate planar anchoring the boundary site should be, Q^B[0] = \hat{nu}_x Q^B[1] = \hat{nu}_y Q^B[2] = \hat{nu}_z where \nu^s = {Cos[[Phi]] Sin[[theta]], Sin[[Phi]] Sin[[theta]], Cos[[theta]]} is the direction to which the LC should try to be orthogonal
References cubicLattice::createBoundaryObject(), ArrayHandle< T >::data, degeneratePlanar, homeotropic, cubicLattice::latticeIndex, simpleModel::positions, scalar, Index3D::sizes, and wrap().
|
inherited |
create a flat wall at the specified location, on either an x,y, or z plane, with anchoring given by the boundary object
References boundaryObject::boundary, cubicLattice::createBoundaryObject(), ArrayHandle< T >::data, degeneratePlanar, homeotropic, cubicLattice::latticeIndex, boundaryObject::P1, boundaryObject::P2, simpleModel::positions, scalar, Index3D::sizes, and UNWRITTENCODE.
|
inherited |
create a flat wall (with z-normal) at the specified location, with anchoring given by the boundary object
References boundaryObject::boundary, cubicLattice::createBoundaryObject(), ArrayHandle< T >::data, degeneratePlanar, homeotropic, cubicLattice::latticeIndex, boundaryObject::P1, boundaryObject::P2, simpleModel::positions, Index3D::sizes, and UNWRITTENCODE.
|
inherited |
create a spherical colloid with anchoring given by the boundary object (with surface normal the director direction)
References boundaryObject::boundary, cubicLattice::createBoundaryObject(), ArrayHandle< T >::data, degeneratePlanar, homeotropic, cubicLattice::latticeIndex, norm(), boundaryObject::P1, boundaryObject::P2, simpleModel::positions, qTensorFromDirector(), scalar, scalar3, Index3D::sizes, UNWRITTENCODE, and wrap().
|
inherited |
compute different measures of whether a site is a defect
defectType==0 stores the largest eigenvalue of Q at each site defectType==1 stores the determinant of Q each site defectType==2 stores the (Tr(Q^2))^3-54 det(Q)^2 at each site
References ArrayHandle< T >::data, simpleModel::defectMeasures, determinantOfQ(), access_location::device, eigenvaluesOfQ(), gpu_get_qtensor_DefectMeasures(), access_location::host, simpleModel::N, access_mode::overwrite, simpleModel::positions, access_mode::read, scalar, TrQ2(), simpleModel::types, and simpleModel::useGPU.
|
inherited |
initialize each d.o.f. to be a unit spin on the sphere
References ArrayHandle< T >::data, access_location::device, dot(), noiseSource::getRealNormal(), gpu_set_random_spins(), noiseSource::initialize(), noiseSource::initializeGPURNGs(), simpleModel::N, access_mode::overwrite, simpleModel::positions, access_mode::readwrite, noiseSource::RNGs, scalar, and simpleModel::useGPU.
|
inlineinherited |
decide to slice sites
References cubicLattice::sliceSites.
|
inherited |
given a triple, determine what
References cubicLattice::latticeIndex, and cubicLattice::sliceSites.
|
virtualinherited |
store the neighbors of each lattice site. The i'th neighbor of site j is given by neighboringSites[neighborIndex(i,j)]
stencilType here has the same meaning as in "getNeighbors" function
References ArrayHandle< T >::data, cubicLattice::getNeighbors(), simpleModel::N, cubicLattice::neighborIndex, cubicLattice::neighboringSites, and GPUArray< T >::resize().
|
inlinevirtualinherited |
return the mean spin
References ArrayHandle< T >::data, simpleModel::N, simpleModel::positions, and simpleModel::types.
|
virtualinherited |
Displace a boundary object (and surface sites) by one of the six primitive cubic lattice directions.
This function moves an object, shifting the type of lattice sites over on the lattice. Surface sites are also moved. Sites that change from being part of the boundary to a surface site adopt the average state of the neighboring sites that weren't formerly part of the boundary object. This function makes use of the fact that primitive translations will not change the total number of boundary or surface sites associated with each object
objectIndex | The position in the vector of boundarySites and surfaceSites that the desired object to move is in |
motionDirection | Which way to move the object. Follows same convention as lattice neighbors for stencilType=0 |
magnitude | number of lattice sites to move in the given direction |
Reimplemented from simpleModel.
References cubicLattice::boundaryMoveAssist1, cubicLattice::boundaryMoveAssist2, cubicLattice::boundarySites, ArrayHandle< T >::data, access_location::device, gpu_copy_boundary_object(), gpu_move_boundary_object(), access_location::host, cubicLattice::neighborIndex, cubicLattice::neighboringSites, access_mode::overwrite, simpleModel::positions, access_mode::read, access_mode::readwrite, cubicLattice::surfaceSites, simpleModel::types, and simpleModel::useGPU.
|
inherited |
assign a collection of lattice sites to a new boundaryObject
References cubicLattice::boundaries, cubicLattice::boundaryForce, cubicLattice::boundaryMoveAssist1, cubicLattice::boundaryMoveAssist2, cubicLattice::boundarySites, cubicLattice::boundaryState, ArrayHandle< T >::data, cubicLattice::getNeighbors(), GPUArray< T >::getNumElements(), simpleModel::neverGPU, GPUArray< T >::noGPU, GPUArray< T >::resize(), scalar3, cubicLattice::surfaceSites, and simpleModel::types.
Referenced by qTensorLatticeModel::createBoundaryFromFile(), qTensorLatticeModel::createSimpleFlatWallNormal(), qTensorLatticeModel::createSimpleFlatWallZNormal(), and qTensorLatticeModel::createSimpleSpherialColloid().
|
protectedinherited |
a utility function for initialization
References cubicLattice::boundaries, cubicLattice::boundaryMoveAssist1, cubicLattice::boundaryMoveAssist2, simpleModel::initializeSimpleModel(), cubicLattice::moveParticlesTuner, simpleModel::N, cubicLattice::neighboringSites, simpleModel::neverGPU, and GPUArray< T >::noGPU.
Referenced by cubicLattice::cubicLattice().
|
inherited |
initialize the size of the basic data structure arrays
actually set the array sizes. positions, velocities, forces are zero masses are set to unity
References simpleModel::defectMeasures, simpleModel::forces, make_dVec(), n, simpleModel::N, simpleModel::neverGPU, GPUArray< T >::noGPU, simpleModel::positions, GPUArray< T >::resize(), simpleModel::selfForceCompute, simpleModel::types, and simpleModel::velocities.
Referenced by cubicLattice::initializeNSites(), simpleModel::setParticlePositions(), and simpleModel::simpleModel().
|
inlinevirtualinherited |
Enforce GPU operation.
References simpleModel::useGPU.
|
inlinevirtualinherited |
get the number of degrees of freedom, defaulting to the number of cells
References simpleModel::N.
|
virtualinherited |
do everything unusual to compute additional forces... by default, sets forces to zero
References ArrayHandle< T >::data, simpleModel::forces, gpu_set_array(), simpleModel::N, and simpleModel::useGPU.
|
inherited |
|
inherited |
|
inherited |
|
inherited |
Set velocities via a temperature. The return value is the total kinetic energy.
References ArrayHandle< T >::data, dot(), noiseSource::getRealNormal(), simpleModel::N, scalar, and simpleModel::velocities.
|
virtualinherited |
compute the current KE
References ArrayHandle< T >::data, dot(), simpleModel::N, scalar, and simpleModel::velocities.
|
virtualinherited |
compute the dimension-dependent instantaneous temperature
References ArrayHandle< T >::data, dot(), simpleModel::N, scalar, and simpleModel::velocities.
|
inlinevirtualinherited |
do everything necessary to perform a Hilbert sort
|
inlinevirtualinherited |
return a reference to the GPUArray of positions
References simpleModel::positions.
|
inlinevirtualinherited |
return a reference to the GPUArray of the current forces
References simpleModel::forces.
|
inlinevirtualinherited |
return a reference to the GPUArray of the integer types
References simpleModel::types.
|
inlinevirtualinherited |
return a reference to the GPUArray of the current velocities
References simpleModel::velocities.
return a reference to the GPUArray of the current defects
|
inlinevirtualinherited |
allow for setting multiple threads
References n, and simpleModel::nThreads.
|
inlinevirtualinherited |
some situations do not require us to maintain various data structures
int multirankQTensorLatticeModel::totalSites |
N is the number of sites controlled, totalSites includes halo sites.
Referenced by indexToPosition(), and multirankQTensorLatticeModel().
bool multirankQTensorLatticeModel::xHalo |
Referenced by multirankQTensorLatticeModel(), and positionToIndex().
bool multirankQTensorLatticeModel::yHalo |
Referenced by multirankQTensorLatticeModel(), and positionToIndex().
bool multirankQTensorLatticeModel::zHalo |
Referenced by multirankQTensorLatticeModel(), and positionToIndex().
int multirankQTensorLatticeModel::myRank |
int3 multirankQTensorLatticeModel::latticeSites |
vector<int2> multirankQTensorLatticeModel::transferStartStopIndexes |
list of start/stop elements in the transfer arrays for the halo sites
Referenced by determineBufferLayout(), getBufferInt3FromIndex(), getClassSize(), indexToPosition(), multirankQTensorLatticeModel(), positionToIndex(), prepareSendingBuffer(), and readReceivingBuffer().
GPUArray<int> multirankQTensorLatticeModel::intTransferBufferSend |
Referenced by determineBufferLayout(), getClassSize(), multirankQTensorLatticeModel(), and prepareSendingBuffer().
Referenced by determineBufferLayout(), getClassSize(), multirankQTensorLatticeModel(), and prepareSendingBuffer().
GPUArray<int> multirankQTensorLatticeModel::intTransferBufferReceive |
Referenced by determineBufferLayout(), getClassSize(), multirankQTensorLatticeModel(), and readReceivingBuffer().
Referenced by determineBufferLayout(), getClassSize(), multirankQTensorLatticeModel(), and readReceivingBuffer().
|
inherited |
indexer for lattice sites
Referenced by qTensorLatticeModel::createBoundaryFromFile(), qTensorLatticeModel::createSimpleFlatWallNormal(), qTensorLatticeModel::createSimpleFlatWallZNormal(), qTensorLatticeModel::createSimpleSpherialColloid(), cubicLattice::cubicLattice(), cubicLattice::getNeighbors(), getNeighbors(), indexToPosition(), cubicLattice::latticeSiteToLinearIndex(), positionToIndex(), and prepareSendingBuffer().
|
inherited |
indexer for neighbors
Referenced by cubicLattice::displaceBoundaryObject(), and cubicLattice::fillNeighborLists().
|
inherited |
List of neighboring lattice sites.
Referenced by cubicLattice::displaceBoundaryObject(), cubicLattice::fillNeighborLists(), cubicLattice::getClassSize(), and cubicLattice::initializeNSites().
|
inherited |
list of the non-bulk objects in the simulations
Referenced by cubicLattice::createBoundaryObject(), and cubicLattice::initializeNSites().
|
inherited |
A vector that keeps track of the sites associated with each boundary object.
Referenced by cubicLattice::createBoundaryObject(), cubicLattice::displaceBoundaryObject(), and cubicLattice::getClassSize().
|
inherited |
A vector that keeps track of the surface sites associated with each boundary object.
Referenced by cubicLattice::createBoundaryObject(), cubicLattice::displaceBoundaryObject(), and cubicLattice::getClassSize().
|
inherited |
A vector of flags that specifies the state of each boundary object...most schemes will be 0 = fixed boundary, 1 = movable boudnary.
Referenced by cubicLattice::createBoundaryObject(), and cubicLattice::getClassSize().
|
inherited |
The force (from integrating the stress tensor) on each object.
Referenced by cubicLattice::createBoundaryObject().
|
inherited |
An assist vector that can keep track of changes to boundary sites during a move. First element is the index a Qtensor (second ) will move to.
Referenced by cubicLattice::createBoundaryObject(), cubicLattice::displaceBoundaryObject(), cubicLattice::getClassSize(), and cubicLattice::initializeNSites().
|
inherited |
An assist vector that can keep track of changes to surface sites during a move. First element is the index a Qtensor (second ) will move to.
Referenced by cubicLattice::createBoundaryObject(), cubicLattice::displaceBoundaryObject(), cubicLattice::getClassSize(), and cubicLattice::initializeNSites().
|
protectedinherited |
should we use a memory-efficient slicing scheme?
Referenced by cubicLattice::cubicLattice(), cubicLattice::getNeighbors(), getNeighbors(), cubicLattice::latticeSiteToLinearIndex(), and cubicLattice::sliceIndices().
|
protectedinherited |
lattice sites per edge
Referenced by cubicLattice::cubicLattice().
|
protectedinherited |
normalize vector length when moving spins?
Referenced by cubicLattice::cubicLattice(), cubicLattice::moveParticles(), and qTensorLatticeModel::qTensorLatticeModel().
|
protectedinherited |
performance for the moveParticles kernel
Referenced by cubicLattice::initializeNSites(), and qTensorLatticeModel::moveParticles().
|
inherited |
Does this model have a special force it needs to compute itself?
Referenced by cubicLattice::cubicLattice(), and simpleModel::initializeSimpleModel().
|
inherited |
The space in which the particles live.
Referenced by cubicLattice::cubicLattice(), simpleModel::moveParticles(), simpleModel::setParticlePositions(), simpleModel::setParticlePositionsRandomly(), and simpleModel::simpleModel().
|
inherited |
Are the forces current? set to false after every call to moveParticles. set to true after the SIMULATION calls computeForces.
Referenced by simpleModel::moveParticles().
scalars that can represent different defect measures
Referenced by qTensorLatticeModel::computeDefectMeasures(), simpleModel::getClassSize(), simpleModel::initializeSimpleModel(), and qTensorLatticeModel::qTensorLatticeModel().
|
inherited |
Whereas useGPU can be turned on and off, neverGPU is fixed.
Referenced by cubicLattice::createBoundaryObject(), cubicLattice::cubicLattice(), cubicLattice::initializeNSites(), simpleModel::initializeSimpleModel(), multirankQTensorLatticeModel(), and qTensorLatticeModel::qTensorLatticeModel().
|
protectedinherited |
The number of particles.
Referenced by cubicLattice::averagePosition(), qTensorLatticeModel::computeDefectMeasures(), simpleModel::computeForces(), simpleModel::computeInstantaneousTemperature(), simpleModel::computeKineticEnergy(), cubicLattice::cubicLattice(), cubicLattice::fillNeighborLists(), qTensorLatticeModel::getAverageEigenvalues(), simpleModel::getNumberOfParticles(), indexToPosition(), cubicLattice::initializeNSites(), simpleModel::initializeSimpleModel(), cubicLattice::moveParticles(), qTensorLatticeModel::moveParticles(), simpleModel::moveParticles(), multirankQTensorLatticeModel(), positionToIndex(), qTensorLatticeModel::qTensorLatticeModel(), readReceivingBuffer(), qTensorLatticeModel::setNematicQTensorRandomly(), simpleModel::setParticlePositions(), simpleModel::setParticlePositionsRandomly(), cubicLattice::setSpinsRandomly(), simpleModel::setVelocitiesMaxwellBoltzmann(), and simpleModel::simpleModel().
|
protectedinherited |
number of threads to use
Referenced by simpleModel::setNThreads().
|
protectedinherited |
particle positions
Referenced by cubicLattice::averagePosition(), qTensorLatticeModel::computeDefectMeasures(), qTensorLatticeModel::createBoundaryFromFile(), qTensorLatticeModel::createSimpleFlatWallNormal(), qTensorLatticeModel::createSimpleFlatWallZNormal(), qTensorLatticeModel::createSimpleSpherialColloid(), cubicLattice::displaceBoundaryObject(), qTensorLatticeModel::getAverageEigenvalues(), simpleModel::getClassSize(), simpleModel::initializeSimpleModel(), cubicLattice::moveParticles(), qTensorLatticeModel::moveParticles(), simpleModel::moveParticles(), multirankQTensorLatticeModel(), prepareSendingBuffer(), readReceivingBuffer(), simpleModel::returnPositions(), qTensorLatticeModel::setNematicQTensorRandomly(), simpleModel::setParticlePositions(), simpleModel::setParticlePositionsRandomly(), and cubicLattice::setSpinsRandomly().
|
protectedinherited |
particle velocities
Referenced by simpleModel::computeInstantaneousTemperature(), simpleModel::computeKineticEnergy(), simpleModel::getClassSize(), simpleModel::initializeSimpleModel(), multirankQTensorLatticeModel(), simpleModel::returnVelocities(), and simpleModel::setVelocitiesMaxwellBoltzmann().
|
protectedinherited |
Forces on particles.
Referenced by simpleModel::computeForces(), simpleModel::getClassSize(), simpleModel::initializeSimpleModel(), multirankQTensorLatticeModel(), and simpleModel::returnForces().
|
protectedinherited |
particle types
Referenced by cubicLattice::averagePosition(), qTensorLatticeModel::computeDefectMeasures(), cubicLattice::createBoundaryObject(), cubicLattice::displaceBoundaryObject(), qTensorLatticeModel::getAverageEigenvalues(), simpleModel::getClassSize(), simpleModel::initializeSimpleModel(), multirankQTensorLatticeModel(), prepareSendingBuffer(), readReceivingBuffer(), simpleModel::returnTypes(), and qTensorLatticeModel::setNematicQTensorRandomly().
|
protectedinherited |
particle radii
particle masses Whether the GPU should be used to compute anything
Referenced by qTensorLatticeModel::computeDefectMeasures(), simpleModel::computeForces(), cubicLattice::cubicLattice(), cubicLattice::displaceBoundaryObject(), cubicLattice::moveParticles(), qTensorLatticeModel::moveParticles(), simpleModel::moveParticles(), prepareSendingBuffer(), readReceivingBuffer(), simpleModel::setGPU(), qTensorLatticeModel::setNematicQTensorRandomly(), and cubicLattice::setSpinsRandomly().