Определить новую единицу в modelica

Высокий Я пытаюсь определить свою собственную единицу в modelica. Это не производная единица.

Я создал субпакеты и добавил:

package DiabetesUnits
 extends Modelica.Icons.Package;
 type InternationalUnit = Real (final quantity="InternationalUnit", final unit="IU", min=0);
 type InsulinConcentration = Real (final quantity="InsulinConcentration", final unit="IU/m3", displayUnit="IU/litre", min=0);
 type InsulinConcentrationRate = Real (final quantity="InsulinConcentrationRate", final unit="IU/(s.dm3)", displayUnit="IU/(hour.litre)");
 type GlucoseConcentration = Real (final quantity="GlucoseConcentration", final unit="g/m3", displayUnit="mg/litre", min=0);
 type GlucoseRate = Real (final quantity="GlucoseConcentrationRate", final unit="g/(s)", displayUnit="mg/(hour)");
end DiabetesUnits;

но когда я его использую, я получаю ошибку: не удалось декодировать символ единицы "IU", появляющийся в единичной строке "IU/m3",

2 ответа

Вы не указываете, какой инструмент вы используете, но вы можете обратиться к спецификации Modelica (глава 19) для обсуждения того, что является законным, а что нет. На первый взгляд, ваши определения выглядят разумно, но я не выкопал в фактическую спецификацию ISO, что спецификация Modelica ссылается на то, существуют ли определенные ограничения, применимые к вашему делу (например, начальные единицы с "I").


Вы можете деактивировать проверку устройства в Dymola, используя Advanced.CheckUnits = false У меня такая же проблема с использованием медицинских единиц. Вы можете найти некоторую релевантную информацию в моей статье о медицинских единицах, не относящихся к СИ. Ответы Micheal Tiller и kdavies4 были очень полезны для меня. kdavies4 реализует единицы как переменные, которые могут удовлетворить ваши потребности. Преподавание Modelica Медицинские единицы, не относящиеся к СИ

licensed under cc by-sa 3.0 with attribution.