Hesaplamalı nanaoelektronik ders notları Bölüm

Dr. Serhan Yamaçlı‐Ders notları Kaynak: Computational Nanoscience, Varga & Driscoll, Cambridge Univ. Press, 2011. HESAPLAMALI NANOELEKTRONİK 1. Schrödinger denkleminin varyasyonel metodla çözümü 1.1. Varyasyonel metod Bu bölümde, sınırlı durumlar için H  i ( x)  Ei  i ( x) (1.1) şeklindeki zamandan bağımsız 1‐boyutlu Schrödinger denkleminin çözümünü inceleyeceğiz. Burada, kuantum mekaniksel Hamiltonyen operatörü, kinetik ve potansiyel enerji operatörlerinin toplamı şeklinde aşağıdaki gibi verilir. H 
2 d 2
 V ( x) 2m dx 2
(1.2) Varyasyonel yöntemde, parametreleri değiştirilen dalga fonksiyonları kullanılır ve kuantum mekaniksel sistemin enerjisi minimize edilecek şekilde bu parametreler değiştirilir. Aslında, varyasyonel metod, aşağıda verilen Ritz teoremine dayanır. Ritz teoremi: Rastgele bir dalga fonksiyonu  için, Hamiltonyen’in beklenen değeri için her zaman aşağıdaki eşitsizlik geçerlidir. E
|H |
|
 E1 (1.3) Burada, eşitlik durumu sadece ve sadece  , H’nin E1 özenerjili temel durum dalga fonksiyonuysa geçerlidir. Varyasyonel yöntemi kullanmak için, uygun bir deneme fonksiyonu seçilmelidir. Burada, deneme fonksiyonundan kasıt, parametreleri ayarlanabilen bir fonksiyondur. Genellikle, deneme fonksiyonu olarak belirlenen baz fonksiyonlarının lineer kombinasyonu kullanılır. Deneme fonksiyonu  ( x) , N adet baz fonksiyonu cinsinden aşağıdaki gibi yazılır. N
 ( x)   cii ( x) (1.4) i 1
Hamiltonyen’in bu deneme fonksiyonuyla elde edilen beklenen değerinin ci katsayılarındaki sonsuz değişimlerden etkilenmediği varsayımı ile zamandan bağımsız Schrödinger denklemi, aşağıdaki gibi bir özdeğer problemine dönüştürülebilir. HCk   k OCk (1.5) 1 Dr. Serhan Yamaçlı‐Ders notları Kaynak: Computational Nanoscience, Varga & Driscoll, Cambridge Univ. Press, 2011. Veya eşdeğer olarak aşağıdaki şekilde yazılabilir. N
H
i 1
N
c   k  Oij cki
ij ki
(1.6) i 1
Hij, Hamiltonyen’in matris değerlerini, Oij, baz fonksiyonlarının üst üste binme matrisinin elemanlarını, Ck ise, k. özvektöre ilişkin lineer kombinasyon katsayılarını içerir. H ij  i | H |  j
(1.7) Oij  1 |  j
(1.8) (1.9) Ck   ck1 ck 2 ... ckn  ' Baz fonksiyonu sayısı olan N’yi artırarak daha hassas bir şekilde yaklaşık özenerji ve dalga fonksiyonlarını hesaplayabiliriz. 1.2. Gaussyen baz fonksiyonlarını kullanarak yapılan bazı hesaplamalar Matris elemanlarının hesaplanmaları ile ilgili işlemler standart olduğu için, Gauss tipi (Gaussyen) baz fonksiyonları, varyasyonel hesaplamalarda faydalı örnekler oluşturmaktadır. Gaussyen baz fonksiyonları aşağıdaki gibi verilir. i ( x) 
vi

.exp  vi .( x  si ) 2  (1.10) Yukarıdaki gibi bir Gaussyen fonksiyonun, değiştirilebilen iki parametresi vardır. Bunlar merkez olan si ve genişlik olan vi’dir. 1‐boyutlu problemde, üst üste binme (Oij) ve kinetik enerji (Tij) matrislerinin elemanları, Gaussyen baz fonksiyonları ile aşağıdaki gibi verilir. Oij  i |  j 
Tij  i | 
 vi v j

exp  
( si  s j ) 2  

vi  v j
 vi  v j

2 vi v j
2 d 2
 2 2vi v j
|j 
2
2m dx
2m vi  v j
(1.11)  2vi v j

( si  s j ) 2  Oij  1 

vi v j


(1.12) Bazı potansiyel profilleri için potansiyel matrisinin elemanları da analitik olarak hesaplanabilir. Mesela, harmonik osilatör potansiyeli için, potansiyel matrisi (Uij) elemanları aşağıdaki gibi verilir.  1
 vi si  v j s j
1
1

U ij  i | m 2 |  j  m 2 

 vi  v j  vi  v j
2
2




2

O  ij

(1.13) 2 Dr. Serhan Yamaçlı‐Ders notları Kaynak: Computational Nanoscience, Varga & Driscoll, Cambridge Univ. Press, 2011. 1.3. Fortran’da varyasyonel metod örnekleri 1‐boyutta harmonik osilatör potansiyeli için merkez noktası (si) ve genişlik (vi) varyasyonlu hesaplama yapan kodlar aşağıda verilmiştir. Bu kodlardaki köşegenleştirme rutinleri için Kalman ve Varga’nın linalg.f90 dosyası gerekmektedir. PROGRAM gauss_1d_c
USE LINALG
! Eşit genişlikli 1-boyutlu Gaussyen baz fonksiyonları
implicit none
integer,parameter :: n=101
real*8,parameter :: nu=1.d0,h2m=0.5d0
integer
:: i,j
real*8
:: h(n,n),o(n,n),s(n),e(n),v(n,n)
real*8
:: t,p,ss
! Gaussyen’lerin merkezlerinin hesabı
do i=1,n
s(i)=-25.d0+(i-1)*0.5d0
end do
! Hamiltonyen matrisinin oluşturulması
do i=1,n
do j=1,n
ss=(s(i)-s(j))**2
o(i,j)=exp(-0.5d0*nu*ss)
t=exp(-0.5d0*nu*ss)*nu*h2m*(1.d0-nu*ss)
p=0.5d0*exp(-0.5d0*nu*ss)*0.25d0*(1.d0/nu+(s(i)+s(j))**2)
h(i,j)=t+p
end do
end do
! Köşegenleştirme
call diag(h,o,n,e,v)
! Özdeğerleri yazdır
do i=1,n
write(6,*)e(i)
end do
END PROGRAM gauss_1d_c Kod 1.1. Eşit genişlikli, merkezleri değiştirerek Gaussyen baz fonksiyonlarıyla 1‐boyutlu harmonik osilatörün özenerjilerinin hesaplanması (gauss_1d_c.f90 olarak kaydedebilirsiniz.) Bu ders notlarındaki bilgisayar rutinleri Fortran programlama dilinde yazılmış olup, Ubuntu ortamında denenmiştir. Kodların tamamı kaynak kitaptan (Comp. Nano., Kalman & Varga) alınmıştır. Yukarıdaki kodu çalıştırmak için (Linux ortamında), gnu fortran derleyicisini ve LAPACK kütüphanesini yükleyin. Daha sonra, üstteki linkten indireceğiniz linalg.f90 ve üstteki kodu gfortran –c linalg.f90
gfortran –c gauss_1d_c.f90
komutlarıyla derleyerek linalg.o ve gauss_1d_c.o obje dosyalarını oluşturun. Daha sonra ise, LAPACK ile linkini kurmak için aşağıdaki kodla çalıştırılabilir dosyayı oluşturun. gfortran -o gauss_1d_c gauss_1d_c.o LINALG.o –llapack
Dosyayı şu komutla çalıştırarak özdeğerleri listeleyebilirsiniz. ./gauss_1d_c 3 Dr. Serhan Yamaçlı‐Ders notları Kaynak: Computational Nanoscience, Varga & Driscoll, Cambridge Univ. Press, 2011. 0.4999999999999852
1.5000000000000380
2.5000000000002465
3.5000000000096825
4.5000000000595941
5.5000000018906361
6.5000000053570357
7.5000001619852847
8.5000002137404653
9.5000072214726270
10.500004039082432
Çıktı 1.1. Değişken merkezli Gaussyen baz fonksiyonlarıyla harmonik osilatör probleminin özdeğer çıktıları Benzer şekilde, eş merkezli ama değişken genişlikli Gaussyen fonksiyonlarla da özenerjiler hesaplanabilir. Bunun için de aşağıdaki kodu kullanabiliriz. PROGRAM gauss_1d_w
USE LINALG
! Eşmerkezli Gaussyen baz fonksiyonları ile hesaplama
implicit none
integer,parameter :: n=101
real*8,parameter :: h2m=0.5d0
integer
:: i,j
real*8
:: h(n,n),o(n,n),nu(n),e(n),v(n,n)
real*8
:: t,p,ss,x0,a0,w
! Gaussyenlerin genişliklerinin hesabı
x0=1.14d0
a0=0.01d0
do i=1,n
nu(i)=1.d0/(a0*x0**(i-1))**2
end do
! Hamiltonyen matrisinin oluşturulması
do i=1,n
do j=1,n
o(i,j)=sqrt(2.d0*sqrt(nu(i)*nu(j))/(nu(i)+nu(j)))
w=nu(i)*nu(j)/(nu(i)+nu(j))
t=h2m*2*w*o(i,j)
p=0.5d0/(2.d0*(nu(i)+nu(j)))*o(i,j)
h(i,j)=t+p
end do
end do
! Köşegenleştirme
call diag(h,o,n,e,v)
! Özenerjileri yazdırma
do i=1,n
write(6,*)e(i)
end do
END PROGRAM gauss_1d_w Kod 1.2. Eşmerkezli, genişliklerini değiştirerek Gaussyen baz fonksiyonlarıyla 1‐boyutlu harmonik osilatörün özenerjilerinin hesaplanması (gauss_1d_w.f90 olarak kaydedebilirsiniz.) gfortran –c linalg.f90
gfortran –c gauss_1d_c.f90
gfortran -o gauss_1d_c gauss_1d_c.o LINALG.o –llapack
./gauss_1d_c
4 Dr. Serhan Yamaçlı‐Ders notları Kaynak: Computational Nanoscience, Varga & Driscoll, Cambridge Univ. Press, 2011. 0.4999999999998556
2.4999999999658953
4.5000000013072130
6.4999996379874672
8.5000002767268601
10.499812865586806
Çıktı 1.2. Değişken genişlikli Gaussyen baz fonksiyonlarıyla harmonik osilatör probleminin özdeğer çıktıları Analitik hesaplama ile harmonik osilatör potansiyeli altındaki çözümlerin özdeğerleri 0.5, 1.5, 2.5, 3.5, … olarak elde edilmektedir. Çıktılardan da görüldüğü üzere varyasyonel metodla Gaussyen baz fonksiyonlarını kullanarak hassas hesaplamalar yapılabilmektedir. Ancak, matris elemanlarının analitik olarak hesaplanması zorunluluğu, varyasyonel çözüm yönteminin en belirgin dezavantajı olarak görülmektedir. 5