Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=ip), | public | :: | n |
Number of particles in the system |
|||
real(kind=rp), | public | :: | cutoff |
Cutoff distance for the neighbor list |
|||
integer(kind=ip), | public | :: | cellf | = | 1 |
Number of subdivision of 'standard' cell. If you create smaller cells (cutoff/cellf) you can sensibly increase the performanc of the algorithm. See 10.1016/S0010-4655(98)00203-3 |
|
real(kind=rp), | public | :: | celld |
Dimension of each cell |
|||
integer(kind=ip), | public | :: | ncell(3) |
Number of cell along each dimension |
|||
integer(kind=ip), | public | :: | ncells |
Total number of cells |
|||
real(kind=rp), | public | :: | offset(3) |
Coordinates offset along each dimension (that is the minimum value of each coordinate. |
|||
integer(kind=ip), | public | :: | nneigh |
Number of neighbor cells |
|||
integer(kind=ip), | public, | allocatable | :: | neigh_offset(:) |
Offsets of neighbor cells |
||
integer(kind=ip), | public, | allocatable | :: | p2c(:) |
Cell of each particle |
||
type(yale_sparse), | public | :: | c2p |
Particles contained in each cell, sparse matrix format |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_neigh_list), | intent(inout) | :: | nl |
Neigh list object to initialize |
||
real(kind=rp), | intent(in) | :: | c(:,:) |
Coordinates in input |
||
real(kind=rp), | intent(in) | :: | cutoff |
Cut off distance |
||
integer(kind=ip), | intent(in) | :: | f |
Subdivision required for each cell |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_neigh_list), | intent(inout) | :: | nl |
TODO this should be improved
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_neigh_list), | intent(inout) | :: | nl |
Neigh list object to initialize |
||
real(kind=rp), | intent(in) | :: | c(3,nl%n) |
Coordinates in input |
Once that the neighbor list have been initialized and updated, this function provide a logical array for atom i with all interactions that should be computed and corresponding distances.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_neigh_list), | intent(in) | :: | nl |
Neigh list object |
||
integer(kind=ip), | intent(in) | :: | i |
Index of atom for which the neigbor list is required |
||
real(kind=rp), | intent(in) | :: | c(3,nl%n) |
Coordinates in input |
||
integer(kind=ip), | intent(out) | :: | neigh(nl%n) |
Integer array with neighbors' indexes. Only the first nn elements are valid |
||
real(kind=rp), | intent(out) | :: | dist(nl%n) |
Array for returning distances. Only the first nn elements are valid |
||
integer(kind=ip), | intent(out) | :: | nn |
Number of neighbors |