Specify the concentration ranges of species
The first step in setting up CE in ASE is to specify the types of elements occupying each basis and their concentration ranges using Concentration class. For AuCu alloys, we consider the entire composition range of where . The Concentration object can be created simply as
1from clease.settings import Concentration
2conc = Concentration(basis_elements=[['Au', 'Cu']])because there is no restriction imposed on the concentration range. Note that a nested list is passed for the basis_elements argument because the consituting elements are specified per basis and FCC (crystal structure of for all ) has only one basis. The initialization automatically creates a linear algebra representation of the default concentration range constraints. The equality condition of and as well as the lower bound conditions of and are created automatically.
The conditions represents the linear equations and where the concentration list, , is defined as
The equality condition is then expressed as which specifies that elements Au and Cu constitute the entire basis (only one basis in this case). The lower bound conditions are expressed as and which specifies that the concentrations of Au and Cu must be greater than or equal to zero.
The AuCu system presented in this tutorial does not impose any concentration constraints. However, we demonstrate how one can impose extra constraints by using an example case where the concentration of interest is where . The extra concentration constraint can be specified in one of three ways.
The first method is to specify the extra constraint using A_eq, b_eq, A_lb and b_lb. For this particular case, the extra constraint is specified using A_lb and b_lb arguments as
1from clease.settings import Concentration
2conc = Concentration(basis_elements=[['Au', 'Cu']], A_lb=[[2, 0]], b_lb=[1])A list of many examples on how linear systems equations can be used, is found here.
The second method is to specify the concentration range using formula unit strings. The Concentration class contains set_conc_formula_unit() method which accepts formula strings and variable range, which can be invoked as
1from clease.settings import Concentration
2conc = Concentration(basis_elements=[['Au', 'Cu']])
3conc.set_conc_formula_unit(formulas=["AuCu<1-x>"], variable_range={"x": (0, 0.5)})The last method is to specify the concentration range each constituting species using set_conc_ranges() method in Concentration class. The lower and upper bound of species are specified in a nested list in the same order as the basis_elements as
1from clease.settings import Concentration
2conc = Concentration(basis_elements=[['Au', 'Cu']])
3conc.set_conc_ranges(ranges=[[(0, 0.5), (0.5, 1)]])The above three methods yields the same results where is constrained to .