Bloch Representation Analysis and Visualization Environment (BRAVE)
BRAVE is a Python package that includes several modules for parsing the output files of different electronic structure codes, generating the input files for subsequent calculations, and analyzing and plotting the calculation results. It is also the main pre- and post-processing tool for computing electronic transport properties with EPA code. For details please refer to the documentation on individual modules.
import brave
help(brave)
help(brave.cell)
help(brave.kpoint)
help(brave.energy)
help(brave.dos)
help(brave.epa)
help(brave.transport)
help(brave.plot)
help(brave.diagram)
The following code parses the output file of Quantum Espresso and generates the input files for BoltzTraP.
import brave
bnd = brave.Energy()
bnd.read('pw-out', ['silicon.pw.out'])
bnd.calc_efermi()
bnd.write('boltztrap-in', ['silicon.def', 'silicon.intrans', 'silicon.struct', 'silicon.energy'])
An extended version of this code is located in test/silicon/6_boltz/qe2boltz.py.
Supported codes and the corresponding arguments used by BRAVE
Code | Executable | Access | fileformat | filenames |
---|---|---|---|---|
rw | 'internal' | 'prefix.brave' | ||
Quantum Espresso | pw.x | w | 'pw-in' | 'prefix.in' |
Quantum Espresso | pw.x | r | 'pw-out' | 'prefix.out' |
Quantum Espresso | bands.x | r | 'bands-out' | 'bands.out' |
Quantum Espresso | matdyn.x | r | 'matdyn-out' | 'matdyn.modes' |
Quantum Espresso | matdyn.x | r | 'matdyn-dos' | 'prefix.vdos' |
Quantum Espresso | epa.x | r | 'epa-out' | 'prefix.epa.e' |
BerkeleyGW | inteqp.flavor.x | r | 'inteqp-out' | 'bandstructure.dat' |
BerkeleyGW | sigma.flavor.x | r | 'sigma-out' | 'sigma_hp.log' |
Wannier90 | wannier90.x | rw | 'wannier-in' | 'seedname.win' |
Wannier90 | wannier90.x | r | 'wannier-out' | 'seedname_band.dat' |
VASP | vasp | w | 'vasp-kpt' | 'KPOINTS' |
VASP | vasp | r | 'vasp-out' | 'OUTCAR' |
WIEN2k | lapw1 | w | 'lapw-kpt' | 'case.klist_band' |
WIEN2k | lapw1 | r | 'lapw-out' | 'case.output1' |
BoltzTraP | BoltzTraP | w | 'boltztrap-in' | 'case.def', 'case.intrans', 'case.struct', 'case.energy' |
BoltzTraP | BoltzTraP | r | 'boltztrap-out' | 'case.intrans', 'case.trace' |
BoltzTraP | BoltzTraP | r | 'boltztrap-dos' | 'case.intrans', 'case.transdos' |
Access indicates whether BRAVE can read and/or write the corresponding filenames.
Some codes use separate files for different spin components
Code | Executable | Access | fileformat | filenames |
---|---|---|---|---|
Quantum Espresso | bands.x | r | 'bands-out' | 'bands.outup', 'bands.outdn' |
Wannier90 | wannier90.x | r | 'wannier-out' | 'seedname_band.datup', 'seedname_band.datdn' |
WIEN2k | lapw1 | r | 'lapw-out' | 'case.output1up', 'case.output1dn' |
BoltzTraP | BoltzTraP | w | 'boltztrap-in' | 'case.def', 'case.intrans', 'case.struct', 'case.energyso' |
Notes on Fermi level
-
For insulators, use method calc_efermi of class Energy to set the Fermi level in the middle of the band gap. For metals, do not use this method as the correct Fermi level was already read from the DFT output files.
-
When reading fileformats 'epa-out', 'boltztrap-dos', and 'boltztrap-out', the energy scale is shifted to set the Fermi level to zero. Hopefully this brings more convenience than confusion.
Notes on different codes
- pw.x must be run with 'verbosity = "high"' to force writing symmetry operations and k-points to file 'prefix.out'.
- Attribute kpoint of class Kpoint is not available from the input or output files of wannier90.x. It can be constructed from attributes kpath and kindex read from file 'seedname.win' using methods calc_kindex and calc_kpoint.
- Symmetry operations are not available from the input or output files of vasp. They can be constructed from file 'POSCAR' using ASE and SPGLIB as done in BoltzTraP vasp2boltz.py. This is currently not implemented in BRAVE.
- File 'case.struct' contains symmetry operations in cartesian coordinates. They can be read by BRAVE and converted to crystal coordinates. This is currently not implemented in BRAVE.
- If lapw1 is run in parallel file 'case.output1' can be gathered by running spaghetti or manually
cat case.output1_? > case.output1
cat case.output1_?? >> case.output1
License
See the LICENSE file for license rights and limitations (MIT).