Complex Nonlinear Inductor

About the writer: Sebastian Jardi is an engineer in electronics who works with inductors, transformers and generators, in alternating currents and DC/AC converters. Please visit the author's Electromagnetic Applications webpage and see more about his work at

Summary: This article discusses modeling a non linear model for an inductor that can be used to obtain very good inductor simulations considering the saturation of magnetic core and the conductor resistance.

Complex Non Linear Inductor:

If we have a mathematical description of the BH characteristics a the magnetic material in the format:

B(t) = 2*Bsat/pi*atan(H(t)/Chi)

then we can obtain:

dB(t) = 2*Bsat*Chi/(pi*(H(t)^2+Chi^2)*dH(t)/dt


dPhi(t)/dt = 2*Bsat*Chi/(pi*(H(t)^2+Chi^2)*dH(t)/dt

Now, we can see how to implement this using the B2Spice.

For this model, I have used: Resistors, Ammeters, Analog Misc models, Voltage Controlled Voltage Sources and Current Controlled Voltage Sources:

Rs Modeling the resistance of copper wire.
V_IL For measing the Inductor current.
EL Voltage Controlled Voltage Source.
H1 Current Controlled Voltage Source.
A1 Differentiator.
A2 Gain_Block.
A3 Divided Block.
A4 Gain Block.
A5 Integrator.
B1 Non-Linear Dependent Source.

And User-Defined Parameters, in the Edit menu:

N Number of turns.
Lm Mean Length of Magnetic Circuit.
Am Cross Sectional Area of Magnetic Circuit.
Chi Cuadrature BH Loop.
Bsat Saturation of Magnetic Flux Density.

You can adjust the non-linear characteristics of your model with the parameters Chi and Bsat.

Detailed circuit description:

Rs This models the electrical resistance of the wire used in your inductor, and is measured using a very precise ohmmeter. Note that you can obtain a very low value with an inductor with a low number of turns.

EL This Voltage-Controlled Voltage Source is used to apply the induced voltage VL(t) = N * d Phi(t) / dt.

H1 Current-Controlled Voltage Source to apply Magnetomotive Force to the core with the formula: H(t) =IL(t)*N/Lm.

A1 Differentiator. The differentiation approximates the time derivative of an input signal by calculating the incremental slope of that signal since the previous timepoint. This lets us obtain d H(t)/dt, but we need a short Linearization Step in Transient Sweep in Simulation Settings to obtain a good simulation.

With A2, B1 and A3 we want to obtain: dB(t)/dt = 2*Bsat*chi/pi/(H(t)^2+chi^2)*dH(t)/dt.

A2 Gain_Block. Let us do the multiplications of User-Defined Parameters and circuit signals and here we obtain 2*Bsat*chi/pi.

A3 Divider Block. Let us make the division of User-Defined Parameters and circuit signals. Here we add + chi^2 to H^2 from B1 using the offset option.

B1 Non-Linear Dependent Source. To obtain and apply H^2.

A4: Here obtain dPhi(t)/dt = Am*dB(t)/dt.

A5: Used to obtain B(t) by nitration from dB(t)/dt.


With this model I have obtained this graphs for Inductor Voltage ( VL ) and Inductor Current ( IL ).

XY Plot:

Another useful representation is in mode XY, that you can obtain in BBSpice using the Edit Graphs Setting options as bellow:

Obtaining this Graph, where we have the Inductor Current en X axis and Inductor Voltage in the Y axis:

Another more useful XY plot is the BH graph, that we can obtain when we have v(b) in X axis and v(h) in the Y axis:

In this BH Loop graph, we can see the Non Linear behaviour of this inductor model, and see if the Bsat and Chi parameters are adjusted correctly for our magnetic material.


You can find more references about circuit simulation in the author's webpage:

And references about ElectroMagnetism in: