Community Engee

Совместные вычисления Engee и ЛОГОС

Author
avatar-nkapyrinnkapyrin
Notebook

Решаем задачу интеграции Engee и ЛОГОС

Демонстрируем, как организовать расчетную задачу, которая считается одновременно в двух системах: платформе динамического моделирования Engee и пакета программ ЛОГОС.

ЛОГОС – отечественный программный пакет для высокоточных инженерных расчетов (CAE-система), моделирующий физические процессы на всех этапах жизненного цикла изделия. Включает модули для расчета прочностных задач, гидродинамики, тепломассообмена и других задач, позволяя проводить мультифизическое моделирование, оптимизацию и интегрировать сторонние приложения для решения сложных технических проблем в авиации, машиностроении, энергетике и других отраслях. [1]

Подготовка Engee

Мы будем рассчитывать задачу "стержень Тейлора". Откроем модель Engee, векторные входные и выходные сигналы которой совпадают со спецификацией интерфейса в ЛОГОС.

In [ ]:
cd(@__DIR__)
engee.open( "example_LOGOS.engee" )
image.png

Сочетание модели, выполняющейся на платформе Engee, с моделью, выполняющейся на локальных ресурсах пользователя ЛОГОС осуществляется при помощи технологии Engee.Интеграция.

Перед запуском модели нужно выполнить команду для включения соответствующего сервиса, который называется engee-device-manager:

In [ ]:
# engee.package.install("Engee-Device-Manager") # Перед первым запуском пакет потребуется установить
engee.package.start("Engee-Device-Manager")

На стороне Engee останется только запустить модель. После этого платформа Engee.Интеграция будет осуществлять попытки открыть канал к пакету программ ЛОГОС

In [ ]:
engee.run("example_LOGOS")

А пока посмотрим, как настроить расчетную задачу на стороне ЛОГОС.

Подготовка задачи в ЛОГОС

Конфигурация пакета программ ЛОГОС потребует внесения одной модификации в настройки примера, в качестве которого мы выбрали учебную задачу taylor (стержень Тейлора).

Мы доработаем функцию "обратного вызова" (user-defined function, UDF), которая пересчитывает значение некоторой переменной erosion. В эти моменты решатель ЛОГОС будет получать новые значения переменных, приходящие из Engee, и отправлять выходные значения МКЭ расчета для замыкания обратной связи и для отрисовки на графиках.

image.png

В окне где редактируются Пользовательские функции мы внесем изменения в функцию erosion_user:

image.png

Новая функция приведена в сопутствующей этой статье папке и называется example_erosion_cosimulate.py.

Ее назначение состоит в том, чтобы через заданные интервалы времени проверять наличие новых данных в канале связи с Engee и отправлять расчетные данные в этот канал.

Решатель ЛОГОС осуществляет расчетные шаги в собственном темпе, они могут иметь переменный размер. Скрипт косимуляции опирается на сигналы от Engee (приходящие с заданной в Engee частотой дискретизации) чтобы обновлять параметры задачи.

Поэтому важно чтобы частота дискретизации модели в Engee была больше, чем максимально допустимый шаг расчета модели в ЛОГОС

Запуск косимуляции через Engee.Интеграция

Останется выполнить следующие шаги:

  1. Запустить программу engee-device-manager и выполнить подключение
  2. Запустить расчеты в Engee и дождаться приглашения в engee-device-manager на запуск расчетов в ЛОГОС
  3. Запустить расчеты в ЛОГОС

После этого расчеты будут идти параллельно, а расчетные задачи будут обмениваться результатами.

Разберем подробнее каждый этап:

При вызове команды engee.package.install("Engee-Device-Manager") в командной строке Engee пользователь получает возможность скачать небольшую программу engee-device-manager для Windows или для Linux, которая будет осуществлять коммуникацию между локальным компьютером, на котором запущен пакет программ ЛОГОС, и облачными ресурсами, на которых рассчитывается модель Engee.

Если скачать, запустить эту программу и выполнить запуск модели в Engee, а затем и в ЛОГОС, то мы получим следующий результат, свидетельствующий об успешном объединении этих платформ, а на стороне Engee имеется возможность наблюдать графики расчета в реальном времени:

image.png

После завершения вычислений можно будет запустить постпроцессор на стороне ЛОГОС и изучить детали проведенного расчета:

image.png

Заключение

Косимуляция представляет собой режим запуска нескольких расчетных платформ, при котором они обмениваются результатами производимых вычислений с достаточной частотой, чтобы можно было считать что расчеты платформ идут квази-одновременно.

Мы показали, как решение МКЭ-задачи на прочность в пакете программ ЛОГОС можно дополнить алгоритмами и моделями, которые рассчитываются в Engee.