SIMODO/loom
SIMODO/loom
является разрабатываемой в настоящее время версией проекта адаптивной системы имитационного моделирования SIMODO
.
Основная задача проекта — предоставить программные средства математического моделирования для исследования комплексных моделей, захватывающих несколько предметных областей.
УГТ4 - Технология, проверенная в лаборатории.
Краткое описание
Адаптивная система моделирования — новое понятие в имитационном математическом моделировании, когда в основе системы лежит набор предметно-ориентированных языков (ПОЯ). Каждый из таких языков отвечает только за свою предметную область, которую он описывает наиболее полно и в то же время просто.
Адаптивная система моделирования подразумевает предоставление технологии построения ПОЯ. Кроме того предполагается, что система должна иметь открытую программную архитектуру, позволяющую добавлять в неё без перекомпиляции семантические модули новых языков, плагины визуализации и редактирования, модули для использования из языков и другие расширения.
Состав и возможности проекта SIMODO/loom
:
- Технология разработки ПОЯ.
- Несколько готовых языков, доступных для модификации: базовый императивный язык для описания алгоритмов и декларативный язык описания системы обыкновенных дифференциальных уравнений.
- Встроенная поддержка векторной и матричной арифметики (в разработке).
- Система позволяет выполнять длительный цикл моделирования (часы, сутки, недели…) с возможностью “на лету” не только изменять параметры модели, но и части модели.
- Выполнение моделирования в многопоточной и распределённой среде, что включено в конструкции базового языка (в разработке).
- Интегрированная среда разработки
SIMODO shell
с набором плагинов для редактирования текстов, просмотра результатов в процессе моделирования и других функций. - Интеграция языков в среду разработки
SIMODO shell
с использованием технологии Language Server Protocol. - Возможность отладки сценариев и моделей на реализованных ПОЯ, как с использованием специальной утилиты, так и в интегрированной среде
SIMODO shell
(в разработке). - Возможность добавления или замены компонентов открытой архитектуры: плагинов, модулей, языков и др.
- Средства визуального моделирования — описание модели с использованием блоков (в разработке).
Простой пример
На снимке экрана численное решение задачи трёх тел с использованием системы моделирования SIMODO/loom
. Модель общего вида представлена системой дифференциальных уравнений в векторной форме, записанной в отдельном файле на декларативном языке (расширение файла “.s-ode”).
Сценарий моделирования, на котором задаются начальные условия и определяются параметры отображения информации во время моделирования, записывается на императивном языке (расширение файла “.s-script”). Такой подход позволяет работать с моделью, как с типом, создавая произвольное количество объектов различных типов и добавлять эти объекты на сцену моделирования.
Таким образом, модель отделена от сценария моделирования, что делает описание более понятным, а работу с моделью гибкой, устойчивой к изменениям. Возможность монипулирования объектами модели позволяет формировать состав сцены не только перед началом моделирования, но и в процессе.
Также такой подход не ограничивает использование в качестве описания модели только дифференциальные уравнения, то есть для записи модели могут использоваться различные предметно-ориентированные языки.
Ещё одним преимуществом такого подхода является возможность вычисления каждого объекта параллельно, что в некоторых ситуациях даёт возможность и распределённого моделирования.
Другие примеры моделей на основе дифференциальных уравнений можно посмотреть в каталоге test/examples/engine/ode
. Примеры с тестированием других возможностей SIMODO/loom
находятся в каталоге test/source
.
Статьи
Более подробное описание концепции SIMODO/loom
можно почитать в следующих статьях:
- Унификация работы с ПОЯ и открытая программная архитектура в АСМ SIMODO
- Адаптивная система моделирования как единая платформа отраслевых САПР
Сборка проекта
Проект рекомендуется собирать в GNU/Linux
. Состав необходимых библиотек и способ их установки можно посмотреть в файле сценария непрерывной интеграции .gitlab-ci.yml
. Используются настройки для Ubuntu
и Alt Linux
.
После клонирования или копирования файлов для сборки проекта нужно выполнить следующие команды в каталоге проекта:
./configure
go/make
Запуск проверочных тестов:
test/libs
Запуск интегрированной среды разработки:
bin/simodo-shell
Дистрибутивы проекта
Дистрибутивы проекта формируются автоматически при слиянии в ветку prod
и выкладываются на сайт проекта simodo.ru.
Формируются дистрибутивы для платформ Linux
и Windows
.
Зеркала проекта на открытых репозиториях
Репозиторий проекта периодически обновляется на портале GitVerse.
Подготовка перед фиксацией изменений в системе контроля версий
Обязательно к выполнению, чтобы концы строк изменяемых файлов представляли собой символ LF
.
git config --global core.autocrlf true
Описание
Adaptive Modeling System with open software architecture