Дан скрипт Python, запускающий симуляции в Лаборатории динамического моделирования (Dymola).
Моя цель — получить данные о траекториях моей симуляции, но с разными интервалами дискретизации. Например. Я хочу, чтобы переходный участок от 0 до 1000 секунд отбирался с интервалом в 1 секунду, а участок устойчивого состояния от 1000 до 100000 с отбирался с интервалом в 100 секунд без необходимости выполнять два моделирования с разным временем запуска, временем остановки и выводом. интервалы.
Фрагмент кода, запускающего симуляцию для переходного раздела:
[result, simulation_result] = dymola.simulateExtendedModel(problem=problem,
initialNames=["input1", "input2", "input3"],
initialValues=[input1, input2, input3],
finalNames=output_names,
outputInterval=1,
startTime=0,
stopTime=1000,
resultFile=result_filename)
trajectory_size_transient = dymola.readTrajectorySize("simulation_result_python.mat")
sim_res_transient = np.array(dymola.readTrajectory("simulation_result_python.mat",
output_names,
trajectory_size_transient))
Код для имитации устойчивого состояния:
[result, simulation_result] = dymola.simulateExtendedModel(problem=problem,
initialNames=["input1", "input2", "input3"],
initialValues=[input1, input2, input3],
finalNames=output_names,
outputInterval=100,
startTime=1000,
stopTime=10000,
resultFile=result_filename)
trajectory_size_steady = dymola.readTrajectorySize("simulation_result_python.mat")
sim_res_steady = np.array(dymola.readTrajectory("simulation_result_python.mat",
output_names,
trajectory_size_steady))
Значение «outputInterval» — это интервал, в котором результаты записываются в траекторию. Как видно, мне нужно выполнить две симуляции и позже суммировать результаты. Я бы предпочел иметь одну симуляцию с двумя разными значениями «outputInterval» и установить
startTime=0
stopTime=10000
так что я могу получить две траектории из одной симуляции.
Кто-нибудь знает возможно ли это? Или может есть другой подход?