Meep
Meep is a free and open-source software package for electromagnetics simulation via the finite-difference time-domain (FDTD) method spanning a broad range of applications.
Meep Install
Результаты моделирования позволяют найти собственные моды системы их добротность и многое другое. Имеются скомпилированные сборки пакета для линукс и мак ос, чтобы пакет был агностичен по отношению к дистрибутиву линукса, используется контейнер и окружение conda. Для установки MEEP необходимо вначале установить conda, для этого выполнить следующие команды
$ wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh $ bash miniconda.sh -b -p /home/user/dir $ export PATH=/home/user/dir/bin:$PATH
где /home/user/dir - желаемый путь установки. Желательно также добавить "export PATH=/home/user/dir/bin:$PATH" in ~/.bashrc too
Далее необходимо создать окружение для MEEP, чтобы изолировать его от других питоновских библиотек установленных в системе.
Команда для одноядерной системы (удобно прототипировать код и проверять его в IDE) : $conda create -n mp -c conda-forge pymeep
Для многоядерной (для фактического запуска симуляции): $ conda create -n pmp -c conda-forge pymeep=*=mpi_mpich_*conda
Для перехода в соответствующее окружение,что необходимо для запуска моделирования, используйте команду: $ conda activate pmp
На этом установка завершена.
Для запуска файла code.py на 4 ядрах с помощью MPI и выводом промежуточной информации в Nanobeam.out будучи в окружении pmp запустите:
$ mpirun -np 4 python code.py > Nanobeam.out
Во время выполнения симуляции можно сохранять значения поля в рассматриваемом объеме в интересующий момент времени, данные файлы сохраняются в специальном бинарном формате h5.
С Данным файлом можно в последствие работать и делать карты интесивности поля, смотреть динамику в виде скомплилрованных в видео картинок (см. приложение)
В kazanqc.onlyoffice.eu в папке KQC-share/NanoCavity/Simulation/ вы сможете найти файлы кода с комментариями
NanoBeam-custom.py
3D-exp-structure.py
Файл NanoBeam-custom.py проводит моделирование резонатора и его следует запускать в многоядерном окружение.
Файл 3D-exp-structure.py визуализирует струтктуру и его можно запускать в одноядерном фактически, данный файл копирует предыдущей кроме последнего десятка строчек
Файл NanoBeam-custom.py есть булевы переменные no_holes и resonant_modes, первая отвечает за наличие структуры фотонного кристалла (False - есть кристалл, True - нет, что нужно для калибровки пропускания), вторая выбирает режим (True - оценка добротности, False - постройка спектра).