То, что вы пытаетесь сделать, в Modelica обычно невозможно. Может случиться так, что некоторые инструменты имеют «отражающий API», который позволяет это (или, возможно, встроенную функцию, которая принимает командную строку и выполняет ее), но, безусловно, не существует универсального API, который бы работал между инструментами.
Если вы хотите запустить кучу симуляций в Dymola с разными значениями параметров, я могу предложить, по крайней мере, три разных варианта.
- Используйте интерфейс DDE для отправки команд Dymola. Таким образом, вы можете сформулировать значения параметров «как-то» (внешне из Dymola), а затем просто запросить Dymola для запуска симуляции. Я не уверен, насколько богат интерфейс DDE, поэтому я не уверен, будет ли он делать то, что вам нужно (например, получать результаты).
- Написать файл скрипта. Это немного отличается от написания функции, но почти такой же по синтаксису. Например, чтобы запустить пример «CoupledClutches» с несколькими различными значениями инерции, вы можете сделать это (в окне команд):
for j in {1.0, 1.1, 1.2, 1.5, 1.8} loop
J1.J := j;
simulateModel("Modelica.Mechanics.Rotational.Examples.CoupledClutches",
resultFile="CoupledClutches_"+String(j));
end for;
- Используйте функцию (как и вы), но вызывайте simulateModel с модификаторами, например,
function RunLoop
algorithm
for j in {1.0, 1.1, 1.2, 1.5, 1.8} loop
simulateModel("Modelica.Mechanics.Rotational.Examples.CoupledClutches(J1(J="+String(j)+"))",
resultFile="CoupledClutches_"+String(j));
end for;
end RunLoop;
- Используйте встроенные функции
simulateExtendedModel
и simulateMultiExtendedModel
, которые на самом деле выполняют те же функции, что и выше, но более понятным способом (введите document("simulateExtendedModel")
и document("simulateMultiExtendedModel")
в командном окне Dymola, чтобы получить больше информации об этих ).
ОК, это должно дать вам начало. Если по какой-либо причине ни один из них не работает, просто обновите вопрос с учетом дополнительных требований, которые у вас есть.