4.4 Structure generation and variation operators

$\triangleright $ variable symmetries

Meaning: Possible space groups for crystals, plane groups for 2D crystals/surfaces, or point groups for clusters. A certain number of structures will be produced using randomly selected groups from this list, using randomly generated lattice parameters and atomic coordinates. During this process special Wyckoff sites can be produced from general positions (Fig. 6).



% symmetries
195-198 200 215-230
% EndSymmetries

Figure 6: Example of merging atoms onto special Wyckoff positions (from Ref. 13).

$\triangleright $ variable fracGene

Meaning: Percentage of structures obtained by heredity; 0.1 means 10%, etc.

Default: 0.5


0.5 : fracGene

$\triangleright $ variable fracRand

Meaning: Fraction of the generation produced randomly from the space groups specified by the user.

Default: 0.2


0.20 : fracRand

$\triangleright $ variable fracPerm

Meaning: Percentage of structures obtained by permutation; 0.1 means 10%, etc.

Default: 0.1 if there is more than one type of atom/molecule; 0 otherwise.


0.1 : fracPerm

$\triangleright $ variable fracAtomsMut

Meaning: Specifies the percentage of structures obtained by softmutation or coormutation.

Default: 0.1


0.1 : fracAtomsMut

Note: You can use softmutation or coormutation by specifying softMutTill.

$\triangleright $ variable fracRotMut

Meaning: Percentage of structures obtained mutating molecular orientations; 0.1 means 10%, etc.

Default: 0.1 for molecular crystals; 0 otherwise.


0.1 : fracRotMut

$\triangleright $ variable fracLatMut

Meaning: Percentage of structures obtained from lattice mutations; 0.1 means 10%, etc.

Default: 0 for fixed cell prediction; 0.1 otherwise.


0.1 : fracLatMut

Note: If the sum of all the fractions (fracGene + fracRand + fracPerm + …) is not equal to 1, they will be rescaled.

$\triangleright $ variable howManySwaps

Meaning: For permutation, the number of pairwise swaps will be randomly drawn from a uniform distribution between 1 and howManySwaps.

Default: 0.5$\times $(maximum number of possible swaps). If atoms $Na$ and $Nb$, and atoms $Nc$ and $Nd$ are swappable, then the total number of possible swaps is $\min (Na,Nb)+\min (Nc,Nd)$, and the default for howManySwaps is $0.5\times [\min (Na,Nb)+\min (Nc,Nd)]$. In most cases, it is a good idea to rely on this default.


5 : howManySwaps

$\triangleright $ variable specificSwaps

Meaning: Specifies which atom types you allow to swap in permutation.

Default: blank line, which means no specific swaps and all atoms are permutable.


% specificSwaps
1 2
% EndSpecific

Note: In this case, atoms of type 1 could be swapped with atoms of type 2. If you want to try all possible swaps, just leave a blank line inside this keyblock, or delete the block.

$\triangleright $ variable mutationDegree

Meaning: The maximum displacement in softmutation in $\text {\r{A}}$. The displacement vectors for softmutation or coormutation are scaled so that the largest displacement magnitude equals mutationDegree.

Default: 3$\times $(average atomic radius)


2.5 : mutationDegree

$\triangleright $ variable mutationRate

Meaning: Standard deviation of the epsilons in the strain matrix for lattice mutation. The strain matrix components are selected randomly from the Gaussian distribution and are only allowed to take values between -1 and 1. Lattice mutation essentially incorporates the ideas of metadynamics into our method 6; 22, where new structures are found by building up cell distortions of some known structure. Unlike in metadynamics, the distortions are not accumulated in our method, so the strain components should be large to obtain new structures.

Default: 0.5


0.5 : mutationRate

It is a good idea to combine lattice mutation with a weak softmutation:

$\triangleright $ variable DisplaceInLatmutation

Meaning: Specifies softmutation as part of lattice mutation and sets the maximum displacement in $\text {\r{A}}$.

Default: 1.0


1.0 : DisplaceInLatmutation

$\triangleright $ variable AutoFrac

Meaning: Enables automatic evolution of variation operators (parameter control), which speeds up the calculation by up to $\sim $2 times. To switch to user defined variation operators, set AutoFrac=0.

Default: 0


1 : AutoFrac