deepmd.dpmodel.utils.nlist#
Functions#
| |
| Build neighbor list for a single frame. keeps nsel neighbors. |
| Given a nlist that does not distinguish atom types, return a nlist that |
| |
| Input one neighbor list, and produce multiple neighbor lists with |
| Extend the coordinates of the atoms by appending peridoc images. |
Module Contents#
- deepmd.dpmodel.utils.nlist.extend_input_and_build_neighbor_list(coord, atype, rcut: float, sel: list[int], mixed_types: bool = False, box: numpy.ndarray | None = None)[source]#
- deepmd.dpmodel.utils.nlist.build_neighbor_list(coord: numpy.ndarray, atype: numpy.ndarray, nloc: int, rcut: float, sel: int | list[int], distinguish_types: bool = True) numpy.ndarray [source]#
Build neighbor list for a single frame. keeps nsel neighbors.
- Parameters:
- coord
np.ndarray
exptended coordinates of shape [batch_size, nall x 3]
- atype
np.ndarray
extended atomic types of shape [batch_size, nall] type < 0 the atom is treat as virtual atoms.
- nloc
int
number of local atoms.
- rcut
float
cut-off radius
- sel
int
orlist
[int
] maximal number of neighbors (of each type). if distinguish_types==True, nsel should be list and the length of nsel should be equal to number of types.
- distinguish_typesbool
distinguish different types.
- coord
- Returns:
- neighbor_list
np.ndarray
Neighbor list of shape [batch_size, nloc, nsel], the neighbors are stored in an ascending order. If the number of neighbors is less than nsel, the positions are masked with -1. The neighbor list of an atom looks like |------ nsel ------| xx xx xx xx -1 -1 -1 if distinguish_types==True and we have two types |---- nsel[0] -----| |---- nsel[1] -----| xx xx xx xx -1 -1 -1 xx xx xx -1 -1 -1 -1 For virtual atoms all neighboring positions are filled with -1.
- neighbor_list
- deepmd.dpmodel.utils.nlist.nlist_distinguish_types(nlist: numpy.ndarray, atype: numpy.ndarray, sel: list[int])[source]#
Given a nlist that does not distinguish atom types, return a nlist that distinguish atom types.
- deepmd.dpmodel.utils.nlist.build_multiple_neighbor_list(coord: numpy.ndarray, nlist: numpy.ndarray, rcuts: list[float], nsels: list[int]) dict[str, numpy.ndarray] [source]#
Input one neighbor list, and produce multiple neighbor lists with different cutoff radius and numbers of selection out of it. The required rcuts and nsels should be smaller or equal to the input nlist.
- Parameters:
- coord
np.ndarray
exptended coordinates of shape [batch_size, nall x 3]
- nlist
np.ndarray
Neighbor list of shape [batch_size, nloc, nsel], the neighbors should be stored in an ascending order.
- rcuts
list
[float
] list of cut-off radius in ascending order.
- nsels
list
[int
] maximal number of neighbors in ascending order.
- coord
- Returns:
- nlist_dict
dict
[str
,np.ndarray
] A dict of nlists, key given by get_multiple_nlist_key(rc, nsel) value being the corresponding nlist.
- nlist_dict
- deepmd.dpmodel.utils.nlist.extend_coord_with_ghosts(coord: numpy.ndarray, atype: numpy.ndarray, cell: numpy.ndarray | None, rcut: float)[source]#
Extend the coordinates of the atoms by appending peridoc images. The number of images is large enough to ensure all the neighbors within rcut are appended.
- Parameters:
- coord
np.ndarray
original coordinates of shape [-1, nloc*3].
- atype
np.ndarray
atom type of shape [-1, nloc].
- cell
np.ndarray
simulation cell tensor of shape [-1, 9].
- rcut
float
the cutoff radius
- coord
- Returns:
- extended_coord:
np.ndarray
extended coordinates of shape [-1, nall*3].
- extended_atype:
np.ndarray
extended atom type of shape [-1, nall].
- index_mapping:
np.ndarray
mapping extended index to the local index
- extended_coord: