Basis Functions

Each cluster is defined on a set of cluster functions, which is expanded on a set of single-site basis functions. The basis function obeys the orthogonality condition

\[\frac{1}{M} \sum _{s_i=-m}^m \Theta _n (s_i) \Theta_{n'}(s_i) = \delta _{nn'}\]

For more information, please see the CLEASE paper. CLEASE implements three different basis functions: Polynomial, Trigonometric and BinaryLinear.

class clease.basis_function.Polynomial(unique_elements: Sequence[str])[source]

Pseudospin and basis function from Sanchez et al.

Sanchez, J. M., Ducastelle, F. and Gratias, D. (1984). Generalized cluster description of multicomponent systems. Physica A: Statistical Mechanics and Its Applications, 128(1-2), 334-350.

get_basis_functions() List[Dict[str, float]][source]

Create basis functions to guarantee the orthonormality.

get_spin_dict() Dict[str, int][source]

Define pseudospins for all consistuting elements.

class clease.basis_function.Trigonometric(unique_elements: Sequence[str])[source]

Pseudospin and basis function from van de Walle.

van de Walle, A. (2009). Multicomponent multisublattice alloys, nonconfigurational entropy and other additions to the Alloy Theoretic Automated Toolkit. Calphad, 33(2), 266-278.

get_basis_functions() List[Dict[str, float]][source]

Create basis functions to guarantee the orthonormality.

get_spin_dict() Dict[str, int][source]

Define pseudospins for all consistuting elements.

class clease.basis_function.BinaryLinear(unique_elements: List[str], redundant_element: str | None = 'auto')[source]

Pseudospin and basis function from Zhang and Sluiter. The redunant_element parameter can be used to select which element is not explicitly defined by the ECI values. If it is not set, the element will be chosen as the first element in alphabetical order.

Zhang, X. and Sluiter M. Cluster expansions for thermodynamics and kinetics of multicomponent alloys. Journal of Phase Equilibria and Diffusion 37(1) 44-52.

customize_full_cluster_name(full_cluster_name: str) str[source]

Translate the decoration number to element names.

get_basis_functions() List[Dict[str, float]][source]

Create orthonormal basis functions.

Due to the constraint that any site is occupied by exactly one element, we only need to track N-1 species if there are N species. Hence, the first element specified is redundant, and will not have a basis function.

get_spin_dict() Dict[str, int][source]

Define pseudospins for all consistuting elements.

todict() dict[source]

Creates a dictionary representation of the class

All three basis functions inherit from the same base abstract base interface:

class clease.basis_function.BasisFunction(unique_elements: Sequence[str])[source]

Base class for all Basis Functions.

property basis_functions: List[Dict[str, float]]

Property access to get_basis_functions().

customize_full_cluster_name(full_cluster_name: str) str[source]

Customize the full cluster names. Default is to do nothing.

abstract get_basis_functions()[source]

Create basis functions which guarantees the orthonormality condition.

abstract get_spin_dict()[source]

Get spin dictionary.

classmethod load(fd, **kwargs)

Method for loading class object from JSON

save(fd)

Method for writing class object to a JSON file.

todict() dict[source]

Create a dictionary representation of the basis function class