Density of States and Fermi Surface Calculations of Ni

Jump to: navigation, search
Revision as of 12:43, 6 October 2021 by KogenceAdmin (talk | contribs) (Inserted image section)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


This example shows how to calculate the Density of States (DOS), band structure and Fermi Surface of Nickel (Ni) using pw.x solver of Quantum Espresso. We also demonstrate how to use Gnuplot and XCrysDen applications to plot and visualize the band structure and Fermi surface of Nickel.

First, look at the Stack tab of this Model. We create custom software stack by adding the Gnuplot and XCrysDen applications containers to out Model. We do not select any Entrypoint Binaries as we would invoke those binaries from a shell script This shell scripts will first call several Entrypoint Binaries from the Quantum Espresso container to create the data that we want to visualize and then it will call the Entrypoint Binaries from Gnuplot and XCrysDen applications to actually chart that data. Next we add the Quantum Espresso container to the Stack tab of this Model and select the bash-shell Entrypoint Binary and type in the Options/Arguments box. This will execute the inside the Quantum Espresso and would create sister containers of Gnuplot and XCrysDen when it encounter commands that does not belong to the Quantum Espresso conatiner.

Please looks at the The calculations in this script proceed as follows:

  • Make a self-consistent field (SCF) calculation for Ni (like in example 1). SCF is a common older terminology for Hartree-Fock methodology. Based on pseudo potentials provided the pw.x program first calculates an estimate of the stationary state wavefunctions at each k point and band (i.e. each Kohn-Sham state). The pw.x program then used 3D FFT (fast Fourier transforms) to calculate electron density, charge density and a new estimate of potentials. This process is repeated until self consistency is achieved. The simplest command to invoke pw.x for SCF calculation is:
    • pw.x < > ni.scf.out
    • On Kogence platform, you can parallelize pw.x over multiple threads, multiple processes or multiple servers on a cloud HPC cluster. Each of these require some simple modification to this basic invocation command. Please Quantum Espresso for more details.
  • Next, we calculate the band structure along Delta and Sigma using the pw.x program once more. Note that the pw.x program is capable of doing several types of calculations: 'scf', 'nscf', 'bands', 'relax', 'md', 'vc-relax' and 'vc-md'. The simplest command to invoke pw.x for band structure.
    • pw.x < >
  • Next, we project the wavefunctions to calculate the K-resolved PDOS (Projected Density of States) along Delta and Sigma lines computed above. We use the projwfc.x solver of Quantum Espresso. The program projfwc.x projects the crystal wavefunctions on an orthogonalized basis set of atomic orbitals, calculates the Loewdin charges, spilling parameter, and the projected DOS. The total DOS is saved in file ni.pdos_tot, while s and d component are saved in files ni.pdos_atm#1(Ni)_wfc#1(s) and ni.pdos_atm#1(Ni)_wfc#2(d) respectively.  
    • projwfc.x < > ni.kpdos.out
  • Next, we use Gnuplot to visualize the calculated K-resolved PDOS. This what is commonly known as "band structure" of Ni. Since we are simulating finite crystal size of Ni, the energy states are smeared. Meaning, for a given k, energy eigenvalues can take several values, though, there are a lot more energy eigen states closer to certain discrete values of energies for a given k (shown as bright colors on the chart below). As the number of Ni atoms in the crystal are increased, these would become mathematically well defined lines representing "band structure" that you typically see in text books. We invoke Gnuplot as:
    • gnuplot
  • Next, we make NSCF (non self-consistent-field) calculations, again using the pw.x solver. With the converged charge density results already calculated at the previous self-consistent run, one can construct the Kohn-Sham Hamiltonian and diagonalize it to obtain eigenvalues along the assigned K path (the "band" calculation) in reciprocal space or calculate the density of states on a denser uniform k grid (the "nscf" calculation). Uniform k-point grid is automatically generated. In this example the Fermi level is calculated with the tetrahedra method (not in the actual band structure calculation but in the DOS calculation step). If preferred, a gaussian broadening may be specified in this or in the subsequent step.
    • pw.x < > ni.dos.out
  • The program dos.x reads file filpun (ni.pun) and calculates the DOS on a uniform grid of energies from Emin to Emax, with grid step Delta E. The output DOS is in file ni.dos, ready for plotting.
    • dos.x < > ni.dos2.out
  • Next we show how to compute the Fermi Surface. Fermi Surface is an iso-energy surface in reciprocal space (the K space) for a specified value of energy. Once again we make a self-consistent calculation (pw.x < > ni.scf0.SP.out), followed by a non-scf calculation (pw.x< > ni.fs_SP.out) with tetrahedra (smearing is also OK as long as the Fermi energy is computed) and a dense automatic (Monkhorst-Pack) unshifted grid, using K_POINTS automatic 24 24 24 0 0 0. Finally, we run the fs.x utility. The code will select bands that cross the Fermi energy Ef+/-1eV (or Ef+/-DeltaE if specified) and write them into file, *_fs.bxsf for spin-unpolarized, *_fsup.bxsf and *_fsdw.bxsf for spin-polarized calculations.
  • Next we plot these Fermi Surfaces using xcrysden --bxsf *_fs.bxsf.


  • Band structure for down spin polarization

JobT181-results-kpdos dw.png

  • Band structure for up spin polarization

JobT181-results-kpdos up.png

  • Fermi Surfaces for a) non spin polarized case, b) down spin polarization and c) up spin polarization

Non Spin Polarized Fermi Surface of Ni.pngSpin Polarized Down Fermi Surface of Ni.pngSpin Polarized Up Fermi Surface of Ni.png

Model New Results

JobT181-kpdos up.png JobT181-kpdos dw.png

Software Used

Quantum Espresso


Quantum ESPRESSO is an integrated suite of computer codes for electronic-structure calculations and materials modeling at the nanoscale. It is based on density-functional theory, plane waves, and pseudopotentials. Quantum ESPRESSO has evolved into a distribution of independent and inter-operable codes. The Quantum ESPRESSO distribution consists of a core set of components (e.g. PWscf and CP), and a set of plug-ins that perform more advanced tasks, plus a number of third-party packages designed to be inter-operable with the core components.

For more details see Quantum Espresso .



CloudShell allow users to access a bash shell on a terminal emulator or execute a bash shell script either on a cloud based single node high performance computing (HPC) server or on the master node of autoscaling HPC cluster started on Kogence platform.

CloudShell cannot be invoked on the compute nodes of the cluster. Although, CloudShell can be used to run a shell script on the master node of the cluster that in can turn send job to the compute nodes of the cluster. Please see the documentation of relevant software application/simulator/solver on Kogence (Software Library) for the details on how to use CloudShell to schedule jobs on the compute nodes of an autoscaling HPC cluster on Kogence platform.

Using CloudShell on Kogence

To see detailed step-by-step instructions on how to use CloudShell on Kogence free cloud supercomputing platform [click here]. First create or copy an existing Model (see Model Library) on Kogence. Select your cloud cluster hardware on the Cluster tab on the top NavBar. Create your own custom software applications stack by selecting desired software on the Stack tab on the top NavBar. You can search and select CloudShell if you need a shell terminal or if you need to run a shell script. From the dropdown menu, select a binary. CloudShell has 2 binaries:

  1. shell-terminal: On the empty textbox next the binary dropdown menu, type the name of the terminal emulator you want. Currently, Kogence supports following terminal emulators
    1. gnome-terminal: You can find more information here.
    2. xterm: You can find more information here
  2. bash-shell: On the empty textbox next the binary dropdown menu, type the name of your shell script. Make sure your shell script is available under the Files tab of your Model before you Run your Model.

For more details see CloudShell .


Gnuplot inv.png Gnuplot is a portable command-line driven graphing utility. It is also used as a plotting engine by third-party applications like Octave. Gnuplot supports many different types of 2D and 3D plots. See the representative examples here. On Kogence, Gnuplot is used in several example workflows using Quantum Espresso.

For more details see Gnuplot .


XCrysDen is a crystalline and molecular structure visualization program. The name of the program stands for Crystalline Structures and Densities and X because it runs under the X-Window environment. It facilitates a display of isosurfaces and contours, which can be superimposed on crystalline structures and interactively rotated and manipulated. It also possesses some tools for analysis of properties in reciprocal space such as interactive selection of k-paths in the Brillouin zone for the band-structure plots, and visualization of Fermi surfaces.

For more details see XCrysDen .