Modelica model: model Resistor "Ideal linear electrical resistor" extends Modelica.Electrical.Analog.Interfaces.OnePort; parameter SIunits.Resistance R=1 "Resistance"; equation R*i = v; end Resistor; ;;; OnePort is a primitive which defines i, v, ... (defmetamodel modelica-Resistor :external-terminals (p n) :includes Modelica.Electrical.Analog.Interfaces.OnePort :description "Ideal linear electrical resistor" :source :parameters ((R 1 SIunits.Resistance "Resistance")) :equations (= (* R i) v)) model Capacitor "Ideal linear electrical capacitor" extends Modelica.Electrical.Analog.Interfaces.OnePort; parameter SIunits.Capacitance C=1 "Capacitance"; equation i = C*der(v); end Capacitor; (defmetamodel modelica-Capacitor :external-terminals (p n) :description "Ideal linear electrical capacitor" :includes Modelica.Electrical.Analog.Interfaces.OnePort :source :parameters ((C 1 SIunits.Capacitance "Capacitance")) :equations (= i (* C (deriv v 1 t)))) model EMF "Electromotoric force (electric/mechanic transformer)" parameter Real k(final unit="N.m/A") = 1 "Transformation coefficient"; SIunits.Voltage v "Voltage drop between the two pins"; SIunits.Current i "Current flowing from positive to negative pin"; SIunits.AngularVelocity w "Angular velocity of flange_b"; Modelica.Electrical.Analog.Interfaces.PositivePin p; Modelica.Electrical.Analog.Interfaces.NegativePin n; Modelica.Mechanics.Rotational.Interfaces.Flange_b flange_b; equation v = p.v - n.v; 0 = p.i + n.i; i = p.i; w = der(flange_b.phi); k*w = v; flange_b.tau = -k*i; end EMF; (defmetamodel EMF :external-terminals (p n flange_a flange_b) :description "Electromotoric force (electric/mechanic transformer)" :source <...> :parameters ((k 1 ??? "Transformation coefficient")) :includes (Modelica.Electrical.Analog.Interfaces Modelica.Mechanics.Rotational.Interfaces) :variables ((v (voltage)) (w (angular-velocity)) (i (current)) (p.v (voltage p ground)) (p.n (voltage n ground)) (p.i (current p)) (n.i (current n)) (phi (angular-position flange_b)) (tau (torque flange_a))) :equations ((= v (- p.v n.v)) (= 0 (+ p.i n.i)) (= i p.i) (= w (deriv phi 1 t)) (= (* k w) v) (= tau (* k i)))) (defmetamodel EMF :external-terminals (p n flange_a flange_b) :description "Electromotoric force (electric/mechanic transformer)" :source <...> :parameters ((k 1 ??? "Transformation coefficient")) :variables ((v (voltage p n)) (i (current p)) (w (angular-velocity flange_b flange_a)) (tau (torque flange_a))) :equations ((= (* k w) v) (= tau (* k i))))