2013-07-17 19:24:07 +02:00
|
|
|
.. _hilbert_transform:
|
|
|
|
|
|
|
|
.. module:: pytriqs.dos.hilbert_transform
|
|
|
|
|
|
|
|
|
|
|
|
Hilbert Transform
|
|
|
|
=======================================
|
|
|
|
TRIQS comes with a Hilbert transform. Let us look at an example:
|
|
|
|
|
2014-10-17 17:07:58 +02:00
|
|
|
.. runblock:: python
|
|
|
|
|
|
|
|
from pytriqs.lattice.tight_binding import *
|
|
|
|
from pytriqs.dos import HilbertTransform
|
|
|
|
from pytriqs.gf.local import GfImFreq
|
|
|
|
|
|
|
|
# Define a DOS (here on a square lattice)
|
|
|
|
BL = BravaisLattice(units = [(1,0,0) , (0,1,0) ], orbital_positions= [(0,0,0)] )
|
|
|
|
t = -1.00 # First neighbour Hopping
|
|
|
|
tp = 0.0*t # Second neighbour Hopping
|
2014-10-17 18:15:19 +02:00
|
|
|
hop= { (1,0) : [[ t]],
|
|
|
|
(-1,0): [[ t]],
|
|
|
|
(0,1) : [[ t]],
|
|
|
|
(0,-1): [[ t]],
|
|
|
|
(1,1) : [[ tp]],
|
2014-10-17 17:07:58 +02:00
|
|
|
(-1,-1): [[ tp]],
|
2014-10-17 18:15:19 +02:00
|
|
|
(1,-1): [[ tp]],
|
|
|
|
(-1,1): [[ tp]]}
|
2014-10-17 17:07:58 +02:00
|
|
|
|
|
|
|
TB = TightBinding (BL, hop)
|
|
|
|
d = dos(TB, n_kpts= 500, n_eps = 101, name = 'dos')[0]
|
|
|
|
|
|
|
|
#define a Hilbert transform
|
|
|
|
H = HilbertTransform(d)
|
|
|
|
|
|
|
|
#fill a Green function
|
|
|
|
G = GfImFreq(indices = ['up','down'], beta = 20)
|
|
|
|
Sigma0 = GfImFreq(indices = ['up','down'], beta = 20); Sigma0.zero()
|
|
|
|
G <<= H(Sigma = Sigma0,mu=0.)
|
2013-07-17 19:24:07 +02:00
|
|
|
|
|
|
|
Given a density of states `d` (here for a tight-binding model), the Hilbert transform `H` is defined is defined in the following way::
|
|
|
|
|
|
|
|
H = HilbertTransform(d)
|
|
|
|
|
|
|
|
To construct a Green's function::
|
|
|
|
|
|
|
|
G = GfImFreq(indices = ['up','down'], beta = 20)
|
|
|
|
Sigma0 = GfImFreq(indices = ['up','down'], beta = 20); Sigma0.zero()
|
|
|
|
G <<= H(Sigma = Sigma0, mu=0.)
|
|
|
|
|
|
|
|
|
|
|
|
.. autoclass:: pytriqs.dos.HilbertTransform
|
|
|
|
:members: __call__
|
|
|
|
:undoc-members:
|
|
|
|
|
|
|
|
|