Simple Nonlinear Inductor

About the writer: Harvey Morehouse is a contractor/consultant with many years of experience using circuit analysis programs. His primary activities are in Reliability, Safety, Testability and Circuit Analysis. He may be reached at Simple questions for which I know the answer are free. Complex questions, especially where I am ignorant of the answers, are costly!!!

Summary: In previous articles I showed how to create a variable transformer, as well as a variable resistor, and a variable inductor. This article will show how to create a simple, essentially lossless nonlinear inductor.

Nonlinear inductor:

It would seem trivial to create a nonlinear inductor. One could just pass parameter variables to an inductor's inductance. However, just as in the case of the voltage variable capacitor, one must first look to the defining equations for an inductor.

eL(t) = L(IL(t)) * d(iL(t))/dt

In this case the inductance is a function of its current. The most useful (and simplest) inductor we will model is that of a simple, lossless, saturating inductor. While the inductor current (magnitude) is less than or equal to a value of ISAT, the inductance will be LMAG, and for currents of greater magnitude, the inductance will be LSAT.

Assume then we have a 100 mH coil. Assume its relative permeability before saturation is somewhere between perhaps 500 and 10,000. Its saturation inductance could be therefore be as low as a value of 1/500 to 1/10,000 of the unsaturated value. One could determine these values from a B-H curve of the device, recognizing that these are generally given for a one turn winding. Thus the current to reach saturation would be the value of H at saturation divided by the number of turns on the winding, and multiplied the effective magnetic path length. Let us assume this value has been determined in some manner.

With these values, LMAG, LSAT and ISAT we can create a simple inductor or core model useful in modeling simple lossless nonlinear inductors. One could fit a curve to this simple model, but we shall define it using logical constructs. The equation for this inductor would have the result that:


Translating this equation into a form useful in B2SPICE for a 'B' source, one gets the equation:

V = LMAG + u(abs(IL)- ISAT) * (LSAT - LMAG)


The model for this realization is shown (with a test and reference inductor circuit) in Figure 1 following:

Figure 1
Nonlinear Inductor model and test circuit

The netlist for this circuit is:

* B2 Spice
* B2 Spice default format (same as Berkeley Spice 3F format)
***** subcircuit definitions
**-- Continuous Filtering Function Macromodel --**
.SUBCKT cffm 10 30 20
* Node 10= Input, Node 30= Output, Node 20= GND
RIN 10 20 1.000000e+006
BEIN 100 0 V= V(10,20) * 1.000000e+000 - V(101) * 1.000000e+009
REI 100 0 1
G1 0 101 100 0 1
R1 101 0 1T
C1 101 0 1
BESO 102 0 V= V(100) * 1.000000e+009 + V(101) * 0.000000e+000
ROT 102 30 1.000000e-003
RDY 30 0 1T
.ENDS cffm

***** main circuit
B2 6 0 v = i(Vam1)
V3 7 0 DC 10
V1 8 0 DC 10
R1 N3 8 10
R2 N4 0 1Meg
VAm1 N3 9 0
B1 9 0 v = (100e-3 +u( abs(I(Vam1)) - 50e-3) * (-100e-3 + 100e-5))*v(n4)
XX1 6 N4 0 cffm
R4 7 N5 10
L1 N5 0 100e-3

.OPTIONS gmin = 1E-12 reltol = 1E-4 itl1 = 500 itl4 = 500
+ rshunt = 1G
.TRAN 10u .1 0 10u uic

Now comes the tricky parts. One could create a B-H loop model for this device, to verify that the intended B-H loop is indeed realized. This is left as an exercise for the reader, however, it should be noted that the B-H loop is NOT traversed in a linear manner. That is to say, the operating point while traversing the B-H loop, on the curve does not move in a constant rate. Traversing the unsaturated portion of the B-H curve is at a slower rate than the saturated portion of the curve.

Thus one has to look at the simulations carefully, as the graphs one arrives at in various simulations may be difficult to interpret.

The first graph is with a DC stimulus.

Figure 2
Nonlinear inductor with DC stimulation

This is similar to the result we had for the capacitor. In this case the current will not abruptly jump through the inductor, whereas for the capacitor, the voltage will not abruptly change across the inductor. With the dc stimulus, the red curve is the test inductor current. The blue current is the modeled inductor current. They coincide until the point where the model saturates, 50mA, wherein the incremental inductance abruptly changes. The blue trace shows the saturating inductor current charging far more rapidly after this point.

The orange curve shows the test inductor current rising as expected. The modeled inductor current in green coincides with this current until it reaches 50mA, when it increases more rapidly after that point as the nonlinear inductor exhibits the saturation value. Notice that the voltage minutely below and above the saturation point, and the current as well, are for all purposes identical. The energy in the inductor, ½ L * I2, is identical.

Now wait a minute!!!! Did not the inductance change? Incrementally it did, however, the inductance as far as the circuit is concerned is determined by a radial line from the origin to a point on the curve. Incremental inductance is determined by delta B divided by delta H, whereas inductance at a point is determined by B divided by H. Thus the total inductance does not jump as the current changes from a point infinitesimally less than the break point current to one infinitesimally greater.

Now let us get cute and change the excitation(s) to a square wave. We must of course offset the waveform to remove the average DC voltage. We will use a 25V peak signal offset by -25V. The transitions times will be 1uS, the pulse width to 10mS, and the period to 20mS. IS is set at 800 ma to illustrate the saturation effects. The graph of the just the current output waveforms, with a simulation time of 200mS is shown in Figure 3 following:

Figure 3
Nonlinear inductor with square wave stimulation

The reason only inductor currents were plotted is that with voltages present the graphs can be hard to interpret because of the widely variant amplitudes. Here we can see that the current curves coincide until such time as the modeled inductor current reaches 800mA, wherein the nonlinear inductor current (green trace) rapidly rises (the inductor voltage rapidly falls) until such time as the series resistor limits the current.

One can easily get many seemingly discordant graphs with 'hard' saturating device models. Large spikes of current can occur under transient conditions, which can disappear under steady state conditions. The performance is correct, but not something one would normally expect to model. Typically however, one would not wish to use, and hopefully would not use such a device under normal operating conditions.

The main exceptions that come to mind would be as a inductor model as the magnetizing inductance for a square loop device, as a dead time delay element or in a magamp. If one were to use this to model a Royer converter model, or in a Jensen converter model, moreover, the circuit itself would cause the frequency of operation to be such that the resulting spikes of inductor current would short, and would themselves cause the conduction states of the push-pull transistor drivers to toggle.

One could easily define a mathematical curve to define more nearly a 'softer' and more realistic core saturation by fitting a curve to the lossless B-H curve or its approximate 'mean'. This would model saturating inductors more exactly, but for losses. In this case the saturation effects would be far more subtle. This would be suitable to use with ideal transformers, as in the articles I posted in the resources section of the B2SPICE WEB site regarding magnetics.

Regarding losses, one could use the far more complex method of modeling a lossy core, but as a general rule, one should use the simplest device and circuit models that adequately exhibit the actual circuit behavior. Thus the first step might be to use linear magnetics in the model. The second step might be to use a model such as this with a curve fitted equation describing inductance as a function of current. The last step would be to use the more exact, but more difficult to achieve model of the magnetic devices with hysteresis. However even before this, I would attempt to use a parallel resistor with this inductor to roughly model core losses.


A lossless, nonlinear inductor model has been created. This model is suitable for use in strongly nonlinear applications such as those using square loop cores, or by curve fitting, to create a somewhat 'softer' models more nearly approaching the performance low loss devices operated over a large range of flux (current) where a lossless, linear, straight line, unsaturating device model does not fully result in good approximations of the actual circuit behavior.