Open Qmin  0.8.0
GPU-accelerated Q-tensor-based liquid crystal simulations
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
multirankQTensorLatticeModel Class Reference

#include <multirankQTensorLatticeModel.h>

Inheritance diagram for multirankQTensorLatticeModel:
Inheritance graph
[legend]
Collaboration diagram for multirankQTensorLatticeModel:
Collaboration graph
[legend]

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< scalardoubleTransferBufferSend
 
GPUArray< int > intTransferBufferReceive
 
GPUArray< scalardoubleTransferBufferReceive
 
Index3D latticeIndex
 indexer for lattice sites More...
 
Index2D neighborIndex
 indexer for neighbors More...
 
GPUArray< int > neighboringSites
 List of neighboring lattice sites. More...
 
GPUArray< boundaryObjectboundaries
 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< scalar3boundaryForce
 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< scalardefectMeasures
 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< kernelTunermoveParticlesTuner
 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...
 

Detailed Description

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

Constructor & Destructor Documentation

◆ multirankQTensorLatticeModel()

multirankQTensorLatticeModel::multirankQTensorLatticeModel ( int  lx,
int  ly,
int  lz,
bool  _xHalo,
bool  _yHalo,
bool  _zHalo,
bool  _useGPU = false,
bool  _neverGPU = false 
)

Member Function Documentation

◆ getClassSize()

virtual scalar multirankQTensorLatticeModel::getClassSize ( )
inlinevirtual

◆ determineBufferLayout()

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().

◆ indexToPosition()

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().

◆ positionToIndex() [1/2]

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().

◆ positionToIndex() [2/2]

int multirankQTensorLatticeModel::positionToIndex ( int  px,
int  py,
int  pz 
)
inline

References positionToIndex().

◆ getBufferInt3FromIndex()

void multirankQTensorLatticeModel::getBufferInt3FromIndex ( int  idx,
int3 &  pos,
int  directionType,
bool  sending 
)

Meant to be used with idx in (transferStartStopIndexes[directionType].x to ".y)

Parameters
idxthe linear index in between 0 and the maximum number of extended sites
posgets filled with the right lattice position, with correct send/receive dependence
directionTypean int specifying the type of face/edge/corner. See comments in determingBufferLayout() for the mapping between 0 and 25 to the possibilities
sendingflag 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().

◆ prepareSendingBuffer()

void multirankQTensorLatticeModel::prepareSendingBuffer ( int  directionType = -1)

◆ readReceivingBuffer()

void multirankQTensorLatticeModel::readReceivingBuffer ( int  directionType = -1)

◆ getNeighbors()

int multirankQTensorLatticeModel::getNeighbors ( int  target,
vector< int > &  neighbors,
int &  neighs,
int  stencilType = 0 
)
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.

◆ moveParticles() [1/2]

void qTensorLatticeModel::moveParticles ( GPUArray< dVec > &  displacements,
scalar  scale = 1. 
)
virtualinherited

◆ moveParticles() [2/2]

void cubicLattice::moveParticles ( GPUArray< dVec > &  dofs,
GPUArray< dVec > &  displacements,
scalar  scale = 1. 
)
virtualinherited

◆ setNematicQTensorRandomly()

void qTensorLatticeModel::setNematicQTensorRandomly ( noiseSource noise,
scalar  s0,
bool  globallyAligned = false 
)
inherited

◆ getAverageEigenvalues()

void qTensorLatticeModel::getAverageEigenvalues ( )
inherited

◆ createBoundaryFromFile()

void qTensorLatticeModel::createBoundaryFromFile ( string  fname,
bool  verbose = false 
)
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().

◆ createSimpleFlatWallNormal()

void qTensorLatticeModel::createSimpleFlatWallNormal ( int  plane,
int  xyz,
boundaryObject bObj 
)
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.

◆ createSimpleFlatWallZNormal()

void qTensorLatticeModel::createSimpleFlatWallZNormal ( int  zPlane,
boundaryObject bObj 
)
inherited

◆ createSimpleSpherialColloid()

void qTensorLatticeModel::createSimpleSpherialColloid ( scalar3  center,
scalar  radius,
boundaryObject bObj 
)
inherited

◆ computeDefectMeasures()

void qTensorLatticeModel::computeDefectMeasures ( int  defectType)
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.

◆ setSpinsRandomly()

void cubicLattice::setSpinsRandomly ( noiseSource noise)
inherited

◆ sliceIndices()

void cubicLattice::sliceIndices ( bool  _s = true)
inlineinherited

decide to slice sites

References cubicLattice::sliceSites.

◆ latticeSiteToLinearIndex()

int cubicLattice::latticeSiteToLinearIndex ( const int3 &  target)
inherited

given a triple, determine what

References cubicLattice::latticeIndex, and cubicLattice::sliceSites.

◆ fillNeighborLists()

void cubicLattice::fillNeighborLists ( int  stencilType = 0)
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().

◆ averagePosition()

virtual dVec cubicLattice::averagePosition ( )
inlinevirtualinherited

◆ displaceBoundaryObject()

void cubicLattice::displaceBoundaryObject ( int  objectIndex,
int  motionDirection,
int  magnitude 
)
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

Parameters
objectIndexThe position in the vector of boundarySites and surfaceSites that the desired object to move is in
motionDirectionWhich way to move the object. Follows same convention as lattice neighbors for stencilType=0
magnitudenumber 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.

◆ createBoundaryObject()

void cubicLattice::createBoundaryObject ( vector< int > &  latticeSites,
boundaryType  _type,
scalar  Param1,
scalar  Param2 
)
inherited

◆ initializeNSites()

void cubicLattice::initializeNSites ( )
protectedinherited

◆ initializeSimpleModel()

void simpleModel::initializeSimpleModel ( int  n)
inherited

◆ setGPU()

virtual void simpleModel::setGPU ( bool  _useGPU = true)
inlinevirtualinherited

Enforce GPU operation.

References simpleModel::useGPU.

◆ getNumberOfParticles()

virtual int simpleModel::getNumberOfParticles ( )
inlinevirtualinherited

get the number of degrees of freedom, defaulting to the number of cells

References simpleModel::N.

◆ computeForces()

void simpleModel::computeForces ( bool  zeroOutForces = false)
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.

◆ setParticlePositions() [1/2]

void simpleModel::setParticlePositions ( GPUArray< dVec > &  newPositions)
inherited

◆ setParticlePositions() [2/2]

void simpleModel::setParticlePositions ( vector< dVec > &  newPositions)
inherited

◆ setParticlePositionsRandomly()

void simpleModel::setParticlePositionsRandomly ( noiseSource noise)
inherited

◆ setVelocitiesMaxwellBoltzmann()

scalar simpleModel::setVelocitiesMaxwellBoltzmann ( scalar  T,
noiseSource noise 
)
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.

◆ computeKineticEnergy()

scalar simpleModel::computeKineticEnergy ( bool  verbose = false)
virtualinherited

compute the current KE

References ArrayHandle< T >::data, dot(), simpleModel::N, scalar, and simpleModel::velocities.

◆ computeInstantaneousTemperature()

scalar simpleModel::computeInstantaneousTemperature ( bool  fixedMomentum = true)
virtualinherited

compute the dimension-dependent instantaneous temperature

References ArrayHandle< T >::data, dot(), simpleModel::N, scalar, and simpleModel::velocities.

◆ spatialSorting()

virtual void simpleModel::spatialSorting ( )
inlinevirtualinherited

do everything necessary to perform a Hilbert sort

◆ returnPositions()

virtual GPUArray<dVec>& simpleModel::returnPositions ( )
inlinevirtualinherited

return a reference to the GPUArray of positions

References simpleModel::positions.

◆ returnForces()

virtual GPUArray<dVec>& simpleModel::returnForces ( )
inlinevirtualinherited

return a reference to the GPUArray of the current forces

References simpleModel::forces.

◆ returnTypes()

virtual GPUArray<int>& simpleModel::returnTypes ( )
inlinevirtualinherited

return a reference to the GPUArray of the integer types

References simpleModel::types.

◆ returnVelocities()

virtual GPUArray<dVec>& simpleModel::returnVelocities ( )
inlinevirtualinherited

return a reference to the GPUArray of the current velocities

References simpleModel::velocities.

◆ returnDefectMeasures()

virtual GPUArray<scalar>& simpleModel::returnDefectMeasures ( )
inlinevirtualinherited

return a reference to the GPUArray of the current defects

◆ setNThreads()

virtual void simpleModel::setNThreads ( int  n)
inlinevirtualinherited

allow for setting multiple threads

References n, and simpleModel::nThreads.

◆ freeGPUArrays()

virtual void simpleModel::freeGPUArrays ( bool  freeVelocities,
bool  freeRadii,
bool  freeMasses 
)
inlinevirtualinherited

some situations do not require us to maintain various data structures

Member Data Documentation

◆ totalSites

int multirankQTensorLatticeModel::totalSites

N is the number of sites controlled, totalSites includes halo sites.

Referenced by indexToPosition(), and multirankQTensorLatticeModel().

◆ xHalo

bool multirankQTensorLatticeModel::xHalo

◆ yHalo

bool multirankQTensorLatticeModel::yHalo

◆ zHalo

bool multirankQTensorLatticeModel::zHalo

◆ myRank

int multirankQTensorLatticeModel::myRank

◆ latticeSites

int3 multirankQTensorLatticeModel::latticeSites

◆ transferStartStopIndexes

vector<int2> multirankQTensorLatticeModel::transferStartStopIndexes

◆ intTransferBufferSend

GPUArray<int> multirankQTensorLatticeModel::intTransferBufferSend

◆ doubleTransferBufferSend

GPUArray<scalar> multirankQTensorLatticeModel::doubleTransferBufferSend

◆ intTransferBufferReceive

GPUArray<int> multirankQTensorLatticeModel::intTransferBufferReceive

◆ doubleTransferBufferReceive

GPUArray<scalar> multirankQTensorLatticeModel::doubleTransferBufferReceive

◆ latticeIndex

Index3D cubicLattice::latticeIndex
inherited

◆ neighborIndex

Index2D cubicLattice::neighborIndex
inherited

◆ neighboringSites

GPUArray<int> cubicLattice::neighboringSites
inherited

◆ boundaries

GPUArray<boundaryObject> cubicLattice::boundaries
inherited

list of the non-bulk objects in the simulations

Referenced by cubicLattice::createBoundaryObject(), and cubicLattice::initializeNSites().

◆ boundarySites

vector<GPUArray<int> > cubicLattice::boundarySites
inherited

A vector that keeps track of the sites associated with each boundary object.

Referenced by cubicLattice::createBoundaryObject(), cubicLattice::displaceBoundaryObject(), and cubicLattice::getClassSize().

◆ surfaceSites

vector<GPUArray<int> > cubicLattice::surfaceSites
inherited

A vector that keeps track of the surface sites associated with each boundary object.

Referenced by cubicLattice::createBoundaryObject(), cubicLattice::displaceBoundaryObject(), and cubicLattice::getClassSize().

◆ boundaryState

vector<int> cubicLattice::boundaryState
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().

◆ boundaryForce

vector<scalar3> cubicLattice::boundaryForce
inherited

The force (from integrating the stress tensor) on each object.

Referenced by cubicLattice::createBoundaryObject().

◆ boundaryMoveAssist1

GPUArray<pair<int,dVec> > cubicLattice::boundaryMoveAssist1
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().

◆ boundaryMoveAssist2

GPUArray<pair<int,dVec> > cubicLattice::boundaryMoveAssist2
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().

◆ sliceSites

bool cubicLattice::sliceSites
protectedinherited

◆ L

int cubicLattice::L
protectedinherited

lattice sites per edge

Referenced by cubicLattice::cubicLattice().

◆ normalizeSpins

bool cubicLattice::normalizeSpins
protectedinherited

normalize vector length when moving spins?

Referenced by cubicLattice::cubicLattice(), cubicLattice::moveParticles(), and qTensorLatticeModel::qTensorLatticeModel().

◆ moveParticlesTuner

shared_ptr<kernelTuner> cubicLattice::moveParticlesTuner
protectedinherited

performance for the moveParticles kernel

Referenced by cubicLattice::initializeNSites(), and qTensorLatticeModel::moveParticles().

◆ selfForceCompute

bool simpleModel::selfForceCompute
inherited

Does this model have a special force it needs to compute itself?

Referenced by cubicLattice::cubicLattice(), and simpleModel::initializeSimpleModel().

◆ Box

BoxPtr simpleModel::Box
inherited

◆ forcesComputed

bool simpleModel::forcesComputed
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().

◆ defectMeasures

GPUArray<scalar> simpleModel::defectMeasures
inherited

◆ neverGPU

bool simpleModel::neverGPU
inherited

◆ N

int simpleModel::N
protectedinherited

◆ nThreads

int simpleModel::nThreads =1
protectedinherited

number of threads to use

Referenced by simpleModel::setNThreads().

◆ positions

GPUArray<dVec> simpleModel::positions
protectedinherited

◆ velocities

GPUArray<dVec> simpleModel::velocities
protectedinherited

◆ forces

GPUArray<dVec> simpleModel::forces
protectedinherited

◆ types

GPUArray<int> simpleModel::types
protectedinherited

◆ useGPU

bool simpleModel::useGPU
protectedinherited

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