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
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_filepath to the structure file which defines the volume of the unit cell
-d, --dos_filepath to the file which defines the dos
if this argument is specified, you must also specify
-b, --band_gapwhich gives the bulk band-gap of the system.
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
--frozen_defects when you call