## Electrical Component — Ideal Capacitor

The following file, `ideal_capacitor.ssc`

,
implements a component called `ideal_capacitor`

.

The declaration section of the component contains:

Two electrical nodes,

`p`

and`n`

, for + and – terminals, respectively.One parameter,

`C`

, with a default value of`1 F`

, specifying the capacitance.Through and Across variables, current

`i`

and voltage`v`

, to be connected to the electrical domain Through and Across variables later in the file.Variable

`v`

is declared with high initialization priority, to ensure the initial voltage of`0 V`

.

The `branches`

section establishes the relationship
between the component Through variable and the component nodes (and
therefore the domain Through variable). The ```
i : p.i ->
n.i
```

statement indicates that the current through the capacitor
flows from node `p`

to node `n`

.

The equation section starts with an `assert`

construct, which checks that the
capacitance value is greater than zero. If the block parameter is set incorrectly, the
`assert`

triggers a run-time error.

The first equation, `v == p.v - n.v`

, establishes the relationship
between the component Across variable and the component nodes (and therefore the domain Across
variable). It defines the voltage across the capacitor as the difference between the node
voltages.

The second equation defines the capacitor action: ```
I
= C*dV/dt
```

, that is, output current equals capacitance multiplied
by the time derivative of the input voltage.

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