Python#
Внешний вид блока в REPEAT VISION#
Блок Python позволяет выполнять пользовательские программы на языке программирования Python в процессе моделирования систем на платформе REPEAT VISION.
1. Структура пользовательской программы Python блока#
Программа пользователя внутри Python блока должна обладать структурой, приведённой на рисунке ниже. Данная структура обусловлена общим для всех блоков процессом моделирования систем в REPEAT VISION.
Процесс моделирования в REPEAT VISION / The modeling process in REPEAT VISION#
1.1. Инициализация#
Код данного этапа моделирования выполняется для подготовки к процессу расчёта. На этапе инициализации необходимо выполнить импорт необходимых библиотек и создать объекты, у которых требуется сохранять состояние между выполнением шагов интегрирования в процессе расчёта. Пример кода данного этапа приведён на рисунке ниже.
Пример инициализации в редакторе кода блока Python#
В примере выше выполняется импорт Python пакетов NumPy и SciPy для выполнения вычислений и анализа данных. Также выполняется однократное создание объектов, x, y и spline для дальнейшего использования в коде расчёта.
1.2. Расчёт#
Код данного этапа выполняется на каждом шаге интегрирования от начала до остановки расчёта. Этап расчёта многократно выполняется после инициализации. Ниже приведён пример для обработки сигналов двух входных портов и передачи результатов вычислений на выходной порт на каждом шаге интегрирования.
Пример кода расчёта#
В примере выше выполняется кусочно-гладкая интерполяция, в которой:
Входным значением является объект
value- промежуточный результат вычисления значений входных портовin_1иin_2;Результат интерполяции передаётся на выходной порт
out_1.
1.3. Завершение#
Код данного этапа выполняется при остановке расчёта и предназначен, в первую очередь, для освобождения ранее используемых ресурсов Python программы: данных в памяти, закрытия файлов и сетевых соединений.
Также на данном этапе могут выполняться завершающие вычисления, которые требуют наличия всех полученных результатов моделирования, например, преобразования, агрегирования, суммирования временных рядов и других расчётных величин.
Подсказка
Рекомендуется для завершающих вычислений воспользоваться специальными блоками библиотеки Автоматика. Например, блоком Интегрирующее звено для суммирования значений за всё время моделирования.
2. Режимы работы Python блока#
Python блок в процессе моделирования может работать в следующих режимах:
В обычном режиме, в котором блок принимает значения одного или нескольких входных портов, выполняет вычисления над ними и передаёт результаты на один или несколько выходных портов.
В режиме генератора, в котором блок выполняет вычисления и передаёт результаты на один или несколько выходных портов.
Для всех режимов блок должен обладать одним или несколькими выходными портами. Для обычного режима необходимо создать один или несколько входных порта.
3. Тип портов Python блока#
Порты Python блока имеют тип Автоматика и могут обмениваются с портами других блоков только вещественными значениями двойной точности (double в Java).
3.1. Требования к объектам пользовательской программы#
Аргументы функций, классов и методов классов пользовательской Python программы, предназначенные для получения значений из других блоков модели REPEAT VISION через входные порты Python блока (in_1, in_2 и т.д.), должны
быть вещественными скалярами типа float в Python.
Ниже приведён пример Python блока с одним входным портом и одним выходным портом.
def line(x : float) -> float:
return 2 * x + 5
out_1 = line(in_1)
На этапе инициализации создаётся функция line с одним аргументом x, аннотированным типом float. Функция, получая вещественное значение, также возвращает вещественный результат расчёта. На этапе расчёта функция принимает значение входного порта in_1 и возвращает вещественное значение результата расчёта выходному порту out_1.
Объекты, функции и методы классов пользовательской программы, предназначенные для передачи результатов вычислений выходным портам Python блока (out_1, out_2 и т.д.), в результате своей работы могут возвращать:
Вещественные скаляры типа float;
Целочисленные скаляры типа
int.
Расчётный модуль REPEAT VISION в процессе моделирования автоматически преобразует значения выходных портов к вещественными значениями двойной точности (double в Java).
4. Использование глобальных переменных в Python блоке#
В пользовательской программе Python блока доступны для использования глобальные переменные модели REPEAT VISION.
В программе Python блока глобальные переменные модели доступны в качестве аттрибутов объекта GLOBAL_VARIABLES.
Объект GLOBAL_VARIABLES является экземпляром класса namedtuple стандартного модуля collections.
Аттрибуты GLOBAL_VARIABLES:
Обладают именами, соответствующими глобальным переменным модели;
Имеют тип
float.
Например, если в модели REPEAT VISION созданы глобальные переменные в соответствии с таблицей ниже.
Имя переменной |
Значение переменной |
Объект в Python блоке |
|---|---|---|
PIPE_DIAM_IN |
0.2 |
|
LENGTH |
1e-4 |
|
То в программе Python блока значения глобальных переменных можно получить или использовать напрямую следующим образом.
import math as m
area = 0.25 * m.pi * GLOBAL_VARIABLES.PIPE_DIAM_IN**2
out_1 = GLOBAL_VARIABLES.LENGTH * area
5. Версия Python и доступные модули#
Блок Python позволяет выполнять пользовательские программы на языке программирования Python 3.12, используя, при необходимости, модули, приведённые в таблице ниже.
Модуль |
Версия |
Назначение |
|---|---|---|
2.4.1 |
Обеспечение высокопроизводительной работы с векторами и массивами данных |
|
3.0.3 |
Обеспечение удобной работы с табличными данными |
|
1.17.1 |
Выполнение математических расчётов с применением структур данных NumPy |
|
1.19.0 |
Выполнение аппроксимации данных и применение моделей машинного обучения |
6. Вывод ошибок#
Описание возможных ошибок работы пользовательской программы в Python блоке можно получить в журнале.
7. Свойства#
Нет
8. Входы и выходы#
Параметры |
Вход/Выход |
Описание |
Единицы измерения |
Тип порта |
|---|---|---|---|---|
in_1 |
Вход |
– |
– |
Автоматика |
in_2 |
Вход |
– |
– |
Автоматика |
out_1 |
Выход |
– |
– |
Автоматика |
Для того, чтобы посмотреть возможности подключения блока необходимо перейти на страницу Описание портов блоков