Conductance of single-molecule: Difference between revisions

From phys824
Jump to navigationJump to search
Line 1: Line 1:
===Using Tight Binding Method===
===Using Tight Binding Method===
Lead Hamiltonians:
Lead Hamiltonians:
<pre>
<pre>
import numpy as np
H_lead = np.array([[ 0. , -1. ,  0.2,  0. ],
H_lead = np.array([[ 0. , -1. ,  0.2,  0. ],
                   [-1. ,  0. , -1. ,  0.2],
                   [-1. ,  0. , -1. ,  0.2],
Line 15: Line 17:
                   [ 0 ,  0 ,  0, 0.2,  0,-1 ],
                   [ 0 ,  0 ,  0, 0.2,  0,-1 ],
                   [ 0 ,  0 ,  0,  0, -1, 0 ]])
                   [ 0 ,  0 ,  0,  0, -1, 0 ]])
</pre>
Set calculator for transport calculations:
<pre>
from ase.transport.calculators import TransportCalculator
tcalc = TransportCalculator(h=H_scat,  # Scattering Hamiltonian
                            h1=H_lead, # Lead 1 (left)
                            h2=H_lead, # Lead 2 (right)
                            pl=2)      # principal layer size
</pre>
Run the calculation:
<pre>
tcalc.set(energies=np.arange(-3, 3, 0.02))
T_e = tcalc.get_transmission()
</pre>
Plot transmission vs energy
<pre>
import pylab
pylab.plot(tcalc.energies, T_e)
</pre>
</pre>

Revision as of 22:02, 29 November 2012

Using Tight Binding Method

Lead Hamiltonians:

import numpy as np
H_lead = np.array([[ 0. , -1. ,  0.2,  0. ],
                   [-1. ,  0. , -1. ,  0.2],
                   [ 0.2, -1. ,  0. , -1. ],
                   [ 0. ,  0.2, -1. ,  0. ]])

Scattering Hamiltonian:

H_scat = np.array([[ 0., -1 ,   0,   0,  0, 0. ],
                   [-1 ,  0 , 0.2,   0,  0, 0. ],
                   [ 0 ,0.2 ,   0,-0.8,  0, 0. ],
                   [ 0 ,  0 ,-0.8,   0,0.2, 0. ],
                   [ 0 ,  0 ,   0, 0.2,  0,-1 ],
                   [ 0 ,  0 ,   0,   0, -1, 0 ]])

Set calculator for transport calculations:

from ase.transport.calculators import TransportCalculator

tcalc = TransportCalculator(h=H_scat,  # Scattering Hamiltonian
                            h1=H_lead, # Lead 1 (left)
                            h2=H_lead, # Lead 2 (right)
                            pl=2)      # principal layer size

Run the calculation:

tcalc.set(energies=np.arange(-3, 3, 0.02))
T_e = tcalc.get_transmission()

Plot transmission vs energy

import pylab
pylab.plot(tcalc.energies, T_e)