4.8 Details of ab initio calculations

USPEX employs a powerful two-level parallelization scheme, making its parallel scalability exemplary. The first level of parallelization is performed within structure relaxation codes, the second level of parallelization distributes the calculation over the individuals in the same population (since structures within the same generation are independent of each other).

First, you must specify which code(s) you want to use for structure relaxation and fitness calculation:

$\triangleright $ variable abinitioCode

Meaning: Defines the code used for every optimization step.

Default: 1 for every optimization step (VASP)

Format:

% abinitioCode
3 2 2 1 1
% ENDabinit

Note: Numbers indicate the code used at each step of structure relaxation (see Subsection 2.5 for a list of supported codes):

$\triangleright $ variable KresolStart

Meaning: Specifies the reciprocal-space resolution for $k$-points generation (units: $2\pi \text {\r{A}}^{-1}$).

Default: from 0.2 to 0.08 linearly

Format:

% KresolStart
0.2 0.16 0.12 0.08
% Kresolend

Note: You can enter several values (one for each step of structure relaxation), starting with cruder (i.e., larger) values and ending with high resolution. This dramatically speeds up calculations, especially for metals, where very many k-points are needed. This keyblock is important if you use VASP or QuantumEspresso (with GULP it is not needed at all, and with SIESTA you will have to define KresolStart within SIESTA input files).

For clusters, 2D-crystals, and surfaces, you have to specify the thickness of the vacuum region around the cluster (or around the surface slab):

$\triangleright $ variable vacuumSize

Meaning: Defines the amount of vacuum added around the structure (closest distance in $\text {\r{A}}$ between neighboring clusters in adjacent unit cells). Used only for surfaces, 2D-crystals, and nanoparticles.

Default: 10 $\text {\r{A}}$ for every step of relaxation

Format:

% vacuumSize
10 10 15 20 20
% EndVacuumSize

$\triangleright $ variable numParallelCalcs

Meaning: Specifies how many structure relaxations you want to run in parallel.

Default: 1

Format:

10 : numParallelCalcs

You need to supply the job submission files or the names of executable files for each code/mode you are using.

$\triangleright $ variable commandExecutable

Meaning: Specifies the name of the job submission files or executables for a given code.

Default: no default, has to be specified by the user.

Format:

% commandExecutable
gulp < input > output
mpirun -np 8 vasp > out
mpirun -np 8 vasp > out
mpirun -np 8 vasp > out
% EndExecutable

Note: Every line corresponds to a stage of relaxation — the first line describes the execution of the first stage of relaxation, etc. For example, abinitioCode equal to “3 1 1 1” means that the first relaxation step will be performed with GULP, while the subsequent steps will be performed using VASP via the command “mpirun -np 8 vasp > out”. If only one line is present in commandExecutable, then the same execution will be performed for all steps of relaxation.

You can actually use USPEX on virtually any platform in the remote submission mode. All you need is MATLAB/Octave to be running on your workstation. In that case, your workstation will prepare input (including jobs), send them to the remote compute nodes, check when the calculations are complete, get the results back, analyze them, and prepare new input. The amount of data being sent to and fro is not large, so the network does not need to be very fast. Job submission is, of course, machine-dependent.

$\triangleright $ variable whichCluster

Meaning: Specifies the types of job submission.

Possible values (integer):

Default: 0

Format:

1 : whichCluster

$\triangleright $ variable remoteFolder

Meaning: Folder on the remote supercomputer where the calculation will be performed. This keyword is activated only if whichCluster=2.

Default: none

Format:

Blind_test : remoteFolder

Note: there is a similar parameter specified in the remote submission file — homeFolder. The actual path to the calculation will be *homeFolder*/*remoteFolder*/CalcFolderX where X=1, 2, 3,….

$\triangleright $ variable PhaseDiagram

Meaning: Enables calculation of a phase diagram for calculationType=300 and 301. It gives an idea (crude one — just to get a rough idea!) of which the new phases may be at higher and lower pressures, and a rough idea of transition pressures.

Default: 0

Format:

1 : PhaseDiagram