Delta-amplitudes calculation

The delta-amplitudes calculation (called with RUN = 2) is the second part of a tensor-LEED calculation as implemented in ViPErLEED. It requires the tensor files produced by a reference calculation.

The delta calculation combines the tensor files, i.e., the tensor quantities \(T^\mathrm{ref}_{i,\mathbf{g};l,m;l',m'}\) (see The tensor-LEED approach), which only depend on the reference structure, with the requested perturbations (see file DISPLACEMENTS for details) to produce the corresponding changes in the scattered amplitudes of all the beams \(\mathbf{g}\).

Delta-amplitudes calculation in ViPErLEED

When a delta calculation is requested, ViPErLEED loads the tensor files and reads the DISPLACEMENTS file. Both are checked for consistency before proceeding. The PHASESHIFTS file — needed to handle chemical substitutions — is also loaded, or generated anew if required.

ViPErLEED then determines for which atoms delta amplitudes need to be produced. If it is found that a previously generated delta file (stored in the Deltas directory) already contains some of the requested amplitudes, their computation is skipped and a message is written in the calc-<timestamp>.log log file accordingly.

As for the reference calculation, ViPErLEED then moves the needed TensErLEED source files to a temporary subfolder of the work directory (Delta_Compile_<index>) and compiles them at run time, storing the SUPP/compile_logs/Delta_Compile_<index>.log log file. The input files (based on the DISPLACEMENTS file and the system symmetry) are written in the format expected by TensErLEED. Then calculations for each atom are executed independently. Again, the parameter N_CORES determines how many processes run in parallel.

Once finished, ViPErLEED packs the resulting delta files into a .zip archive in the Deltas directory. Messages produced by the delta.f TensErLEED Fortran program are written to the SUPP/delta-<timestamp>.log log file.