Как запустить модель modelica с помощью OMPython с пакетом внешней библиотеки (например, Buildings)

Я изо всех сил пытаюсь загрузить свою модель внешней библиотекой. RoomM — это моя модель, а Buildings — это мой библиотечный пакет, экспортированный извне в Modelica. Ниже приведен код:

from OMPython import OMCSessionZMQ

from OMPython import ModelicaSystem

omc = OMCSessionZMQ()

omc.sendExpression("loadModel(Modelica)")

omc.sendExpression("loadModel(C:\OpenModelica1.18.1-64bit\lib\omlibrary\Buildings-9.1.0\Buildings-9.1.0\Buildings\Buildings.mo)")

model_path=omc.sendExpression("loadFile(\"C:\Modelica-python\Modelica-Model/RoomM.mo\")")
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте loadModel для загрузки библиотек Modelica, которые расположены в месте, известном OpenModelica (каталог установки OpenModelica, %HOME%/.openmodelica/libraries и местоположения из переменной среды OPENMODELICALIBRARY).

Если вы установили библиотеку Buildings с помощью менеджера пакетов, вы можете использовать

import OMPython
from OMPython import OMCSessionZMQ

omc = OMCSessionZMQ()
omc.sendExpression("loadModel(Buildings, {\"9.1.0\"})")

False возвращается в случае, если omc не может найти указанную библиотеку для данной версии. Вы можете использовать менеджер пакетов для его установки.


Если вы хотите вместо этого загрузить файл package.mo, вам нужно использовать loadFile:

import OMPython
from OMPython import OMCSessionZMQ

omc = OMCSessionZMQ()
omc.sendExpression("loadFile(\"C:\OpenModelica1.18.1-64bit\lib\omlibrary\Buildings-9.1.0\Buildings-9.1.0\Buildings\Buildings.mo\")")

Не забудьте экранировать строки в кавычках с помощью \", если функция API имеет строковые входные данные.

См. также раздел OMPython Руководства пользователя OpenModelica. В нем есть пример загрузки библиотек и файлов Modelica.

omc.sendExpression("loadModel(Buildings, {\"9.1.0\"})") ...False omc.sendExpression("simulate(RoomM, stopTime=3.0)") ...{'resultFile': '' , 'simulationOptions': "startTime = 0.0, stopTime = 3.0, numberOfIntervals = 500, допуск = 1e-06, method = 'dassl', fileNamePrefix = 'RoomM', options = '', outputFormat = 'mat', variableFilter = ' .*', cflags = '', simflags = ''", 'messages': 'Не удалось построить модель: RoomM',

sophie 12.05.2023 00:27

@ AnHeuermann спасибо за ответ. Выше приведен код, и все еще синтаксис «имитации» дает ошибку «Не удалось построить модель».

sophie 12.05.2023 06:23

omc не загружается Buildings (возвращается False). Попробуйте установить библиотеку с помощью менеджера пакетов. Если это не поможет, загрузите package.mo с помощью loadFile.

AnHeuermann 12.05.2023 11:23

@sophie Это сработало для вас? Если это так, вы можете принять этот ответ. В противном случае вы можете обновить свой вопрос, указав, что вы пытались сделать для решения своей проблемы.

AnHeuermann 16.05.2023 17:45

Спасибо AnHeuermann. Это сработало, и я принял ответ.

sophie 17.05.2023 23:04

Однако запуск кода на ........mod=ModelicaSystem("RoomM.mo","RoomM",["C:\OpenModel‌​ica1.18.1-64bit\lib\‌​omlibrary\Buildings-‌​ 9.1.0\Buildings-9.1.‌​0\Buildings\package.‌​mo"]) больше не загружает библиотеку Buildings

sophie 18.05.2023 06:18

Другие вопросы по теме