mirror of
https://github.com/triqs/dft_tools
synced 2024-11-01 19:53:45 +01:00
880f30b086
This is to avoid keeping code snippets that do not work in the doc. At least there will be an error message.
56 lines
1.6 KiB
ReStructuredText
56 lines
1.6 KiB
ReStructuredText
.. _hilbert_transform:
|
|
|
|
.. module:: pytriqs.dos.hilbert_transform
|
|
|
|
|
|
Hilbert Transform
|
|
=======================================
|
|
TRIQS comes with a Hilbert transform. Let us look at an example:
|
|
|
|
.. 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
|
|
hop= { (1,0) : [[ t]],
|
|
(-1,0) : [[ t]],
|
|
(0,1) : [[ t]],
|
|
(0,-1) : [[ t]],
|
|
(1,1) : [[ tp]],
|
|
(-1,-1): [[ tp]],
|
|
(1,-1) : [[ tp]],
|
|
(-1,1) : [[ tp]]}
|
|
|
|
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.)
|
|
|
|
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:
|
|
|
|
|