Документация 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/Mathematics/Add", "newmodel_1/")
# добавить блок из библиотеки в систему и присвоить ему имя Test_name
engee.add_block("/Basic/Mathematics/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".

  • 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.addpath(path::Vararg{String})

Добавляет один или более путей в системную переменную LOAD_PATH. LOAD_PATH — это системная переменная, которую Engee использует для поиска нужных исполняемых объектов (например, .engee, .ngscript), а также любых других путей, используемых в командах.

Аргументы

path::Vararg{String}: один или более путей в файловой системе.

Примеры

engee.addpath("/user/models")
engee.load("model.engee") #загрузка модели
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(model::Model; type = "all", depth = nothing, block_params = Vector{Pair{String}}())

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

Аргументы

  • system_path: путь до системы, в которой будет проводиться поиск.

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

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

  • type: тип сущности для поиска. Доступные опции: all, model, subsystem, block, port.

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

  • block_params: Параметры для фильтрации (применимо только к блокам).

Примеры

# Список сущностей, из которых состоит модель `newmodel_1` (подсистем, блоков, портов)
engee.find_system( "newmodel_1" )
# Список сущностей модели `newmodel_1` не заходя в подсистемы
engee.find_system( "newmodel_1", depth=0 )
# Список всех блоков в модели
engee.find_system( "newmodel_1", type="block" )
# Список всех блоков с полем `Value` равным `1.0`
engee.find_system( "newmodel_1", block_params=["Value"=>1.0] )
engee.find_system(system::System; type = "all", depth = nothing, block_params = Vector{Pair{String}}())

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

Аргументы

  • system_path: путь до системы, в которой будет проводиться поиск.

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

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

  • type: тип сущности для поиска. Доступные опции: all, model, subsystem, block, port.

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

  • block_params: Параметры для фильтрации (применимо только к блокам).

Примеры

# Список сущностей, из которых состоит модель `newmodel_1` (подсистем, блоков, портов)
engee.find_system( "newmodel_1" )
# Список сущностей модели `newmodel_1` не заходя в подсистемы
engee.find_system( "newmodel_1", depth=0 )
# Список всех блоков в модели
 engee.find_system( "newmodel_1", type="block" )
# Список всех блоков с полем `Value` равным `1.0`
engee.find_system( "newmodel_1", block_params=["Value"=>1.0] )
engee.find_system(system_path::String; type = "all", depth = nothing, block_params = Vector{Pair{String}}())

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

Аргументы

  • system_path: путь до системы, в которой будет проводиться поиск.

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

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

  • type: тип сущности для поиска. Доступные опции: all, model, subsystem, block, port.

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

  • block_params: Параметры для фильтрации (применимо только к блокам).

Примеры

# Список сущностей, из которых состоит модель `newmodel_1` (подсистем, блоков, портов)
engee.find_system( "newmodel_1" )
# Список сущностей модели `newmodel_1` не заходя в подсистемы
engee.find_system( "newmodel_1", depth=0 )
# Список всех блоков в модели
engee.find_system( "newmodel_1", type="block" )
# Список всех блоков с полем `Value` равным `1.0`
engee.find_system( "newmodel_1", block_params=["Value"=>1.0] )
engee.find_system(; type = "all", depth = nothing, block_params = Vector{Pair{String}}())

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

Аргументы

  • system_path: путь до системы, в которой будет проводиться поиск.

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

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

  • type: тип сущности для поиска. Доступные опции: all, model, subsystem, block, port.

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

  • block_params: Параметры для фильтрации (применимо только к блокам).

Примеры

# Список сущностей, из которых состоит модель `newmodel_1` (подсистем, блоков, портов)
engee.find_system( "newmodel_1" )
# Список сущностей модели `newmodel_1` не заходя в подсистемы
engee.find_system( "newmodel_1", depth=0 )
# Список всех блоков в модели
engee.find_system( "newmodel_1", type="block" )
# Список всех блоков с полем `Value` равным `1.0`
engee.find_system( "newmodel_1", block_params=["Value"=>1.0] )
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(model_path:String, output_path:String; subsystem_name=subsystem_path:String, target::String, jl_path::String)

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

Аргументы

  • model_path::String: абсолютный или относительный путь к модели, для которой генерируется код. Также может быть передан объект модели, полученный с помощью функции engee.gcm.

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

  • subsystem_name=subsystem_path::String:: (опционально) полный путь к атомарной подсистеме, для которой генерируется код. Если указан этот аргумент, код будет сгенерирован только для выбранной подсистемы.

  • target::String: (опционально) язык программирования, на котором будет сгенерирован код. Поддерживаемые значения: c (по умолчанию), chisel, verilog.

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

Примеры

m = engee.gcm() #текущая открытая модель

output = "save_codegen/model_name" #относительный путь для вывода результатов кодогенерации

engee.generate_code(m, output) #сгенерирует код в output

output = "/user/save_codegen/model_name" #абсолютный путь (можно обращаться к файлам, находящимся в любых директориях).

engee.generate_code(m, output)

# Аналогично при работе с моделью как с файлом:
model_path = "/user/test.engee"

output = "save_codegen/model_name"

engee.generate_code(model_path, 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.rmpath(path::String)

Удаляет путь из системной переменной LOAD_PATH. LOAD_PATH — это системная переменная, которую Engee использует для поиска нужных исполняемых объектов (например, .engee, .ngscript), а также любых других путей, используемых в командах.

Аргументы

path::String: путь в файловой системе, который необходимо удалить из LOAD_PATH.

Примеры

engee.addpath("/user/models")
engee.load("model.engee") # загрузка модели
engee.rmpath("/user/models")
engee.load("model.engee") #загрузка модели выдаст ошибку
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!(block::Block | block_path::String, params::Pair{String}...)
engee.set_param!(block::Block | block_path::String, block_params::BlockParameters)

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

Аргументы

  • 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.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.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"