X-Ray Emission Spectra

by Christian Vorwerk for exciting neon

(Jupyter notebook by Megha Arya and Mara Voiculescu)


Purpose: In this tutorial, we will show how to perform X-ray emission spectra (XES). To do so, we show the example of the F K-edge emission in LiF.



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


1. Introduction

The calculation of x-ray emission spectra is similar to that of the x-ray absorption spectra, and we will assume in the following that you have already finished the tutorial Excited states from BSE. The main difference resides in the initial states of the transitions, which are core states. As such, they are solutions of the radial Dirac equation in the muffin-tin spheres.

A description of the basic setup for BSE calculations can be found in the tutorial X-ray Absorption Spectra using BSE. In addition, all the input parameters are described in Input Reference. Note that, in order to obtain reliable X-ray emission spectra, the calculation needs to be converged with respect to several parameters, such as the size of the k-mesh.


2. The F-K Edge in LiF

In a first step, we calculate the electronic groundstate of LiF with the following input file (do not forget to change the path in speciespath).

<input>                                                                         

   <title>LiF-BSE: Ground-State Calculation</title>                                                       

   <structure speciespath="$EXCITINGROOT/species">                                                 
      <crystal scale="7.608">                                                   
         <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="F.xml">                                             
         <atom coord="0.5000  0.5000  0.5000" />                                
      </species>
      <species speciesfile="Li.xml">                                            
         <atom coord="0.0000  0.0000  0.0000" />                                
      </species>                                                                                                     </structure>                                                                 

   <groundstate                                                                 
      do="fromscratch"                                                          
      ngridk="10  10  10"                                                       
      xctype="GGA_PBE_SOL"                                                      
      gmaxvr="14.0"/> 
</input>

Create a new directory, which you can call, e.g., run_LiF_XES.

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

Then, save the text of the example above for the ground state of LiF into the file input.xml

Replace the $EXCITINGROOT variable with the correct path by using the command:

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

Run the ground-state calculation with the usual command:

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

After the ground-state calculation is completed, we inspect the output file EVALCORE.OUT, which contains the information about core electrons. Since we are interested here in the excitations from the flouride K-edge, we have to look specifically for the F 1*s* electron. For this purpose we have to consider the core state with quantum numbers *n*=1 and *l*=0:

Species :    1 (F), atom :    1
 n =  1, l =  0, k =  1 :   -23.88933298

From the file EVALCORE.OUT we obtain the information that the F 1*s* electron in LiF has a binding energy of about -23.89 Ha. With this knowledge, we can add to the input file the parameters required to perform a XES calculation. Since we are dealing with excited-state properties, we have to insert the xs element. Add the following block into the input file:

...

   <xs                                                                             
      xstype="BSE"                                                              
      ngridk="4 4 4"                                                            
      vkloff="0.097 0.273 0.493"                                                
      ngridq="4 4 4"                                                            
      nempty="30"                                                               
      gqmax="3.0"                                                               
      broad="0.007"                                                             
      scissor="0.20947"                                                         
      tevout="true">                                                            

      <energywindow                                                             
         intv="23.9 24.1"                                                       
         points="1200"/>                                                        

      <screening                                                                
         screentype="full"                                                      
         nempty="100"/>                                                         

      <BSE                                                                      
         xes="true"                                                             
         bsetype="IP"                                                      
         xasspecies="1"                                                         
         xasatom="1"                                                            
         nstlxas="1 5"                                                          
         />                                                                     

      <qpointset>                                                               
         <qpoint>0.0 0.0 0.0</qpoint>                                           
      </qpointset>                                                              

   </xs>  

...

You should be already familiar with many parameters shown above. However, three parameters are unique for XES calculations:

  • The attribute xes="true" in the BSE element triggers the x-ray emission calculation;
  • In XES calculations, the attribute nstlxas describes the number of occupied states used in the BSE-Hamiltonian. In the XES process, valence electrons fill the core hole, and with this parameter, we specify which valence states are included in the calculation. In the example above, we use all 5 valence bands of LiF.
  • While for x-ray absorption, the interaction of the excited electron and the core hole has a significant influence on the spectrum, there is no core hole in the final state of the x-ray emission process. Therefore, bsetype="IP" has to be chosen to obtain results that can be compared with experimental ones. More details can be found here.

Do not forget to skip the ground-state run by inserting the attribute do="skip" inside the groundstate element.

We are now ready to run the calculation with the usual command:

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

The calculation will run for a few seconds. The output will be the same as those described in the tutorial Excited states from BSE. The x-ray emission spectra are given by the imaginary part of the dielectric function (as in the case of x-ray absorption).

In order to visualize the results, we execute the following commands:

In [12]:
%%bash
cd run_LiF_XES
cp EPSILON/EPSILON_BSE-IP_SCR-full_OC11.OUT epsilon-IP
python3 -m excitingscripts.plot.files -f epsilon-IP  -lx 'Energy [eV]'  -ly 'Im $\varepsilon_M$'  -t 'Macroscopic dielectric function'  -g  -rc  -cy 3  -x 650 656  -nl
cd ..