SaturatingInductor
IconSaturatingInductor
Simple model of an inductor with saturation
This component extends from TwoPin
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:
Name | Description | Units | Default value |
---|---|---|---|
I_nominal | Nominal current | A | 1 |
L_nominal | Inductance at nominal current | H | 1 |
L_zero | Inductance near current = 0 | H | 2 * L_nominal |
L_inf | Inductance at large currents | H | L_nominal / 2 |
I_par | A | Inominal / tan((Lnominal - Linf) / (Lzero - L_inf)) |
Connectors
Variables
Name | Description | Units |
---|---|---|
v | V | |
i | A | |
L_actual | Present inductance | H |
psi | Present flux | 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
# Simple model of an inductor with saturation
component SaturatingInductor
extends TwoPin
# Nominal current
parameter I_nominal::Current = 1
# Inductance at nominal current
parameter L_nominal::Inductance = 1
# Inductance near current = 0
parameter L_zero::Inductance = 2*L_nominal
# Inductance at large currents
parameter L_inf::Inductance = L_nominal/2
# Present inductance
variable L_actual::Inductance
# Present flux
variable psi::MagneticFlux
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
# Simple model of an inductor with saturation component SaturatingInductor p = Pin() [{ "JuliaSim": { "placement": {"icon": {"iconName": "pos", "x1": -50, "y1": 450, "x2": 50, "y2": 550}} } }] n = Pin() [{ "JuliaSim": { "placement": {"icon": {"iconName": "neg", "x1": 950, "y1": 450, "x2": 1050, "y2": 550}} } }] variable v::Voltage variable i::Current # Nominal current parameter I_nominal::Current = 1 # Inductance at nominal current parameter L_nominal::Inductance = 1 # Inductance near current = 0 parameter L_zero::Inductance = 2*L_nominal # Inductance at large currents parameter L_inf::Inductance = L_nominal/2 # Present inductance variable L_actual::Inductance # Present flux variable psi::MagneticFlux 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
Related
- Examples
- Experiments
- Analyses
- Tests