3. Input file details

3.1 Directories (required)

input_dir:  [input directory name]
output_dir: [output directory name]

input_dir is the name of the input directory containing the potential file (see 2. Execution of SPINNER). output_dir is the output directory which is generated when the code executed.

3.2 Structure of the evolutionary search (required)

structure:
    generation: 1000
    i_population: 80
    population:  80
    num_of_best: 0
    re-relax_best: yes
    population_max: 10000

generation is the number of generations (required). population is the number of the structure in the pool (except for survival) in one generation. i_population is the population number in generation 1. Default values are the twice the number of atoms in the simulation cell. num_of_best is the number of structure that survive into the next generation. If it is set to 0, then the calculation does not fix the number, but decide it in every generation by the energy window (see energy_criteria in Ch.3.8 below). re-relax_best decides whether survived structures are relaxed again in each generation or not. population_max is the maximum number of population. If the population number exceeds this value, then the calculation stops.

3.3 Defining material system (required)

material:
    Li: 4
    Hf: 2
    N:  4

This tags correpond to [atom type]: [number of atoms in the simulation cell]. The type of atoms must be consistent with that of the potential file.

3.4 Initial volume (required)

initial_volume:  326.0

This is the cell volume used in the first generation.

3.5 Distance constraint

distance_constraint:
    Li-Li: 2.1
    Li-Hf: 1.5
    Li-N:  1.2
    Hf-Hf: 2.3
    Hf-N:  1.4
    N-N:   0.7

The pairwise distance constraint for atomic pairs. This is applied to both restrain option in structural optimization by LAMMPS and in random structure generation. See scale_factor in Ch.3.7 below for additional setting. The default value is 0.7.

3.6 Fraction of operators

operator:
    random:          0.3
    crossover:       0.5
    all_permutation: 0.1
    latticemutation: 0.1
    con_permutation: 0.0

Fraction of operators that are used in one generation. (The sum of them doesn’t have to be 1. They are readjusted.) all_permutation is the permutation without restriction, and con_permutation is the restricted permutation for certain atom groups. Restrictions are set with permutation_allow tag in Ch.3.7 below.

3.7 Specific setting for mutation operators

3.7.1 Random generation

random_condition:
  force_general_Wyckoff_site:                         no
  maximum_attempts_for_one_space_group_and_volume:   100
  scale_factor:                                      1.0
  sublattice_genaration:                             0.0
  max_sub_lattice:                                     2

force_general_Wyckoff_site determines whether atoms are put into the general Wyckoff sites. If you choose no, then specific Wyckoff sites are also used for structure generation. maximum_attempts_for_one_space_group_and_volume is the number of iteration for generating random structure for fixed space group and lattice volume. If the iteration exceeds this value, then new space group and volumes are chosen randomly. scale_factor is the ratio between distance constraints that are used to generate random structure and distance constraints for restrain option in LAMMPS. If scale_factor is 1, then the same distance constraints are used for both, and if scale_factor is 0, then no distance constraints are used for random structure generation. sublattice_generation is the ratio of random structures that is generated by sublattice generation method (not recommended). The max_sub_lattice is the maximum number of sublattice (only 2 and 4 are avalialbe).

3.7.2 Crossover

crossover_condition:
    num_of_grid_for_cut:              10
    energy_range_for_cut_select:    0.01
    grid_for_shift:                    3
    iteration_for_add_atoms:          50

SPINNER rationally choose selection planes and merging those using atomic energies and one-shot energy evaluation. num_of_grid_for_cut is the number of grid for each axis direction to generate slab. When choosing the slab, SPINNER chooses low-energy slab with probability proportional to exp(-E*<sub>*ave*</sub>/*σ) where E*<sub>*ave*</sub> is the average atomic energy of the slab and *σ is energy_range_for_cut_select. When merging slabs, SPINNER considers translational degree of freedom and mirror degree of freedom. grid_for_shift is the number of translating vector. For instance, if grid_for_shift is 3, then, translation is considered for 3x3 grids. In addition, translation vector is found in more fine grid again by 3x3. For the merged structure, composition is not usually same as the initial composition, so subtracting and adding atoms are required. When subtracting atoms, the highest-atomic-energy atoms are removed first. When adding atoms, we randomly put atoms for iteration_for_add_atoms times and select the lowest-energy configuration.

Increasing num_of_grid_for_cut, grid_for_shift, and iteration_for_add_atoms enhances the chance to create the lower energy structure but also increases the computation time.

3.7.3 Conditional permutation

permutation_allow:
    group1: [atom1, atom2, atom3 …]
    group2: [atom4, atom5, …]
    …

In conditional permutation, only permutation within designated groups are allowed. The number of atoms in one group and the number of group can be freely set.

3.8 Energy criteria for survival and inheritance

energy_criteria:
    energy_cut_for_inheriting_structures: 0.10
    energy_cut_for_best_structures:       0.05
    energy_cut_for_further_relax:         0.50

energy_cut_for_inheriting_structures is the energy window to choose structures that are inherited to the next generation by mutation operators. energy_cut_for_best_structures is the energy window to choose structures that survive to the next generation. energy_cut_for_inheriting_structures and energy_cut_for_best_structures are used when structure: re-relax_best is yes (see Ch. 3.2). energy_cut_for_further_relax is the energy criteria to decide whether relaxation proceeds unrestricted relaxation after first relaxation (cell-fix relaxation). All of these paramters have eV/atom as unit.

3.9 Similarity metric

similarity_metric:
    type:           pRDF
    limit:          0.01
    volume_cut:     1000.0
    energy_cut:     1000.0
    gaussian_dist:   0.1
    rdf_grid:        250

This is the similarity metric that is used to measure the similarity distance between different structures. For type of the similarity metric, pRDF is only available for now (see J. Chem. Phys. 130, 104504 (2009) for details). limit is the limit that determines whether two structures are same or not. volume_cut and energy_cut is the volume and energy criteria to calculate similarity distance between two structures (units are Å^3 and eV/atom, respectively). gaussian_dist is the Gaussian distribution of the pRDF function (Å). rdf_grid is the bin number of rdf.

3.10 Relaxation option

relax_condition:
    relax_iteration:                              5
    method_of_first_relax:                       cg
    further_calculation_with_accurate_potential: no
    stop_relax_beyond_this_generation:           10

Relaxation is performed by relax_iteration × total number of atoms × 3 iterations for both lattice-fix relaxation and lattice-free relaxation. method_of_first_relax is the method for the lattice-fix relaxation (cg/fire/mix is possible while mix is mixing of fire and cg). further_calculation_with_accurate_potential decides whether to further evaluate energy with more accurate potential (when using this tag, potential_accurate file should be provided in the input directory). Relaxation of a structure stops after stop_relax_beyond_this_generation generations.

3.11 Vacuum constraint

Vacuum_constraint:
    apply_vacuum_constraint:   yes
    maximum_vacuum_length:     6.0
    grid:                      1.0

SPINNER excludes structures having large vacuum when apply_vacuum_constraint is on. maximum_vacuum_length is the maximum vacuum length allowed. grid is the grid length used in the algorithm (Å).

3.12 Antiseed option

antiseed:
    activation_antiseed:    no
    gaussian_width:        0.2
    selection_gaussian:    0.1
    selection_fraction:    0.5

SPINNER switches on antiseed option when activation_antiseed is set to yes. gaussian_width and selection_gaussian represents σ and *σ*<sub>*A*<sub>, which are described equation 1 of our publication [arXiv:2107.02594]. Antiseed option is useful when generating training set for refining NNP but not recommended when proceeding long generation of evolutionary algorithm for finding optimal structure.

3.13 Continue calculation

continue:
    ogirinal_dir:    [original directory]
    continue_num:    100

original_dir is the directory that one wants to start the calculation. continue_num is the starting generation. New calculation results are written in output_dir. original_dir and output_dir can be same.