$(instance)SaturatingInductor Icon

SaturatingInductor

Inductor model exhibiting magnetic saturation.

Represents an inductor where the inductance value decreases as the current increases, simulating the effect of magnetic core saturation. The model defines the inductance L_actual as a function of current i, transitioning from L_zero (inductance at zero current) to L_inf (inductance at large currents). The relationship between magnetic flux (\psi), current (i), and voltage (v) is governed by:

\[L_{actual} = L_{inf} + (L_{zero} - L_{inf}) \frac{atan(i/I_{par})}{i/I_{par}}\]

\[\psi = L_{inf}i + (L_{zero} - L_{inf})I_{par}atan(i/I_{par})\]

\[v = \frac{d\psi}{dt}\]

where I_par is a characteristic current derived from nominal values:

\[I_{par} = \frac{I_{nominal}}{tan(\frac{L_{nominal} - L_{inf}}{L_{zero} - L_{inf}})}\]

OnePort

Usage

SaturatingInductor(I_nominal=1, L_nominal=1, L_zero=2*L_nominal, L_inf=L_nominal/2, I_par=I_nominal/tan((L_nominal-L_inf)/(L_zero-L_inf)))

Parameters:

NameDescriptionUnitsDefault value
I_nominalNominal operating current for defining saturation characteristics.A1
L_nominalInductance value at the nominal current I_nominal.H1
L_zeroInductance value at or near zero current (maximum inductance).H2 * L_nominal
L_infInductance value at large currents (fully saturated inductance, minimum inductance).HL_nominal / 2

Connectors

  • p - This connector represents an electrical pin with voltage and current as the potential and flow variables, respectively. (Pin)
  • n - This connector represents an electrical pin with voltage and current as the potential and flow variables, respectively. (Pin)

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
L_actualThe actual current-dependent inductance of the component (psi/i).H
psiThe magnetic flux linking the inductor windings.Wb

Behavior

\[ \begin{align} v\left( t \right) &= \mathtt{p.v}\left( t \right) - \mathtt{n.v}\left( t \right) \\ i\left( t \right) &= \mathtt{p.i}\left( t \right) \\ \mathtt{n.i}\left( t \right) + \mathtt{p.i}\left( t \right) &= 0 \\ \mathtt{L\_actual}\left( t \right) &= \mathtt{L\_inf} + \frac{\mathtt{I\_par} \left( - \mathtt{L\_inf} + \mathtt{L\_zero} \right) \arctan\left( \frac{i\left( t \right)}{\mathtt{I\_par}} \right)}{i\left( t \right)} \\ \mathtt{psi}\left( t \right) &= \mathtt{L\_inf} i\left( t \right) + \mathtt{I\_par} \left( - \mathtt{L\_inf} + \mathtt{L\_zero} \right) \arctan\left( \frac{i\left( t \right)}{\mathtt{I\_par}} \right) \\ v\left( t \right) &= \frac{\mathrm{d} \mathtt{psi}\left( t \right)}{\mathrm{d}t} \end{align} \]

Source

# Inductor model exhibiting magnetic saturation.
#
# Represents an inductor where the inductance value decreases as the current increases,
# simulating the effect of magnetic core saturation. The model defines the inductance
# `L_actual` as a function of current `i`, transitioning from `L_zero` (inductance at
# zero current) to `L_inf` (inductance at large currents). The relationship between
# magnetic flux (`\psi`), current (`i`), and voltage (`v`) is governed by:
# ```math
# L_{actual} = L_{inf} + (L_{zero} - L_{inf}) \frac{atan(i/I_{par})}{i/I_{par}}
# ```
# ```math
# \psi = L_{inf}i + (L_{zero} - L_{inf})I_{par}atan(i/I_{par})
# ```
# ```math
# v = \frac{d\psi}{dt}
# ```
# where `I_par` is a characteristic current derived from nominal values:
# ```math
# I_{par} = \frac{I_{nominal}}{tan(\frac{L_{nominal} - L_{inf}}{L_{zero} - L_{inf}})}
# ```
component SaturatingInductor
  extends OnePort
  # Nominal operating current for defining saturation characteristics.
  parameter I_nominal::Current = 1
  # Inductance value at the nominal current I_nominal.
  parameter L_nominal::Inductance = 1
  # Inductance value at or near zero current (maximum inductance).
  parameter L_zero::Inductance = 2*L_nominal
  # Inductance value at large currents (fully saturated inductance, minimum inductance).
  parameter L_inf::Inductance = L_nominal/2
  # The actual current-dependent inductance of the component (psi/i).
  variable L_actual::Inductance
  # The magnetic flux linking the inductor windings.
  variable psi::MagneticFlux
  # Characteristic current parameter used in the saturation function, derived from other inductance and current parameters.
  final parameter I_par::Current = I_nominal/tan((L_nominal-L_inf)/(L_zero-L_inf))
relations
  # assert L_zero > L_nominal "L_zero $(L_zero) should be greater than L_nominal $(L_nominal)"
  # assert L_inf < L_nominal "Linf $(Linf) should be less than L_nominal $(L_nominal)"
  L_actual = L_inf+(L_zero-L_inf)*atan(i/I_par)/(i/I_par)
  psi = L_inf*i+(L_zero-L_inf)*I_par*atan(i/I_par)
  v = der(psi)
end
Flattened Source
# Inductor model exhibiting magnetic saturation.
#
# Represents an inductor where the inductance value decreases as the current increases,
# simulating the effect of magnetic core saturation. The model defines the inductance
# `L_actual` as a function of current `i`, transitioning from `L_zero` (inductance at
# zero current) to `L_inf` (inductance at large currents). The relationship between
# magnetic flux (`\psi`), current (`i`), and voltage (`v`) is governed by:
# ```math
# L_{actual} = L_{inf} + (L_{zero} - L_{inf}) \frac{atan(i/I_{par})}{i/I_{par}}
# ```
# ```math
# \psi = L_{inf}i + (L_{zero} - L_{inf})I_{par}atan(i/I_{par})
# ```
# ```math
# v = \frac{d\psi}{dt}
# ```
# where `I_par` is a characteristic current derived from nominal values:
# ```math
# I_{par} = \frac{I_{nominal}}{tan(\frac{L_{nominal} - L_{inf}}{L_{zero} - L_{inf}})}
# ```
component SaturatingInductor
  # 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
  # Nominal operating current for defining saturation characteristics.
  parameter I_nominal::Current = 1
  # Inductance value at the nominal current I_nominal.
  parameter L_nominal::Inductance = 1
  # Inductance value at or near zero current (maximum inductance).
  parameter L_zero::Inductance = 2*L_nominal
  # Inductance value at large currents (fully saturated inductance, minimum inductance).
  parameter L_inf::Inductance = L_nominal/2
  # The actual current-dependent inductance of the component (psi/i).
  variable L_actual::Inductance
  # The magnetic flux linking the inductor windings.
  variable psi::MagneticFlux
  # Characteristic current parameter used in the saturation function, derived from other inductance and current parameters.
  final parameter I_par::Current = I_nominal/tan((L_nominal-L_inf)/(L_zero-L_inf))
relations
  v = p.v-n.v
  i = p.i
  p.i+n.i = 0
  # assert L_zero > L_nominal "L_zero $(L_zero) should be greater than L_nominal $(L_nominal)"
  # assert L_inf < L_nominal "Linf $(Linf) should be less than L_nominal $(L_nominal)"
  L_actual = L_inf+(L_zero-L_inf)*atan(i/I_par)/(i/I_par)
  psi = L_inf*i+(L_zero-L_inf)*I_par*atan(i/I_par)
  v = der(psi)
metadata {}
end


Test Cases

No test cases defined.