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) cii ( 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
© Copyright 2024 Paperzz