Skip to content
Capacitor.md

Capacitor

Ideal electrical capacitor.

This component models a linear capacitor, a fundamental passive two-terminal electrical component used to store energy electrostatically in an electric field. The relationship between the current i flowing through the capacitor and the voltage v across its terminals is defined by the equation:

Cder(v)=i

where C is the capacitance value and der(v) is the time derivative of the voltage v.

This component extends from OnePort

Usage

Capacitor(C)

Parameters:

NameDescriptionUnitsDefault value
CCapacitance of the ideal capacitorF

Connectors

Variables

NameDescriptionUnits
vVoltage across the component (between pin p and pin n).V
iCurrent flowing through the component (from pin p to pin n).A

Behavior

v(t)=p.v(t)n.v(t)i(t)=p.i(t)n.i(t)+p.i(t)=0Cdv(t)dt=i(t)

Source

dyad
# Ideal electrical capacitor.
#
# This component models a linear capacitor, a fundamental passive two-terminal electrical component
# used to store energy electrostatically in an electric field. The relationship between the
# current `i` flowing through the capacitor and the voltage `v` across its terminals is
# defined by the equation:
# ```math
# C der(v) = i
# ```
# where `C` is the capacitance value and `der(v)` is the time derivative of the voltage `v`.
component Capacitor
  extends OnePort
  # Capacitance of the ideal capacitor
  parameter C::Capacitance
relations
  C*der(v) = i
metadata {
  "Dyad": {
    "labels": [
      {"label": "$(instance)", "x": 500, "y": 1100, "rot": 0},
      {"label": "C=$(C)F", "x": 500, "y": 150, "rot": 0}
    ],
    "icons": {"default": "dyad://ElectricalComponents/Capacitor.svg"}
  }
}
end
Flattened Source
dyad
# Ideal electrical capacitor.
#
# This component models a linear capacitor, a fundamental passive two-terminal electrical component
# used to store energy electrostatically in an electric field. The relationship between the
# current `i` flowing through the capacitor and the voltage `v` across its terminals is
# defined by the equation:
# ```math
# C der(v) = i
# ```
# where `C` is the capacitance value and `der(v)` is the time derivative of the voltage `v`.
component Capacitor
  # Positive electrical pin.
  p = Pin() [{
    "Dyad": {
      "placement": {"icon": {"iconName": "pos", "x1": -50, "y1": 450, "x2": 50, "y2": 550}}
    }
  }]
  # Negative electrical pin.
  n = Pin() [{
    "Dyad": {
      "placement": {"icon": {"iconName": "neg", "x1": 950, "y1": 450, "x2": 1050, "y2": 550}}
    }
  }]
  # Voltage across the component (between pin p and pin n).
  variable v::Voltage
  # Current flowing through the component (from pin p to pin n).
  variable i::Current
  # Capacitance of the ideal capacitor
  parameter C::Capacitance
relations
  v = p.v-n.v
  i = p.i
  p.i+n.i = 0
  C*der(v) = i
metadata {
  "Dyad": {
    "labels": [
      {"label": "$(instance)", "x": 500, "y": 1100, "rot": 0},
      {"label": "C=$(C)F", "x": 500, "y": 150, "rot": 0}
    ],
    "icons": {"default": "dyad://ElectricalComponents/Capacitor.svg"}
  }
}
end


Test Cases

This is setup code, that must be run before each test case.

julia
using ElectricalComponents
using ModelingToolkit, OrdinaryDiffEqDefault
using Plots
using CSV, DataFrames

snapshotsdir = joinpath(dirname(dirname(pathof(ElectricalComponents))), "test", "snapshots")
"/home/actions-runner-10/.julia/packages/ElectricalComponents/bmmPM/test/snapshots"