Dymola с интерфейсом python — вывод результатов в текстовый файл (.txt) или что-то подобное

Я запускаю этот пример (см. ниже) из интерфейса dymola python, как я могу построить/сохранить вывод в таблице/текстовом файле или что-то подобное?

from dymola.dymola_interface import DymolaInterface
from dymola.dymola_exception import DymolaException

dymola = None
try:
    # Instantiate the Dymola interface and start Dymola
    dymola = DymolaInterface()

    # Call a function in Dymola and check its return value
    result = dymola.simulateModel("Modelica.Mechanics.Rotational.Examples.CoupledClutches")
    if not result:
        print("Simulation failed. Below is the translation log.")
        log = dymola.getLastError()
        print(log)
        exit(1)

    dymola.plot(["J1.w", "J2.w", "J3.w", "J4.w"])
    dymola.ExportPlotAsImage("C:/temp/plot.png")
    print("OK")
except DymolaException as ex:
    print("Error: " + str(ex))
finally:
    if dymola is not None:
        dymola.close()
        dymola = None

person Magdaanne    schedule 05.02.2018    source источник


Ответы (1)


В Руководстве по Dymola, том 2, «Раздел 6.7 Интерфейс Python для Dymola» (из которого, по-видимому, взят опубликованный пример), вы можете найти пример, связанный с многопоточностью. В этом примере вы можете найти способ непосредственного создания графиков.

Есть хороший инструмент, который можно найти по адресу https://www.j-raedler.de/projects/dymat/. Вы можете использовать это, чтобы прочитать файл результатов по умолчанию (это файл #ModelName#.mat, который хранится в рабочем каталоге), а затем эффективно обработать его в Python.

Чтобы переключиться с файла .mat по умолчанию на текстовый файл, вы можете найти команду здесь: Modelica - интерфейс Dymola Python: установите формат вывода в текстовый

Есть и другие способы, но это должно быть хорошо в качестве первого шага...

person Markus A.    schedule 05.02.2018
comment
Спасибо за вашу помощь, но я думаю, что вы неправильно поняли мой вопрос. Я хочу запустить симуляцию через python и сохранить результаты не только на графике, но и в таблице или чем-то подобном, чтобы сравнить результаты с другими. Есть ли возможность делать и то, и другое, моделируя модели + анализируя результаты? - person Magdaanne; 05.02.2018
comment
И я не понимаю, куда мне нужно поместить фрагмент кода, упомянутый в сообщении Modelica — интерфейс Dymola Python: установить формат вывода в текстовый. - person Magdaanne; 05.02.2018
comment
Вызывая simulateModel, вы получаете результаты моделирования в виде файла .mat в рабочем каталоге Dymola. Сообщение Modelica — Dymola Python interface: Set output format to text объясняет, как получить результаты моделирования в виде файла .txt вместо .mat. Вы можете добавить код в любом месте перед вызовом simulateModel. - person marco; 05.02.2018
comment
При добавлении приведенного выше кода попробуйте: и определите dymola как Dymolainterface(), симуляция выполняется без ошибок, но я не могу найти файл .txt результата. При добавлении кода под попыткой (перед симуляцией) я получаю следующую ошибку: C:\Python27>python.exe DymolaExample.py Файл DymolaExample.py, строка 8 dymola.experimentSetupOutput(textual=True) ^ IndentationError: неожиданный отступ - person Magdaanne; 05.02.2018
comment
Вы проверили рабочий каталог на наличие файла .mat? Я предлагаю вам изменить рабочий каталог вручную с помощью dymola.cd(C:/temp/dymola), тогда у вас должен быть dsre.mat в папке temp - person marco; 06.02.2018
comment
Добавление кода dymola.experimentSetupOutput(textual=True) перед созданием объекта интерфейса dymola не дает никакого эффекта. Добавьте его после dymola = DymolaInterface() и проверьте правильность отступа в 4 пробела. Ваше сообщение об ошибке звучит так, как будто у вас его нет. - person marco; 06.02.2018
comment
Теперь это работает! Большое спасибо! Проблема заключалась в том, что я использовал Tab вместо 4 пробелов. - person Magdaanne; 06.02.2018