Modelica установить несколько параметров с записью - PullRequest
3 голосов
/ 06 ноября 2019

Чтобы переопределить несколько параметров машины постоянного тока с постоянным магнитом содержимым записи DcPermanentMagnetData, я использую эту конструкцию:

Modelica.Electrical.Machines.Utilities.ParameterRecords.DcPermanentMagnetData dcpmData(
    IaNominal = 1, 
    VaNominal = 2, 
    wNominal = 3);

Modelica.Electrical.Machines.BasicMachines.DCMachines.DC_PermanentMagnet dcpm(
    IaNominal = dcpmData.IaNominal,
    VaNominal = dcpmData.VaNominal,
    wNominal = dcpmData.wNominal);

Возможно ли вместо этого установить несколько значений параметров модели с помощью одной команды?

MWE:

model MWE

  record Rec
    parameter Real x_init;
    parameter Real y_init;
  end Rec;

  model HelloWorld
    parameter Real x_init;
    parameter Real y_init;
    Real x;
    Real y;
    initial equation
      x = x_init;
      y = y_init;
    equation
      der(x)=-x;
      der(y)=-y;
  end HelloWorld;

  Rec r (x_init = 1, y_init = 2);
  HelloWorld hi (x_init = r.x_init, y_init = r.y_init);  // this works
  //HelloWorld hi ( allValuesFrom(r) );  // <--- something like this

end MWE;

1 Ответ

2 голосов
/ 06 ноября 2019

Вы можете передать всю запись в модель. Для этого вы должны заменить свои параметры экземпляром записи:

model MWE
      record Rec
        parameter Real x_init;
        parameter Real y_init;
      end Rec;

      model HelloWorld
        input Rec r;
        Real x;
        Real y;
      initial equation 
          x = r.x_init;
          y = r.y_init;
      equation 
          der(x)=-x;
          der(y)=-y;
      end HelloWorld;

      Rec r( x_init = 1, y_init = 2);
      HelloWorld hi(r=r);
end MWE;
...