mirror of
https://github.com/triqs/dft_tools
synced 2024-10-31 11:13:46 +01:00
Update sumk_dft_transport.py
Implement Raman in conductivity_and_seebeck function.
This commit is contained in:
parent
1919aa7ed7
commit
e2507ad965
@ -899,7 +899,7 @@ def transport_coefficient(Gamma_w, omega, Om_mesh, spin_polarization, direction,
|
|||||||
return A
|
return A
|
||||||
|
|
||||||
|
|
||||||
def conductivity_and_seebeck(Gamma_w, omega, Om_mesh, SP, directions, beta, method=None):
|
def conductivity_and_seebeck(Gamma_w, omega, Om_mesh, SP, directions, beta, method=None, mode='optics'):
|
||||||
r"""
|
r"""
|
||||||
Calculates the Seebeck coefficient and the optical conductivity by calling
|
Calculates the Seebeck coefficient and the optical conductivity by calling
|
||||||
:meth:`transport_coefficient <dft.sumk_dft_tools.SumkDFTTools.transport_coefficient>`.
|
:meth:`transport_coefficient <dft.sumk_dft_tools.SumkDFTTools.transport_coefficient>`.
|
||||||
@ -923,6 +923,8 @@ def conductivity_and_seebeck(Gamma_w, omega, Om_mesh, SP, directions, beta, meth
|
|||||||
method : string
|
method : string
|
||||||
Integration method: cubic spline and scipy.integrate.quad ('quad'), simpson rule ('simpson'), trapezoidal rule ('trapz'), rectangular integration (otherwise)
|
Integration method: cubic spline and scipy.integrate.quad ('quad'), simpson rule ('simpson'), trapezoidal rule ('trapz'), rectangular integration (otherwise)
|
||||||
Note that the sampling points of the the self-energy are used!
|
Note that the sampling points of the the self-energy are used!
|
||||||
|
mode : string
|
||||||
|
Choose between optical conductivity/seebeck/Kappa ('optics') or Raman conductivity ('raman')
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
@ -945,6 +947,7 @@ def conductivity_and_seebeck(Gamma_w, omega, Om_mesh, SP, directions, beta, meth
|
|||||||
|
|
||||||
# initialization
|
# initialization
|
||||||
A0 = {direction: numpy.full((n_q,), numpy.nan) for direction in directions}
|
A0 = {direction: numpy.full((n_q,), numpy.nan) for direction in directions}
|
||||||
|
if mode in ('optics'):
|
||||||
A1 = {direction: numpy.full((n_q,), numpy.nan) for direction in directions}
|
A1 = {direction: numpy.full((n_q,), numpy.nan) for direction in directions}
|
||||||
A2 = {direction: numpy.full((n_q,), numpy.nan) for direction in directions}
|
A2 = {direction: numpy.full((n_q,), numpy.nan) for direction in directions}
|
||||||
optic_cond = {direction: numpy.full((n_q,), numpy.nan) for direction in directions}
|
optic_cond = {direction: numpy.full((n_q,), numpy.nan) for direction in directions}
|
||||||
@ -987,3 +990,16 @@ def conductivity_and_seebeck(Gamma_w, omega, Om_mesh, SP, directions, beta, meth
|
|||||||
(direction, kappa[direction]))
|
(direction, kappa[direction]))
|
||||||
|
|
||||||
return optic_cond, seebeck, kappa
|
return optic_cond, seebeck, kappa
|
||||||
|
elif mode in ('raman'):
|
||||||
|
# ToDo: correct units
|
||||||
|
raman_cond = {direction: numpy.full((n_q,), numpy.nan) for direction in directions}
|
||||||
|
|
||||||
|
for direction in directions:
|
||||||
|
for iq in range(n_q):
|
||||||
|
A0[direction][iq] = transport_coefficient(Gamma_w, omega, Om_mesh, SP, direction, iq=iq, n=0, beta=beta, method=method)
|
||||||
|
print("A_0 in direction %s for Omega = %.2f %e a.u." % (direction, Om_mesh[iq], A0[direction][iq]))
|
||||||
|
raman_cond[direction] = beta * A0[direction] * 10700.0 / numpy.pi
|
||||||
|
for iq in range(n_q):
|
||||||
|
print("Raman conductivity in direction %s for Omega = %.2f %f x 10^4 Ohm^-1 cm^-1" % (direction, Om_mesh[iq], raman_cond[direction][iq]))
|
||||||
|
|
||||||
|
return raman_cond
|
||||||
|
Loading…
Reference in New Issue
Block a user