Моделирование фотонных кристаллов в программной среде MEEP. Знакомство со средой программирования
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
µссорные системы.
MPI, конкретно к используемым продуктам, реализован так, что несколько программ могут одновременно обращаться к одному control файлу. C++ интерфейс не поддерживает данную функцию. Чтобы MPI работало, необходимо также установить HDF5.
)H5utils программы - отвечает за визуализацию научных данных в бесплатный и легко переносимый формат HDF5. H5utils предоставляет простые инструменты по визуализации данных в PNG формате(2d моделирование), plain text, Vis5d, VTK.
В h5topng входят следующие утилиты:
H5totxt и h5fromtxt - переводит данные из HDF5 файла в/из ASCII текст
H5topng - переводит 2-d расчеты из HDF5 файла в PNG, с возможность задания опций при выводе в цвете.
H5tov5d - переводит данные из HDF5 файла в 3d+ проект для дальнейшей визуализации в программе Vis5d. Чтобы воспользоваться этой утилитой Vis5d уже должна быть установлена на компьютере
H5tovtk - переводит HDF5 в VTK формат свободной программы Visualization ToolKit
H5math - создание и комбинация данных из HDF5 файла с простыми математическими выражениями.
H5read.oct - плагин для GNU Octave для чтения 2-d из HDF5 файлов
H5fromh4 и H5fromh5 - конвертирует HDF(версия 4) в HDF5.
Hdf5-to-cdf - программа для конвертирования HDF5 в CDF формат
)Libctl - бесплатная, основанная на Guile(язык программирования для создания приложений в Linux, позволяющий включать их в другие программы в качестве плагинов) библиотека, позволяющая создавать управляющие файлы для научного моделирования.
)NLopt - бесплатная open-source библиотека для нелинейной оптимизации.
простой интерфейс, позволяющий вызывать различные алгоритмы оптимизации, меняя только 1 параметр.
Поддерживает оптимизацию с большим количеством параметров (некоторые алгоритмы поддерживают размеры в миллион параметров и тысячи констант)
Позволяет использовать локальные и глобальные алгоритмы оптимизации
Имеет алгоритмы безусловной оптимизации, связано условной оптимизации
4. Описание языка программирование и разработанных программ
.1 Первая программа
фотонный кристалл операционный программа
Начнем описание языка программирования с разбора самых простых примеров. Приведем в качестве примера полный листинг программы, а затем строчка за строчкой начнем полное подробное описание всех входящих команд.
Пример 1(Листинг программы test2.ctl):
;1)
(set! geometry-lattice (make lattice (size 10 8 no-size)))
;2)
(set! geometry (list
(make block (center 0 0) (size 1.5 1.5 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)))) )
)
;3)
(set! sources (list (make source (src (make continuous-src (wavelength 1.5) (width 20))) (component Ez) (center -4 0)(size 0 2.5))))
;4)
(set! pml-layers (list (make pml (thickness 1.0))));5)
(set! resolution 20)
;6)
(run-until 200 (at-beginning output-epsilon) (to-appended "ez" (at-every 0.6 output-efield-z)))
Начнем описание программы команда за командой
)Прежде чем объявить структуру кристалла, расположение и частоту источника и др. параметры, необходимо задать размеры расчетной области:
(set! geometry-lattice (make lattice (size 10 8 no-size)))
geometry-lattice - задает область в которой будут проводиться расчеты
size 10 8 no-size - задаем размеры расчетной области. Общий формат команды size x y z, где x y z - размер в каждой из 3-х координат соответственно. С помощью этой команды мы задали двухмерную область размером 10х8. Эта команда позволяет задавать трехмерные области, но в нашем случае размер вдоль оси Z не указан. Т.к мы не задали свойства расчетной области, то по умолчанию,?=1.
2)Теперь можно разместить внутри какие-нибудь объекты. Следующая структура:
(set! geometry (list
(make block (center 0 0) (size 1.5 1.5 infinity) (material (make dielectric (epsilon 12))) )
(make block (center -1.5 0) (size 1 1 infinity) (material (make dielectric (epsilon 12))) )
---------------
)
описывает массив элементов. Распишем ее более подробно:
(set! geometry … )- задает объекты, которые будут участвовать в симуляции.
(list … ) - создает список элементов, которые будут участвовать в симуляции. Используется с целью создания массивов и других форм объединения структур между собой. Например в If для разделения результатов true и else. Используется практически во всех командах. В нашем случае list объединяет несколько блоков в единый массив блоков.
make block - задает блок(квадрат, прямоугольник - 2-у мерный случай; прямоугольный параллелепипед - 3-х мерный). Кроме этого поддерживаются следующие геометрические фигуры:
sphere radius [number] - сфера;
cylinder radius [number] height [number] axis [vector3] - цилиндр
cone radius2 [number] - конус
ellipsoid - элипс
Рассмотрим параметры make block более подробно:
(center 0 0) - указываем где будет располагаться центр блока(в нашем случае в начале координат). По умолчанию координате Z присваивается значение 0.
(size 1.5 1.5 infinity) - задает размеры блока. В нашем случае описывается стержень с основанием 1.5*1.5 и бесконечной длинной.
(material (make dielectric (epsilon 12))) - задает свойства материала. В нашем случае: Задаем диэлектрик с ?=12.
C помощью описанной выше команды, создается структура из 9 стержней, отстоящих друг от друга на расстоянии а=1.5. Все стержни, кроме центрального, имеют основание размером 1*1. Центральный имеет размер 1.5*1.5. Каждый из стержней имеет диэлектрическую проницаемость ?1=12. Диэлектрическая проницаемость окружающей среды ?2=1.
<