Skip to content

Physics you can do with MuST

Yang Wang edited this page Apr 6, 2021 · 41 revisions

The disorder, i.e., impurities and imperfections, is inevitably present in real materials. It can appear naturally or can be introduced intentionally into the sample via doping. It has been realized that disorder can be used as a powerful controlling tool to manipulate the properties of materials. It can cause electron localization, band broadening, change the transport, mechanical and thermal properties of materials.

  • Please see below some aspects of the physics of ordered and disordered systems you can do with the codes available via MuST package:
    • Electron localization
    • Effective medium approaches of disordered systems:
      • the Coherent Potential Approximation (CPA)
      • the Typical Medium Method (TMT)
    • Ab initio electronic structure calculation of ordered structures
      • Korringa-Kohn-Rostoker (KKR) method
      • Locally self-consistent multiple scattering (LSMS) method
    • Ab initio electronic structure calculation of disordered structures
      • KKR-CPA/CA-KKR-CPA method applied to random alloys with an underlying lattice
      • LSMS method applied to large unit cells simulating disordered structures
      • KKR/LSMS with SQS approach
    • Electronic transport calculation using Kubo-Greenwood formula
      • KKR-CPA/CA-KKR-CPA method
    • Computational capabilities
      • Non-spin-polarized/Spin-polarized/Spin-canted calculations
      • Muffin-tin potential/ASA potential/Full-potential
      • Non-relativistic/Scalar-relativistic/Fully-relativistic
      • LDA/GGA functionals from LibXC
    • Physical quantities that can be calculated
      • Energetics
      • The density of states and charge density in individual atomic volumes
      • The electronic charge and magnetic moment of individual atomic volumes
      • Hellman-Feynman force acting on each atom (which requires full-potential calculation)
      • Electronic conductivity/resistivity of random alloys

Electron localization: turning conductor into insulator using disorder.


One of the most prominent examples of the effect of disorder is the electron localization or the Anderson localization. This is a quantum effect when electron scattering off impurities causes their spatial confinement, i.e. localization. In 3D, such effect can be used to turn a conductor into an insulator at some critical value of disorder in a sample. image


Effective medium approaches of disordered systems


Coherent Potential Approximation (CPA)

One of the oldest and widely used effective medium approaches for disordered systems is the Coherent Potential Approximation (CPA). It is a local approximation that has been found to be very successful for the description of the spectral functions of the disordered medium.

The main approximation made in CPA is to assume the local translationally-invariant effective potential, i.e. the exact self-energy is approximated by a ”coherent potential”. As a result, the CPA is constructed in two steps: 1) map the original disorder lattice problem into an effective medium lattice problem; 2) determine the effective medium self-consistently by placing real impurity in the effective medium, and require that placing impurity does not change the effective medium, i.e. the disorder-average impurity Green's function and the local effective medium lattice Green's function are the same.

Numerically, the self-consistency loop is implemented as follows: image

The KKR-CPA approach uses such approximation in the MuST package.

The Typical Medium Method.


Ab initio approach to ordered structures

Korringa-Kohn-Rostoker (KKR) Method

The executable for running KKR calculations is MuST/bin/mst2 (or equivalently, MuST/MST/bin/mst2).


Ab initio approaches to disordered structures

Korringa-Kohn-Rostoker with Coherent Potential Approximation (KKR-CPA) Method

The executable for running KKR-CPA calculations is MuST/bin/mst2 (or equivalently, MuST/MST/bin/mst2).

Korringa-Kohn-Rostoker with Special Quasi-random Structure (KKR-SQS) Method

The special quasi-random structure method (SQS) method use a quasi-random configuration in a finite-size supercell to represent the true random configuration. The minimization of the correlation function is achieved through simulated annealing. MuST itself does not provide SQS generation capability, but one can obtain them easily by using the widely used ATAT package.

The installation of ATAT is simple. In the ATAT directory, type:make; make install;.

To generate SQS structure, you need two codes in ATAT: corrdump and mcsqs. First, you need to specify an input file named rndstr.in for corrdump. As an example, the input file for BCC random solid solution of Nb0.7Ti0.3, the rndstr.in file is:

1 1 1 90 90 90 
0.5 0.5 -0.5
0.5 -0.5 0.5 
-0.5 0.5 0.5 
.0 .0 .0 Nb=.7,Ti=.3 

Then you can generate two files cluster.out and sym.out with command: corrdump -l=rndstr.in -ro -noe -nop -clus -2=1.6 -3=1.11 The -2 and -3 flags specify the cut-off radii for pair and ternary interactions. For details you can refer to the ATAT manual.

Before running mcsqs, we also need to specify the supercell via the sqscell.out file. For example,

1 
5 0 0
0 3 0
0 0 2

builds a 5-3-2 BCC supercell. Now you can simply call mcsqs with mcsqs -rc. The program will keep running until you stop it. You can find the correlation functions of the generated structure in bestcorr.out. The generated SQS structure is stored in bestsqs.out.

In order to use the generated SQS structure in MuST, we need to convert 'bestsqs.out' to 'position.dat'. This input format conversion can be made with the following python code atat_2_mst.py.

import numpy as np
import os
import sys
try:
    material = str(sys.argv[1])
    lattice_const = float(sys.argv[2])
except:
    print("Error: Please specify material and lattice_constant!")
print("material: %s"%material)
print("lattice_const: %f"%lattice_const)
home_dir=os.getcwd()
file_mat = os.path.join(home_dir, material)
filename = os.path.join(file_mat, "bestsqs.out")
file_out = os.path.join(file_mat, "position.dat")
with open(filename) as file:
    data = [i.split() for i in file.readlines()]
ele_count = {}
with open(file_out, "w+") as file:
    file.write("%f\n"%lattice_const)
    file.write("\n")
    for line in data[3:6]:
        file.write("%s\t%s\t%s\n"%(line[0],line[1],line[2]))
    file.write("\n")
    for line in data[6:]:
        file.write("%s\t%s\t%s\t%s\n"%(line[3],line[0],line[1],line[2]))
        try:
            ele_count[line[3]] +=1
        except:
            ele_count[line[3]] = 1
print("atom count for each element")
print(ele_count)

For example, assuming bestcorr.out is in directory SQS/NbTi, put atat_2_mst.py in SQS, you need to type python atat_2_mst.py NbTi 6.0, then the position.dat file will be generated in SQS/NbTi. Note that NbTi is the name of the folder, and 6.0 is the lattice constant.


Locally Self-consistent Multiple Scattering (LSMS) Method


The executable for running LSMS calculation is MuST/bin/mst2 (or equivalently, MuST/MST/bin/mst2). Alternatively, one may choose to run MuST/bin/lsms (or equivalently, MuST/lsms/bin/lsms), which is the high performance version of LSMS with a different input data format than mst2.