rumoca 0.7.28

Modelica compiler written in RUST
Documentation
class SimpleCircuit
  Resistor R1(R = 10);
  Capacitor C(C = 0.01);
  Resistor R2(R = 100);
  Inductor L1(L = 0.1);
  VsourceAC AC;
  Ground G;
equation
  connect(AC.p, R1.p);
  // 1, Capacitor circuit
  connect(R1.n, C.p);
  //    Wire 2
  connect(C.n, AC.n);
  //    Wire 3
  connect(R1.p, R2.p);
  // 2, Inductor circuit
  connect(R2.n, L1.p);
  //    Wire 5
  connect(L1.n, C.n);
  //    Wire 6
  connect(AC.n, G.p);
end SimpleCircuit;

// 7, Ground
type Voltage
  extends Real;
end Voltage;

type Current
  extends Real;
end Current;

connector Pin
  Real v;
  flow Current i;
end Pin;

class TwoPin "Superclass of elements with two electical pins"
  Pin p, n;
  Voltage v;
  Current i;
equation
  v = p.v - n.v;
  0 = p.i + n.i;
  i = p.i;
end TwoPin;

class Ground "Ground"
  Pin p;
equation
  p.v = 0;
end Ground;

class Resistor "Ideal electrical resistor"
  extends TwoPin;
  parameter Real R(unit = "Ohm") "Resistance";
equation
  R * i = v;
end Resistor;

class Capacitor "Ideal electrical capacitor"
  extends TwoPin;
  parameter Real C(unit = "F") "Capacitance";
equation
  C * der(v) = i;
end Capacitor;

class Inductor "Ideal electrical inductor"
  extends TwoPin;
  parameter Real L(unit = "H") "Inductance";
equation
  L * der(i) = v;
end Inductor;

class VsourceAC "Sin wave voltage source"
  extends TwoPin;
  parameter Voltage VA = 220 "Amplitude";
  parameter Real f(unit = "Hz") "Frequency";
  parameter Real PI = 3.14159265358979323846 "Pi";
equation
  v = VA * sin(2 * PI * f * time);
end VsourceAC;