svsl

This code calculates the vibrational free energy of a structure
using the Stiffness VS Length method.

Before using this code, you will probably first need to use the fitsvsl code, which
generates the length-dependent force constants that the present needs as an input.

It requires, as an input, 3 files:
1) A 'relaxed' structure (the default file name is str_relax.out,
   but it can be overridden with the -rs option).
   This provides the actual atomic positions used in the calculations.
   The format of this file is as described in the maps documentation (see maps -h).
2) An 'unrelaxed' structure (the default file name is str.out,
   but it can be overridden with the -us option).
   This provides the ideal atomic positions that are used to automatically determine which atoms
   lie in the nearest neighbor shell. This file can be the same as the relaxed structure
   but then the determination of the nn shell may be less reliable.
3) A spring constant file (the default is to lookup in slspring.out and ../slspring.out but
   this can be overridden with the -sp option).
   This file provides the bond stiffness vs bond length relationships that are
   used to determine the force constants of the springs joining neighboring atoms.
   The format of this file is described in the documentation of the fitsvsl code, which is
   a utility that fits such spring constants.

A number of optional files can be given as well.
4) An input file defining the atomic masses. By default, the code looks up in the
   ~/.atat.rc file to determine the directory where atat is installed and then
   loads the file data/masses.in. This behavior can be overridden with the -m option.
5) By default, the bulk modulus is calculated from the force constants but it
   can also be read from a file (whose name is specified with the -bf option) or
   specified on the command line with the -b option.

The parameters that govern the accuracy of the calculations are as follows.
The default values are all reasonable.
   The code uses the quasiharmonic approximation account for thermal expansion.
   For this purpose, it calculates the vibrational free for a range of lattice parameters
   from the 0K value to the (1+ms) larger, where ms is the number specified in the -ms option.
   The -ns option gives the number of volumes considered.
   Setting -ns=1 selects the harmonic (instead of the quasiharmonic) approximation.

   The code calculates the vibrational free energy from temperature T0 to T1 in steps of dT.
   a) The defaults are T0=0 T1=2000 dT=100.
   b) If a file Trange.in exists in the upper directory, it is used to set T0,T1,dT:
      Trange.in must contain two numbers on one line separated by a space: T1 (T1/dT+1).
      Note that T0=0 always.
      For phase diagram calculations, you must use this method to specify the temperature range.
   c) These defaults can be overridden by the -T0, -T1 and -dT options.

   The kpoint sampling is specified with the -kp option. The actual number of kpoints used
   is the number give divided by the number of atoms in the cell.

-> Phonon Dispersion curves
The -df=inputfile option invokes the phonon dispersion curve module.
The syntax of the input file is:
[nb of points] [kx1] [ky1] [kz1] [kx2] [ky2] [kz2]
repeat...

Each line of input defines one segment (kx1,ky1,kz1)-(kx2,ky2,kz2)
along which the dispersion curve is to be calculated.
[nb of points] specifies the number of points sampled along the segment.
The coordinates are in multiple of the reciprocal cell defined by the axes in the
file specified by the -us option (or, by default, in the str.out file).
(The k-point coordinates are appropriately strained
by the amount needed for the str.out file to be identical to the str_relax.out file.)
The phonon frequencies are output in the eigenfreq.out file.

Other parameters can be altered, if needed.
   The physical constants are set by default for
         force constants input in eV/Angstrom^2
         temperature in K
         free energy in eV
         frequencies in Hz
         masses      in a.u.
   They can be altered by the -hb, -kb, -cfk and -mu options.

   By default the code give free energies per unit cell, but the -pa option gives them per atom.
   The -sc option can provide a multiplicative factor for other conventions (e.g. per formula unit).

   By default, the code aborts whenever unstable modes are found, unless the -fn option is specified.

   Contact the author for information about the -df and -sf options.

The output files are as follows:

svsl.log :  a log file giving some of the intermediate steps of the calculations
vdos.out:   the phonon density of states for each lattice parameter considered (unstable modes appear
            as negative frequencies).
svsl.out:   gives along each row, the temperature, the free energy, and the linear thermal expansion
            (e.g. 0.01 means that the lattice has expansion by 1% at that temperature).
fvib:       gives only the free energy

-> For including vibrations in phase diagram calculations

 You are likely to use this code as follow:

  #first create the Trange.in file for up to 2000K in intervals of 100K:
  echo 2000 21 > Trange.in

  #This executes the svsl code in each subdirectory containing str_relax.out but no error file.
  foreachfile -e str_relax.out pwd \; svsl [options if desired]

  #constructs a cluster expansion of the vibrational free energy (eci are in fvib.eci)
  clusterexpand fvib

  #add the energetic eci from eci.out to the vibrational eci from fvib.eci and create the teci.out
  #file that will be read by the Monte Carlo code.
  mkteci fvib.eci



[email protected] Wed, Dec 6, 2023 12:55:16 PM