Preliminaries

The input file uses some features of the preprocessor (mainly it uses symbolic variables), so you may wish to go through the standard lmf tutorial,first.

This tutorial explains in more detail the input file, and the workings of the

lmf basis set.

Executables blm, lmfa, and lmf are required and are assumed to be in your path.

Tutorial

This tutorial gives a brief outline as to the commands and procedures required to use the lmf program for users who may have experience with the program already. More detailed instructions can be found in each section should you require them.

Note: All instances of al in the command lines can be replaced with ctrl.al_, depending on what your input file has been named.

1. Building The Input File

It is assumed for the tutorial that the specific categories in the input file are known. The sample input file for Al is provided here.

2. Getting Started: Analyzing The Results Of A Band Pass

And verify from the output that the sphere overlap is about 0.6% (a safe number) and that sum-of-sphere volumes equals about 75% of the total cell volume.

Use lmfa to generate densitites for the free atom. Atomic densities will be overlapped to make a first trial density for the solid (Mattheis construction).

lmfa al

Invoke lmf in a non self-consistent mode:

lmf al -vhf=1

3. Optimizing The Basis Set

One can optimize RSMH efficiently with:

lmf al –optbas

You can take the result of the optimized calculation (saved in basp2.ext) and copy them to your input file. Or, you can have lmf automatically read these parameters from file basp; tokens in HAM_AUTOBAS control what lmf reads from this file, and what lmfa writes to it.

We might consider the effect of enlarging the basis, which as we noted we can do from the commmand line with -vbigbas=1. Do this:

4. Self-consistent LDA calculation

A fully self-consistent full-potential calculation can be preformed by invoking:

lmf al > out

Now the output density is generated. With the output density, the HKS energy functional can be evaluated. Also the log derivative parameters P are floated to the band centers-of-gravity. How the P’s are floated is prescribed by tokens IDMOD.

The output density is screened using the model Lindhard function, provided the Lindhard parameter ELIND is nonzero:

An estimate for the self-consistent density is made by mixing nin and nout* using some mixing scheme.

The resultant density is saved in rst.ext, unless you specify otherwise using –rs=.

At the end of the iteration, the total energies are printed and checks are made whether self-consistency is achieved to tolerances specified by ITER_CONV and ITER_CONVC. The RMS DQ generated at the mixing step is the measure compared against tolerance CONVC; the change in energy from one iteration to the next is tested against tolerance CONV. Both tolerances must be satisfied, unless you set CONV=0 or CONVC=0 (0 tolerance tells lmf not to test that parameter).

5. Shear constants

This section shows how to calculate two of the three independent shear constants in Al. We first calculate c11−c12, which we will do by computing the total energy at different lattice distortions, and fitting the curvature of the total energy. The tetragonal distortion is conveniently generated using the line

SHEAR=0 0 1 1+dist

which distorts the lattice in a way that conserves volume to all orders (this is useful because it tends to be less error-prone). The direction of distortion is set by the first three parameters; the lattice will be sheared along (001).

The first difficulty is that our specification of the FT mesh using token GMAX may cause the program to switch meshes for as parameter dist changes. This is a bad idea, since we want to resolve very small energy differences. So, the first step is to comment out the line with GMAX=gmax in the input and use instead:

FTMESH=10 10 10

The second difficulty is that the shear constants in Al are difficult to converge, because they require many k-points. The following steps are written in ‘tcsh’ and compute the self-consistent total energy parameterically as a function of ‘dist’:

Note that the mixing file eigenvalue weights file (mixm.al and wkp.al) are deleted for each new shear calculation. File save.al contains total energies ehf for 9 values of dist using 24 divisions of k-points. (To properly converge the calculation use nk=32 or even nk=40.)

Extracting ehf and ehk parametrically as a function of dist is very easy with the vextract tool:

cat save.al | startup/vextract c dist ehf > dat

The key ‘c’ tells vextract that you want lines beginning only with ‘c’: these lines correspond to band passes when self-consistency was reached. You can use any regular expression for the key. You can ask vextract to extract any quantity associated with a variable in the file.

Both of these elastic constants depend on the fitting procedure with an uncertainty of about 5%. A careful calculation would use more points dist and increase nk. The final shear constant, the bulk modulus, you can calculate by varying the lattice constant. We do not do it here, but if you do this, you are advised to use token STRUC_DALAT, rather than change ALAT (see the following note).

6. Other things to read and do

You can generate and plot the energy bands using lmf. It proceeds in the same way as in the ASA tutorial. Generate the band file this way:

cp startup/syml.fcc ./syml.al
lmf al --band:fn=syml

The generation of the core-level spectroscopy, Mulliken analysis or density-of-states is done first by invoking lmf with the appropriate command-line switch, followed by lmdos. The lmdos step is illustrated (including a way to plot results) in the ASA tutorial.

To compute the density of states, see this tutorial. To compute core-level EELS spectra or Mulliken analysis in Fe, try running

fp/test/test.fp fe 2

To compute total or partial DOS in hcp Co, try running

fp/test/test.fp co 2

If this page has any errors, there is something you think is missing or unclear, or for any other issues, you can create a post here letting us know.