Документация Engee

Публичные методы программного управления

Здесь представлены все публичные методы программного управления engee.engee. Для ознакомления с методами engee.script обратитесь к статье.

Методы Engee.engee

engee.add_block(block_identity::String, tgt_block_path::String; sync_gui::Bool=false)

Добавляет блок из библиотеки.

Аргументы

  • lib_block_path::String: полный путь до блока в библиотеке. Путь начинается с /.

  • tgt_block_path::String: путь до системы и ожидаемое имя example: path/to/system/new block name Если имя не указано, то задается автоматически.

  • syng_gui::Bool=false: именованный параметр для синхронизации с графическим интерфейсом.

Примеры

engee.add_block("/Basic/Math Operations/Add", "newmodel_1/")

Также можно добавить блок из библиотеки в систему и сразу присвоить ему имя.

engee.add_block("/Basic/Math Operations/Complex to Real-Imag", "newmodel_1/Test_name")
engee.add_line(src_port::String, dst_port::String) = engee.add_line(engee.gcs(), src_port::String, dst_port::String)
engee.add_line(system::String|System, src_port::String, dst_port::String)
engee.add_line(system_id::UUID, src_port::String, dst_port::String)

Добавляет связь (поток данных) между блоками.

Аргументы

  • system::System: путь до системы или объект типа System.

  • src_port::String: полный путь до out (выходного) порта блока. В качестве названия порта используется его порядковый номер. Формат записи — "system_name/block_name/idx". Для физических блоков используется программное имя порта, например, Resistor/ac_1.

  • tgt_port::String: полный путь до in (входного) порта блока. Название и формат записи по аналогии с входным портом.

  • syng_gui::Bool=false: именованный параметр для синхронизации с графическим интерфейсом.

Примеры

# соединить первый входной порт блока `Sine Wave` и первый выходной порт блока `Terminator` в текущей модели
engee.add_line("Sine Wave/1", "Terminator/1")
# первый параметр может быть объектом `System`
system = engee.gcs()
# вызов эквивалентен предыдущему
engee.add_line(system, "Sine Wave-1/1", "Terminator-1/1")
# для физических блоков
engee.add_line("Resistor/ac_1", "Current Sensor/ac_1")
engee.clear()

Очищает все переменные в текущем рабочем пространстве. clear() удаляет все данные, хранящиеся в переменных, чтобы освободить память под новые вычисления и потоки данных. Возвращает nothing.

engee.clear_all()

Очищает все переменные, функции, и defined модули из текущего рабочего пространства. clear_all() возвращает текущее рабочее пространство в исходное состояние. Возвращает nothing.

engee.close(model_name::String; force::Bool = false)
engee.close(model::Model; force::Bool = false)
engee.close(; force::Bool = false)

Закрывает модель с именем model_name. Текущей становится модель, открытая во вкладке визуального редактора левее. Если модель не указана, закрывает текущую модель. Если текущая модель не задана, то ничего не делает. Если модель уже не существует, то ничего не делает.

Аргументы

  • model_name::String: имя модели, которая будет закрыта.

  • model::Model: рабочая модель, которая может быть загружена в память с помощью функции engee.gcm. Эта модель может быть активной в рабочем пространстве, но не обязательно открыта в графическом интерфейсе.

  • force::Bool: по умолчанию = false. Если есть несохраненные изменения и параметр force = false, то завершается с ошибкой. Если force = true, то несохраненные изменения будут потеряны.

Примеры

# Выгрузить из памяти модель `newmodel_1`
engee.close( "newmodel_1" )
# Выгрузить из памяти модель `newmodel_1` без сохранения последних изменений
engee.close( "newmodel_1", force=true )
# Закрыть модель `newmodel_1` (выгрузить и убрать с холста)
engee.close( "newmodel_1", force=true, sync_gui=true )
engee.close_all()
engee.close_all(; sync_gui=true)

Закрывает все модели.

Примеры

# Выгрузить из памяти все открытые модели
engee.close_all()
# Закрыть все модели (выгрузить из памяти и закрыть на холсте)
engee.close_all( sync_gui=true )
engee.compare_models(model_path_1::String, model_path_2::String; subsystem_id_a=UUID_YOU_SUBSYSTEM_IN_MODEL_m)

Производит сравнение пары моделей и возвращает список различий.

Аргументы

  • model_path_1::String: путь к первой модели, которую нужно сравнить.

  • model_path_2::String: путь ко второй модели для сравнения с первой.

  • subsystem_id_a: (опционально) идентификатор подсистемы, который используется для сравнения только определенной части модели (в подсистеме). Для вызова используется конкретный UUID. Этот параметр может быть полезен, если требуется сравнение конкретной подсистемы внутри модели.

Примеры

m1 = "/user/modelname_1.engee"  # абсолютный путь (с указанием полного пути до файла)
m2 = "modelname_2.engee"  # относительный путь (лежит в папке рядом с test1.engee)
engee.compare_models(m1, m2)  # вернет результат сравнения m1 и m2.
engee.convert_model(model_path::String[,out_path::String])

Генерирует engee-скрипт для построения текущей модели с помощью команд программного управления.

Аргументы

  • model_path::String: путь к модели, которую нужно преобразовать.

  • out_path::String: (опционально) путь для сохранения сгенерированного Engee-скрипта. Если этот аргумент не указан, скрипт может быть сохранен в папке по умолчанию (/user).

Примеры

m_path = "/user/modelname_1.engee"  # работа с абсолютным путем
engee.convert_model(m_path)  # выведет engee-скрипт

m_abs_path = "modelname_2.engee"  # работа с относительным путем
engee.convert_model(m_abs_path)
engee.copy_block(src_block_path::String, tgt_block_path::String)

Копирует блок из системы.

Аргументы

  • src_block_path::String: полный путь до блока в системе.

  • tgt_block_path::String: путь до системы и ожидаемое имя. Формат записи — path/to/system/new_block_name. Если имя не указано, то задается автоматически.

Примеры

# добавить блок из модели `newmodel_1` и присвоить ему имя в модели `newmodel_2` автоматически
engee.copy_block("newmodel_1/Add-3", "newmodel_2/")
# добавить блок из модели `newmodel_1` с именем "Test_name" в модель `nemodel_2`
engee.copy_block("newmodel_1/Custom Block Name", "newmodel_2/Test_name")
engee.copy_contents(src_system_path::String, tgt_system_path::String)
engee.copy_contents(src_system_id::UUID, tgt_system_id::UUID)

Копирует содержимое одной системы в другую. Целевая система должна быть пустой. Рекурсивное копирование запрещено.

Аргументы

  • src_system_path::String: путь до системы, из которой производится копирование.

  • tgt_system_path::String: путь до системы, в которую производится копирование.

  • src_system_id::UUID: ID системы, из которой производится копирование.

  • src_system_id::UUID: ID системы, из которой производится копирование.

Примеры

# копирование содержимого из root системы `newmodel_1` в root систему `newmodel_2`
engee.copy_contents("newmodel_1", "newmodel_2")
# копирование содержимого из системы "newmodel_1/Subsystem" в систему `newmodel_1/Subsystem-1`
engee.copy_contents("newmodel_1/Subsystem", "newmodel_1/Subsystem-1")
ERROR: "newmodel_1/Subsystem-1 must be empty. Use `engee.delete_contents`"
engee.delete_contents("newmodel_1/Subsystem-1")
engee.copy_contents("newmodel_1/Subsystem", "newmodel_1/Subsystem-1")
engee.create(model_name::String; sync_gui=false)::Model

Создает новую модель с именем model_name и параметрами по умолчанию. Возвращает Model. Модель становится текущей моделью. Ее корневая система становится текущей системой. Если модель с таким именем уже существует, то завершается ошибкой EngeeException.

Аргументы

  • model_name::String: желаемое имя модели в системе. Имя модели не должно содержать символ /.

  • sync_gui: по умолчанию =false. Если указать параметр sync_gui=true, то новосозданная модель отобразится на экране.

Примеры

engee.create("NewModel")
Model(
        name: NewModel
        id: 6b59d80d-8b48-419d-83e7-a90660aa1a6a
)
engee.delete_block(block_path::String; sync_gui::Bool=false)

Удаляет блок, все связанные линии и записываемые порты из системы.

Аргументы

  • block_path::String: путь до блока.

  • syng_gui::Bool=false: именованный параметр для синхронизации с графическим интерфейсом.

Примеры

engee.delete_block("newmodel_1/Sine Wave") # удалить блок Sine Wave и все связанные с ним линии и блоки из системы
engee.delete_contents(system_path::String)
engee.delete_contents(system_id::UUID)

Удаляет содержимое системы.

Аргументы

  • system_path::String: путь до системы, контент которой будет удален.

  • system_id::UUID: ID системы, контент которой будет удален.

Примеры

# Удаление всех блоков из подсистемы Subsystem-1 в модели newmodel_1
engee.delete_contents("newmodel_1/Subsystem-1")
engee.delete_line(src_port::String, dst_port::String; sync_gui::Bool=false) = delete_line(gcs(), src_port::String, dst_port::String; sync_gui::Bool=false)
engee.delete_line(system::System, src_port::String, dst_port::String; sync_gui::Bool=false)

Удаляет связь (поток данных) между блоками.

Аргументы

  • system::String||System: путь до системы или объект типа System.

  • src_port::String: полный путь до out (выход) порта блока. В качестве названия порта используется его порядковый номер. Формат записи — "system_name/block_name/idx".

  • tgt_port::String: полный путь до in (вход) порта блока. Название и формат записи по аналогии с out портом.

  • syng_gui::Bool=false: именованный параметр для синхронизации с графическим интерфейсом.

Примеры

# удалить соединение между первым входным портом блока `Sine Wave` и первым выходным портом блока `Terminator` в модели `newmodel_1`
engee.delete_line("newmodel_1", "Sine Wave/1", "Terminator/1")
system = engee.gcs()
engee.delete_line(system, "Sine Wave-1/1", "Terminator-1/1")
# без указания системы. По умолчанию вызывается применительно к текущей системе.
engee.delete_line("Sine Wave-2/1", "Terminator-2/1")
engee.find_system(; blocktype::Maybe{String}=nothing, depth::Maybe{Int}=nothing, blockparams::Vector{<:Pair{<:AbstractString,<:Any}}=Vector{Pair{String, Any}}())

Совершает поиск сущностей (моделей/систем/блоков) во всех доступных моделях. Возвращает пути до найденных сущностей.

Аргументы

  • blocktype: Тип блока для поиска. Возвратятся только блоки с заданным типом.

  • depth: Максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing.

  • blockparams: Возвратятся только блоки, имеющие заданные параметры.

Примеры

# Список всех сущностей
engee.find_system(;)
# Список сущностей моделей, не заходя в подсистемы
engee.find_system(; depth=0 )
# Список всех блоков типа `Sin`
engee.find_system(; blocktype="Sin")
# Список всех блоков с полем `Value` равным `1.0`
engee.find_system(; blockparams=["Value"=>1.0])

engee.find_system(path::String; blocktype::Maybe{String}=nothing, depth::Maybe{Int}=nothing, blockparams::Vector{<:Pair{<:AbstractString,<:Any}}=Vector{Pair{String, Any}}())
Совершает поиск сущностей (моделей/систем/блоков) по указанному пути. Возвращает пути до найденных сущностей.

Аргументы:

  • path: Путь до сущности, в которой будет проводится поиск

  • blocktype: Тип блока для поиска. Возвратятся только блоки с заданным типом.

  • depth: Максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing.

  • blockparams: Возвратятся только блоки, имеющие заданные параметры.


engee.find_system(system::System; blocktype::Maybe{String}=nothing, depth::Maybe{Int}=nothing, blockparams::Vector{<:Pair{<:AbstractString,<:Any}}=Vector{Pair{String, Any}}())
Совершает поиск сущностей (моделей/систем/блоков) в указанной системе, переданной как объект типа `System`. Возвращает пути до найденных сущностей.

Аргументы:

  • system: Система, в которой будет проводится поиск

  • blocktype: Тип блока для поиска. Возвратятся только блоки с заданным типом.

  • depth: Максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing.

  • blockparams: Возвратятся только блоки, имеющие заданные параметры.


engee.find_system(model::Model; blocktype::Maybe{String}=nothing, depth::Maybe{Int}=nothing, blockparams::Vector{<:Pair{<:AbstractString,<:Any}}=Vector{Pair{String, Any}}())
Совершает поиск сущностей (моделей/систем/блоков) в указанной модели, переданной как объект типа `Model`. Возвращает пути до найденных сущностей.

Аргументы:

  • model: Модель, в которой будет проводится поиск

  • blocktype: Тип блока для поиска. Возвратятся только блоки с заданным типом.

  • depth: Максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing.

  • blockparams: Возвратятся только блоки, имеющие заданные параметры.

engee.get_current_block()::String
engee.gcb()::String

Возвращает путь до текущего (выбранного) блока. Если блок не выбран, то возвращает nothing.

engee.get_current_model()::Model
engee.gcm()::Model

Возвращает текущую (активную) модель (возвращает объект с типом Model). Если текущей модели нет, то бросает исключение EngeeException.

Примеры

engee.get_current_model()
Model(
        name: ssc_bridge_rectifier_modified
        id: c390ed60-d2c4-4e17-85df-07129aca8ba4
)
engee.get_current_system()::System
engee.gcs()::System

Возвращает текущую систему как объект типа System. Если текущая модель отсутствует, то вызывает ошибку EngeeException.

Примеры

engee.get_current_system()
System(
        name: root
        id: 4db18dce-1bca-46ca-8441-6f4802a78c6f
)
engee.generate_code(path/to/modelname.engee::String, path/to/output_dir::String; subsystem_name=subsystem_path::String, subsystem_id=subsystem_id::String, target::String, jl_path::String)

Генерирует код на указанном языке для модели или подсистемы.

Аргументы

  • path/to/modelname.engee::String: абсолютный или относительный путь к модели из которой генерируется код. В качестве аргумента может выступать объект модели (объект типа model, полученный функцией engee.gcm).

  • path/to/output_dir::String: абсолютный или относительный путь к директории, в которую сохранится сгенерированный код. Если директории output_dir не существует — она будет создана автоматически.

  • subsystem_name=path/to/subsystem::String: полный путь к атомарной подсистеме из которой генерируется код.

  • subsystem_id=subsystem_id::String: уникальный идентификатор атомарной подсистемы из которой генерируется код.

  • target::String: указание языка для генерации кода. Поддерживаемые языки — Си (по умолчанию) или Verilog.

  • jl_path::String: абсолютный или относительный путь к файлу .jl, содержащему шаблон для генерации кода.

Примеры

engee.generate_code("/user/newmodel_1.engee", "/user/newmodel_1/Subsystem") # генерация кода для подсистемы

engee.generate_code("/user/newmodel_1.engee", "/user/newmodel_1/codegen_output") # генерация через абсолютный путь к модели

engee.generate_code("newmodel_1.engee", "newmodel_1/codegen_output") # генерация через относительный путь к модели

m = engee.gcm()  # получение текущей открытой модели
engee.generate_code(m, "/user/newmodel_1/codegen_output")
engee.get_all_models(; sorted=true)::Vector{Model}

Возвращает список всех моделей, открытых в текущей сессии, в формате Vector{Model}. Если параметр sorted=true, то возвращает отсортированный по имени список моделей.

Аргументы

sorted::Bool: по умолчанию true. Определяет, будет ли список моделей отсортирован по имени.

Примеры

# Список с перечнем всех открытых моделей
 models_list = engee.get_all_models()
# Список с названиями всех открытых моделей
 model_names = [m.name for m in engee.get_all_models()]
engee.get_current_block()::String
engee.gcb()::String

Возвращает путь до текущего (выбранного) блока. Если блок не выбран, то возвращает nothing.

engee.get_current_model()::Model
engee.gcm()::Model

Возвращает текущую (активную) модель (возвращает объект с типом Model). Если текущей модели нет, то бросает исключение EngeeException.

Примеры

engee.get_current_model()
Model(
        name: ssc_bridge_rectifier_modified
        id: c390ed60-d2c4-4e17-85df-07129aca8ba4
)
engee.get_current_system()::System
engee.gcs()::System

Возвращает текущую систему как объект типа System. Если текущая модель отсутствует, то вызывает ошибку EngeeException.

Примеры

engee.get_current_system()
System(
        name: root
        id: 4db18dce-1bca-46ca-8441-6f4802a78c6f
)
engee.get_logs([m::Model])

Получает сообщения из журнала, связанные с моделью. Возвращает массив с сообщениями.

Аргументы

m::Model: модель, относительно которой выполняется операция, по умолчанию, текущая модель. Если модель не открыта, то выводит ошибку NoModelOpenedException.

engee.get_param(model::Model)::ModelParameters
engee.get_param(path::String, param::Union{Symbol, String})::Any
engee.get_param(path::String)::Union{BlockParameters, ModelParameters}
engee.get_param(path::String, param::Union{Symbol, String})::Any
engee.get_param(block::Block)::BlockParameters
engee.get_param(block::Block, param::Union{Symbol, String})::Any

Для моделей

Если указано имя модели, но не указано имя параметра, возвращает настройки симуляции для выбранной модели в виде структуры ModelParameters. Если же имя параметра указано, возвращает значение параметра.

Аргументы

  • model::Model: объект модели, из которого извлекаются параметры.

  • path::String: строковый путь к модели, если вместо объекта модели используется путь.

  • param::Union{Symbol, String}: имя параметра, который нужно извлечь. Может быть строкой или символом.

Для блоков

По пути до блока возвращает либо значение параметра (если указан), либо объект класса BlockParameters. Если же имя параметра указано, возвращает значение параметра.

Аргументы

  • block::Block: объект блока, для которого нужно извлечь параметры.

  • path::String: строковый путь к блоку, если вместо объекта блока используется путь.

  • param::Union{Symbol, String}: имя параметра блока, который нужно извлечь. Может быть строкой или символом.

engee.get_results(model_name::String)
engee.get_results(model::Model)
engee.get_results()

Возвращает результаты последней симуляции модели в виде словаря Dict{String, DataFrame}, где ключ — имя отслеживаемого порта. Если модель не открыта, то выводит ошибку NoModelOpenedException. Если симуляция не запущена, то выводит ошибку ModelIsNotRunningException.

Аргументы

m::Model: модель, относительно которой выполняется операция, по умолчанию, текущая модель.

Примеры

m = engee.load("start/examples/powersystems/models/power_line_apv.engee")
 results1 = engee.run(m);
 results2 = engee.get_results(m)
Dict{String, DataFrame} with 6 entries:
  "Va" => 40001×2 DataFrame…
  "Ia" => 40001×2 DataFrame…
  "Ib" => 40001×2 DataFrame…
  "Ic" => 40001×2 DataFrame…
  "Vc" => 40001×2 DataFrame…
  "Vb" => 40001×2 DataFrame…
results1 == results2
true
engee.get_status()::SimulationStatus

Возвращает статус симуляции как объект типа SimulationStatus. Возвращает один из пяти статусов симуляции модели:

  • BUILDING: модель строится.

  • READY: модель готова.

  • NOT_READY: модель не готова.

  • RUNNING: модель в процессе выполнения.

  • PAUSED: выполнение модели приостановлено.

Примеры

engee.get_status()
READY
engee.is_dirty(model::Model)::Bool
engee.is_dirty(model_path::String)

Проверяет, есть ли несохраненные изменения модели. Возвращает true при наличии несохраненных изменений, иначе — false. Если модель уже закрыта, то возвращает false.

engee.load(file_path::String; name::Maybe{String}=nothing, force::Bool = false)::Model

Загружает модель из файла с расширением .engee, расположенного в file_path. Возвращает Model. Модель становится текущей моделью. Ее корневая система становится текущей системой. Особенности:

  • Если модель с таким именем уже существует и параметр force = true, то перезагружает ее и все не сохраненные ранее изменения будут утеряны, если же force = false, то бросает исключение. По умолчанию force = false.

  • Модель может быть загружена с другим названием, если оно указано в параметре name. Если параметр не задан, оставляет название модели, сохраненное в файле.

  • Если у файла другое расширение или он не существует, бросает исключение.

  • Если указать параметр sync_gui=true, то загруженная модель отобразится на экране.

Аргументы

  • file_path::String: путь к файлу, из которого будет загружена модель или данные.

  • name::Maybe{String}: используется для задания имени загружаемой модели или данных.

  • force::Bool: по умолчанию = false. Если установлен = true, то загрузка будет выполнена, если файл уже был ранее загружен.

Примеры

engee.load("NewModel.engee"; force = true)
Model(
        name: NewModel
        id: 6b59d80d-8b48-419d-83e7-a90660aa1a6a
)
engee.open(path::String)::System
engee.open(model::Model)::System
engee.open(system::System)::System

Возвращает открытую систему System. Если модели или системы не существует, то завершается ошибкой EngeeException. Поведение метода изменяется, если:

  • В параметре указано название model_name открытой ранее модели, она становится текущей моделью. Ее корневая система становится текущей системой;

  • В параметре указан путь до существующей системы system_path, содержащая ее модель становится текущей моделью, а сама система — текущей системой, которая отображается в визуальном редакторе. Возвращает System. Также вместо пути можно передать непосредственно экземпляр Model или System.

Аргументы

  • path::String: путь до модели.

  • model::Model: модель, относительно которой выполняется операция. По умолчанию — текущая модель.

  • system::System: путь до системы или объект типа System.

Примеры

# open model:
s1 = engee.open("NewModel")
System(root)
engee.gcm(), engee.gcs()
(Model(
        name: NewModel
        id: 6b59d80d-8b48-419d-83e7-a90660aa1a6a
)
, System(
        name: root
        id: 69f5da6f-250d-4fa7-a25f-645bac751aea
)
)
# open system:
engee.open("AnotherModel/Subsystem-1")
System(
        name: root
        id: 69f5da6f-250d-4fa7-a25f-645bac751aea
)
engee.gcm(), engee.gcs()
(Model(
        name: AnotherModel
        id: 6b59d80d-8b48-419d-83e7-a90660aa1a6a
)
, System(
        name: Subsystem-1
        id: 69f5da6f-250d-4fa7-a25f-645bac751aea
)
)
engee.pause()

Приостанавливает запущенную симуляцию.

engee.reset()

Перезапускает ядро симуляции.

engee.resume(; verbose::Bool = false)

Возобновляет приостановленную симуляцию.

Аргументы

verbose::Bool = false: включает вывод сообщений о ходе выполнения симуляции.

engee.run([m::Model]; verbose=false)

Запускает исполнение модели. Если модель не указана, запускает симуляцию текущей модели. Если модель не открыта, то бросается исключение NoModelOpenedException.

Аргументы

  • verbose: уточнение необходимости вывода прогресса исполнения модели на печать (по умолчанию = false — не выводится).

  • m::Model: модель, относительно которой выполняется операция. По умолчанию — текущая модель.

Примеры

m = engee.load("/user/start/examples/power_systems/power_line_apv/power_line_apv.engee")
engee.run(m)
Dict{String, DataFrame} with 6 entries:
  "Va" => 40001×2 DataFrame…
  "Ia" => 40001×2 DataFrame…
  "Ib" => 40001×2 DataFrame…
  "Ic" => 40001×2 DataFrame…
  "Vc" => 40001×2 DataFrame…
  "Vb" => 40001×2 DataFrame…

# Пример асинхронного, бесконечного моделирования
m = engee.load("/user/start/examples/controls/PID_controller/pid_controls_tf_stable.engee")
engee.set_param!(m, "end_time" => Inf)
ch = Channel(c -> put!(c, engee.run(m)))
sleep(10)
engee.stop()
take!(ch)
engee.save(model_name::String, file_path::String; force::Bool = false)
engee.save(model::Model, file_path::String; force::Bool = false)

Сохраняет модель с именем model_name по пути file_path в файл с расширением .engee. Если необходимо, создаются промежуточные директории. Возвращает nothing.

Аргументы

  • model::Model: объект типа Model.

  • model_name::String: желаемое имя модели в системе.

  • file_path::String: директория сохраняемой модели.

  • force::Bool: по умолчанию = false. Если файл уже существует и параметр force = true, то перезаписывает файл. Если force = false, то завершается ошибкой FileAlreadyExists.

Примеры

# Сохранить модель `newmodel_1` в новый файл `newmodel_1.engee`
 engee.save( "newmodel_1", "newmodel_1.engee" )
# Сохранить модель `newmodel_1` в файл `newmodel_1.engee` (перезаписать файл)
engee.save( "newmodel_1", "newmodel_1.engee", force = true)
engee.screenshot(to_print::Union{Model, String, System}, save_path::String; position_mode::String="auto")

Сохраняет скриншот модели/системы в файл по пути save_path. Поддерживаемые форматы: PNG, SVG. В других случаях ошибка выводится ошибка ErrorException("unsuported picture format: <FORMAT>"). Позиционирование: "auto", "tiled", в других случаях применится "auto".

Аргументы

  • to_print::Union{Model, String, System}: имя модели, с которой будет делаться скриншот.

  • save_path::String: путь для сохранения скриншота.

  • position_mode::String : позиционирование скриншота.

Примеры

engee.screenshot(loaded_model, "/user/saved.png"[; position_mode="tiled"])
engee.set_log(system_path::String, port_path::String; sync_gui=false)
engee.set_log(system::System, port_path::String; sync_gui=false)
engee.set_log(port_path::String; sync_gui=false)

Устанавливает порт на запись. Для отображения в графическом интерфейсе, необходимо передать именованный параметр sync_gui=true.

Аргументы

  • system_path::String: система, в которой находится порт.

  • system::System: система, в которой находится порт.

  • port_path::String: относительный путь до порта. Если система не предоставлена в качестве первого параметра, то используется открытая система по умолчанию.

Примеры

engee.set_log("Sine Wave/1"; sync_gui=true)
# порт блока Sine Wave в текущей системе установлен на запись
engee.set_log("newmodel_1/Subsystem","Sine Wave/1")
# порт блока Sine Wave в системе `newmodel_1/Subsystem` установлен на запись
system = engee.gcs()
engee.set_log(system, "Sine Wave/1")
# порт блока Sine Wave в системе `system` установлен на запись
 engee.run()
Dict{String, DataFrames.DataFrame} with 1 entry:
  "Sine Wave.1" => 1001×2 DataFrame…

# запустили симуляцию и получили результаты
engee.set_param!(model::Model | model_name::String, param::Pair...)
engee.set_param!(model::Model | model_name::String, param::ModelParameters)

Обновляет параметры моделей. Возвращает nothing. Если параметры некорректны, то возникает ошибка.

Аргументы

  • model::Model: объект модели, для которой задаются параметры.

  • model_name::String: строковый путь или имя модели.

  • param::Pair...: один или несколько параметров в формате "name" => value.

  • param::ModelParameters: структура параметров модели.

Примеры

engee.set_param!("model_1", "solver"=>"ode45", "stop_time"=>10)
param_1 = engee.get_param("model_1")::ModelParameters
engee.set_param!("model_2", param_1)

Структура настроек симуляции привязывается к конкретной модели — можно изменять настройки модели непосредственно через задание полей структуры, тогда:

params = engee.get_param(model::Model)::ModelParameters
# структура params привязана к конкретной model
params.step_time = 0.01
0.01
# аналогично `engee.set_param!(model::Model, "step_time" => 0.01)`

Каждый параметр должен быть представлен как пара (Pair), состоящая из имени параметра и его значения (например, "StartTime" => 0.0). Для параметра param:

Параметры симуляции

  • start_time::String: время начала симуляции (Float64).

  • end_time::String: время окончания симуляции (Float64).

  • type::String: тип решателя (fixed-step или variable-step).

  • name::String: имя решателя (зависит от выбранного типа).

Параметры для fixed-step

fixed_stepsize::String: шаг симуляции (Float64).

Параметры для variable-step

  • absolute_tolerance::String: Абсолютная точность (Float64 или 'auto').

  • initial_stepsize::String: Начальный шаг (Float64 или 'auto').

  • maximum_stepsize::String: Максимальный шаг (Float64 или 'auto').

  • minimum_stepsize::String: Минимальный шаг (Float64 или 'auto').

  • output_interval::String: Интервал вывода (Float64 или 'auto').

  • relative_tolerance::String: Относительная точность (Float64 или 'auto').

  • dense_output::Bool: Плотный вывод результатов.


engee.set_param!(block::Block | block_path::String, params::Pair{String}...)
engee.set_param!(block::Block | block_path::String, block_params::BlockParameters)

Обновляет параметры блоков.

Аргументы

  • block::Block: объект блока.

  • block_path::String: строковый путь к блоку.

  • block_params::BlockParameters: структура параметров блока.

  • params::Pair{String}...: параметры блока в формате "name" => value.

Примеры

engee.set_param!("model_name", "StartTime" => 0.0, "StopTime" => 10.0, "SolverType" => "fixed-step", "SolverName" => "ode45")
engee.stop()

Останавливает запущенную симуляцию.

engee.unset_log(system_path::String, port_path::String)
engee.unset_log(system::System, port_path::String)
engee.unset_log(port_path::String)

Снимает порт с записи. Для отображения в графическом интерфейсе необходимо передать именованный параметр sync_gui=true.

Аргументы

  • system_path::String: система, в которой находится порт.

  • system::System: система, в которой находится порт.

  • port_path::String: относительный путь до порта. Если система не предоставлена в качестве первого параметра, то используется открытая система по умолчанию.

Примеры

engee.set_log("Sine Wave/1")
# порт блока Sine Wave в текущей системе установлен на запись
engee.run()
Dict{String, DataFrames.DataFrame} with 1 entry:
  "Sine Wave.1" => 1001×2 DataFrame…
# запустили симуляцию и получили результаты
engee.unset_log("Sine Wave/1")
# порт блока Sine Wave в текущей системе снят с записи
engee.run()
Dict{String, DataFrames.DataFrame}()

# Порт снят с записи.
engee.version()

Возвращает короткую версию Engee.

Примеры

engee.version()
"24.10.0"