Phần mềm mô phỏng MPB

Một phần của tài liệu ỨNG DỤNG BUỒNG CỘNG HƯỞNG TINH THỂ QUANG tử TRONG hệ DAO ĐỘNG QUANG điện tử (Trang 31 - 40)

2.3.1 Giới thiệu

MIT Photonic band [12] (MPB) là phần mềm mã nguồn mở sử dụng phƣơng pháp mở rộng sóng phẳng (PWE) để tính toán cấu trúc vùng năng lƣợng và sự lan truyền của các sóng điện từ bên trong cấu trúc điện môi tuần hoàn. MPB đƣợc viết và phát triển bởi Steven. Johnson và nhóm nghiên cứu Vật lý Joanopoulos tại đại học MIT.

Đối với việc mô phỏng cấu trúc tính thể, phần mềm này giúp ta khảo sát:  Hình ảnh cấu trúc tinh thể quang tử

 Cấu trúc vùng: miền tần số cấm và miền tần số cho phép ánh sáng truyền qua một tinh thể quang tử

 Sự phân bố điện từ trƣờng ngay tại vị trí sai hỏng của cấu trúc tinh thể quang tử ứng với từng tần số ánh sáng nhất định

2.3.2 Các bước tính toán

2.3.2.1. Bƣớc 1: Tạo file ctl

File ctl là file đƣợc định dạng [ten_không_dau].ctl chứa các câu lệnh tạo cấu trúc tinh thể quang tử và các hàm thực hiện yêu cầu tính toán tƣơng ứng để chạy chƣơng trình.

- Tạo cấu trúc tinh thể quang tử

Xác định cấu trúc mạng

geometry [danh sách các loại đối tƣợng của vật thể]: xác định các đặc trƣng của cấu trúc đang đƣợc mô phỏng.

default-material [loại vật liệu]: xác định các vật liệu mặc định đƣợc sử dụng cho các điểm không thuộc các đối tƣợng của danh sách xác định vật thể. Mặc định không khí

geometry-lattice [kiểu mạng]: xác định các vector cơ bản và kích thƣớc mạng của ô tính toán. Đây là các vector đƣợc hình thành từ ba vector khác trong không gian hình học. Kích thƣớc mạng của ô tính toán xác định kích thƣớc của ô sơ cấp. Nêu bất kỳ chiều nào có giá trị „no-size‟ thì chiều đó đƣợc bỏ đi ( mạng trở thành mạng hai chiều hay một chiều).

Các đặc tính của mạng

basis1, basis2, basis3 [vector3]: đây là ba hƣớng của mạng tinh thể tƣơng ứng với hƣớng Ox, Oy, Oz trong hệ tọa độ Decac. Độ dài của các vector đƣợc bỏ qua và ta chỉ quan tâm đến hƣớng của chúng. Vấn đề độ dài đƣợc xác định bởi thông số basis-size.

basis-size [vector3]: xác định độ dài của ba vector mạng cơ sở.

size [vector3]: xác định kích thƣớc mạng. Nếu bất kỳ chiều nào có kích thƣớc đặc biệt „no-size‟, khi đó chiều tính toán đƣợc giảm đi một; một cách rõ ràng hơn thì hàm điện môi đồng nhất theo hƣớng đó.

- Xác định thông số các đối tƣợng

Geometry-object:

material [loại vật liệu]: loại vật liệu làm nên vật. Có 3 dạng vật liệu chính

dielectric: là loại vật liệu đồng nhất, đẳng hƣớng, tuyến tính có đặc tính: epsilon [number]: hằng số điện môi của vật liệu.

dielectric-anisotropic: là loại vật liệu điện môi đồng nhất, tuyến tính và có thể không đẳng hƣớng.

material-funtion: là loại vật liệu cho phép ta xác định đặc tính nhƣ một hàm của vị trí.

air, vacuum [loại vật liệu]: hai loại vật liệu đƣợc xác định trƣớc là có hằng số điện môi bằng một.

nothing [loại vật liệu]: loại vật liệu khoan một lỗ thông qua các vật thể. center [vector3]: điểm trung tâm của vật. Không có giá trị mặc định. radius [số]: bán kính của vật.

height [số]: độ dài dọc theo các trục.

axis [vector3]: hƣớng của vật, mặc định là song song với trục z. Dạng hình học của đối tƣợng:

Dạng cầu „sphere‟: radius [số]: bán kính của vật.

Dạng trụ „cylinder‟: radius [số]: bán kính đáy của vật; height [number]: độ dài dọc theo các trục; axis [vector3]: hƣớng của vật, mặc định là song song với trục z.

Dạng nón „cone‟: radius2 [số]: bán kính trên của hình trụ, mặc định là 0, lúc này ta có vật liệu dạng hình nón.

Dạng khối „block‟: size [vector3]: kích thƣớc các cạnh của hình khối; e1, e2, e3 [vector3]: hƣớng của các trục hình khối.

- Các hàm đƣợc cung cấp để giúp ta xử lý đối tƣợng dễ dàng, nhanh chóng hơn. (shift-geometric-object obj shift-vector): tịnh tiến vật đến vị trí khác bởi ba vector dịch chuyển.

(geometric-object-lattie-duplicates obj-list [ux uy uz]): sao chép đối tƣợng trong „obj-list‟ bằng bội số của vector mạng cơ sở. Các vector cơ sở có giá trị tùy ý, khi không xác định thì ta mặc định chúng bằng một.

- Các hàm chuyển đổi tọa độ: cho phép ta chuyển đổi qua lại giữa các tọa độ mạng, tọa độ Decac và tọa độ mạng đảo.

(lattice→Cartesian x) (Cartesian→lattice x)

(reciprocal→Cartesian x)(Cartesian→reciprocal x) (reciprocal→lattice x)(lattice→reciprocal x)

- Giới hạn khoảng tính toán

resolution [số or vector3]: xác định độ phân giải của lƣới tính toán, số điểm ảnh trên một đơn vị ô mạng. Nếu độ phân giải là vector3 thì nó xác định độ phân giải của các hƣớng khác nhau là khác nhau, trƣờng hợp còn lại độ phân giải đồng nhất theo các hƣớng. Giá trị mặc định là 10.

dimensions [số nguyên]: xác định số chiều tính toán. Mặc định là ba. Ngoài ra ta có thể sử dụng biến số geometry-lattice có kích thƣớc „no-size‟ trong bất kỳ chiều không gian nào mong muốn.

k-points [dang sách vector3]: Danh sách các vector sóng Block để tính toán các vùng năng lƣợng, đƣợc tạo thành từ vector mạng đảo. Các vector lƣới mạng đảo đƣợc định nghĩa nhƣ sau: cho các vector mạng Rj (không phải các vector mạng cơ sở), vector mạng đảo Gj thỏa mãn Rj*Gj = 2*pi*deltai,j. Thông thƣờng, các vector sóng phải ở trong vùng Brillouin thứ nhất. Mặc định điểm k là không (danh sách trống).

num-bands [số nguyên]: số vùng trạng thái riêng đƣợc tính toán tại mỗi điểm k. Giá trị mặc định là 1.

- Xác định các biến số ra

freqs [danh sách số]: một danh sách tần số của mỗi vùng tính toán cho điểm k cuối cùng, cần sắp xếp theo thứ tự tăng dần.

iteration [số nguyên]: số lần lắp lại cho độ hội tụ của điểm k cuối cùng. current-k [vector3]: điểm k đƣợc tính toán.

gap-list [danh sách tần số lớn nhất và nhỏ nhất]: danh sách vùng cấm đƣợc tìm thấy, đƣợc cài đặt bởi hàm „run‟ khi có hơn hai điểm k đƣợc tính toán.

band-range-data [danh sách của (điểm k nhỏ nhất).(điểm k lớn nhất)]: cho mỗi vùng, danh sách này chứa tần số lớn nhất và nhỏ nhất của vùng, và những điểm k tại cực trị. Chú ý rằng các vùng đƣợc xác định bằng cách sắp xếp tần số theo thứ tự tăng dần.

- Hàm chạy chƣơng trình

Các hàm này giúp ta chạy, điều khiển tiến trình mô phỏng:

(run band-func….): hàm này cho phép chạy chƣơng trình, bắt đầu từ việc đọc các tham số nhập vào, khởi tạo việc mô phỏng và giải quyết các yêu cầu tại mỗi điểm k.

(run-te band-func…); (run-tm band-func…): hai hàm này yêu cầu tính toán sự phân cực theo TE hoặc TM. Sự phân cực TE và TM đƣợc định nghĩa là sự phân bố điện trƣờng và từ trƣờng trong mặt phẳng xy.

- Hàm xuất kết quả mô phỏng cấu trúc vùng

Tất cả các hàm sau xác định chỉ số vùng sẽ xuất ra tƣơng ứng với trƣờng hoặc các hàm tính toán trong câu lệnh. Các hàm đƣợc thiết kế phù hợp để xuất ra các kết quả trƣờng mong muốn.

Xuất ra thành phần từ trƣờng trong vùng theo tất cả hay theo một hƣớng nào đó trong tọa độ Decac.

(output-hfield which-band) (output-hfield-x which-band) (output-hfield-y which-band) (output-hfield-z which-band)

Xuất ra thành phần điện trƣờng trong vùng theo tất cả hay theo một hƣớng nào đó trong hệ tọa độ Decac.

(output-efield which-band) (output-efield-x which-band) (output-efield-y which-band) (output-efield-z which-band)

(output-hpwr which-band); (output-dpwr which-band): hàm xuất ra mật độ năng lƣợng từ trƣờng và điện trƣờng trung bình theo thời gian tƣơng ứng.

(fix-hfield-phase which-band) (fix-dfield-phase which-band) (fix-efield-phase which-band)

Chỉnh sửa pha của trạng thái riêng đƣợc cho bằng cách kinh điển dựa trên trƣờng không gian đã cho. Mặt khác, pha thì ngẫu nhiên; những hàm này có thể tối đa hóa phần thực của trƣờng đã cho.

2.3.2.2. Bƣớc 2: Chạy chƣơng trình

Các câu lệnh chạy chƣơng trình khởi tạo cấu trúc của tinh thể quang tử, tìm cấu trúc vùng và các mode điện từ trƣờng.

- Lệnh chạy chƣơng trình. Định hƣớng vị trí lƣu thông tin đƣợc xuất ra. mpb [name].ctl >& [name].out

- Xuất file hình ảnh cấu trúc tinh thể quang tử h5topng –S 3 epsilon.h5

Hình ảnh đƣợc xuất ra với tên epsilon.h5 có định dạng ***.png

Nhƣng do tính chất của mạng tinh thể quang tử mà ta đang khảo sát là mạng lục giác (với góc nghiêng 60o), nên hình ảnh cấu trúc xuất ra sẽ bị nghiêng góc tƣơng ứng, để xuất đƣợc hình ảnh chính xác, ta cần dùng nhóm câu lệnh sau:

mpb-data-r-m [số nguyên] –n [độ phân giải] [ tên file ảnh] h5ls [tên file ảnh]

grep Gap [name].out

- Xuất thông tin về cấu trúc vùng tần số của tinh thể theo phân cực TE và TM.

Phân cực TM

grep tmfreqs [name].out> [name].tm.dat

Phân cực TE

grep tefreqs [name].out> [name].te.dat

Dữ liệu về cấu trúc vùng theo hai phân cực TE và TM xuất ra trong hai file [name].tm.dat và [name].te.dat sẽ đƣợc sử dụng để vẽ đồ thị sự phân bố cấu trúc vùng theo hai phân cực tƣơng ứng.

- Xuất hình ảnh về sự phân bố điện từ trƣờng trong tinh thể quang tử. mpb-data –r –m 1 –n 32 [tên file]

h5topng –C epsilon.h5:data-new –c bluered –Z –d z.r-new [tên file]

[tên file] là tên của các file chứa các tần số mà ta cần quan sát hình ảnh phân bố điện từ trƣờng.

2.4. Phần mềm mô phỏng MEEP

2.4.1 Giới thiệu

MIT Electromagnetic Equation Propagation [13] (MEEP) là gói phần mềm mã nguồn mở sử dụng phƣơng pháp sai phân hữu hạn trong miền thời gian để khảo sát hệ thống điện từ. Phần mềm này đƣợc phát triển để bổ sung cho gói phần mềm MPB trong việc tính toán trƣờng điện từ trong tinh thể quang tử.

Sử dụng kỹ thuật sai phân hữu hạn trong miền thời gian, phần mềm MEEP cho ta xác định đƣợc các tính chất của tinh thể quang tử:

 Phổ truyền qua, phát xạ và phản xạ sóng điện từ truyền qua tinh thể quang tử

 Tính toán các mode cộng hƣởng, hệ số Q của tần số tƣơng ứng  Tạo ra mô hình trƣờng

2.4.2 Các bước tính toán

File ctl là file đƣợc định dạng [ten_khong_dau].ctl chứa các câu lệnh tạo cấu trúc tinh thể quang tử và các hàm thực hiện yêu cầu tính toán tƣơng ứng để chạy chƣơng trình.

- Tạo cấu trúc tinh thể quang tử

Xác định đặc tính của mạng

geometry [danh sách đặc tính hình học]: xác định các đặc trƣng của cấu trúc đang đƣợc mô phỏng.

default-material [loại vật liệu]: xác định các vật liệu mặc định đƣợc sử dụng cho các điểm không thuộc các đối tƣợng của danh sách hình dạng. Mặc định không khí có hằng số điện môi là một.

geometry-lattice [kiểu mạng]: xác định kích thƣớc ô đơn vị. Nêu bất kỳ chiều nào có giá trị „no-size‟ thì chiều đó đƣợc bỏ đi ( mạng trở thành mạng hai chiều hay một chiều).

dimensions [số nguyên]: xác định số chiều mô phỏng.

resolution [số]: xác định độ phân giải của lƣới tính toán (số điểm ảnh trên một đơn vị chiều dài). Giá trị mặc định là 10.

- Xác định các thông số của các đối tƣợng

Geometry-object:

Material [loại vật liệu]: loại vật liệu làm nên vật.

Center [vector3]: điểm trung tâm của vật. Không có giá trị mặc định. Dạng hình học của đối tƣợng: sphere, cylinder, block.

Các biến đƣợc định nghĩa trƣớc:

air, vacuum [loại vật liệu]: hai loại vật liệu có hằng số điện môi bằng một.

perfect-electric-conductor hoặc metal [loại vật liệu]: vật liệu có độ dẫn điện hoàn hảo với

.

perfect-magnetic-conductor [loại vật liệu]: vật liệu có độ dẫn từ hoàn hảo với . nothing [loại vật liệu]: vật liệu khoan một lỗ xuyên qua các vật thể khác.

infinity [số]: con số lớn (1.0e) sử dụng cho chiều vô hạn của của đối tƣợng. pi [số]: 3.14159…

sources [danh sách nguồn]: xác định nguồn sử dụng trong mô phỏng.

Tất cả các nguồn sử dụng trong MEEP đƣợc phân tách theo thời gian và không gian.

Các đặc tính của nguồn

src [src-time]: xác định sự phụ thuộc thời gian của nguồn. Sự phụ thuộc thời gian của nguồn có thể ở ba dạng sau:

 continuous-src: nguồn sóng liên tục tỉ lệ với exp(-iɷt), có các đặc tính sau:

frequency [số]: tần số f theo đơn vị c/khoảng cách (hoặc ɷ hoặc là 2π/khoảng cách). Ngoài ra, ta còn có thể xác định bằng bƣớc sóng hay chu kỳ.

start-time [số]: thời gian bắt đầu cho nguồn, mặc định là 0. end-time [số]: thời gian kết thúc nguồn, mặc định là vô hạn. width [số]: độ rộng thời gian khi nguồn tắt và bật.

cutoff [số]: độ rộng của thời gian bật tắt nguồn để dòng phân rã từ khi tắt nguồn và giảm đến 0. Một giá trị lớn hơn của cutoff sẽ giảm lƣợng thành phần tần số cao từ khi bắt đầu và kết thúc nguồn, nhƣng điều này sẽ làm cho thời gian tính toán lâu hơn. Giá trị mặc định là 3.0.

 Gaussian-src: nguồn xung Gaussian tỉ lệ với exp(-iɷt – (t-t0)2/2w2) với các đặc tính sau:

frequency [số]: tần số trung tâm f theo đơn vị c/khoảng cách (hoặc ɷ hoặc là 2π/khoảng cách). Ngoài ra, ta còn có thể xác định bằng bƣớc sóng hay chu kỳ.

width [số]: độ rộng w sử dụng trong Gaussian. Có thể xác định bằng (fwidth x), tƣơng đƣơng với (width (/ 1 x)).

start-time [số]: thời gian bắt đầu cho nguồn, mặc định là 0.

cutoff [số]: độ rộng của thời gian bật tắt nguồn để dòng phân rã từ khi tắt nguồn và giảm đến 0. Một giá trị lớn hơn của cutoff sẽ giảm lƣợng thành phần tần số cao từ khi bắt đầu và kết thúc nguồn, nhƣng điều này sẽ làm cho thời gian tính toán lâu hơn. Giá trị mặc định là 5.0.

 Custom-src: hàm cho nguồn đƣợc xác định trƣớc. Chúng ta cần xác định thời gian bắt đầu và kết thúc nếu muốn hàm chạy chƣơng trình khởi tạo nguồn chạy.

start-time [số]: thời gian bắt đầu cho nguồn. Mặc định là âm vô cùng ( ). Tuy nhiên, việc mô phỏng thƣờng bắt đầu tại t=0 ở điều kiện ban đầu.

end-time [số]: thời gian kết thúc cho nguồn, mặc định là vô cùng.

component [hằng số thành phần]: xác định hƣớng và loại thành phần dòng. Ví dụ: Ex, Ey, Hx, Hy…

center [vector3]: vị trí trung tâm của nguồn trong ô tính toán.

size [vector3]: kích thƣớc của nguồn theo từng hƣớng của ô tính toán. Mặc định là (0,0,0).

Flux-region: một vùng (thể tích, mặt phẳng, đƣờng hoặc điểm) để tính toán tích phân của vector Poyting của trƣờng dịch chuyển Fourier với các đặc tính:

center [vector3]: trung tâm của vùng thông lƣợng.

size [vector3]: kích thƣớc của vùng thông lƣợng dọc theo mỗi trục. Mặc định là (0,0,0).

direction [hằng số hƣớng]: hƣớng để tính toán thông lƣợng. Mặc định là tự động kho vùng thông lƣợng là mặt phẳng (hoặc đƣờng).

weight [số]: hệ số tỉ trọng để nhân với thông lƣợng khi tính toán. Mặc định là 1.0. Chú ý: thông lƣợng luôn đƣợc tính toán theo hƣớng dƣơng của tọa độ.

Pml-layers [danh sách pml]: xác định các lớp biên hấp thụ đƣợc sử dụng.

Lớp pml: Lớp hấp thụ xung quanh biên cấu trúc mô phỏng có đặc tính sau: thickness [số]: độ dày của lớp PML (kéo dài từ biên đến bên trong ô tính toán). direction [hƣớng]: xác định hƣớng của biên để đặt lớp PML.

- Hàm chạy chƣơng trình

Các hàm quan trọng giúp xuất các tập hợp kết quả về phổ thông lƣợng.

(add-flux fcendf nfreq flux-regions…): thêm một nhóm vùng thông lƣợng cho mô phỏng (khởi tạo trƣờng nếu chúng chƣa đƣợc khởi tạo), sau đó yêu cầu MEEP tổng hợp trƣờng đã đƣợc chuyển đổi Fourier cho tần số không gian nfreq bao phủ dải tần số từ fcen-df/2 đến fcen+df/2. Một khi chúng ta sử dụng hàm „add-flux‟, sự chuyển đổi Fourier của trƣờng sẽ đƣợc tổng hợp một cách tự động suốt thời gian tính toán. Bất cứ lúc nào chúng ta cũng có thể yêu cầu MEEP xuất ra phổ thông lƣợng hiện tại thông qua một trong

(display-fluxes fluxes): xuất ra đối tƣợng thông lƣợng, dấu „,‟ ngăn cách giữa tần số và phổ thông lƣợng.

(get-flux-freqs flux): xuất ra thông lƣợng và trả về danh sách tần số đang tính toán phổ.

- Hàm chạy chƣơng trình tính toán phổ thông lƣợng

(run-until cond?/time step-funtions…): chạy mô phỏng trong một thời gian xác định hoặc một điều kiện nào đó. Điều kiện đầu tiên có thể là giá trị xác định của thời gian cần chạy mô phỏng, hoặc là một hàm khi quá trình mô phỏng cần dừng lại.

(run-sources step-funtions…): chạy mô phỏng cho đến khi tất cả các nguồn đƣợc tắt. Điều này không có nghĩa là các trƣờng bằng không tại điểm kết thúc, thông thƣờng vài trƣờng sẽ dao động xung quanh vị trí kích thích.

(run-sources+cond?/time step-funtions…): giống nhƣ hàm „run-sources‟, điều kiện đầu tiên có thể là giá trị xác định của thời gian cần chạy mô phỏng, hoặc là một hàm khi quá trình mô phỏng cần dừng lại.

(stop-when-flields-decayed dT c pt decay-by): trả về hàm điều kiện, thích hợp cho việc sử dụng hàm „run-until/run-sources+‟, khảo sát thành phần c (vd Ex) tại điểm pt (một vector3) và giữ quá trình chạy đến khi giá trị tuyệt đối phân hủy ít nhất „decay-by‟ từ giá trị tối đa trƣớc đó. Thông thƣờng sự gia tăng thời gian chạy là dT.

(run-k-point T k): chạy mô phỏng cho mỗi điểm k trong vector3 và xuất ra các tần

Một phần của tài liệu ỨNG DỤNG BUỒNG CỘNG HƯỞNG TINH THỂ QUANG tử TRONG hệ DAO ĐỘNG QUANG điện tử (Trang 31 - 40)

Tải bản đầy đủ (PDF)

(67 trang)