Skip to content

Workflow

Oleg Rubel edited this page Jan 15, 2021 · 14 revisions

The purpose of this section is to explain internal workflow of BerryPI. Details of the workflow depend on options selected when running BerryPI.

  • Simplest case, 4x4x4 k mesh, no spin-polarization, no SOC, etc.
berrypi -k 4 4 4
|
Checking prerequisite files
(case.struct, case.inc)
|
cp case.struct to case.ksym
|
echo "0 4 4 4 0" | x kgen -fbz
(generate non-shifted k mesh on the whole Brillouin zone)
|
cp case.klist case.klist_w90
|
x lapw1
(get wavefunctions)
|
x lapw2 -fermi -in1orig
(get occupancy for bands)
|
read case.scf2 file
(determine the range of occupied bands [1, XX] 
unless specified as -b1:XX as a berrypi option)
|
write_inwf -mode MMN -bands 1 XX
(generate case.inwf)
|
write_win -band nofile
(generate case.win)
|
BerryPI/win2nnkp.py case
(generate case.nnkp)
|
create case.fermi
(put a dummy Fermi energy 0.0 inside to make w2w happy; 
the actual value is irrelevant)
|
x w2w
(generate case.mmn)
|
read case.mmn
(compute Berry phase based on overlap matrix 
elements in case.mmn and the associated electronic polarization)
|
read case.struct
(lattice type, lattice vectors, atomic position, Znucl)
|
read case.inc
(core charge for atoms)
|
calculate ionic polarization
|
add ionic and electronic polarization
|
write case.outputberry