Esempio n. 1
0
    g('set yrange [0:%s]' % max(ys))
    g('set size 0.6,0.6')
    g.xlabel('E (meV)')
    g.ylabel('A (1/meV)')
    g.plot(
        Gnuplot.Data(xs, ref, **{'with': 'lines lt 2 lc rgbcolor "blue" lw 2'}),
        Gnuplot.Data(xs, ys, **{'with': 'lines lt 1 lc rgbcolor "red" lw 2'})
    )
    g.hardcopy(name, color=1, terminal='postscript')
    print("File printed to %s" % name)

kelvin = 8.6173423e-5 * 1000 # 1K in meV
n = 1
for k in (0.6, -0.3):
    xs = linspace(-0.6, k, 2000)
    energies = harmonic_energies(hf=0.5)
    T = 5 * 0.5
    print("calc %s" % n); n += 1
    t0 = datetime.utcnow()
    calc = {
        'leads': [
            invibro.Lead(0.0, T, 0.025, linear_coupling(0.5), 50000.0),
            invibro.Lead(0.0, T, 0.025, linear_coupling(0.5), 50000.0)
        ],
        'e_level': 0.0,
        'ph_energy': energies,
        'ph_state': thermal_dist(T, energies)
    }
    ref = lorentzian(xs, calc)
    ys = invibro.density_of_states(xs, calc)
    render(xs, ys, ref, '/tmp/falloff-highT_%s.ps' % k)
Esempio n. 2
0
    g = L ** 2
    def sgn(x):
        return -1 if x < 0 else 1
    def matrix(m, n, L):
        if m > n: 
            return matrix(n, m, -L)
        else:
            return (exp(-g) * g ** (n - m) * fact(m)/fact(n)) ** 0.5 * \
                laguerre(m, n - m, g) * sgn(L) ** (n - m)
    return lambda m, n: matrix(m, n, L)

w0 = 0.02 # eV
T = 0.0258520269 # 300K in eV
invibro.dim=8

energies = harmonic_energies(0.02)

q = invibro.mat_from_fn(displace(1.0))
qbar = q.T.conjugate()

rho_0 = invibro.mat_from_fn(thermal_dist(T, energies))
rho_0 /= rho_0.trace()
rho_1 = qbar.dot(rho_0).dot(q)

from datetime import datetime
import Gnuplot
def plot(xs, ys, name, first=False):
    g = Gnuplot.Gnuplot()
    g('set xrange [1.88:2.08]')
    g('set yrange [0:200]')
    g('set xtics 1.92,0.04,2.04')