Example 1: Electronic structure of III-V semiconductors

Let assume we plan to generate the TB hamiltonians for selected III-V semiconductors (AlP, GaP, InP, AlAs, GaAs, AlSb, GaSb, and InSb) from the electronic structure generated without and with the ACBN0 approach. In a prototypical reference input file (e.g. mHT_TB.ref) the labels for the atomic species are substituted with the variables _AFLOWPI_A_ and _AFLOWPI_B_. That input combined with the list of chemical substitutions is processed by AFLOWπ in order to prepare a pipeline of calculations starting with the determination of the ground state potential (session.scfs), the structural relaxations (calcs.vcrelax), and the generation of the TB hamiltonian (calcs.tight_binding) including plots for the densities of states and the band structures. The command AFLOWpi.prep.init()initiates the AFLOWπ session and requires a project name and the name of the configuration file as input. AFLOWpi.prep.init() returns a session object which has methods to form the calculation sets. Then the workflow continues with the self-consistent calculation of the Hubbard corrections (calcs.acbn0) before recalculating a new TB hamiltonian and new plots. At the end of the user’s AFLOWπ script, the command calcs.submit must be included to run the calculation workflow (see Figure). Below, we show plots generated by AFLOWπ before and after the ACBN0 cycle. It is interesting to pinpoint the corrections of the band gap and the modification of the dispersion relationships. All the tight-binding hamiltonians are stored as XML files and can be distributed independently.

import AFLOWpi
session = AFLOWpi.prep.init(’mHT TB’,
 → ’III−V’,config=’./mHT_TB.config’) 
allvars = {}
allvars.update()
_AFLOWPI_A_ = (’Al’,’Ga’,’In’),
_AFLOWPI_B_ = (’P’ ,’As’,’Sb’),)
calcs = session.scfs(allvars,’mHT_TB.ref’) 
calcs.vcrelax()
tb_ham = calcs.tight_binding()
tb_ham.dos()
tb_ham.bands()
tb_ham.plot.bands(DOSPlot=’APDOS’) 
calcs.acbn0()
tb_ham = calcs.tight_binding()
tb_ham.dos()
tb_ham.bands()
tb_ham.plot.bands(DOSPlot=’APDOS’) 
calcs.submit()
              

Example 2: Phonons of binary halides

In order to show how the calculations of phonon dispersions with AFLOWπ we analyzed a small chemical space of alkali halides AX with (A=Li, Na, K and X=F, Cl, Br) with the NaCl and the CsCl structures. Notice the use of the zip mode to specify the chemical space and the use of two reference files for the NaCl and CsCl structure, respectively. Elastic constants are computed solely on the NaCl structure.

import AFLOWpi
# Create AFLOWpi session
ses_CsCl = AFLOWpi.prep.init(’Halide’, ’CsCl’,config =’./phonon.config’) 
ses_NaCl = AFLOWpi.prep.init(’Halide’, ’NaCl’,config =’./phonon.config’) 
# Generate a calculation set from a reference input file
allvars ={”_AFLOWPI_A_”:(”Li”,”Na”,”K”,), ”_AFLOWPI_B_”:(”F”,”Cl”,”Br”,”I”),}
CsCl = ses_CsCl.scfs(allvars,’CsCl.ref’,) 
NaCl = ses_NaCl.scfs(allvars,’NaCl.ref’,) 
#do a vc−relax
CsCl.vcrelax()
NaCl.vcrelax()
# change the thresholds in the input files
# changing input for a step are called after
# the call for the step. the change calcs
# below affect the vc−relax above
CsCl.change_input(”&control”,”etot_conv_thr”,”1.0D−5”)
CsCl.change_input(”&control”,”forc_conv_thr”,”1.0D−4”)
CsCl.change_input(”&electrons”,”conv_thr”,”1.0D−16”)
NaCl.change_input(”&control”,”etot_conv_thr”,”1.0D−5”)
NaCl.change_input(”&control”,”forc_conv_thr”,”1.0D−4”)
NaCl.change_input(”&electrons”,”conv_thr”,”1.0D−16”)
#do another relax just to be safe
CsCl.vcrelax()
NaCl.vcrelax()
#do phonon calculations with 2x2x2 supercell
CsCl.phonon(mult_jobs=True,nrx1=3,nrx2=3,nrx3=3,innx=2,
 → de=0.003,LOTO=True,field_strength=0.003,
 → disp_sym=True,atom_sym=False,)
NaCl.phonon(mult_jobs=True,nrx1=3,nrx2=3,nrx3=3,innx=2,
 → de=0.003,LOTO=True,field_strength=0.003,
 → disp_sym=True,atom_sym=False,) #plot the phonons
NaCl.plot.phonon(postfix=’NaCl’)
CsCl.plot.phonon(postfix=’CsCl’)
# do the elastic constants with the ElaStic Package
# Install: http://exciting−code.org/elastic
NaCl.elastic(mult_jobs=False,num_dist=10,eta_max=0.001) 
#do acbn0 to do phonon with self−consistently
#determined Hubbard U. Changing the cell while
#converging the U should be done with caution. 
NaCl.scfuj(relax=’vc−relax’)
CsCl.scfuj(relax=’vc−relax’)
NaCl.elastic(mult_jobs=False,num_dist=10,eta_max=0.001) 
NaCl.phonon(mult_jobs=True,nrx1=3,nrx2=3,nrx3=3,innx=2,
 → de=0.003,LOTO=True,field_strength=0.003,
 → disp_sym=True,atom_sym=False,)
CsCl.phonon(mult_jobs=True,nrx1=3,nrx2=3,nrx3=3,innx=2,
 → de=0.003,LOTO=True,field_strength=0.003,
 → disp_sym=True,atom_sym=False,) 
CsCl.plot.phonon(postfix=’CsCl_acbn0’) 
NaCl.plot.phonon(postfix=’NaCl_acbn0’)
# submit the calcs to run
calcs.submit()
              

Example 3: Optical and transport properties of layered nitrides

Layered nitrides with chemical formula AMN2 were studied earlier from the point of view of thermoelectric potentials and superconductivity. As an example we analyze the same chemical space (A=Sr, Ba and M=Ti, Zr, Hf) from the point of view of the electronic transport in the constant relaxation time approximation and the optical properties within the independent electronic approximation. Using well converged basis sets and k-space sampling, we have determined the electrical conductivity, the Seebeck coefficient, and the the complex dielectric functions with and without ACBN0.

import AFLOWpi
session = AFLOWpi.prep.init(’Transport’, ’Si’,
 → config=’./transport.config’)
calcs = session.from_file(’transport.in’)
calcs.vcrelax()
# get PAO−TB hamiltonian
calcs_TB = calcs.tight_binding()
# optical and transport properties
calcs_TB.epsilon()
calcs_TB.transport()
# plot optical and transport properties
calcs_TB.plot.transport()
calcs.submit()