Моделирование фотонных кристаллов в программной среде 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>