Numerical Methods for
Inductance Calculation

Part 1 – Elliptic Integrals
B) Maxwell and Coaxial Circular Conductors

Maxwell [11a] derived the following formula for the mutual inductance of two coaxial circular filaments:



r1 and r2 are the radii of the two respective circular filaments, and

x is the distance between the centres of the circular filaments.

And by filament we mean a conductor of infinitesimally small diameter.

This formula works well when the circles are not close together. When they are close together, Maxwell gave a second formula:


where the new modulus k1 is given by:

where x1 and x2 are the closest and furthest distances between the two circles:

Since formula (11) uses the difference KE again, we see that the calculation can be optimized by calculating this difference directly as we did with the Nagaoka function. King [6] (page 63) makes a few further simplifications by setting the AGM starting values ax1 and bx2. Then:


This formula is implemented in the following Open Office BASIC macro function:

Function Mut(ByVal r1,r2,x) As Double ' Calculate mutual inductance in microhenries between ' two coaxial circular filaments ' r1,r2 are radii of the respective loops in cm ' x is the axial distance separating them in cm a=sqr((r1+r2)^2+x^2) b=sqr((r1-r2)^2+x^2) c=a-b ci=1 cs=c*c do ao=(a+b)/2 b=sqr(a*b) a=ao co=c c=a-b ci=2*ci cs=cs+ci*c*c loop while c<co Mut=.0005*pi()^2*cs/a end Function

Slight changes have been made to (12) so that the result is given in µH.

Now, it was mentioned above, that the formula on which this is based is for infinitesimal filaments. What happens when we use solid wire of finite thickness? In the case of round wire, it will be shown that the formula can be used as is.

This seems to be as good a place as any to introduce the principle of geometric mean distances. In his book, Maxwell [11] uses geometric mean distances to simplify calculations involving conductors with finite cross sections of various shapes. Simply stated: There is a mean distance between the two conductors which, if all of the current, rather than being evenly distributed throughout the two conductors, is concentrated in two infinitesimal filaments separated by this mean distance, then the inductance calculated using the filament formula will be the actual inductance. This mean distance is not the usual arithmetic mean that we commonly know as an average. The arithmetic mean of N numbers is the sum of those numbers divided by N. However, the geometric mean of N numbers is the Nth root of the product of those numbers. So, the geometric mean g of two numbers a and b is:

g = √(a×b)

In the case of two circular cross sections (or any plane figures), we need to find the geometric mean distance of an infinite number of infinitesimal points. We can use integration to add up an infinite collection of points, but there is no equivalent mathematical procedure for multiplying these points as we would need to do to calculate the geometric mean. However, it is well known that adding the logarithms of numbers is equivalent to multiplying the numbers. Therefore, the geometric mean distance between two shapes can be calculated by integrating the logarithms of the distances. For further information on the calculation of geometric mean distances, refer to [1],[2], [11b], [12].

Conveniently, the geometric mean distance between two circles (either solid or hollow) is simply the distance between their centres. This is true only as long as the two circles do not overlap. Therefore, for two separate circular wires having a round cross section, we can use the Mut() function as is, using the centre to centre distance between the conductors for the parameter x, and measuring the radii of the two circles to the centres of their conductors.

(In the case of square wire or wire of other cross sections the geometric mean distance is not the centre to centre distance. However, many of these cases have been treated in the literature, and the appropriate values can be found.)

Now the question is: What else can we do with this mutual inductance function besides finding the mutual inductance between two loops of wire? Two things:

  1. It can be used as part of another program or function to calculate the mutual inductance between two coils.
  2. It can be used as part of another program or function to calculate the self-inductance of a coil.

To calculate the mutual inductance between two coils, we simply execute the Mut() function for every combination of pairs of turns between the first and second coil and add up the results. So, for example, if we have two coils of 10 and 15 turns respectively, we take each of the 10 turns of coil 1 and calculate the mutual inductance between it and each of the 15 turns of the second coil. So we get 10×15=150 mutual inductances from coil 1 to coil 2. The following illustration shows the parameters that we will be dealing with:


x – Offset of the second coil with respect to the first coil;

x1, x2 – Length of the respective coils;

r1, r2 – Radii of the respective coils;

p1, p2 – Winding pitch of the respective coils.

N1, N2 – Number of windings of the respective coils.

The following BASIC macro function calculates the mutual inductance between two coaxial solenoids having the dimensions and separation distance as shown in the above illustration. Note that the offset can be less than the length of the coils. In that case, one coil would sit over top of the other, and the function will still calculate the correct mutual inductance.

Function Mcoil(ByVal n1,r1,x1,n2,r2,x2,x) As double 'Calculate mutual inductance of two coaxial solenoids ' n1,n2=no. of turns; r1,r2=coil radius; x1,x2=coil length; ' x=offset of second coil along axis ' All dimensions are in centimeters p1=x1/n1 p2=x2/n2 Msum=0.0 for j1=0 to n1-1 for j2=0 to n2-1 z=j2*p2-j1*p1+x Msum=Msum+Mut(r1,r2,z) next next Mcoil=Msum end function

The program is quite straightforward, containing two nested loops: the outer loop for the turns of coil 1 and the inner loop for the turns of coil 2. The pitch for each of the coils is calculated by dividing coil length by number of turns. These pitch values are multiplied by the respective loop counter variables j1 and j2 and combined with the coil offset distance x to find the distance between turns z. These values are then used as input to the Mut() function. The variable Msum stores the total of all the mutual inductances.

Next, we will look at using Mut() to calculate the self inductance of a solenoid inductor. Self inductance of a coil can be calculated by adding up the mutual inductances between every pair of turns in the coil. "Every pair" means each turn paired with every other turn in the coil. So a coil of N turns will have N2 pairs of turns. However, many of the pairs are identical in that they are the same diameter and the same distance apart as other pairs of turns. For example, in a coil of 20 turns, the mutual inductance between turn 3 and turn 6 will be the same as the mutual inductance between turn 7 and turn 10, or any other pair of turns that are 3 turns apart. In general, for a coil of N turns, there will be 2×(Nm) pairs of turns that are spaced m×p apart, where p is the pitch. Therefore, we only need to calculate the mutual inductances N times rather than N2 times, and then multiply each value by the appropriate factor for the number of times the pair occurs. The factor of 2, in the expression for quantity of pairs, is present because we need to count the mutual inductance effect on turn i due to turn j, as well as the mutual inductance effect on turn j due to turn i, effectively doubling the number to be counted.

There is one particular pair of turns which requires special attention. That is the case of a turn paired with itself. The mutual inductance between each turn and itself must be included in the total. To address this, we need to revisit the subject of geometric mean distances (GMD). It was stated earlier that the GMD between circles is equal to the distance between their centres only when the circles do not overlap. In this one particular instance, the circles not only overlap, they are exactly superimposed. Fortunately, the references previously mentioned give the GMD values for the cases of superimposed figures, which is essentially the GMD of a figure from itself. In the case of a circular area (the cross section of a round solid wire) the GMD g is given by:

e¼×r= 0.7788×rw

where rw is the radius of the circle (and hence the radius of the cross section of the conductor).

In the case of a hollow circle (the cross section of a thin tubular conductor), the GMD g is given by:

g e0×rw = 1×rw

The values of these exponents, 0 and −¼ will make several surprising re-appearances from time to time.

Now that we know the GMD between a circle and itself is not zero as we might have expected, we can now use this value to calculate the mutual inductance between a turn and itself, or in other words, the self inductance of a turn. The mutual inductance between all other pairs of turns remains, as before, simply the distance between the centres. Following is an Open Office BASIC program to calculate the self inductance of a solenoidal coil using solid round wire.

function Lcoil(ByVal n,rc,x,dw) As double 'Calculate inductance of solenoid 'n=no. of turns; rc=coil radius; x=coil length; dw=wire diameter 'All dimensions are in centimeters pitch=x/n M=Mut(rc,rc,dw/2*exp(-.25))*n for z=1 to n-1 M=M+Mut(rc,rc,z*pitch)*(n-z)*2 next Lcoil=M end function

Short and sweet.

Because we need to calculate the GMD value for the self inductance contribution, this function requires the wire diameter as one of its inputs, whereas the previous Mcoil() function did not. The first call to the Mut() function calculates the self inductance component of the n turns. It uses the value of e−¼ as the factor for the GMD. For a thin walled tubular conductor, the exponent of e would simply be changed to 0, and the GMD factor would be 1.

The mutual inductance component is then calculated inside the loop, and multiplied by the appropriate factor (nz)×2 for the number of times the pair occurs. It is identical for both tubular and solid round wire.

It should be mentioned that de Queiroz, [9], uses a similar method to calculate the self inductance of a solenoid coil, but his method for determining the distance between turns is contrary to the generally accepted methods put forth by Maxwell, Rosa, et al, and as a result, his results show a slight variation from theirs and the from the method given here.

The Mut() function can also be used to calculate the mutual inductance and self inductance for coils other than solenoids. Any coil composed of coaxial circular windings, such as spirals may be calculated using a suitable main program which calls Mut(), using suitable values for the radius and spacing of the loops.

I ended the discussion in the previous section on current sheets by warning of its limitations, and would be remiss not to do the same here. The most obvious thing is that a practical solenoid coil is not composed of individual rings; it is a helix. Therefore, treating a helical coil in this way, is an approximation. The approximation is a fairly good one though, as long as the pitch of the coil is not excessive relative to the coil diameter. Some of the effects of helicity can be compensated for, and will be discussed later.

A second approximation is in the use of geometric mean distance. The GMD principle is exact when used in two dimensions, and in three dimensions when the conductors are straight and infinitely long. When the conductors are wrapped around a coil form, the curvature that is introduced will cause differences between the fields outside the coil and inside the coil. This effect is insignificant if the curvature is small; i.e., when the wire diameter is very small compared to the radius of the coil, which is usually the case.

Coils on Polygonal Coil Forms

Up until this point, we have discussed only coils wound on round forms. Before wrapping up the discussion of single layer coil inductance formulae, we will look at another common configuration. It often happens that we want to wind a coil on a polygonal form rather than a round one.

To find the inductance in the case of a polygonal coil, we can either calculate it as a summation of individual polygonal windings, or alternatively, assume it is equivalent to some circular coil, and then calculate the inductance for the equivalent circular coil. While there are formulae available for the mutual inductance between polygonal filaments, they are not general enough to handle all of the cases which will be discussed in the upcoming sections. Therefore, the second approach using equivalent circular windings will be pursued here. The question then, is: What circular coil will have the same inductance as the polygonal coil? One possibility is to assume a coil having the same perimeter as the polygon. Another possibility is to assume a coil where the winding encloses the same area as the polygon. Grover [2] discusses this (pages 170–175) and provides tabulated data (Table 42) for selecting the appropriate equivalent circular coil. However, we prefer not to use tabulated data if a suitable formula can be found.

For the purpose of this discussion, we will define:

rV – the distance from the centre of the polygon to a vertex; (this is also the radius of the circumscribed circle, and hence the diameter of the circumscribed circle will be defined as D=2rV),

rP – the radius of a circular coil having the same perimeter as the polygon,

rA – the radius of a circular coil enclosing the same area as the polygon.

The area A of the polygon, with number of sides equal to NS, is given by:

And the perimeter P of the polygon is given by:

In both of the above formulae, angles are in radians.

It follows that rP =P/2π, and rA =√(A/π)

It turns out that a coil enclosing the same area provides good results for most coils except extremely short ones. In fact, for infinitely long coils a circular coil enclosing the same area as the polygon will have exactly the same inductance. That is, for long coils the equivalent circular coil will have a radius rA. For extremely short coils, the equivalent circular coil is a weighted average of rA and rP. For a coil of zero length, then we can find that, empirically, the radius rE of the equivalent circular coil is approximately:

Because this is empirical, it has a finite error. The worst case is for a 3-sided polygon (i.e. a triangular winding). The error is about 3% in this case, but improves significantly as the number of sides increases:

Note, Grover's Table 42 gives the values normalized as rE/rA, and so the empirical formula is adjusted accordingly for comparison. Considering the simplicity of the formula, this amount of error seems to be reasonable, especially since triangular coils are not used as frequently as the other types. However, I later noticed that an even simpler expression for rE gives the same absolute error:

What is interesting, is that the sign of the error is opposite that of the previous formula. So, by taking the mean of these two formulae, the error can be reduced considerably.

Of course these formulae are applicable for coils of zero length. As the length increases, the value of rE must tend towards the value rA

The arrangement of the first formula for the zero-length coil suggests a more general form for coils of any length:

where kW is a weighting factor which varies from one when the coil length is zero, to zero when the coil length is infinite. It can be seen that for a long coil the value of rE correctly approaches rA. With a bit of experimentation, a good value for kW was found to be:

where C is coil length, and D is the diameter of the circumscribed circle, or 2×rV. The value 368 was chosen to best fit the data in Grover's Table 42.

Using this general formula for rE, the worst case error is for zero length coils and is as given in the first error chart above. The error decreases rapidly as the coil length to diameter ratio becomes non-zero. For N= 3 the error for coils of various length/diameter ratios is as follows:

The error continues to decrease as shape factor C/D increases to values larger than 1, and also as NS increases.

Polygonal Coil Example

Grover gives an example in ref [2] on page 60 for an octagonal coil of 50 turns of wire wound with a pitch of 0.4 cm. The diameter of the bare wire is 0.2 cm, and the diameter of the wire including its insulation is 0.25 cm. Calipered over opposite vertices of the octagon, the distance is 11.29 cm.

Allowing for wire thickness, the diameter D of the circumscribed circle is 11.29−0.25 = 11.04 cm. The value rV is half this value 11.04/2 = 5.52 cm.

The length of the coil is equal to the pitch times the number of turns, or 50×0.4 = 20 cm.

The coil shape factor is
D/C = 11.04/20 = 0.552.

The area of the octagon from the formula given above is
A = 0.5×8×5.522×sin(2π/8) = 4×(30.47 ×0.7071) = 86.18 cm2.

The radius of a circle enclosing this area is then
rA = √(86.18/π) = √(27.433) = 5.2377 cm.

The perimeter of the octagon from the above given formula is
P = 2×8×5.52×sin(π/8) = 16×5.52×0.3827 = 33.8 cm.

The radius of a circle having the same perimeter is then
rP = 33.8/(2π) = 5.379 cm.

Weight factor kW is given by
kW = √(1/(1+368x0.552)) = √(1/(1+203.14)) = √(1/204.14) = √0.0049 = 0.06999

Radius of equivalent circular coil rE is given from the above general formula as

rE  = (0.06999×5.3792+(2−0.06999)×5.23772)/(2×5.2377)
     = (0.06999×28.934+(2−0.06999)×27.434)/(10.475)
     = (2.0251+(1.930)×27.434)/(10.475)
     = (2.0251+52.947)/(10.475) = 54.9721 / 10.475
     = 5.248 cm

Grover's result, using Table 42, is 5.240 cm, which differs by only 0.15%. In Grover's example, the resulting current sheet inductance value is
LS = 109.9 µH.

Using the value rE = 5.248 from the general empirical formula, and calculating the current sheet inductance value using the Nagaoka() function from Part 1a, we get
LS = 110.2 µH

This differs from Grover's example's result by 0.3 µH, or 0.27%. Note that the percentage variation in inductance is greater than the percentage variation in effective radius rE (0.15%). This is because the inductance varies with the square of the radius. Hence the error in effective radius will have a larger effect on the resulting inductance value.


We are nearly at a point where these different inductance calculation methods may be compared using numerical examples. However, the current sheet formula requires round wire corrections which will be introduced in Part 2. Without those we would be comparing apples to oranges. Before dealing with those, we move on to the next section, where the methods described on this page will be expanded to calculate inductance of multi-layer coils.

Continue to:

Part 1c – Multi-Layer Coils

Back to:
Numerical Methods 1a
Numerical Methods Introduction
Radio Theory
This page last updated: March 31, 2022
Copyright 2010, 2022 Robert Weaver