## 5.3 Variable-composition code

To switch on the variable-composition mode, you have to:

1. Specify 301 or 311 or 201 : calculationType.

2. Specify compositional building blocks in numSpecies (see the description of numSpecies variable).

3. Optionally specify the approximate atomic volumes for each atom type (or for each compositional block) using keyblock Latticevalues.

4. Specify the following varcomp-only options:

variable firstGeneMax

Meaning: How many different compositions are sampled in the first generation. If 0, then the number is equal to initialPopSize/4. For binaries, we recommend firstGeneMax=11, for ternaries a higher value is needed, e.g. 30.

Default: 11

Format:

10 : firstGeneMax

variable minAt

Meaning: Minimum number of atoms (for calculationType=301/201/300) or molecules (for calculationType=311) in the unit cell for the first generation.

Default: No default

Format:

10 : minAt

variable maxAt

Meaning: Maximum number of atoms (for calculationType=301/201/300 or in META calculations) or molecules (for calculationType=311) in the unit cell for the first generation.

Default: No default

Format:

20 : maxAt

variable fracTrans

Meaning: Percentage of structures obtained by transmutation. In this operator, a randomly selected atom is transmuted into another chemical species present in the system — the new chemical identity is chosen randomly by default, or you can specify it in the block specificTrans, just like with specific permutation swaps.

Default: 0.1

Format:

0.1 : fracTrans

variable howManyTrans

Meaning: Maximum percentage of atoms in the structure that are being transmuted (0.1 = 10%). The fraction of atoms that will be transmuted is drawn randomly from a homogeneous distribution bounded between 0 and the fractional parameter howManyTrans.

Default: 0.2

Format:

0.2 : howManyTrans

variable specificTrans

Meaning: Specifies allowed transmutations.

Default: blank line (no specific transmutations)

Format:

% specificTrans
1 2
% EndTransSpecific

Note: In this case, atoms of type 1 could be transmuted into atoms of type 2 and vice versa. If you want to try all possible transmutations, just leave a blank line inside this keyblock.

In the case of variable-composition runs, parameter keepBestHM takes a new meaning — all structures on the convex hull (i.e., thermodynamically stable states of the multicomponent system) survive, along with a few metastable states closest to the convex hull — the total number is keepBestHM.

For variable-composition runs, it is particularly important to set up the first generation wisely. Choose a suitably large initial generation size initialPopSize. Choose a reasonably large number of different compositions firstGeneMax to be sampled in the first generation (but not too large — each composition needs to be sampled several times at least). Finally, minAt and maxAt should not differ by more than 2 times, and you may need a few calculations with different system sizes: e.g., 4–8, 8–16, 16–30 atoms, etc.

An additional comment for VASP users — if you want to perform a variable-composition run, let’s say for the Na-Cl system, you should make sure the atomic types are given correctly in INPUT.txt, and put pseudopotential files POTCAR_Na and POTCAR_Cl in the folder /StructurePrediction/Specific/. USPEX will then recognize each atom and take each atom’s POTCAR file appropriately for the calculations. Fig. 11 shows thermodynamics of stable sodium chlorides discovered using USPEX and confirmed by experiment 26.