Смесь газов в моделях - PullRequest
       10

Смесь газов в моделях

1 голос
/ 27 сентября 2019

Я использую OpenModelica, и у меня есть некоторая модель газовой смеси

package ExhaustGas
import Modelica.Media.IdealGases.Common;
  extends Modelica.Media.IdealGases.Common.MixtureGasNasa(mediumName = "ExhaustGas", data = {Common.SingleGasesData.O2, Common.SingleGasesData.CO2, Common.SingleGasesData.H2O, Common.SingleGasesData.N2, Common.SingleGasesData.Ar, Common.SingleGasesData.SO2}, fluidConstants = {Common.FluidData.O2, Common.FluidData.CO2, Common.FluidData.H2O, Common.FluidData.N2, Common.FluidData.Ar, Common.FluidData.SO2}, substanceNames = {"Oxygen", "Carbondioxide", "Water", "Nitrogen", "Argon", "Sulfurdioxide"}, reference_X = {0.1383, 0.032, 0.0688, 1 - 0.1383 - 0.032 - 0.0688 - 0.0000000001 - 0.0000000001, 0.0000000001, 0.0000000001});
end ExhaustGas;

Я запускаю код:

algorithm
for i in 1:6 loop
      etaX[i] := ExhaustGas.fluidConstants[i].criticalTemperature;
end for;

и получаю

{154.58, 154.58, 154.58, 154.58, 154.58, 154.58}

То естьв массив записываются только значения кислорода.

Тот же цикл используется в функции Modelica.Media.IdealGases.Common.MixtureGasNasa.dynamicViscosity .Можно ли считать, что эта функция работает правильно?Что я делаю не так?

1 Ответ

2 голосов
/ 27 сентября 2019

Я не видел подобной проблемы в Dymola (использовал Dymola 2018 без видимой причины), так что это похоже на проблему в OpenModelica.

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

model ExhaustGas
  import Modelica.Media.IdealGases.Common;
  package P=Modelica.Media.IdealGases.Common.MixtureGasNasa (
    mediumName="ExhaustGas",
    data={Common.SingleGasesData.O2,Common.SingleGasesData.CO2,Common.SingleGasesData.H2O,
        Common.SingleGasesData.N2,Common.SingleGasesData.Ar,Common.SingleGasesData.SO2},
    fluidConstants={Common.FluidData.O2,Common.FluidData.CO2,Common.FluidData.H2O,
        Common.FluidData.N2,Common.FluidData.Ar,Common.FluidData.SO2},
    substanceNames={"Oxygen","Carbondioxide","Water","Nitrogen","Argon","Sulfurdioxide"},
    reference_X={0.1383,0.032,0.0688,1 - 0.1383 - 0.032 - 0.0688 - 0.0000000001 -
        0.0000000001,0.0000000001,0.0000000001});

  Real etaX[6];
algorithm 
  for i in 1:6 loop
      etaX[i] =  P.fluidConstants[i].criticalTemperature;
  end for;
end ExhaustGas;

Поскольку модель, наследуемая от пакета, не является законной.Я заметил два предупреждения о том, что normalBoilingPoint находится вне диапазона.

Изменено : я изменил его, чтобы использовать алгоритм вместо уравнения, в Dymola это не имеет значения, и я неЯ не вижу причин, почему это должно иметь значение.

...