[Wannier] Boltzmann transport

Giovanni Pizzi giovanni.pizzi at epfl.ch
Fri Dec 20 21:59:00 CET 2013

On 20 Dec 2013, at 19:52, Yongsheng Zhang wrote:

Dear Wannier90,

I am trying to use Wannier90 to calculate the Boltzmann transport of silicon as described in the tutorial (example16). Following the steps in the tutorial, I successfully obtain all Boltzmann output files, such as silicon_seebeck.dat. In the further step to test the convergence of the transport properties, I increase the k-mesh to 60x60x60. But running 'postw90' gives an error "Problem reading eigenvalue file Si.eig". I understand it is because the number of k-points in the si.win doesn't match with those in si.eig. Obviously, redo 'pwscf' 'nscf' calculations with (60x60x60) will solve the problem. But it is very time-consuming. I thought Wannier90 could interpolate the (60x60x60) eigenvalues by using the DFT calculated less-dense k-meshes. Could you please let me know how to do that?

Dear Yongsheng,
which flag did you change to increase the mesh to 60x60x60?

You should set
kmesh = 60 60 60
(or equivalently
kmesh = 60
that identifies the grid for the interpolation, while you should leave unchanged the mp_grid and the list of kpoints, that instead identify the kpoints used for the Wannierisation procedure.
After this, just running postw90.x should give you the results interpolated on the 60x60x60 mesh (of course, calculated from the Wannier functions calculated on the less-dense k-mesh) at a very small cost.

Another question is about how to calculate the Seebeck coefficient as a function of the temperature. Even though the tutorial describes it in the example16, I didn't fully get it. The doping concentration is not only a function of temperature but also depends on the effective mass of electron/hole. Can I find the mass somewhere in the Wannier90 output? Can you provide a S(T) plot of Si? I can use it to calibrate my calculations. Generally, could Wannier90 provide a program to calculate S(T) directly?

Indeed, the code does not print S(T), but S(T,mu), where mu is the chemical potential.
To keep the code general, we chose for the time being to print this quantity, and not to calculate S(T) as a function of the chemical potential.

We also did not implement a simple effective-mass model, that would be less accurate, and material-dependent, in general (e.g. it would miss band non-parabolicities, and would need to be generalized if you have multiple valleys, or in general more band minima/maxima around the same energy), even if I agree that in many systems it can be a good and effective approximation.
Unfortunately, the current version does only calculate first derivatives of the band structure, and not second derivatives, mainly for lack of time on our side. BTW, this is a good exercise if you want to hack in the code; how to do it is explained here: http://dx.doi.org/10.1103/PhysRevB.75.195121

However, the code calculates also the DOS (by the way, you can calculate the DOS at the same time as the Seebeck coefficient with minimum computational overhead using the boltz_calc_also_dos flag).

You can then integrate (DOS * fermi_dirac distribution) at your temperature to find the chemical potential mu = mu(temperature, doping) for your doping level.
At this point you have both T and mu, and you can use the output of the code to get S(T,mu). This, by the way, is what we did in the last figure of the BoltzWann paper:

Hope this helps,

Giovanni Pizzi


Materials Science & Engineering
Northwestern University
Wannier mailing list
Wannier at quantum-espresso.org<mailto:Wannier at quantum-espresso.org>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quantum-espresso.org/pipermail/wannier/attachments/20131220/47af623a/attachment.html>

More information about the Wannier mailing list