Modelica - отображение не модельной функции на модель

Если у меня есть функция non-modelica, которая не имеет входа и выхода, как

void foo(void)
{
  variable1;
  variable2;
  for loop
   {
     if conditions
   }
  variable2=foobar(); // another function call, foobar() is not modelica function

}

тогда я могу смоделировать это как ниже в modelica?

model foo
 variable1;
 variable2;

algorithm
for loop
   {
     if conditions
   }
 variable2 :=foobar(); //foobar here is modelica function
end foo;

2 ответа

На самом деле, ваше описание немного беспокоит. Если ваша функция не имеет входов и выходов, какой смысл ее вызывать?

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

Так что было бы лучше, если бы вы немного объяснили, что делает эта функция. Это не только поможет решить, как вы можете выразить это в Modelica, но и продемонстрировать, что лучше оставить вашу функцию в виде кода C и вызывать ее через интерфейс сторонних функций в Modelica.

Возможно, вы захотите быстро взглянуть на красивую шпаргалку http://modref.xogeny.com/ чтобы узнать, как делать циклы for. Также, когда внутри секций алгоритма вы должны использовать присваивания вместо уравнений:

algorithm
...
variable2 := foobar(); //foobar here is modelica function
Другие вопросы по тегам