Моделирование RLC-четырёх полюсника в OpenModelica. Проблема с преобразованиями Complex и Real

Пытаюсь изучить построение RLc- схем в программной среде OpenModelicа. Дана схема

введите сюда описание изображения

Формулы,по нахождению АЧХ,ФЧХ

введите сюда описание изображения

Пытаюсь всё это перенести в Open Modelica,но при попытке компиляции появляется ошибка Type mismatch.Я понимаю что эта ошибка в формуле связана с конфликтом между Complex и Real.

 model Lab5
      extends Modelica.Icons.Example;
      type Voltage=Real(unit="V");
      type Current=Real(unit="A");
      type Resistance=Real(unit="Ohm");
      type Capacitance=Real(unit="F");
      type Inductance =Real(unit="H");
      
      parameter Modelica.SIunits.Resistance R=100 "Resistance";
      parameter Modelica.SIunits.Inductance L=1 "Inductance";
      parameter Modelica.SIunits.Voltage Vb=24 "Total DC Voltage";
      parameter Modelica.SIunits.Capacitance C=1e-3 "Capacitance";
      Voltage V;
      Current i_L;
      Current i_R;
      Current i_C;
      Current icomp;
      
    equation
     Z1_f=Modelica.ComplexMath.'sqrt'(Complex(re=-1)*(2*Modelica.Constants.pi*f*L*(1/(2*Modelica.Constants.pi*f*C)));
  **  //Ошибка:
Type mismatch in equation Z1_f=Modelica.ComplexMath.'sqrt'(Complex.'*'.multiply(Complex(-1.0, 0.0),     
    Complex.'constructor'.fromReal(L / C, 0.0))) of type Real=record Complex
      Real re;
      Real im;
    end Complex;.**


      Z2_f=R;
      KPF=Z2_f/(Z1_f+Z2_f);
      APF=ModelicaReference.Operators.'abs(KPF)';
      FPF=Modelica.ComplexMath.arg(KPF);
    
      V = i_R * R;
      C * der(V) = i_C;
      L * der(i_L) = Vb - V;
      i_L = i_R + i_C;
      annotation(
        uses(Modelica(version = "3.2.3")));
    end Lab5;

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

Z1_f=Modelica.ComplexMath.'sqrt'(Complex(Complex(re=(2*Modelica.Constants.pi*f*L*(1/(2*Modelica.Constants.pi*f*C))))));

 Type mismatch for positional argument 1 in Complex(re=Complex.'constructor'.fromReal(L / C, 0.0)). The argument has type:
  record Complex
  Real re;
  Real im;
end Complex;
expected type:
  Real

Complex.'constructor'.fromReal(re=Complex.'constructor'.fromReal(L / C, 0.0)). The argument has type:
  record Complex
  Real re;
  Real im;
end Complex;
expected type:
  Real

Как можно решить эту проблему с преобразованием из Complex в Real?


Ответы (0 шт):