В чем разница между разными средами моделирования Modelica?

Существуют различные среды моделирования Modelica, включая Dymola, Wolfram SystemModeler, OpenModelica и Jmodelica. Итак, я пытаюсь загрузить библиотеку теплоносителя (ThermoSysPro https://github.com/Dwarf-Planet-Project/ThermoSysPro), но, за исключением Dymola, все результаты другого программного обеспечения заканчиваются ошибками.

Если библиотека и среда моделирования основаны на стандарте спецификации Modelica, почему возникает проблема совместимости? Я думаю, что, возможно, в библиотеке есть функции, которые поддерживает только Dymola. Может ли кто-нибудь прояснить разницу между этими средами моделирования?


person Jack    schedule 19.11.2019    source источник
comment
Если вам интересно узнать больше о JModelica, здесь Я написал небольшой учебник и собрал много других полезных ссылок.   -  person Foad    schedule 06.02.2020
comment
Новые версии ThermoSysPro поставляются с OpenModelica: просто загрузите и установите последнюю версию OpenModelica, затем перейдите к C:\Program Files\OpenModelicaXYZ-64bit\lib\omlibrary\ThermoSysPro XYZ. Но при проверке этой новой версии в Dymola в непедантичном режиме все еще есть ~ 200 ошибок (чаще всего: проблема структурно единичная, модель не корректно поставлена, коннектор нефизический).   -  person Priyanka    schedule 14.02.2020
comment
@Priyanka, несколько дней назад я тоже пробовал использовать Thermosyspro с Dymola, но я думаю, что самая сложная проблема - как инициализировать систему, как OpenModelica решает эту проблему?   -  person Jack    schedule 14.02.2020


Ответы (1)


В основном:

  1. Используемый вами инструмент может не поддерживать определенные языковые элементы Modelica.

    Тот факт, что инструмент поддерживает Modelica, не означает, что он реализовал все, что определяет стандарт Modelica. Возьмем, к примеру, OpenModelica, которая не полностью поддерживала синхронные функции до версии 1.12.

  2. Код библиотеки может не соответствовать версии спецификации языка Modelica (спецификация Modelica), используемой вашим инструментом.

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

    В Dymola у вас есть два варианта более строгой проверки, соответствует ли ваш код текущей спецификации языка Modelica: используйте педантичный режим для проверки и установите флаг Advanced.EnableAnnotationCheck=true, чтобы Dymola также проверяла аннотации.

В вашем конкретном примере: существуют различные проблемы с библиотекой ThermoSysPor, которые могут объяснить ваши проблемы.

  1. Библиотека была написана с использованием довольно старой стандартной библиотеки Modelica (MSL) 3.2.1., Которая основана на спецификации языка Modelica 3.2.

    Текущая версия Dymola (2020) использует спецификацию языка Modelica 3.4 (см. Примечания к выпуску Dymola для каждой версии, чтобы узнать это). OpenModelica явно поддерживает Modelica 3.3 (как указано в примечаниях к выпуску).

    За это время MSL также немного изменился, текущая версия - 3.2.3.

    Следовательно, необходимо обновить ThermoSysPro до последней версии MSL 3.2.3 и до спецификации Modelica, поддерживаемой инструментом. Затем вы можете начать сравнивать, в каких инструментах он работает, а в каких нет.

  2. Библиотека в Дымоле тоже не работает полноценно.

    Я тестировал последнюю версию Dymola и Dymola 2016 FD01, которая содержала MSL 3.2.1.

    1. Dymola 2016 FD01: 31 errors, 62 warnings
    2. Dymola 2020: 175 ошибок, 095 предупреждений
  3. Библиотека содержит недопустимые языковые элементы. Два примера:

    1. В ThermoSysPro.Examples.SimpleExamples.TestCentrifugalPump OpenModelica v1.14 beta 2 жалуется, что cardinality не используется законным способом. Видимо Dymola 2020 наплевать (даже в педантичном режиме), но это против Modelica Spec 3.4.

    2. Многие модели содержат аннотацию DymolaStoredErrors, которая не соответствует стандарту. Аннотации пользовательских инструментов должны начинаться с символа «__».

person marco    schedule 20.11.2019
comment
Я также протестировал библиотеку ThermoSysPro с Dymola 2020, но она успешно загрузила библиотеку, и я протестировал несколько примеров, поставляемых с библиотекой, все они работали нормально. Итак, я не уверен, почему ваш результат заканчивается 175 ошибками? Вы протестировали все примеры и компоненты в библиотеке с помощью тестовых скриптов? Если да, то как это удалось? - person Jack; 20.11.2019
comment
Я проверил всю библиотеку, отметив пакет ThermoSysPro в обозревателе пакетов и нажав «Проверить» (F8). - person marco; 20.11.2019
comment
Ошибки DymolaStoredErrors в этой библиотеке пусты и поэтому могут быть удалены без каких-либо проблем. Ограничение количества элементов было добавлено в Modelica 3.3r1, но еще не реализовано в Dymola. (До этого количество элементов можно было использовать свободно.) - person Hans Olsson; 20.11.2019
comment
Небольшая поправка, MSL 3.2.3 по-прежнему основан на Modelica Specification 3.2rev2. Текущая разрабатываемая версия, которая станет 4.0.0, будет основана на Спецификации Modelica 3.4. - person Dietmar Winkler; 21.11.2019
comment
Спасибо, Дитмар, вы правы. Это Dymola 2020, которая использует Modelica Language Spec 3.4, а не MSL. Я это перепутал. - person marco; 21.11.2019
comment
@Marvel, не могли бы вы также протестировать простую модель в ThermoSysPro? Это довольно просто из библиотеки WaterSteam: SourcePQ + DynamicTwoPhasePipe + Sink (h) или Source (h) + DynamicTwoPhasePipe + SinkPQ. В обоих случаях у меня вылетает OpenModelica. - person Tomillo; 22.11.2019