Совместные вычисления Engee и ЛОГОС
Решаем задачу интеграции Engee и ЛОГОС
Демонстрируем, как организовать расчетную задачу, которая считается одновременно в двух системах: платформе динамического моделирования Engee и пакета программ ЛОГОС.
ЛОГОС – отечественный программный пакет для высокоточных инженерных расчетов (CAE-система), моделирующий физические процессы на всех этапах жизненного цикла изделия. Включает модули для расчета прочностных задач, гидродинамики, тепломассообмена и других задач, позволяя проводить мультифизическое моделирование, оптимизацию и интегрировать сторонние приложения для решения сложных технических проблем в авиации, машиностроении, энергетике и других отраслях. [1]
Подготовка Engee
Мы будем рассчитывать задачу "стержень Тейлора". Откроем модель Engee, векторные входные и выходные сигналы которой совпадают со спецификацией интерфейса в ЛОГОС.
cd(@__DIR__)
engee.open( "example_LOGOS.engee" )

Сочетание модели, выполняющейся на платформе Engee, с моделью, выполняющейся на локальных ресурсах пользователя ЛОГОС осуществляется при помощи технологии Engee.Интеграция.
Перед запуском модели нужно выполнить команду для включения соответствующего сервиса, который называется engee-device-manager:
# engee.package.install("Engee-Device-Manager") # Перед первым запуском пакет потребуется установить
engee.package.start("Engee-Device-Manager")
На стороне Engee останется только запустить модель. После этого платформа Engee.Интеграция будет осуществлять попытки открыть канал к пакету программ ЛОГОС
engee.run("example_LOGOS")
А пока посмотрим, как настроить расчетную задачу на стороне ЛОГОС.
Подготовка задачи в ЛОГОС
Конфигурация пакета программ ЛОГОС потребует внесения одной модификации в настройки примера, в качестве которого мы выбрали учебную задачу taylor (стержень Тейлора).
Мы доработаем функцию "обратного вызова" (user-defined function, UDF), которая пересчитывает значение некоторой переменной erosion. В эти моменты решатель ЛОГОС будет получать новые значения переменных, приходящие из Engee, и отправлять выходные значения МКЭ расчета для замыкания обратной связи и для отрисовки на графиках.
.png)
В окне где редактируются Пользовательские функции мы внесем изменения в функцию erosion_user:
.png)
Новая функция приведена в сопутствующей этой статье папке и называется example_erosion_cosimulate.py.
Ее назначение состоит в том, чтобы через заданные интервалы времени проверять наличие новых данных в канале связи с Engee и отправлять расчетные данные в этот канал.
Решатель ЛОГОС осуществляет расчетные шаги в собственном темпе, они могут иметь переменный размер. Скрипт косимуляции опирается на сигналы от Engee (приходящие с заданной в Engee частотой дискретизации) чтобы обновлять параметры задачи.
Поэтому важно чтобы частота дискретизации модели в Engee была больше, чем максимально допустимый шаг расчета модели в ЛОГОС
Запуск косимуляции через Engee.Интеграция
Останется выполнить следующие шаги:
- Запустить программу engee-device-manager и выполнить подключение
- Запустить расчеты в Engee и дождаться приглашения в engee-device-manager на запуск расчетов в ЛОГОС
- Запустить расчеты в ЛОГОС
После этого расчеты будут идти параллельно, а расчетные задачи будут обмениваться результатами.
Разберем подробнее каждый этап:
При вызове команды engee.package.install("Engee-Device-Manager") в командной строке Engee пользователь получает возможность скачать небольшую программу engee-device-manager для Windows или для Linux, которая будет осуществлять коммуникацию между локальным компьютером, на котором запущен пакет программ ЛОГОС, и облачными ресурсами, на которых рассчитывается модель Engee.
Если скачать, запустить эту программу и выполнить запуск модели в Engee, а затем и в ЛОГОС, то мы получим следующий результат, свидетельствующий об успешном объединении этих платформ, а на стороне Engee имеется возможность наблюдать графики расчета в реальном времени:
.png)
После завершения вычислений можно будет запустить постпроцессор на стороне ЛОГОС и изучить детали проведенного расчета:
.png)
Заключение
Косимуляция представляет собой режим запуска нескольких расчетных платформ, при котором они обмениваются результатами производимых вычислений с достаточной частотой, чтобы можно было считать что расчеты платформ идут квази-одновременно.
Мы показали, как решение МКЭ-задачи на прочность в пакете программ ЛОГОС можно дополнить алгоритмами и моделями, которые рассчитываются в Engee.