Автоматизация взаимодействия с моделью из 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
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 можно получить следующими способами:
Из графического интерфейса приложения в разделе управления проектами
Непосредственно в рабочей области при работе с проектом
Через web API
С помощью API пакета
repeat.
В рамках урока рассмотрим способ №1.
Откройте раздел Проекты приложения REPEAT VISION. Раздел управления проектами будет выглядеть как на рисунке ниже, только с вашим списком проектов.

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

В списке действий нужно выбрать Скопировать 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