Этот пост посвящен электромагнитному симулятору с открытым исходным кодом openEMS. Автор проекта – Торстен Либих (Германия, Университет Дуйсбург-Эссен).
Сайт проекта - openems.de .
Репозиторий на GitHub: github.com/thliebig/openEMS-Project .
Симулятор является кроссплатформенным и работает на Linux и Windows. Когда я впервые увидел этот проект, я не поверил, что такое можно создать.
Создание электромагнитного симулятора — достаточно трудоемкая задача, и раньше я думал, что это за пределами возможностей open-source-сообщества.
Однако openEMS опровергает это мнение.
Это полноценный электромагнитный симулятор.
Конечно, он не дотягивает до уровня СВСС, но это уже очень достойный результат. Вот пример использования симулятора.
Это диаграмма направленности рупорной антенны 15 ГГц, полученная с помощью openEMS.
Ключевая особенность
Отличительной особенностью этого симулятора является то, что он не имеет собственного графического интерфейса, а встроен в Octave или Matlab. Задача моделирования представляет собой скрипт Octave или Matlab, а для просмотра результатов используется программа Paraview. Например, рупорная антенна моделируется так сценарий.Электромагнитный симулятор предназначен для расчета распределения электромагнитного поля в различных системах, возбуждаемых как от источника переменного напряжения, так и от внешнего электромагнитного поля.
1. Расчет электромагнитного поля (электродинамики) методом FDTD (метод конечных разностей во временной области) 2. Расчет S-параметров электромагнитных систем.
3. Расчет электромагнитного поля в ближней и дальней зоне 4. Расчет диаграмм направленности антенн 5. Визуализация результатов Преимущество openEMS в том, что он встроен в Matlab/Octave, и поэтому мы имеем неограниченные возможности параметризации моделей.
Для постобработки результатов также можно использовать всю мощь этих систем числовой математики.
В этом случае не нужно возиться с экспортом результатов и запихиванием их в математическую систему, а можно сразу получать графики и вставлять их в статьи.
Недостатком openEMS является повышенный барьер входа.
Симулятор не интуитивно понятен.
Чтобы понять, что с этим делать, необходимо прочитать мануалы.
Без знания Matlab/Octave с ним вообще невозможно работать.
Монтаж
Инструкция по установке здесь www.openems.de/index.php/OpenEMS#Установка Для установки под Linux вы можете использовать готовые пакеты для вашего дистрибутива, подключив сторонний репозиторий openEMS. Например, для Debian 7 установка выполняется в два этапа.Сначала добавляем репозиторий:
И затем установите пакеты:wget -O- ' http://download.opensuse.org/repositories/home:/sibbi77:/openEMS/Debian_7.0/Release.key ' 2>/dev/null | apt-key add - echo 'deb http://download.opensuse.org/repositories/home:/sibbi77:/openEMS/Debian_7.0/ /' > /etc/apt/sources.list.d/openems.list
apt-get update
apt-get install openems appcsxcad
Для Slackware14.1 от меня есть SlackBuild: github.com/ra3xdh/openEMS.SlackBuild Если для вашего дистрибутива нет готовых пакетов, вам придется собрать openEMS из исходников.
Инструкция по сборке здесь: www.openems.de/index.php/Compile_from_Source Для сборки вам понадобятся следующие библиотеки:
- КГАЛ
- способствовать росту
- крошечныйxml
- hdf5
- Qt4
- ВТК5
Для просмотра результатов моделирования необходимо установить Paraview. Обычно он включен в ваш дистрибутив и устанавливается с помощью менеджера пакетов.
Настройка после установки
Теперь вам нужно прописать пути к пакету openEMS в файле конфигурации Octave или Matlab. Предположим, что openEMS установлен в /opt/openEMS. Затем вам нужно добавить в файл $HOME/.
octaverc: addpath('/opt/openEMS/share/openEMS/matlab');
addpath('/opt/openEMS/share/CSXCAD/matlab');
Для Matlab то же самое нужно добавить в файл start.m
Теперь вы можете приступить к работе.
Пробный забег
Сначала проверяем, что само ядро openEMS запускается.
Для этого в консоли перейдите в каталог, в котором установлен openEMS, а затем запустите openEMS. Например, для случая установки в /opt/openEMS: cd /opt/openEMS/bin/
.
/openEMS
Вы должны получить что-то вроде этого вывода в консоли: ----------------------------------------------------------------------
| openEMS 64bit -- version v0.0.32-14-g63adb58
| (C) 2010-2013 Thorsten Liebig <[email protected]> GPL license
----------------------------------------------------------------------
Used external libraries:
CSXCAD -- Version: v0.5.2-15-gcb5b3cf
hdf5 -- Version: 1.8.13
compiled against: HDF5 library version: 1.8.13
tinyxml -- compiled against: 2.6.2
fparser
boost -- compiled against: 1_54
vtk -- Version: 5.10.1
compiled against: 5.10.1
Если это сработает, то можно продолжать.
Иначе что-то не устанавливается Так.
Теперь проверяем интерфейс с Octave. запустите Octave или Matlab и проверьте, все ли работает. Сначала проверяем наличие взаимодействия с CSXCAD — программой для предварительного просмотра 3D-модели.
Вам нужно ввести команду InitCSX() и система должна выдать что-то вроде этого: octave:1> InitCSX()
ans =
scalar structure containing the fields:
Properties = [](0x0)
ATTRIBUTE =
scalar structure containing the fields:
CoordSystem = 0
Теперь нам нужно протестировать интерфейс для создания конечно-разностного пространства во временной области: octave:2> InitFDTD(0,0)
ans =
scalar structure containing the fields:
ATTRIBUTE =
scalar structure containing the fields:
NumberOfTimesteps = 0
endCriteria = 0
Теперь попытаемся запустить openEMS из Matlab/Octave с несуществующей задачей: octave:4> RunOpenEMS('.
','nonexistent.xml','.
') ---------------------------------------------------------------------- | openEMS 64bit -- version v0.0.32-14-g63adb58 | (C) 2010-2013 Thorsten Liebig <[email protected]> GPL license ---------------------------------------------------------------------- [.
] openEMS - unknown argument: .
openEMS: Error File-Loading failed!!! File: nonexistent.xml
Теперь попробуем запустить просмотрщик геометрии CSXCAD. Для этого набираем внутри Octave команду (она запускает CSXCAD с каким-то пустым файлом): CSXGeomPlot('nonexistant.xml')
В ответ вы должны получить сообщение об ошибке, в котором нажмите «ОК», после чего должно открыться окно CSXCAD. Это выглядит так:
Если все эти действия выполнены, то можно приступать к освоению тренажера.
Следующая часть покажет вам, как моделировать распространение электромагнитной волны в пространстве между двумя параллельными пластинами.
Ресурсы openEMS
- Проект Сай: openems.de
- Гитхаб: github.com/thliebig/openEMS-Project
- Вики: openems.de/index.php/Main_Page
- Список функций: openems.de/index.php/List_of_Functions
-
Синий Экран Смерти!
19 Oct, 24 -
Рыболовные Судна
19 Oct, 24 -
Как Сделать Ваш Сайт Быстрее
19 Oct, 24 -
Типы И Определения Веб-Хостинга
19 Oct, 24