pyxtal_ff.descriptors.EAD¶
-
class
pyxtal_ff.descriptors.EAD.EAD(parameters, Rc=5.0, derivative=True, stress=False, cutoff='cosine')[source]¶ Bases:
objectEAD is an atom-centered descriptor that is inspired by Embedded Atom method (EAM). The EAM utilizes the orbital-dependent density components. The orbital-dependent component consists of a set of local atomic density descriptions.
- The functional form of EAD is consistent with:
- Zhang, Y., et. al. (2019). The Journal of Physical Chemistry Letters, 10(17), 4962-4967.
Parameters: - parameters (dict) – The user-defined parameters for component of local atomic density descriptions. i.e. {‘L’: 2, ‘eta’: [0.36], ‘Rs’: [1.0]}
- Rc (float) – The EAD will be calculated within this radius.
- derivative (bool) – If True, calculate the derivative of EAD.
- stress (bool) – If True, calculate the virial stress contribution of EAD.
-
calculate(crystal, ids=None)[source]¶ Calculate and return the EAD.
Parameters: - crystal (object) – ASE Structure object.
- ids (list) – A list of the centered atoms to be computed if None, all atoms will be considered
Returns: d – The user-defined EAD that represent the crystal. d = {‘x’: [N, d], ‘dxdr’: [N, m, d, 3], ‘rdxdr’: [N, m, d, 3, 3], ‘elements’: list of elements}
Return type: dict
-
pyxtal_ff.descriptors.EAD.calculate_eamd(i, m, ri, rij, dij, Z, IDs, Rc, parameters, derivative, stress)[source]¶ Calculate the EAD for a center atom i.
Parameters: - i (int) – The i-th atom center.
- m (int) – The total atoms in the crystal unit cell.
- ri (array [3]) – The position of atom i.
- rij (array [j, 3]) – The vector distances of atom i to neighbors j.
- dij (array [j]) – The array of distances of i-th center atom.
- Z (array [j]) – The atomic numbers of neighbors.
- IDs (int array [j]) – The indices of neighbors centering about atom i.
- Rc (float) – The cutoff radius.
- parameters (dict) –
- Rs: float array (d1)
- The shift from the center of the Gaussian-type orbitals.
- etas: float array (d2)
- The width of the Gaussian-type orbitals.
- L: int (d3)
- The total orbital angular momentum.
- cutoff: str
- The cutoff function.
- derivative – If True, calculate the derivative of EAD.
- stress (bool) – If True, calculate the virial stress contribution of EAD.
Returns: Return type: Dict of EAD descriptors with its derivative and stress contribution.
-
pyxtal_ff.descriptors.EAD.dRij_dRm_norm(Rij, ijm_list)[source]¶ Calculate the derivative of Rij norm w. r. t. atom m. This term affects only on i and j.
Parameters: - Rij (array [j, 3]) – The vector distances of atom i to atom j.
- ijm_list (array [j, 3] or [j*k, 3]) – Id list of center atom i, neighbors atom j, and atom m.
Returns: dRij_m – The derivative of pair atoms w.r.t. atom m in x, y, z directions.
Return type: array [j, 3]
-
pyxtal_ff.descriptors.EAD.dij_dm_list(unique_js, ij_list)[source]¶ Get the sign of the derivative of x-y-z ** lx-ly-lz.
Parameters: - uN (int) – the unique index of the atom that force is acting on.
- ij_list (list) – The list of center atom i w.r.t. the neighbors atom j.
Returns: result – The signs (+ or -) for dXij_dm (YZ) * dYij_dm (XZ) * dZij_dm (XY)
Return type: array [j, uN]