|
| VerletClusterListsRebuilder (ClusterTowerBlock2D< Particle_T > &towerBlock, std::vector< Particle_T > &particlesToAdd, NeighborListsBuffer_T &neighborListsBuffer, size_t clusterSize, double interactionLengthSqr, bool newton3) |
| Constructs the builder from the cluster list.
|
|
size_t | rebuildTowersAndClusters () |
| Rebuilds the towers, sorts the particles into them and creates the clusters with a reference to an uninitialized neighbor list.
|
|
void | rebuildNeighborListsAndFillClusters () |
| Rebuilds the neighbor lists and fills Clusters with dummies as described in ClusterTower::setDummyValues.
|
|
void | clearNeighborListsAndMoveDummiesIntoClusters () |
| Clears previously saved neighbors from clusters and sets the 3D positions of the dummy particles to inside of the cluster to avoid all dummies being in one place and potentially trigger cluster-cluster distance evaluations.
|
|
std::vector< std::vector< Particle_T > > | collectAllParticlesFromTowers () |
| Takes all particles from all towers and returns them.
|
|
std::vector< std::vector< Particle_T > > | collectOutOfBoundsParticlesFromTowers () |
| Collect all particles that are stored in the wrong towers.
|
|
void | sortParticlesIntoTowers (const std::vector< std::vector< Particle_T > > &particles2D) |
| Sorts all passed particles in the appropriate clusters.
|
|
void | updateNeighborLists () |
| Updates the neighbor lists for all clusters.
|
|
template<class FunType > |
void | iterateNeighborTowers (const int towerIndexX, const int towerIndexY, const int minNeighborIndexX, const int maxNeighborIndexX, const int minNeighborIndexY, const int maxNeighborIndexY, FunType function) |
| For all clusters in a tower, given by it's x/y indices, find all neighbors in towers that are given by an area (min/max x/y neighbor indices).
|
|
int | get1DInteractionCellIndexForTower (const int towerIndexX, const int towerIndexY) |
| Returns the index of a imagined interaction cell with side length equal the interaction length that contains the given tower.
|
|
bool | isForwardNeighbor (const int towerIndexX, const int towerIndexY, const int neighborIndexX, const int neighborIndexY) |
| Decides if a given neighbor tower is a forward neighbor to a given tower.
|
|
void | calculateNeighborsBetweenTowers (internal::ClusterTower< Particle_T > &towerA, internal::ClusterTower< Particle_T > &towerB) |
| Calculates for all clusters in the given tower:
|
|
bool | getNewton3 () const |
| Getter.
|
|
template<class Particle_T>
class autopas::internal::VerletClusterListsRebuilder< Particle_T >
Helper class for rebuilding the VerletClusterLists container.
- Note
- Towers are always built on the xy plane towering into the z dimension.
- Template Parameters
-
Particle_T | The type of the particle the container contains. |
template<class Particle_T >
template<class FunType >
void autopas::internal::VerletClusterListsRebuilder< Particle_T >::iterateNeighborTowers |
( |
const int |
towerIndexX, |
|
|
const int |
towerIndexY, |
|
|
const int |
minNeighborIndexX, |
|
|
const int |
maxNeighborIndexX, |
|
|
const int |
minNeighborIndexY, |
|
|
const int |
maxNeighborIndexY, |
|
|
FunType |
function |
|
) |
| |
|
inline |
For all clusters in a tower, given by it's x/y indices, find all neighbors in towers that are given by an area (min/max x/y neighbor indices).
With the useNewton3 parameter, the lists can be either built containing all, or only the forward neighbors. If an cluster A interacts with cluster B, then this interaction will either show up only once in the interaction lists of the custers (for newton3 == true) or show up in the interaction lists of both (for newton3 == false)
- Note
- _newton3 Specifies, whether neighbor lists should contain only forward neighbors.
- Template Parameters
-
- Parameters
-
towerIndexX | The x index of the given tower. |
towerIndexY | The y index of the given tower. |
minNeighborIndexX | The minimum neighbor tower index in x direction. |
maxNeighborIndexX | The maximum neighbor tower index in x direction. |
minNeighborIndexY | The minimum neighbor tower index in y direction. |
maxNeighborIndexY | The maximum neighbor tower index in y direction. |
function | Function to apply on every neighbor tower. Typically this is calculateNeighborsBetweenTowers(). |