CLI tutorial
Inputs
py-sc-fermi
features a command line tool for calculating self consistent Fermi
energies. In this case defect system is defined by a .yaml
file structured like so:
bandgap: 1 # replace with your calculated bandgap
temperature: 300 # the temperature to be used in the solution for Fermi energy
nelect: 18 # number of electrons in the density of states calculation carried out on the unit cell
defect_species:
- V_Na: # name of first defect species
nsites: 1 # site degeneracy of the defect species
charge_states:
0: # charge of first charge state
charge: 0
formation_energy: 2 # formation energy of first charge state
degeneracy: 1 # degeneracy of first charge state
-1:
charge: -1
formation_energy: 1
degeneracy: 2
... # repeat for each defect in your system
The dimension of the unit cell can be given within a .cif
file (or a number of other
common structure files), or as a file which is structured as:
1 # scaling factor for lattice vector components
4.1 0.0 0.0
0.0 4.1 0.0
0.0 0.0 4.1
where the matrix above defines the lattice vector of the unit cell. Alternatively,
we can skip the definition of the full unit cell, and simply include volume: x
(where
x
is the unit cell volume) in the .yaml
file described above.
The density of states can either be specified in the .yaml
file as:
...
edos: [energy values of the dos]
dos: [array of total dos values]
...
or the density of states can be read directly from a vasprun.xml
file.
sc_fermi_solve
the command to solve for the self consistent Fermi energy once you have specifed
the inputs as above is sc_fermi_solve [input .yaml]
. If the .yaml
file specifies
the volume and dos information for your system, this is all you need to do. Otherwise, there
are some additional arguments accepted by this command:
-s, --structure_file
path to the structure file which defines the volume of the unit cell
-d, --dos_file
path to the file which defines the dos
if this argument is specified, you must also specify
-b, --band_gap
which gives the bulk band-gap of the system.
frozen-concentration defects
You are able to specify the concentrations of different defects in the solver, just as with the API. In this case, you may either fix the concentration of the defect species by specifying e.g:
defect_species:
- V_Na:
fixed_concentration: 1e20
...
and specify the concentration of a defect charge state like so:
defect_species:
- V_Na:
nsites: 1
charge_states:
-1:
charge: -1
formation_energy: 1
fixed_concentration: 1e20
degeneracy: 1
...
within the input .yaml
file. If you do so, you must add the flag -f
or
--frozen_defects
when you call sc_fermi_solve
.