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

<