Моделирование фотонных кристаллов в программной среде MEEP. Знакомство со средой программирования
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
ра, в которую будет заноситься значение энергий волны для каждой из частот.
(add-flux fcen df nfreq - задает в каком диапазоне частот нужно производить расчеты. Nfreq - описывает количество частот из этого диапазона.
(make flux-region - задает область пространства в которой нужно произвести расчет.
5)Затем задается в течении какого промежутка времени нужно производить расчеты. Существует два способа. Первый, использованный в программе:
(run-sources+
(stop-when-fields-decayed 50 Ez
(if no-bend?
(vector3 (- dmin 2) l_place)
(vector3 (+ dmax 2) l_place))
1e-3))
(stop-when-fields-decayed - расчет производится до тех пор, пока величина поля не станет меньше определенной величины. В общем виде:
(stop-when-fields-decayed dT component pt decay-by
50 - dT - через какие промежутки времени нужно проводить измерение величины…
Ez - component
(if no-bend?
(vector3 (- dmin 2) l_place)
(vector3 (+ dmax 2) l_place)) - pt -… чтобы ее значение в одной из расчетных точек(при наличии или отсутствии решетки) …
1e-3)) - decay-by - … было бы меньше заданной величины(в нашем случае Ez<0.001)
Во втором способе, можно указать сколько раз нужно произвести расчеты поля после выключения источника излучения. Пример:
(run-sources+ 500) - расчет прекратится через 500 временных интервалов после выключения источника.
6)Все расчеты произведены и можно выполнить вывод результатов.
(display-fluxes trans)
Результат::, 0.35, 5.58516844105163e-5:, 0.351010101010101, 8.45812001141722e-5:, 0.352020202020202, 1.27883318656805e-4:, 0.353030303030303, 1.90004998820637e-4:, 0.354040404040404, 2.75747528407135e-4:, 0.355050505050505, 3.92351676416799e-4:, 0.356060606060606, 5.52562540438976e-4:, 0.357070707070707, 7.76885293373528e-4:, 0.358080808080808, 0.001092440293566721:, 0.359090909090909, 0.00152809295946778
…
В первой колонке задается частота излучения, во второй - количество прошедшей энергии.
Рассчитывать можно не только прошедшее сквозь структуру количество энергии. Также, например, можно рассчитать величину отраженной от структуры энергии или величину потерь излучения. Все зависит от поставленных целей и требует некоторых дополнительных математических операций
7)Произведем анализ полученных результатов:
а) Запуск программы: Запуск программы производится два раза. В первый раз без кристаллической структуры:
meep no-bend?=true flux1.ctl | tee bend0.out
Во второй раз - со структурой:
meep flux1.ctl | tee bend.out
В обоих случаях результаты перенаправляются в файл. Bend0.out - хранит значение энергий падающего излучения; bend.out - хранит значения энергий прошедшего излучения.
Программа запускается два раза, чтобы не произошло наложение волн, оставшихся после первого запуска, на волны при втором запуске поля.
б) Далее переведем результаты программы в формат dat, который воспринимается такими приложениями как Excel и Matlab:
bend0.datflux1:bend.out>bend.dat">grep flux1: bend0.out >bend0.datflux1: bend.out > bend.dat
в) Представление результатов:
Для представления результатов я пользовался средствами Excell:
Частота
Величина прошедшего излучения бралась как отношение количества падающего излучения(2 колонка в bend0.dat) к количеству прошедшего сквозь структуру излучения(вторая колонка в bend.dat).
Как видно из диаграммы количество прошедшего через дефект излучения при частоте 0,36 очень мало (~30%) , когда при остальных частотах величина прошедшего излучения выше 60%.
.5 Рассчет двумерных структур размером 3х3
Рассмотрим простейшую двумерную структуры, состоящие из стержней отстоящих друг от друга на равных расстояниях и формирующих сетку 3х3. Сформируем первую структуры из стержней бесконечной длинны и имеющих квадратную форму в поперечном сечении.
Листинг test2_2.ctl
;Создадим 2-х мерную область размером 10х8)
(set! geometry-lattice (make lattice (size 10 8 no-size)))
;Расположим в этой области стержни бесконечной длины и имеющие размер в ;плоскости ;1х1. Зададим ?1=12.
(set! geometry (list
(make block (center 0 0) (size 1 1 infinity)
(material (make dielectric (epsilon 12))))
(make block (center -1.5 0) (size 1 1 infinity)
(material (make dielectric (epsilon 12))))
(make block (center 1.5 0) (size 1 1 infinity)
(material (make dielectric (epsilon 12))))
(make block (center 0 -1.5) (size 1 1 infinity)
(material (make dielectric (epsilon 12))))
(make block (center -1.5 -1.5) (size 1 1 infinity)
(material (make dielectric (epsilon 12))))
(make block (center 1.5 -1.5) (size 1 1 infinity)
(material (make dielectric (epsilon 12))))
(make block (center 0 1.5) (size 1 1 infinity)
(material (make dielectric (epsilon 12))))
(make block (center -1.5 1.5) (size 1 1 infinity)
(material (make dielectric (epsilon 12))))
(make block (center 1.5 1.5) (size 1 1 infinity)
(material (make dielectric (epsilon 12))))))
;Зададим характеристики источника излучения: синусоида с ?=1,5; центр источника ;расположен в ;координатах (-4 0); размер источника по осям ХY (0 2,5); .
(set! sources (list
(make source
(src (make continuous-src (wavelength 1.5) (width 20)))
(component Ez)
(center -4 0)(size 0 2.5))))
;Зададим толщину PML слоя( толщина =1)
(set! pml-layers (list (make pml (thickness 1.0))))
;Зададим число пикселей на единицу расстояний
(set! resolution 20)
;Запускаем выполнение программы на 200 временных интервалов. Измерения будем ;проводить каждые 0,6 от временного интервала: 200/0.6=333 - количество записанных ;временных интервалов.
(run-until 200
(at-beginning output-epsilon)
(to-appended "ez" (at-every 0.6 output-efield-z)))
Рис 4.5.1 Распределение волны в среде с показателями: a=1.5; D=1; ?1=1; ?2=12; ?=1.5;
Как видно из приведенных рисунков, поток волны, проходящий через кристалл начинает сильно дифрагировать на ячейках сетки. При этом длинна волны, проходящей через кристалл, резко уменьшается. В то время как вне ячеек таких изменений не происходит. Легко заметить, что при прохождении волны уже через 3-й ряд решетки, она значительно теряет в интенсивности. Можно предположить, что при больших размерах ячейки волны практически не будут попадать внутрь кристалла. Можно предположить, что мы задали у?/p>