Specify CE settings

The next step is to specify the settings in which the CE model is constructed. One of CEBulk or CECrystal classes is used to specify the settings. CEBulk class is used when the crystal structure is one of “sc”, “fcc”, “bcc”, “hcp”, “diamond”, “zincblende”, “rocksalt”, “cesiumchloride”, “fluorite” or “wurtzite”.

Here is how to specify the settings for performing CE on AuxCu1-x for all \(0 \leq x \leq 1\) on FCC lattice with a lattice constant of 3.8 Å

>>> from clease.settings import CEBulk
>>> settings = CEBulk(crystalstructure='fcc',
...                   a=3.8,
...                   supercell_factor=64,
...                   concentration=conc,
...                   db_name="aucu.db",
...                   max_cluster_dia=[6.0, 4.5, 4.5])

CEBulk internally calls ase.build.bulk() function to generate a unit cell. Arguments crystalstructure, a, c, covera, u, orthorhombic and cubic are passed to ase.build.bulk() function to generate a unit cell from which the supercells are generated. In case where one prefers to perform CE on a single, fixed size supercell, size parameter can be set by passing a list of three integer values (e.g., [3, 3, 3] for a \(3 \times 3 \times 3\) supercell). More generally, a supercell_factor argument is specified to set a threshold on the maximum size of the supercell.

The maximum size of clusters (i.e., number of atoms in a given cluster) and their maximum diameters are specified using max_cluster_dia. As empty and one-body clusters do not need diamters in specifying the clusters, maximum diameters of clusters starting from two-body clusters are specified in max_cluster_dia in ascending order.


Several entries are generated in the database file with their names assigned as “templates”. These templates are used to generate new structures and also to calculate their correlation functions.

There are several flavors of cluter expansion formalism in specifying the basis function for setting the site variable. Three types of basis functions are currently supported in ASE. The type of basis function can be selected by passing one of “polynomial”, “trigonometric” and “binary_linear” to basis_function argument. More information on each basis function can be found in the following articles.


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



Zhang, X. and Sluiter M. (2016)
Journal of Phase Equilibria and Diffusion 37(1), 44-52.

One can alternatively use CECrystal class to specify the unit cell of the system. CECrystal takes a more general approach where the unit cell is specified based on its space group and the positions of unique sites.

Verify your structures

After you created your templates, it may be a good idea to inspect the possible template structures and clusters, to verify that it looks like you would expect.

The template refers to all possible supercells that can be generated from your settings class, and clusters are the basic clusters found by CLEASE. Templates can be visualized with the view_templates(), and the clusters with view_clusters() of your ClusterExpansionSettings instance.

>>> settings.view_clusters()

This will open a new instance of the ASE GUI, which should look something like this, which is an example of a 4-body cluster:


And similarly, view_templates() will open the templates in the ASE GUI as well.