Skip to content
Inductor.md

Inductor

Ideal inductor characterized by its inductance L.

This component models a linear inductor, a fundamental passive two-terminal electrical component. It defines the relationship between voltage v and current i based on its inductance L. The behavior is described by the equation:

v=Ldidt

math where v is the voltage across the inductor (difference between pin p and pin n), i is the current flowing through the inductor (from pin p to pin n), and L is its inductance.

This component extends from OnePort

Usage

Inductor(L)

Parameters:

NameDescriptionUnitsDefault value
LInductance value of the component in Henries (H)H

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)=0Ldi(t)dt=v(t)

Source

dyad
# Ideal inductor characterized by its inductance L.
#
# This component models a linear inductor, a fundamental passive two-terminal electrical component.
# It defines the relationship between voltage `v` and current `i` based on its inductance `L`.
# The behavior is described by the equation:
# ```math
# v = L \frac{di}{dt}
# ```math
# where `v` is the voltage across the inductor (difference between pin `p` and pin `n`), `i` is the current flowing through the inductor (from pin `p` to pin `n`), and `L` is its inductance.
component Inductor
  extends OnePort
  # Inductance value of the component in Henries (H)
  parameter L::Inductance
relations
  L*der(i) = v
metadata {
  "Dyad": {
    "labels": [
      {"label": "$(instance)", "x": 500, "y": 1100, "rot": 0},
      {"label": "L=$(L)H", "x": 500, "y": 150, "rot": 0}
    ],
    "icons": {"default": "dyad://ElectricalComponents/Inductor.svg"}
  }
}
end
Flattened Source
dyad
# Ideal inductor characterized by its inductance L.
#
# This component models a linear inductor, a fundamental passive two-terminal electrical component.
# It defines the relationship between voltage `v` and current `i` based on its inductance `L`.
# The behavior is described by the equation:
# ```math
# v = L \frac{di}{dt}
# ```math
# where `v` is the voltage across the inductor (difference between pin `p` and pin `n`), `i` is the current flowing through the inductor (from pin `p` to pin `n`), and `L` is its inductance.
component Inductor
  # 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
  # Inductance value of the component in Henries (H)
  parameter L::Inductance
relations
  v = p.v-n.v
  i = p.i
  p.i+n.i = 0
  L*der(i) = v
metadata {
  "Dyad": {
    "labels": [
      {"label": "$(instance)", "x": 500, "y": 1100, "rot": 0},
      {"label": "L=$(L)H", "x": 500, "y": 150, "rot": 0}
    ],
    "icons": {"default": "dyad://ElectricalComponents/Inductor.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"