Analysis of a Woofer Motor
David Meeker
dmeeker@ieee.org
15May2009
1 Introduction
FEMM has been widely used to design speaker motors. Since most speaker motors naturally have an axisymmetric construction, FEMM allows for the computation of the fields and forces in a speaker motor with high accuracy.
This example demonstrates how the program might be used to analyze a typical speaker motor design. For this example, the speaker motor geometry shown in Figure 1 is assumed. The dimensions and materials are roughly the same as those from a 200W 6" woofer.

Figure 1: Dimensions of woofer motor cross-section.
2 Woofer Model
A step-by-step model of creating the woofer will not be presented here. The detailed mechanics of constructing the model are nearly identical to the axisymmetric coil presented in the step-by-step Magnetics Tutorial. However, there are a couple of differences in modeling a solenoid and modeling a speaker that will be covered here.
2.1 Permanent Magnet Material
The first difference with the tutorial is that the speaker motor contains a permanent magnet. The permanent magnet material can be added to the model in the same way as "Air" and "18 AWG" materials, i.e. by drag-and-drop from the materials library. In this case, the material to be added is "Ceramic 5". This material resides in the "PM Materials | Ceramic Magnets " folder of the materials library. In the model, the material is assigned to a particular block label in the usual way (as described in the tutorial). However, care is needed to define the proper direction of magnetization in the permanent magnet.
The magnetization direction of the permanent magnet can be defined by selecting the block label associated with the permanent magnet material with a left mouse button click when the preprocessor is in Block Label mode (

2.2 Combine the Voice Coil into a Group
To facilitate moving the voice coil to assess performance at different coil positions, it is useful to assign all the parts that make up the coil to be members of the same group. Then, the group can be selected with one click and moved with a single command.
To put all parts of the voice coil into a group, the preprocessor must first be put into Group mode by pushing the


2.3 Boundary Conditions
The boundary conditions on the edges of the analysis region must be defined so that the boundary definition does not have a spurious effect on the analysis results. For the analysis of speaker motors, the "asymptotic boundary condition" described in the Magnetics Tutorial is sufficient. However, an alternative way of defining an "open" boundary condition is via the "Kelvin Transformation." The Kelvin Transformation uses a second region linked to the geometry of interest with periodic boundary conditions. If the shape of the second region is selected correctly it can be shown that this region is a mapping of the unbounded region outside the domain of interest into a bounded region that can be analyzed with the finite element method. The advantage of using this technique is that the outer boundary can be placed essentially arbitrarily close to the voice coil without losing accuracy of the solution. With other approaches, the boundary must be a bit farther away.

Figure 2: Woofer motor geometry as drawn in the FEMM magnetics preprocessor.
The problem geometry with the Kelvin Transformation boundary condition defined is shown in Figure 2. To build this boundary condition, follow the following steps.
- Draw a half-circle boundary for the "interior" region (i.e. the region where the speaker motor is located).
- Draw a half-circle "exterior" region--meant to represent the rest of the universe aside from the region containing the speaker motor. The exterior region need not be the same size as the interior region.
- Add an extra boundary condition. The type of the boundary condition should be selected as "Periodic"
- Apply the Periodic boundary condition to both the outer edge of the interior and exterior regions.
- Open up the block label placed in the exterior region and make sure the "block label located in an exterior region" is checked. (This check box should be unchecked in all other block labels in the geometry.
- Click on the "Properties | Exterior Region" selection from the main menu. The "Exterior Region Properties" dialog will pop up. Enter the location of the center of the exterior region along the z-axis and the radii of the interior and exterior regions in this dialog.
Anyhow, if the Kelvin Transformation seems too difficult, satisfactory accuracy can also be obtained if a large rectangular region is defined with no boundary conditions explicitly defined on the outer edges, as shown in Figure 3.

Figure 3: Woofer motor geometry and solution using a distant, square boundary.
3 Analysis Results
To analyze the problem, push the "turn the crank"



Figure 4: Magnetic field solution as displayed in the FEMM magnetics postprocessor.
However, a picture of the field solution isn't really the objective of the analysis. One typically desires specific performance metrics of the motor.
3.1 Computation of BL
The parameter BL is the gain between an applied current in the coil and a resulting force on the coil. The name "BL" refers directly to the formula for Lorentz force on a wire:
F = iL X B
where F is the force, i is the current in the wire, L is the length of the wire, and B is the magnetic field to which the wire is exposed. The "BL" parameter is notionally the average radial field to which the voice coil is exposed multiplied by the length of the wire in the voice coil.
To compute BL, set the coil current to be equal to 1A. Then, run the analysis, view the solution, and put the post processor into block integral mode by pushing the


r-component: 0 N
z-component: 6.75502 N
For axisymmetric problems, the radial force is always zero (because the solution is, well, axisymmetric). Since a 1A current was applied, the z-component of the force can be directly interpreted as BL, i.e. BL = 6.75502 N/A for this geometry with the coil at its centered position.
3.2 Computation of DC Inductance
For the coil in the Magnetics Tutorial, one can infer the inductance simply by press the Circuit Properties button in the postprocessor

The incremental self-inductance of the coil can be determined by performing two simulations: a first simulation with 1A of current in the coil, and a second simulation with no current in the coil. In each case, the flux linkage of the coil can be read off of the "circuit property" results. The incremental inductance is simply the difference of the flux linkages in these two cases. For the example geometry, the coil's flux linkage at the centered position with a 1A coil current is -0.0461614 Webers and the flux linkage with a current of 0A is -0.0474315 Webers. The implied self-inductance is:
L = (-0.0461614 Webers - (-0.0474315 Webers))/(1A) = 1.2701 mH
3.3 Computation of DC Resistance
Resistance is reported directly as a "circuit properties" result for the simulation with a 1A coil current. The coil's resistance is the "Voltage/Current" result, reported as 5.40812Ω for the present model.
3.4 Plot of Flux through the Voice Coil
It is also usually of interest to have a quantitative plot of the flux density that links the voice coil. Such a plot can be made in Contour mode. Switch to Contour mode by pressing the



Figure 5: Plot of radial flux density through the voice coil.
The resulting plot is shown as Figure 5. Note the numbers displayed on the left side of the status bar. These numbers indicate the location of the mouse pointer in plot coordinates. Using this tool, it is possible to get approximate field values directly from the plot window, if desired.
4 Automation of Analysis
Section 3 shows how to compute the sort of analytical result that is usually of interest to a speaker motor designer. However, the designer typically desires these quantities to be evaluated at a range of points across the stroke of the voice coil. It would be an onerous chore to repeat the same calculation at many coil positions over several design iterations. However, it is not necessary to manually evaluate the results at each coil position. FEMM supports several different types of scripting that can be used to automate just this sort of repetitive analysis. The available options for scripting are:
- Lua 4.0. The Lua scripting language is built into FEMM and is the engine for all scripting functions. It is possible to write scripts in the Lua language and run them via the "File | Open Lua Script" entry on the FEMM main menu or by pressing the
toolbar button. Results can be displayed on the Lua console, which can be made visible by pressing the
button.
- Mathematica. The MathFEMM package, included in the standard FEMM distribution, allows the control of an instance of FEMM from within a Mathematica session. All scripting functionality that can be implemented directly in Lua is available as "native" Mathematica commands.
- Matlab/Octave. The OctaveFEMM toolbox allows either Matlab or Octave (an open-source Matlab-compatible analysis program) to control an instance of FEMM. Just as with the Mathematica interface, all of the scripting functionality of Lua is available as "native" Matlab/Octave commands.
A script was written to determine the actuator's "BL" and the coils's self-inductance and resistance using each of the three scripting approaches. Because there are so many possible variations in speaker motor geometry, the scripts the speaker motor geometry is not created within the scripts. Rather, the scripts reads an existing geometry info FEMM and analyze it at a number of different coil locations. It is assumed that the speaker motor has been drawn with all elements in the coil belonging to group number 1, so that the voice coil can be easily selected and moved by the notebook. It is also assumed that the .fem file describing the motor is located in the same directory as the notebook.
Mathematica, Matlab, and Octave all have excellent plotting facilities. In these versions of the script, the BL, inductance, and flux density curves are plotted. Examples of the curves plotted by the Mathematica notebook version of the script are shown below as Figures 6-8:

Figure 6: BL versus position

Figure 7: Inductance versus position.

Figure 8: Flux density versus position
5 Files
A number of FEMM models and geometries are associated with this example:
Woofer.fem | Speaker motor model file |
Woofer-simple-boundary.fem | Speaker motor model file with simplified boundary condition |
GetBLCurve.nb | Speaker analysis notebook for Mathematica |
GetBLCurve.pdf | PDF printout of speaker analysis notebook for Mathematica |
getblcurve.m | Speaker analysis script for Matlab/Octave |
getcurve.lua | Speaker analysis script for Lua |
6 Conclusions
An example speaker motor has been used to demonstration the calculation of BL, DC inductance, DC resistance, and flux density in a typical speaker motor. Example scripts for automating the analysis of a speaker motor using the three different scripting methods supported by FEMM have also been presented. In aggregate, these example demonstrate the capabilities of FEMM to compute the DC parameters that are often of interest to speaker motor designers.