ClusterSpace(prototype_structure, cutoffs, config=None, **kwargs)¶
Primitive object for handling clusters and force constants of a structure.
- prototype_structure (ase.Atoms) – prototype structure; spglib will be used to find a suitable cell based on this structure.
- cutoffs (list or Cutoffs) – cutoff radii for different orders starting with second order
- config (Config object) – config object containing information on how the cluster space should be built, e.g. values for tolerances and if acoustic sum rules be enforced
- not config is given then kwargs can be used to specify (If) –
- acoustic_sum_rules (bool) – If True the aucostic sum rules will be enforced by constraining the parameters.
- symprec (float) – numerical precision that will be used for analyzing the symmetry (this parameter will be forwarded to spglib)
- length_scale (float) – This will be used as a normalization constant for the eigentensors
To instantiate a
ClusterSpaceobject one has to specify a prototype structure and cutoff radii for each cluster order that should be included. For example the following snippet will set up a
ClusterSpaceobject for a body-centered-cubic (BCC) structure including second order terms up to a distance of 5 A and third order terms up to a distance of 4 A.
>>> from ase.build import bulk >>> prim = bulk('W') >>> cs = ClusterSpace(prim, [5.0, 4.0])
True if acoustic sum rules are enforced
atoms inside the cutoff relative to the of the center cell
clusters possible within the cutoff
Returns a list of the parameter indices associated with the requested order.
Parameters: order (int) – order for which to return the parameter indices Returns: list of parameter indices associated with the requested order Return type: list(int) Raises:
ValueError– if the order is not included in the cluster space
normalization constant of the force constants
number of free parameters in the model
If the sum rules are not enforced the number of DOFs is the same as the total number of eigentensors in all orbits.
detailed information for each orbit, e.g., cluster radius and atom types.
orbits associated with the lattice structure.
Prints a list of all orbits.
Prints table data, i.e. information as a function of order and n-body for the clusterspace.
Reads a cluster space from file.
Parameters: f (str or file object) – name of input file (str) or stream to load from (file object)
space group of the lattice structure obtained from spglib
symprec value used when constructing the cluster space
Writes cluster space to file.
The instance is saved into a custom format based on tar-files. The resulting file will be a valid tar file and can be browsed by by a tar reader. The included objects are themself either pickles, npz or other tars.
Parameters: fileobj (str or file-like object) – If the input is a string a tar archive will be created in the current directory. Otherwise the input must be a valid file like object.
wyckoff sites in the primitive cell
Specify cutoff-list plus maximum body
Usefull when creating e.g. 6th order expansions but with only 3-body interactions.
- cutoff_list (list) – list of cutoffs for order 2, 3, etc. Must be in decresing order
- max_nbody (int) – No clusters containing more than max_nbody atoms will be generated
This class maintains information about the cutoff configuration, i.e. which clusters will be included (=”inside cutoff”). It also encapsulates functionality that is used e.g., during cluster space construction.
Here, n-body refers to number of atoms in a cluster. For example the cluster (0011) is a two-body cluster of fourth order and the cluster (123) is a three-body cluster of third order.
Parameters: cutoff_matrix (numpy.ndarray) – the matrix element ij provides to the cutoff for order i+2 and nbody j+2; elements with j>i will be ignored
Returns cutoff for a given body and order.
- order (int) –
- nbody (int) –
ValueError– if order is not in orders
ValueError– if nbody is not in nbodies
ValueError– if nbody is larger than order
Returns: Return type:
Return maximum cutoff for a given body.
Returns maximum order for a given body
Reads an instance from file.
Parameters: fileobj (file-like object) – input file to read from
Writes instance to file.
Parameters: fileobj (file-like object) – file-like object to which the cutoffs will be written to
Estimates the maximum possible cutoff given the atoms object
- atoms (ase.Atoms) – structure used for checking compatibility with cutoff
- max_iter (int) – number of iterations in binary search