Автоматизация взаимодействия с моделью из Python программы#

Для автоматизации работы с моделью REPEAT VISION необходимо выполнение следующих условий:

  • Модель должна быть отлажена, в ней не должны содержаться ошибки запуска, а расчёт успешно завершаться;

  • Модель должна содержать глобальные переменные, связанные с необходимыми вам свойствами блоков. Глобальные переменные модели REPEAT VISION используются для получения исходных значений свойств по web API. В глобальные переменные модели записываются значения параметров и граничных условий от вашей Python программы.

Примечание

Ознакомьтесь с уроком подготовки модели REPEAT VISION для автоматизации в нашей документации.

В процессе выполнения данного урока вы узнаете:

  • Как получить доступ к модели REPEAT VISION с возможностью передачи в нее новых значений переменных и получения результатов расчётов;

  • Какие структуры данных поддерживаются Python объектами для взаимодействия с моделью REPEAT VISION;

  • Правила и рекомендации взаимодействия с моделью REPEAT VISION из Python программы.

1.  Начало работы#

Для начала необходимо выбрать проверенную модель, которая успешно выполняет расчёт, содержит глобальные переменные и блок Выходной порт. В качестве такой модели можно использовать пример из урока «Подготовка модели для автоматизации».

Далее требуется создать файл Python программы в вашей рабочей папке для выполнения данного урока. Создайте файл с именем example_model_interaction.py и откройте его в текстовом редакторе или среде для разработчика.

2.  Импорт необходимых зависимостей#

Любая Python программа начинается с импорта необходимых зависимостей. Для автоматизации работы с моделью REPEAT VISION нам потребуются следующие пакеты.

1# -*- coding: utf-8 -*-
2import pandas as pd
3import numpy as np
4
5import repeat as rp
  • Строки 2, 3. Импорт пакетов для подготовки и обработки данных: pandas и numpy

  • Строка 5. Импорт пакета repeat для взаимодействия вашей Python программы с платформой REPEAT VISION.

3.  Настройка API ключа пользователя#

Для связи с REPEAT VISION требуется использование API ключа, который вы можете создать в соответствующем разделе настроек вашего аккаунта.

Примечание

Подробное описание шагов настройки API ключа смотрите в соответствующем разделе нашей документации.

Скопируйте API ключ из вашего кабинета и присвойте строковое значение ключа аргументу token класса User в соответствии с примером кода ниже.

5import repeat as rp
6
7user = rp.User(token = 'enter a unique API key from REPEAT user cabinet instead of this comment')
8app = rp.Application(user)
  • Строка 7. Создаётся экземпляр класса User для настройки доступа к платформе REPEAT из Python программы

  • Строка 8. Создаётся экземпляр класса Application, в котором настроен по умолчанию аргумент address - адрес подключения к облачной версии платформы REPEAT VISION.

Внимание

Если вы работаете с дистрибутивом REPEAT VISION, то требуется при создании экземпляра класса Application указывать адрес к вашему дистрибутиву REPEAT VISION, например:

app = rp.Application(
    user, 
    address = 'http://MYLOCAL.REPEAT.ADDRESS'
    )

4.  Настройка идентификатора проекта#

Идентификатор проекта необходим для настройки связи вашей Python программы с моделью REPEAT VISION, которую вы выбрали для автоматизации взаимодействия.

Идентификатор проекта REPEAT VISION можно получить следующими способами:

  1. Из графического интерфейса приложения в разделе управления проектами

  2. Непосредственно в рабочей области при работе с проектом

  3. Через web API

  4. С помощью API пакета repeat.

В рамках урока рассмотрим способ №1.

Откройте раздел Проекты приложения REPEAT VISION. Раздел управления проектами будет выглядеть как на рисунке ниже, только с вашим списком проектов.

projects

Необходимо выбрать подходящий проект для автоматизации работы. Выберем проект Подготовка модели для автоматизации, для этого в его строке требуется нажать на кнопку ..., расположенную в конце строки с данным проектом.

projects_methods

В списке действий нужно выбрать Скопировать id проекта для получения уникального идентификатора проекта.

Далее в файле вашей Python программы требуется создать переменную project и присвоить переменной целое число ранее скопированного значения id проекта.

project = 12345

Совет

Если вы знаете имя проекта модели, с которой планируете работать из Python программы, то идентификатор проекта можно получить из атрибута projects экземпляра класса Application следующим способом.

from pprint import pp

app = rp.Application(user)
pp(app.projects)

# {12345: {'userId': 11,
#          'projectId': 12345,
#          'role': 'owner',
#          'createdAt': '2024-03-11T11:18:36.419167Z',
#          'updatedAt': '2024-03-11T11:18:36.419167Z',
#          'projectName': 'Подготовка модели для автоматизации',
#          'solverType': 'mdcore',
#          'vm': {}},
#  45678: {'userId': 11,
#
# ...

Найти нужный вам проект можно по ключу имени проекта projectName. Идентификатор нужного вам проекта хранится в значении для ключа projectId.

Например, для проекта с именем Подготовка модели для автоматизации идентификатор проекта имеет значение 12345.

5.  Получение объекта модели#

На следующем шаге создаётся экземпляр класса TimeInterval для настройки диапазона времени, в котором пользователю необходимо получить значения результатов расчёта параметров из модели REPEAT VISION.

t_interval = rp.TimeInterval(start = 1, end = 1000)

Данная настройка означает, что в Python программу будут загружаться временные ряды результатов расчёта начиная с \(1 [мс]\) до \(1000 [мс]\).

Далее требуется настроить Python объект для взаимодействия с вашей моделью REPEAT VISION следующим образом.

from pprint import pp

model = app.get_exploration_model(project, t_interval)
pp(model)
# ExplorationModel(
#   project = 12345,
#   name = 'Подготовка модели для автоматизации',
#   time_interval = TimeInterval(start = 0, end = 1000)
#   )

Объект model является экземпляром класса ExplorationModel и создаётся методом get_exploration_model экземпляра класса Application. При этом методу get_exploration_model передаются аргументы идентификатора проекта и временного интервала, настроенные ранее.

Класс ExplorationModel обеспечивает взаимодействие с моделью REPEAT VISION с возможностью запуска процесса расчёта модели с передачей значений глобальных переменных в модель и с возможностью выгрузки результатов расчётов.

Экземпляр model класса ExplorationModel позволяет Python программе получить набор существующих глобальных переменных модели REPEAT VISION, с помощью которых далее можно передавать актуальные значения свойств для выполнения нового расчёта. Давайте получим набор существующих глобальных переменных для проекта Подготовка модели для автоматизации.

existing_vars = model.existing_variables
print(existing_vars)
# pressure    70000.00
# dtype: float64

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

6.  Создание структуры данных для передачи новых значений глобальных переменных в модель REPEAT VISION#

Перед выполнением процесса расчёта требуется подготовить исходные данные. Класс ExplorationModel поддерживает структуры данных популярного пакета подготовки и обработки данных pandas.

Создадим в структуре pandas.Series исходные данные избыточного давления для глобальной переменной pressure проекта Подготовка модели для автоматизации.

variables = pd.Series({'pressure' : 85000}, dtype = float)
print(variables)
# pressure    85000.0
# dtype: float64

7.  Запуск выполнения одного расчёта#

Теперь можно запустить выполнение одного расчёта, поскольку ранее мы создали только одно значение глобальной переменной pressure.

 1variables = pd.Series({'pressure' : 85000}, dtype = float)
 2with model as md:
 3  md.run(variables)
 4  flow_rate = md.get_results('flowrate')
 5
 6flow_rate.tail()
 7# 800.0     529.7379
 8# 850.0     529.7379
 9# 900.0     529.7379
10# 950.0     529.7379
11# 1000.0    529.7379
12# Name: flowrate, dtype: float64
  • Строка 1. Указываем значение избыточного давления для глобальной переменной pressure

  • Строка 2. Открывается обращение к модели REPEAT VISION через контекстный менеджер для безопасного взаимодействия в процессе выполнения расчёта

  • Строка 3. Выполняется запуск на расчёт модели методом run с передачей в качестве аргумента актуального значения глобальной переменной

  • Строка 4. Загружаются результаты расчёта из модели REPEAT VISION в структуру pandas.Series с помощью метода get_results, которому передаётся значение аргумента flowrate, который ранее был настроен в модели REPEAT VISION в параметре Пользовательское название блока Выходной порт в ходе выполнении урока «Подготовка модели для автоматизации».

  • Строки 6 - 12. Вывод в консоль значений временного ряда расхода в трубопроводе для последних 5 значений ряда. Расход \(529.73 [кг/с]\) рассчитан для избыточного давления \(85000 [Па]\).

Важно

При взаимодействии вашей Python программы с моделью REPEAT VISION требуется применять контекстный менеджер класса ExplorationModel, который гарантирует:

  • Безопасное завершение процесса расчёта модели REPEAT VISION

  • Хранение результатов расчётов до следующей итерации запуска модели на расчёт

8.  Вывод#

Код всей Python программы выглядит приведён ниже.

 1# -*- coding: utf-8 -*-
 2import pandas as pd
 3import numpy as np
 4
 5import repeat as rp
 6
 7user = rp.User(token = 'enter a unique API key from REPEAT user cabinet instead of this comment')
 8project = 12345
 9t_interval = rp.TimeInterval(start = 1, end = 1000)
10app = rp.Application(user)
11model = app.get_exploration_model(project, t_interval)
12variables = pd.Series({'pressure' : 85000}, dtype = float)
13with model as md:
14  md.run(variables)
15  flow_rate = md.get_results('flowrate')

В результате выполнения этого урока вы научились:

  • Получать идентификатор проекта для его применения в Python программе

  • Создавать объект модели для последующего взаимодействия с проектом REPEAT VISION

  • Выполнять безопасное соединение с моделью REPEAT VISION из Python программы с применением менеджера контекста

  • Передавать в модель REPEAT VISION актуальные значения глобальных переменных и запускать модель на расчёт

  • Загружать результаты расчёта в Python программу из Выходных портов модели REPEAT VISION