From 5e17d333ee694f2e63c9781d5e31b04bc09d2c46 Mon Sep 17 00:00:00 2001 From: "leonid@cpht.polytechnique.fr" Date: Fri, 27 Apr 2018 12:14:50 +0200 Subject: [PATCH 1/3] thermal cond. added to conductivity_and_seebeck --- python/sumk_dft_tools.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/python/sumk_dft_tools.py b/python/sumk_dft_tools.py index 8d0dd2de..284ffcd3 100644 --- a/python/sumk_dft_tools.py +++ b/python/sumk_dft_tools.py @@ -934,6 +934,9 @@ class SumkDFTTools(SumkDFT): seebeck : dictionary of double Seebeck coefficient in each direction. If zero is not present in Om_mesh the Seebeck coefficient is set to NaN. + + kappa : dictionary of double. + thermal conductivity in each direction. If zero is not present in Om_mesh the thermal conductivity is set to NaN """ if not (mpi.is_master_node()): @@ -947,7 +950,10 @@ class SumkDFTTools(SumkDFT): for direction in self.directions} A1 = {direction: numpy.full((n_q,), numpy.nan) for direction in self.directions} + A2 = {direction: numpy.full((n_q,), numpy.nan) + for direction in self.directions} self.seebeck = {direction: numpy.nan for direction in self.directions} + self.kappa = {direction: numpy.nan for direction in self.directions} self.optic_cond = {direction: numpy.full( (n_q,), numpy.nan) for direction in self.directions} @@ -957,21 +963,28 @@ class SumkDFTTools(SumkDFT): direction, iq=iq, n=0, beta=beta, method=method) A1[direction][iq] = self.transport_coefficient( direction, iq=iq, n=1, beta=beta, method=method) + A2[direction][iq] = self.transport_coefficient( + direction, iq=iq, n=2, beta=beta, method=method) print "A_0 in direction %s for Omega = %.2f %e a.u." % (direction, self.Om_mesh[iq], A0[direction][iq]) print "A_1 in direction %s for Omega = %.2f %e a.u." % (direction, self.Om_mesh[iq], A1[direction][iq]) + print "A_2 in direction %s for Omega = %.2f %e a.u." % (direction, self.Om_mesh[iq], A2[direction][iq]) if ~numpy.isnan(A1[direction][iq]): - # Seebeck is overwritten if there is more than one Omega = + # Seebeck and kappa are overwritten if there is more than one Omega = # 0 in Om_mesh self.seebeck[direction] = - \ A1[direction][iq] / A0[direction][iq] * 86.17 + self.kappa[direction] = A2[direction][iq] - A1[direction][iq]*A1[direction][iq]/A0[direction][iq] + self.kappa[direction] *= 293178.0 self.optic_cond[direction] = beta * \ A0[direction] * 10700.0 / numpy.pi for iq in xrange(n_q): print "Conductivity in direction %s for Omega = %.2f %f x 10^4 Ohm^-1 cm^-1" % (direction, self.Om_mesh[iq], self.optic_cond[direction][iq]) if not (numpy.isnan(A1[direction][iq])): print "Seebeck in direction %s for Omega = 0.00 %f x 10^(-6) V/K" % (direction, self.seebeck[direction]) + print "kappa in direction %s for Omega = 0.00 %f W/(m * K)" % (direction, self.kappa[direction]) + + return self.optic_cond, self.seebeck, self.kappa - return self.optic_cond, self.seebeck def fermi_dis(self, w, beta): r""" From 3cfca94b1fde05abbd983ba49c5856ad95bec19b Mon Sep 17 00:00:00 2001 From: Manuel Date: Mon, 30 Apr 2018 11:07:13 -0400 Subject: [PATCH 2/3] Include kappa in transport test --- test/srvo3_transp.py | 2 +- test/srvo3_transp.ref.h5 | Bin 7352 -> 8456 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/test/srvo3_transp.py b/test/srvo3_transp.py index 920459f0..75627613 100644 --- a/test/srvo3_transp.py +++ b/test/srvo3_transp.py @@ -46,7 +46,7 @@ SK.transport_distribution(directions=['xx'], broadening=0.0, energy_window=[-0.3 #SK.load(['Gamma_w','Om_meshr','omega','directions']) SK.conductivity_and_seebeck(beta=beta) SK.hdf_file = 'srvo3_transp.out.h5' -SK.save(['seebeck','optic_cond']) +SK.save(['seebeck','optic_cond','kappa']) if mpi.is_master_node(): h5diff("srvo3_transp.out.h5","srvo3_transp.ref.h5") diff --git a/test/srvo3_transp.ref.h5 b/test/srvo3_transp.ref.h5 index e452ea33812190d308248dc0b2f44d66c46dcbe9..1e5961bfb98faff22d44e3d939256a3c8dcf70d9 100644 GIT binary patch delta 580 zcmdmC+2J%ngNZ|Nqm~;pBgf`KW^*R??8JhCLsc!q6&V>=7#JBC7$krg1O$K( z1Uf{)6hpyeMRs*22a(NQ>|#ue6DB8e#!r60%2v#(AfJ^~_6;S>OSqL9u z9s|P2dLE?5H5oTJA?sK7XalKa6%P;sEK8cE?4fd-<-&EpMCOuRzW5M?u{GG7$-?{ zh@zX!!{ETcGC7vp*^q$&<{Fq=u!oWW)US|GIw1)TC8h+4$-B7YCKrfjF?sMzz9X&x zcIG6B2~0aAV0NSXo^-osC_vl>u{%H>V)qMKu-y(KQH&9jXNxGpLkJja0!$8aF#FMC M32r|yx={TN02x?Z+5i9m delta 447 zcmeBh+F?0CgK3A%MlCmHMup9V%;rq&#i^-Dsma-!*RxhKPF^9cz?2}p`INL66H^A~ zOy^4_F153dA>VG-I4B zAk86)?n9VMTqkb5238;-264LqG%R5XoP{8P$H>3|^_+tU$W(!MRmBS&zt6Sr=4rU( I8qsAB0IMilUH||9 From 88bf0fd4356033ee0bcb943e767d86c5a604d70d Mon Sep 17 00:00:00 2001 From: Manuel Date: Mon, 30 Apr 2018 11:43:58 -0400 Subject: [PATCH 3/3] Include thermal conductivity in transp doc --- doc/guide/transport.rst | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/doc/guide/transport.rst b/doc/guide/transport.rst index 46b80306..ba7a06ce 100644 --- a/doc/guide/transport.rst +++ b/doc/guide/transport.rst @@ -5,11 +5,19 @@ Transport calculations Formalism --------- -The conductivity and the Seebeck coefficient in direction :math:`\alpha\beta` are defined as [#transp]_: +The conductivity, the Seebeck coefficient and the electronic contribution to the thermal conductivity in direction :math:`\alpha\beta` are defined as [#transp1]_ [#transp2]_: .. math:: - \sigma_{\alpha\beta} = \beta e^{2} A_{0,\alpha\beta} \ \ \ \text{and} \ \ \ S_{\alpha\beta} = -\frac{k_B}{|e|}\frac{A_{1,\alpha\beta}}{A_{0,\alpha\beta}}, + \sigma_{\alpha\beta} = \beta e^{2} A_{0,\alpha\beta} + +.. math:: + + S_{\alpha\beta} = -\frac{k_B}{|e|}\frac{A_{1,\alpha\beta}}{A_{0,\alpha\beta}}, + +.. math:: + + \kappa^{\text{el}}_{\alpha\beta} = k_B \left(A_{2,\alpha\beta} - \frac{A_{1,\alpha\beta}^2}{A_{0,\alpha\beta}}\right), in which the kinetic coefficients :math:`A_{n,\alpha\beta}` are given by @@ -102,7 +110,7 @@ As next step we can calculate the transport distribution :math:`\Gamma_{\alpha\b Here the transport distribution is calculated in :math:`xx` direction for the frequencies :math:`\Omega=0.0` and :math:`0.1`. To use the previously obtained self energy we set with_Sigma to True and the broadening to :math:`0.0`. -As we also want to calculate the Seebeck coefficient we have to include :math:`\Omega=0.0` in the mesh. +As we also want to calculate the Seebeck coefficient and the thermal conductivity we have to include :math:`\Omega=0.0` in the mesh. Note that the current version of the code repines the :math:`\Omega` values to the closest values on the self energy mesh. For complete description of the input parameters see the :meth:`transport_distribution reference `. @@ -114,10 +122,10 @@ You can retrieve it from the archive by:: SK.Gamma_w, SK.Om_meshr, SK.omega, SK.directions = SK.load(['Gamma_w','Om_meshr','omega','directions']) -Finally the optical conductivity :math:`\sigma(\Omega)` and the Seebeck coefficient :math:`S` can be obtained with:: +Finally the optical conductivity :math:`\sigma(\Omega)`, the Seebeck coefficient :math:`S` and the thermal conductivity :math:`\kappa^{\text{el}}` can be obtained with:: SK.conductivity_and_seebeck(beta=40) - SK.save(['seebeck','optic_cond']) + SK.save(['seebeck','optic_cond','kappa']) It is strongly advised to check convergence in the number of k-points! @@ -125,5 +133,6 @@ It is strongly advised to check convergence in the number of k-points! References ---------- -.. [#transp] `V. S. Oudovenko, G. Palsson, K. Haule, G. Kotliar, S. Y. Savrasov, Phys. Rev. B 73, 035120 (2006) `_ +.. [#transp1] `V. S. Oudovenko, G. Palsson, K. Haule, G. Kotliar, S. Y. Savrasov, Phys. Rev. B 73, 035120 (2006) `_ +.. [#transp2] `J. M. Tomczak, K. Haule, T. Miyake, A. Georges, G. Kotliar, Phys. Rev. B 82, 085104 (2010) `_ .. [#userguide] `P. Blaha, K. Schwarz, G. K. H. Madsen, D. Kvasnicka, J. Luitz, ISBN 3-9501031-1-2 `_