1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tính toán các mức năng lượng của điện tử trong dây lượng tử bằng phương pháp khối lượng hiệu dụng và phương pháp liên kết chặt

85 23 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TÍNH TĨAN CÁC MỨC NĂNG LƯỢNG CỦA ĐIỆN TỬ TRONG DÂY LƯỢNG TỬ BẰNG PHƯƠNG PHÁP KHỐI LƯỢNG HIỆU DỤNG VÀ PHƯƠNG PHÁP LIÊN KẾT CHẶT LUẬN VĂN THẠC SĨ Hà Nội- 2006 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CƠNG NGHỆ TINH TĨAN CHẶT CÁC MỨC NĂNG LƯỢNG CỦA ĐIỆN TỬ TRONG DÂY LƯỢNG TỬ BẰNG PHƯƠNG PHÁP KHỐI LƯỢNG HIỆU DỤNG VÀ PHƯƠNG PHÁP LIÊN KẾT CHẶT Luậm Văn Thạch Sỹ : KHOA HỌC Mã số: Người Hướng Dẫn : Hà Nội- 2006 MỤC LỤC Trang Mở đầu…………………… …………………………… .2 Chƣơng CÁC CẤU TRÚC CĨ KÍCH THƢỚC NANƠ.[1,2,3,18] 1.1 Cấu trúc dị thể 1.2 Cấu trúc giới hạn lượng tử 1.3 Mật độ trạng thái 17 Chƣơng TRẠNG THÁI ĐIỆN TỬ TRONG DÂY LƢỢNG TỬ.[4,5,15,16,17] 2.1 Mơ hình nghiên cứu 19 2.2 Trạng thái electron dây lượng tử 19 2.3 Phương pháp gần khối lượng hiệu dụng 20 2.4 Hàm sóng lượng electron dây lượng tử 26 2.5 Áp dụng cho toán dây Si trường hợp khối lượng hiệu dụng bất đẳng hướng 30 2.6 Áp dụng tính số 32 Chƣơng PHƢƠNG PHÁP LIÊN KẾT CHẶT [6,14] 3.1 Giới thiệu chung phương pháp liên kết chặt 32 3.2 Nguyên lí chung phương pháp liên kết chặt 34 3.3 Các tham số TB 34 3.4 Xây dựng ma trận Hamilton 35 3.5 Xây dựng tinh thể dây nanô 39 3.6 So sánh kết thảo luận hai phương pháp tính phụ thuộc vào bán kính dây 41 Kết luận…… 43 Phụ lục 44 Phụ lục 51 Tài liệu tham khảo… 60 MỞ ĐẦU I ĐẶT VẤN ĐỀ Công nghệ nanô nghiên cứu ứng dụng vật liệu có cấu trúc nanơ với kích thước 0.1nm-100nm(1nm = 10-9m) Ở kích thước này, vật liệu biểu nhiều hiệu ứng Các hiệu ứng biểu điện tử bị giam giữ cấu trúc có kích thước lượng tử Lý thuyết vật lý lượng tử giải thích hiệu ứng Nhiều ngành khoa học nghiên cứu ứng dụng cấu trúc có kích thước lượng tử: nghiên cứu ứng dụng sản phẩm từ cấu trúc siêu mạng (super lattices), giếng lượng tửquantum wells (QWs), dây lượng tử-quantum wires (QWR) chấm lượng tử-quantum dots (QDs) Trong cấu trúc có kích thước lượng tử, phổ lượng hạt tải trở thành gián đoạn dọc theo hướng toạ độ bị giới hạn, theo hướng không bị giới hạn hạt tải chuyển động hạt tự do, đặc trưng tương tự vật liệu khối, dạng parabolic phổ lượng liên tục với khối lượng hiệu dụng m* Sự biến đổi phổ lượng gây khác biệt đáng kể tất tính chất điện tử hệ so với mẫu khối Việc làm rõ phổ lượng hạt tải dẫn đến tính tốn bước đầu cấu trúc lượng hạt tải Trong luận văn này, chúng tơi tiến hành nghiên cứu tính tốn bước đầu cấu trúc lượng hạt tải phương pháp gần khối lượng hiệu dụng gần liên kết chặt So sánh kết tính hai phương pháp rút ý nghĩa vật lý tính lượng điện tử dây lượng tử II MỤC TIÊU CỦA LUẬN VĂN Tìm hiểu cấu trúc dị thể, giếng lượng tử, dây lượng tử, chấm lượng tử Tìm hiểu phương pháp gần khối lượng hiệu dụng phương pháp gần liên kết chặt Sử dụng phương pháp gần khối lượng hiệu dụng phương pháp gần liên kết chặt để tính lượng electron dây lượng tử Áp dụng tính cho dây Ge, so sánh kết thảo luận hai phương pháp tính phụ thuộc vào đường kính dây III NỘI DUNG CỦA LUẬN VĂN Luận văn bao gồm nội dung sau: Tìm hiểu cấu trúc có kích thước lượng tử: khái niệm, phân loại, phương pháp chế tạo Giới thiệu hai phương pháp thường sử dụng nghiên cứu cấu trúc điện tử vật lí chất rắn: gần liên kết chặt gần khối lượng hiệu dụng So sánh kết rút ý nghĩa vật lý áp dụng hai phương pháp tính lượng điện tử dây lượng tử IV BỐ CỤC CỦA LUẬN VĂN Ngoài phần mở đầu, kết luận phụ lục luận văn trình bày làm ba chương : Chƣơng CÁC CẤU TRÚC CĨ KÍCH THƢỚC NANƠ Trong tơi tìm hiểu cấu trúc dị thể, giếng lượng tử, dây lượng tử, chấm lượng tử Trình bày khái niệm, phân loại, phương pháp chế tạo, ưu nhược điểm phương pháp, tính chất điện tử cấu trúc mật độ trạng thái điện tử cấu trúc Chƣơng TRẠNG THÁI CỦA ELECTRON TRONG DÂY LƢỢNG TỬ Trình bày phương pháp gần khối lượng hiệu dụng áp dụng cho tính hàm sóng lượng electron dây lượng tử Tính mức lượng gián đoạn electron cho dây Ge Chƣơng PHƢƠNG PHÁP LIÊN KẾT CHẶT Trình bày phương pháp liên kết chặt -Tight-Binding(TB) áp dụng cho tính hàm sóng lượng electron dây Ge Cuối so sánh kết luận chúng tơi đánh giá kết thu được, hạn chế hướng phát triển tiếp Chƣơng CÁC CẤU TRÚC CĨ KÍCH THƢỚC NANƠ 1.1 Cấu trúc dị thể Chúng ta biết vật liệu bán dẫn tồn vùng lượng Vùng bị lấp đầy electron gọi hóa trị Vùng tham gia vào trình dẫn trạng thái trống hay cịn gọi lỗ trống Thông thường, lỗ trống chiếm mức lượng cao (đỉnh) vùng hóa trị [1] Vùng lượng cao hơn, không bị chiếm đóng electron gọi vùng dẫn Các electron chiếm trạng thái vùng bị kích thích để khỏi mối liên kết cộng hóa trị chuyển động tinh thể Các electron bị gia tốc điện trường tham gia vào q trình dẫn điện Đỉnh vùng hóa trị đáy vùng dẫn cách khoảng gọi vùng cấm với ý nghĩa khơng có giá trị lượng phép electron nằm vùng Khi hai bán dẫn độ rộng vùng cấm khác đưa lại tiếp xúc với ta có tiếp xúc dị chất Các bán dẫn có số mạng tương hợp làm giảm mật độ trạng thái bề mặt xuống tới 10 8cm-2, đối xứng tinh thể tương tự Cấu trúc dị thể phổ biến thường chế tạo từ GaAs-AlGaAs, lớp GaAs có độ rộng vùng cấm hẹp lớp AlGaAs có độ rộng vùng cấm rộng Mơ hình cấu trúc dị thể mơ tả hình1.1a AlGaAs (a) Sơ đồ vùng: Khi hai lớp bán bán dẫn tiếp xúc mà điện tích chưa dịch chuyển, mức Fermi cấu trúc dị thể có dạng hình 1.1b Sau điện tử chuyển từ AlGaAs sang GaAs, mức Fecmi tồn cấu trúc mơ tả hình 1.2 EF v E C1 Eg C2 E Ec Khí điện tử hai chiều Hình 1.2 Giản đồ vùng lượng tiếp xúc dị chất đơn Trong đó: Eg1, Eg2 độ rộng vùng cấm chất bán dẫn; Ec Ev bước chuyển đột ngột vùng lượng;  Ec độ dịch đáy vùng dẫn-conducting band offset; Ev độ dịch đỉnh vùng hoá trị-valance band offset Độ dịch vùng dẫn  Ec xác định hiệu cơng điện tử vật liệu tham gia tiếp xúc:  Ec = C2 – C1 độ rộng vùng hoá trị  Ev = Eg1 – Eg2 -  Ec Ưu điểm tiếp xúc dị chất so với cấu trúc khác thể chất lượng tốt hẳn mặt phân cách dị chất hai bán dẫn Phân loại cấu trúc dị thể thành bốn loại theo mối quan hệ vị trí cực trị vùng vùng dẫn vùng hoá trị mơ tả hình 1.3 Hình 1.3 Phân loại cấu trúc dị thể Loại I (hình1.3a): điện tử lỗ trống bị giam nhốt bán dẫn có vùng cấm nhỏ hơn, loại tạo GaAs/AlGaAs, GaSb/AlSb, GaAs/ GaP, vài vật liệu khác Loại II (hình1.3b): lỗ trống bị giam nhốt lớp bán dẫn, điện tử bị giam nhốt lớp bán dẫn lại, loại thường tạo InP/Al0.48 In0.52P Loại III (hình 1.3c): có độ dịch vùng nhau, độ lớn độ dịch lớn đến mức khe hai vật liệu khơng chập Loại đơi cịn biết đến giống loại hai với điều kiện khe khơng chập nhau, có khác biệt hai loại mức cân Fecmi hai vật liệu dẫn đến độ cong vùng lớn, hình thành điện tử lỗ trốn hai lớp bán dẫn Loại thường tạo InAs/GaSb Loại IV (hình1.3d): cấu trúc đảo vùng, cực trị vùng hai mặt đối diện thay đổi đối xứng Các cấu trúc loại thường tạo HgTe/CdTe [2] Các cấu trúc dị thể ứng dụng kỹ thuật điện tử, lưu trữ thông tin, hấp thụ Các phương pháp thường áp dụng để chế tạo cấu trúc phương pháp phún xạ catốt, phương pháp bốc bay nhiệt phương pháp epitaxy chùm phân tử Việc chế tạo cấu trúc dị thể cần phải chọn đôi bán dẫn, hợp kim kim loại khác cho chúng cho chất lượng bề mặt tiếp xúc tốt, lựa chọn số mạng tinh thể độ sai khác cỡ phần nghìn đến phần trăm, nhằm dẫn đến mật độ sai hỏng xếp sai khác số mạng gần mặt phân cách thấp Chế tạo cấu trúc dị thể phương pháp phún xạ catốt-cathod sputtering: Phương pháp chế tạo thực mơi trường khí Ar, áp suất cỡ 10-2 Torr nhiệt độ phòng Sử dụng số thành phần bia nbtyp(ityp(iat)) = nbtyp(ityp(iat))+1 49 enddo it = 1, maxtyp write (nbtypstr, '(i7)') nbtyp(it) write (id, '(a,a,a)') trim(id), trim(TBmodel(it) %name), trim(adjustl(nbtypstr)) enddo write (nbtypstr, '(i7)') nbhy write (id, '(a,a,a)') trim(id), trim(TBmodel(0)%name), trim(adjustl(nbtypstr)) radiuseff = sqrt((nbsc*acell**3)/(8.d0*pi*lwire))*ual/10.d0 write (stdout, '(/"Nanowire ID : ",a,".", & & & & & & & & trim(id), nbsc, nbhy, nper, ntot, radiuseff ! Export the nanowire structure in xyz format and write the wavefunction file header call exportxyz('wireZB_'//trim(id)//'.xyz', dpos, ityp, nper) call writewfnfileheader('wireZB_'//trim(id)//'.out', nbsc, nbhy, nper, dpos, ityp) ! Look for the second and (if appropriate) third nearest neighbors ! call neighborhood_connect("ZB", ipos, ityp, neighborhood, nbsc) call neighborhood_direct("ZB", ipos, neighborhood, nbsc, nper, ntot) call checkneighborhood(ityp, neighborhood, nbsc, nper) ! Compute ndim ndim = norbs*nbsc+nbhy if (withSO) then ndimeff = 2*ndim else ndimeff = ndim endif ! Loop over the k points kvbmax = 0.d0 vbmax = -1.d10 kcbmin = 0.d0 cbmin = 1.d10 open (untfree, file = 'wireZB_'//trim(id)//'.bs', form = 'formatted', status = 'replace') close (untfree) ikpt = 1, nkpt kred = kpt(ikpt) sigma = sigmak(ikpt) idir = idirk(ikpt) nval = nvalk(ikpt) todo = ((nval > 0).and.(scan(optk(ikpt), "-") == 0)).or.(scan(optk(ikpt), "Ee") /= 0) if (.not.todo) cycle k = twopi*kred*uwire/lwire write (stdout, '(/"ikpt = ",i2," : k = ",f10.5," ; sigma = ",f10.5," ; idir = ",sp,i3,ss," ; nval = ",i4,".")') & & ikpt, kred, sigma, idir, nval write (stdout, '(75("*"))') ! Compute the hamiltonian and JD preconditioner write (stdout, *) 50 call zdhamilt_sp3d5t_2c(k, true., h, dpos, ityp, neighborhood, nbsc, nbhy, nper, ntot) write (stdout, *) call zdbondprecdt_sp3xx(k, 0.d0, true., hp, dpos, ityp, neighborhood%neighbors(1)%ineigh, & & nbsc, nbhy, nper, ntot, norbs, esh, esp3, bsp3, e0) ! Check the hermiticity of the hamiltonian and JD preconditioner if (.not.zchecksymmetry_sparse(1.d-6, h%aij, h%jmax, h%icol, ndim)) & & stop "Error, hamiltonian is not hermitian." if (.not.zchecksymmetry_sparse(1.d-6, hp%aij, hp%jmax, hp%icol, ndim)) & & stop "Error, bond preconditioner is not hermitian." ! Compute the wavefunctions if ((nval > 0).and.(scan(optk(ikpt), "-") == 0)) then ! Allocate memory for the wavefunctions allocate(eval(2,nval), evec(ndimeff,nval)) ival = 1, nval call zrand(evec(1,ival), ndimeff) call znormalize(evec(1,ival), ndimeff) enddo !dbg_jdeig = write (stdout, *) & & & & call zjdeigin_ortho_sym(ndimeff, prodhv, solve, nodegeneracy, & sigma, idir, epsilon_JD, & itnew_JD, itmax_JD, nkeep_JD, & nval, eval, ndimeff, evec, & ierr) if (ierr /= 0) & & write (stdout, '(/"Warning, JD failed and returned ierr = ",i3, & " (",i4," wavefunctions were computed).")') & ierr, nval ! Compute the conduction band minium and the valence band maximum if (idir < 0) then if (eval(1,1) > vbmax) then vbmax = eval(1,1) kvbmax = kred endi f else if (eval(1,1) < cbmin) then cbmin = eval(1,1) kcbmin = kred endi f endif ! Analyze the wavefunctions write (stdout, '(/"Results for ikpt = ",i2," : k = ",f10.5,".")') ikpt, kred call zanalyzewfn_ortho(nval, ndim, 2*ndimeff/ndim, eval, evec, nper, ityp) ! Write the wavefunctions to disk idx = scan(optk(ikpt), "Ss") if (idx /= 0) then jdx = idx, len_trim(optk(ikpt))-1 if (scan(optk(ikpt)(jdx+1:jdx+1), "0123456789") == 0) exit enddo if (jdx > idx) then read (optk(ikpt)(idx+1:jdx), *) nwfn else 51 nwfn = nval endif nwfn = min(nwfn, nval) call zwritewfnblock('wireZB_'//trim(id)//'.out', nwfn, ndim, 2*ndimeff/ndim, k, eval, evec) endif ! Write the band structure to disk open (untfree, file = 'wireZB_'//trim(id)//'.bs', form = 'formatted', position = 'append') ival = 1, nval write (untfree, '(f10.5,1x,f10.5)') kred, eval(1, ival) enddo close (untfree) endif ! Free memory call free_zdsparsematrix(h) if (precdt_bandext) call free_zdsparsematrix(hp) ! Search for band extremum, if appropriate idx = scan(optk(ikpt), "Ee") if (idx /= 0) then read (optk(ikpt)(idx+1:),'(1x,f4.2,1x)') dkred idir_bandext = idir sigma_bandext = sigma kred1 = kred-dkred kred2 = kred kred3 = kred+dkred write (stdout, '(/"Looking for band extremum in [",f10.5,",",f10.5,"].")') kred1, kred3 if (nval > 0) then allocate(evec_bandext(ndimeff,nval_bandext)) call zcopy(evec(1,1), evec_bandext(1,1), ndimeff) endif call brent(kred1, kred2, kred3, bandenergy, epsilon_kred, kred, ek, ierr) if (ierr /= 0) then write (stdout, '("Error, brent failed and returned ierr = ",i3,".")') ierr ! stop "Error, brent failed." if (ierr == 1) then ek1=bandenergy(kred1) ek2=bandenergy(kred2) if (ek1 < ek2)then kred=kred1 ek=ek1 else kred=kred3 ek=bandenergy(kred) endif endif endif ek = ek*idir_bandext write (stdout, '("Found band extremum E = ",f10.5," eV @ k = ",f10.5,".")') ek, kred open (untfree, file = ' / /CBM_D.dat', form = 'formatted', position = 'append') write (untfree, '(f6.2,3(f10.5,1x),i5)')radius*2.0, radiuseff*2.0, ek, kred, ierr close (untfree) 52 if (idir < 0) then if (ek > vbmax) then vbmax = ek kvbmax = kred endif else if (ek < cbmin) then cbmin = ek kcbmin = kred endif endif deallocate(evec_bandext) endif ! Free memory deallocate(eval, evec) if (.not.precdt_bandext) call free_zdsparsematrix(hp) enddo ! Write the bandgap energy to disk eg = cbmin-vbmax write (stdout,'(/"Effective nanowire radius = ",f10.5," nm.", & & ",f10.5,".", & & ",f10.5,".", & & & radiuseff, vbmax, kvbmax, cbmin, kcbmin, eg open (untfree, file = ' / /wireZB.eg', form = 'formatted', position = 'append') write (untfree, '(f6.2,i6,1x,i6,1x,6(f10.5,1x),a)')radius*2.0, nbsc, nbhy, radiuseff, vbmax, kvbmax, cbmin, kcbmin, eg, trim(id) close (untfree) ! Free memory deallocate(ipos, dpos) deallocate(ityp, nbtyp) deallocate(kpt, sigmak, idirk, nvalk, optk) call free_neighborhood(neighborhood) call freeparams_sp3d5t_2c ! Print timing statistics write (stdout, *) call stopglobaltimer call printtimeslot("geometry", timer_geometry) call printtimeslot("hamilt", timer_hamilt) call printtimeslot("precdt", timer_preconditioners) call printtimeslot("jdeig", timer_jdeig) call printtimeslot(" incl sparsematrix", timer_sparsematrix) end program wireZB Phụ lục Chương trình máy tính sử dụng phương pháp EMA (chương trình chính) Ngơn ngữ lập trình: Pascal Program CTchinh; uses crt; const ms=8.33742E-31; 53 mv=1.73355E-31; h=6.625E-34; v0=20E-19; s=34; Label 100; Label 101; Label 102; c0,d0,gd0,gc0,delta0,R0:double; Var i0,j0,k0,l,n,i,m,m0,j00:integer; c1,d1,gd1,gc1,delta1,R1:double; i1,j1,k1,m1,j11:integer; c2,d2,gd2,gc2,delta2,R2S:double; i2,j2,k2,m2,j22,sbn:integer; F0,F1,F2:text; a,b,eps:double; key:char; cn:boolean; q0:array[1 400] of double; q1:array[1 400] of double; q2:array[1 400] of double; {Ham Bessel I0} FUNCTION bessi0(x: double): double; VAR ax: double; y,ans: double; BEGIN IF abs(x) < 3.75 THEN BEGIN y := sqr(x/3.75); ans := 1.0+y*(3.5156229+y*(3.0899424+y*(1.2067492+y* (0.2659732+y*(0.360768e-1+y*0.45813e-2))))) END ELSE BEGIN ax := abs(x); y := 3.75/ax; ans := (exp(ax)/sqrt(ax))*(0.39894228+y*(0.01328592+y*(0.00225319 +y*(-0.00157565+y*(0.00916281+y*(-0.02057706 +y*(0.02635537+y*(-0.01647633+y*0.00392377)))))))) END; bessi0 := ans; END; {Bessel I1} FUNCTION bessi1(x: double): double; VAR ax: double; y,ans: double; BEGIN IF abs(x) < 3.75 THEN BEGIN y := sqr(x/3.75); ans := x*(0.5+y*(0.87890594+y*(0.51498869+y*(0.15084934 +y*(0.2658733e-1+y*(0.301532e-2+y*0.32411e-3)))))) END ELSE BEGIN ax := abs(x); y := 3.75/ax; ans := 0.2282967e-1+y*(-0.2895312e-1+y*(0.1787654e-1-y*0.420059e- 2)); ans := 0.39894228+y*(-0.3988024e-1+y*(-0.362018e-2 +y*(0.163801e-2+y*(-0.1031555e-1+y*ans)))); 54 ans := (exp(ax)/sqrt(ax))*ans; IF x < 0.0 THEN ans := -ans END; bessi1 := ans END; {Ham Bess K0} FUNCTION bessk0(x: double): double; VAR y,ans: double; BEGIN IF x

Ngày đăng: 11/11/2020, 22:25

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w