Следующий файл, ideal_capacitor.ssc
, реализует компонент под названием ideal_capacitor
.
Раздел объявления компонента содержит:
Два электрических узла, p
и n
, для + и – терминалы, соответственно.
Один параметр, C
, со значением по умолчанию 1 F
, задавая емкость.
Через и переменные Across, текущий i
и напряжение v
, чтобы быть соединенным с электрическими доменными переменными Through и Across позже в файле.
Переменный v
, как объявляют, с высоким приоритетом инициализации, гарантирует начальное напряжение 0 V
.
Раздел branches
устанавливает отношение между переменной Through компонента и узлами компонента (и поэтому доменной переменной Through). Оператор i : p.i -> n.i
указывает, что ток через конденсатор вытекает из узла p
к узлу n
.
Раздел уравнения запускается с построения assert
, которое проверяет, что значение емкости больше, чем нуль. Если параметры блоков установлены неправильно, assert
инициировал ошибку времени выполнения.
Первое уравнение, v == p.v - n.v
, устанавливает отношение между переменной Across компонента и узлами компонента (и поэтому доменной переменной Across). Это задает напряжение через конденсатор как различие между напряжениями узла.
Второе уравнение задает конденсаторное действие: I = C*dV/dt
, то есть, текущий вывод равняется емкости, умноженной на производную времени входного напряжения.
component ideal_capacitor % Ideal Capacitor % Models an ideal (lossless) capacitor. The output current I is related % to the input voltage V by I = C*dV/dt where C is the capacitance. nodes p = foundation.electrical.electrical; % +:top n = foundation.electrical.electrical; % -:bottom end parameters C = { 1, 'F' }; % Capacitance end variables i = { 0, 'A' }; % Current v = {value = { 0, 'V' }, priority = priority.high}; % Voltage end branches i : p.i -> n.i; % Current through from node p to node n end equations assert(C > 0) v == p.v - n.v; % Voltage across between node p and node n i == C*v.der; % Equation defining the capacitor action end end