Почему ВСЕ импортированные компоненты библиотеки ThermoPower не имеют "соответствующих" внутренних "объявлений"?

Я очень стараюсь с небольшим успехом смоделировать энергетический цикл Рэнкина на OpenModelica. Это делается путем репликации представления схемы из примера библиотеки "ThermoPower" RankineCycle. Упрощения были сделаны в надежде облегчить этот процесс.

Я продолжаю получать "Предупреждения о переводе" от OM Message Browser, в котором говорится, что все эти используемые компоненты не имеют "внутренних объявлений", связанных с "внешними объявлениями", которые уже встроены в код библиотеки для каждого компонента соответственно.

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

Я также попытался добавить "//" к объявлениям внешнего кода в надежде пропустить эти команды, но безуспешно.

Вот код:

[1] 11:52:20 Translation Warning
[ThermoPower.Water: 5482:7-5482:63]: No corresponding 'inner' declaration found for component .ThermoPower.System Superheater.fluidFlow.system declared as 'outer '.
  The existing 'inner' components are:
    There are no 'inner' components defined in the model in any of the parent scopes of 'outer' component's scope: ThermoPower.Water.Flow1DFV$Superheater$fluidFlow.
  Check if you have not misspelled the 'outer' component name.
  Please declare an 'inner' component with the same name in the top scope.
  Continuing flattening by only considering the 'outer' component declaration.

[2] 11:52:20 Translation Warning
[ThermoPower.Thermal: 374:5-374:61]: No corresponding 'inner' declaration found for component .ThermoPower.System Superheater.metalTube.system declared as 'outer '.
  The existing 'inner' components are:
    There are no 'inner' components defined in the model in any of the parent scopes of 'outer' component's scope: ThermoPower.Thermal.MetalTubeFV$Superheater$metalTube.
  Check if you have not misspelled the 'outer' component name.
  Please declare an 'inner' component with the same name in the top scope.
  Continuing flattening by only considering the 'outer' component declaration.

[3] 11:52:20 Translation Warning
[ThermoPower.Gas: 2791:7-2791:63]: No corresponding 'inner' declaration found for component .ThermoPower.System Superheater.gasFlow.system declared as 'outer '.
  The existing 'inner' components are:
    There are no 'inner' components defined in the model in any of the parent scopes of 'outer' component's scope: ThermoPower.Gas.Flow1DFV$Superheater$gasFlow.
  Check if you have not misspelled the 'outer' component name.
  Please declare an 'inner' component with the same name in the top scope.
  Continuing flattening by only considering the 'outer' component declaration.

[4] 11:52:20 Translation Warning
[ThermoPower.Water: 5482:7-5482:63]: No corresponding 'inner' declaration found for component .ThermoPower.System Economizer.fluidFlow.system declared as 'outer '.
  The existing 'inner' components are:
    There are no 'inner' components defined in the model in any of the parent scopes of 'outer' component's scope: ThermoPower.Water.Flow1DFV$Economizer$fluidFlow.
  Check if you have not misspelled the 'outer' component name.
  Please declare an 'inner' component with the same name in the top scope.
  Continuing flattening by only considering the 'outer' component declaration.

[5] 11:52:20 Translation Warning
[ThermoPower.Thermal: 374:5-374:61]: No corresponding 'inner' declaration found for component .ThermoPower.System Economizer.metalTube.system declared as 'outer '.
  The existing 'inner' components are:
    There are no 'inner' components defined in the model in any of the parent scopes of 'outer' component's scope: ThermoPower.Thermal.MetalTubeFV$Economizer$metalTube.
  Check if you have not misspelled the 'outer' component name.
  Please declare an 'inner' component with the same name in the top scope.
  Continuing flattening by only considering the 'outer' component declaration.

Etc... Etc... еще 10 строк

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

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

1 ответ

Некоторые инструменты Modelica добавляют внутреннюю декларацию автоматически, некоторые - нет. OpenModelica еще не добавляет его автоматически, но это изменится в будущем с новым внешним интерфейсом.

Просто перетащите ThermoPower.System в топ-модель, и этого должно быть достаточно. Вам не нужно добавлять его на каждый уровень, только на верхний уровень. Внутреннее объявление похоже на глобальную переменную, которая читается внешним объявлением.

В дополнение к тому, что написал Адриан (поскольку он появился как активный):

Спецификация языка Modelica изменилась в части отсутствия внутренних:

В версии 3.0 аннотация missingInnerMessage предназначалась только для диагностики, но это, естественно, приводит к идее автоматического исправления с предупреждением, которая затем была стандартизирована в 3.1-3.2, где аннотация позволяла инструменту добавлять соответствующий внутренний - но не требовала этого.; что приводит к тому, что модели работают в одних инструментах, а не в других.

И, наконец, в 3.3r1 и 3.4 инструмент должен временно добавить соответствующий внутренний - независимо от missingInnerMessage (если он недвусмысленный и неполный).

Таким образом, в будущем это будет просто работать.

Другие вопросы по тегам