Modelica: есть ли возможность сохранить старые значения по умолчанию в модели в случае изменения или удаления значений в более новой версии библиотеки? - PullRequest
2 голосов
/ 11 июня 2019

Разрабатывая библиотеку моделей в modelica, мы решили изменить и удалить некоторые значения по умолчанию. В данный момент я пишу скрипт преобразования , чтобы убедиться, что нет проблем с обновлением библиотеки при использовании ее в другой модели. Есть ли возможность сохранить старые значения по умолчанию в случае удаленных или измененных и переименованных значений в более новой версии библиотеки?

Мне известно о возможности сохранить значения модели, заданные в модели, используя библиотеку с convertElement / convertModifiers.

Пример:

Старая версия модели в библиотеке exampleLib:

model modelLib  
  parameter Real exampleVal = 2;  
end modelLib;

Новая версия модели в библиотеке exampleLib:

model modelLib  
  parameter Real exampleValNew;  
end modelLib;

Если значение будет указано в 'exampleModel' с

model exampleModel
 exampleLib.modelLib exampleLibTest(exampleVal = 4)
end exampleModel;

скрипт преобразования типа

convertModifiers("exampleLib.modelLib", {"exampleVal"}, {"exampleValNew=%exampleVal%"});

гарантирует, что параметр в exampleModel будет сохранен.

Есть ли возможность сохранить значение по умолчанию, если в 'exampleModel' не указано значение?
В этом случае код модели, использующей библиотеку, будет:

 model exampleModel  
   exampleLib.modelLib exampleLibTest;  
 end exampleModel;

Я благодарен за любую помощь!

Ответы [ 3 ]

2 голосов
/ 12 июня 2019

В некоторых случаях следующее также может быть вариантом.

Это совершенно другое решение, поскольку оно сохраняет значение по умолчанию в библиотеке - но другим способом.Это можно сделать, добавив в новую библиотеку следующее:

model modelLib  
  parameter Real exampleValNew(start=2);  
end modelLib;

Ваши старые модели, в которых не указано значение, будут работать, но выдают предупреждение.

1 голос
/ 12 июня 2019

Я решил проблему с:

convertModifiers("exampleLib.modelLib", fill("",0), {"exampleValNew=2"});
1 голос
/ 11 июня 2019

Чтобы переименовать параметр или переменную, не касаясь ее модификаторов, используйте

convertElement("exampleLib.modelLib", "exampleVal", "exampleValNew");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...