Моделирование фотонных кристаллов в программной среде MEEP. Знакомство со средой программирования

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

зовавшись вторым способом, я подгрузил программы Meep и MPB в виде обновлений прямо с официального сайта Ubuntu. При этом я воспользовался командой apt-get. Последующие компиляции примеров программ и разработка собственных, доказали полную работоспособность установленных программ Meep и MPB.

Стоит также отметить, что хоть программы и работают под Linux, но рекомендуемым дистрибутивом является Ubuntu. Доверяя рекомендациям разработчиков, я выполнял разработку программ для своей курсовой работы именно под этим дистрибутивом(Ubuntu v11). Установка Meep и MPB на другие версии Linux не производилась. На сайте разработчиков говорится, что остальные дистрибутивы поддерживают не все функции программ. Удостовериться в данном утверждении мне не получилось, так как это не входит в рамки курсовой и вообще не обязательно.

 

3.4 Описание программных продуктов

 

Основной целью написания этого и последующих курсовых проектов является моделирование в таких программных продуктах, как MEEP и MPB. Эти программные продукты предназначены для расчета наноструктур. MEEP и MPB разрабатывались исследовательской группой ученых из Массачусетского технологического университета(MIT), в которую входят Steven G. Johnson, John D. Joannopoulos и Marin Soljacic.

А)MPB - программный продукт, предназначенный для расчета зонных структур(дисперсионных соотношений) в оптических структурах.

Б)Meep - программа для моделирования электромагнитных по, которая в своей основе использует Метод конечных разностей во временной области(FTDT). С помощью этого метода происходит расчет электромагнитных полей в различных структурах. При этом все пространство разбивается на дискретную сетку, а затем вычисления происходят через равные промежутки времени. Чем меньше временной и пространственный шаг, тем выше точность вычислений, а значит можно проводить моделирование практических задач с высокой точностью. Позволяет проводить расчеты в одно-, двух и трехмерных пространствах. Позволяет делать расчеты электрической и магнитной проницаемостей, эффекты дисперсии в электромагнитных полях, а также позволяет проводить расчеты нелинейных диэлектрических и магнитных материалов.

В процессе написания своего курсового проекта я учился программировать в среде MEEP, строя и изучая параллельно различные диэлектрические структуры. В связи с тем, что большая часть используемых структур будет использоваться и в MPB, изучение основ программирования на Scheme позволит, в последствии, перейти к моделированию реальных трехмерных фотонных структур. Изучение основ владения программными средствами проходило на моделирование двумерных периодических структур с различными видами дефектов. Проведем обзор языка программирования Scheme и моделей, которые удалось смоделировать.

Как отмечено в документации к MEEP значения ?0, 0 и с скрыты от программиста. Их значения уже занесены в расчетные формулы и задавать их значения не нужно. Значения этих констант уже занесено в некоторую одну единицу.

В связи с тем, что уравнение Максвелла инвариантно(увеличение всех величин в уравнении в 10 приводит к увеличению частоты в 10 раз), то это позволяет использовать безразмерные величины. Это может быть очень удобно, так как присваивая самостоятельно одной из величин размерность мы можем проводить расчеты в очень широком диапазоне частот и периодов решетки.

В MEEP скорость света принято приравнивать c=1, а - период решетки. Частота в MEEP определяется как f=c/a (или для ?=2?c/a). Эти условия позволяют определять f как f=a/?.

 

.5 Описание библиотек и утилит, используемых MEEP и MPB

и MPB и библиотеки к ним написаны на С и С++, но также вызываются библиотеки BLAS и LAPACK, которые обычно компилируются на фортране. Поэтому при компиляции могут возникнуть проблемы связанные с различием версий между компилятором и библиотеками. По умолчанию используются компилятор фортрана f77 и g77

BLAS и LAPACK библиотек необходимы для того, чтобы установить Harminv. Harminv не требуется для MEEP, но настоятельно рекомендуется при расчетах резонанса. Но они могут пригодиться при работе с MPB.

)BLAS - расшифровывается как "Basic Linear Algebra Subroutines"(Базовые подпрограммы линейной алгебры). Используется при перемножении матриц и работе с векторами . В ней находятся все базовые операции линейной алгебры, которые могут использоваться при написании более сложных приложений, а также при работе с LAPACK. Используемые алгоритмы отличаются высокой оптимальностью.

Состоит из 3-х уровней:

Выполнение скалярных, векторных и вектор-вектор операций;

Выполнение матрица-вектор операций;

Выполнение матрица-матрица операций.

)LAPACK - Linear Algebra PACKage - стандартная библиотека процедур на основе BLAS, для более сложных операций линейной алгебры таких как: инверсия матриц, диагонализация матриц и т.д. Использует, по большей части, 3-й уровень BLAS.

)GNU Guile - является расширенным скриптовым языком программирования, основанным на Scheme. Используется как, основанная Libctl библиотеках, оболочка для Meep(по умолчанию используется С++ интерфейс).

)Libctl - бесплатная, основанная на Guile(язык программирования для создания приложений в Linux, позволяющий включать их в другие программы в качестве плагинов) библиотека, позволяющая создавать управляющие файлы для научного моделирования.

)MPI - Если необходимо, то MEEP может работать на параллельных машинах с распределенной памятью, а для этого используется стандартный интерфейс передачи сообщений MPI. Существует две разновидности стандарта MPI: MPICH и LAM. MPI не рекомендуется устанавливать на однопроц?/p>