Fermi Surface Visualization

by Dmitrii Nabok & Caterina Cocchi for exciting neon

(Jupyter notebook by Mara Voiculescu & Martin Kuban)


Purpose: In this tutorial, it will be shown how you can use exciting to calculate and visualize the Fermi surface of gold.



0. Before Starting

Read the following paragraphs before starting with the rest of this tutorial!

Before running any Jupyter tutorials, please refer to the 00_before_starting.md document on how to correctly set up the environment. This only needs to be done once. After which, the venv can be (re)activated from exciting's root directory:

source tools/excitingjupyter/venv/excitingvenv/bin/activate

As a first step, you may create a running directory for the notebook.

In [1]:
%%bash
mkdir -p run_tutorial_fermi_surface


1. Fermi Surface 3D Plot

A general input file for generating the Fermi surface of gold should look like this:

<input>

   <title>Gold</title>

   <structure speciespath="$EXCITINGROOT/species" autormt="true">
      <crystal scale="7.707">
         <basevect> 0.5  0.5  0.0 </basevect>
         <basevect> 0.5  0.0  0.5 </basevect>
         <basevect> 0.0  0.5  0.5 </basevect>
      </crystal>
      <species speciesfile="Au.xml">
         <atom coord="0.0 0.0 0.0"/>
      </species>
   </structure>

   <groundstate 
      do="fromscratch"
      xctype="GGA_PBE_SOL"
      rgkmax="8.0" 
      ngridk="8 8 8"
      nempty="10"
      stype="Methfessel-Paxton 1"
      swidth="0.01"
      >
   </groundstate>

   <properties>
      <fermisurfaceplot nstfsp="6">
         <plot3d>
            <box grid="40 40 40" >
               <origin coord="0 0 0"/>
               <point  coord="1 0 0"/>
               <point  coord="0 1 0"/>
               <point  coord="0 0 1"/>
            </box>
         </plot3d>
      </fermisurfaceplot>
   </properties>

</input>

To perform the actual calculation, make sure to set $EXCITINGROOT to the correct exciting root directory in the speciespath attribute using the command

In [3]:
%%bash
cd run_tutorial_fermi_surface
python3 -m excitingscripts.setup.excitingroot
cd ..

Assuming that you are already familiar with the groundstate block in the input file, we now focus on the properties block:

...
   <properties>
      <fermisurfaceplot nstfsp="6">
         <plot3d>
            <box grid="40 40 40" >
               <origin coord="0 0 0"/>
               <point  coord="1 0 0"/>
               <point  coord="0 1 0"/>
               <point  coord="0 0 1"/>
            </box>
         </plot3d>
      </fermisurfaceplot>
   </properties>
...

The element fermisurfaceplot triggers the calculation of the Fermi surface. The value of the attribute nstfsp indicates the number of bands which are considered to compute the Fermi surface. In this case we choose 6, which also corresponds to the default value for this attribute (see Input Reference). By specifying the element plot3d we are generating a 3D representation of the Fermi surface. For a complete description of the functionality of this element and of its sub-elements refer to the tutorial How to visualize Kohn-Sham states.

Now you can start the calculation by executing the following command.

In [ ]:
%%bash
cd run_tutorial_fermi_surface
time $EXCITINGROOT/bin/exciting_smp input.xml
cd ..

An output file FERMISURF.bxsf is generated. It is already suitable for visualization with XCrySDen, by typing:

In [5]:
%%bash
cd run_tutorial_fermi_surface
xcrysden --bxsf FERMISURF.bxsf >/dev/null 2>&1 &
cd ..

$\Rightarrow$ How to visualize bxsf files using XCrySDen

The visualization of bxsf files with XCrySDen differs with respect to that of xsf files. In fact, the bxsf format is specifically designed to visualize Fermi surfaces as a bandgrid is printed in the file. Further details about this file format can be found here.

Typing the shell command

xcrysden --bxsf FERMISURF.bxsf >/dev/null 2>&1&

two small windows open on the screen. One contains the XCrySDen logo, while the other one is a small dialog window, where the Fermi energy should be specified. Please note, that for convenience, in the exciting output FERMISURF.bxsf all energies are already shifted by the Fermi energy so the required input at this step is 0.0.

Then, press OK. Three windows will appear:

  • one named Band width reports a number of text lines with the energy range of each band;
  • another one called BARGraph contains the width of each considered band and its position with respect to the Fermi energy. The information contained in this window is a guideline to select the bands in the next window;
  • in the third window Select Bands, one should select the bands to interpolate, among those which have been included. From the BARGraph window it is evident that only band 4 contributes to the Fermi surface.

After the selected bands have been ticked, press Selected. At this point, a visualization window with the Brillouin zone (BZ) appears. For all the details about the surface rendering and interpolation, we refer to XCrySDen webpage about bxsf files.

In the visualization window, there are a number of tabs, one for each band and a last one named Merged Bands. Click on this tab and the plot appears. By clicking and moving the mouse on the visualization window, one can rotate the BZ.


As a result of the visualization, one should obtain something similar to the following figure:

Exercise

  • Plot the Fermi surface for silver and aluminum. Analyze the band structure using the BARGraph tool in XCrySDen. How many bands contribute to the Fermi surface for Ag? How many for Al?