Table of Contents

Elastic Constant Calculations

For an introduction to the theory of elastic constants, see Chapter 8 in the following reference:

Asker, Christian: Effects of disorder in metallic systems from First-Principles calculations (Phd Thesis Linköping University, 2010)

Bulk modulus

Bulk modulus, B, can be obtained by calculating total energy, E, as a function of volume. After fitting E(V) to an equation of state, the bulk modulus is given by: B(V) = V d2E(V)/dV2


Example for a cubic system, such as fcc-FeNi.

1) Calculate slope matrices and madelung matrices with KSTR.

2) Calculate shape functions with SHAPE.

3) Set up a number of .dat files for different volumes. A handy script is Open the file The first few lines look like this:

RWS=(2.52 2.54 2.56 2.57 2.59)

On the first line you may enter which Wigner-Seitz radii you want to consider within the parenthesis. On the second line you must specify the structure name. The name of the structure should correspond to what was used in kstr and shape calculations. The two following lines should contain the path to the kstr and shape directories.

Further down in the file you will recognize the kgrn and kfcd .dat files. You may edit this file further according to your needs. For this particular example, perhaps you would like to change composition, or exchange-correlation functional. See the EMTO page for details of the kgrn .dat file.

Save the file and execute:


The script will generate the necessary kgrn and kfcd .dat files.

4) Start the kgrn calculations (e.g., with the script

After the calculations have finished, you may inspect the results (see the EMTO page).

5) Fit your E(Rws) points to an equation of state. A handy script for this is

Open the file The header will look like this:

R=(2.54 2.56 2.57 2.58 2.59)      # kfcd .prn files to use  
F=BM52                  # interpolation method

C=kfcd/                 # location of kfcd .prn files

# Plot settings
Xa=R                    # what to plot on X-axis (R,P)
Ya=(E H P)              # What to plot on Y-axis (E,H,P)
X=()                    # X-axis range (leave empty for "Rmin to Rmax"  
Num=9999                # points on grid                      

On the first line may choose which radii that should be included in the fit, or more precisely, in which files that should take energy and Wigner-Seitz radius. On the second line you specify which equation of state to use. The next entry is the location of the kfcd .prn files. The EOS program will generate a plot file. Further down you will find settings for the plot.

Execute the script:


Two files should be produced: eos.out and a plot file.

Open the file eos.out.