I am still working on Huygens, my loudspeaker design software. Underneath it, the cabinet is solved with boundary elements (BEM), and each way's load (the box, the port, a passive radiator, a cardioid's slots) is a network of lumped elements. The two are coupled both ways: the network decides how the radiators move, and the BEM tells the network how the air pushes back. Each way is solved on its own, the rest of the cabinet held still, and the ways are added through their filters afterwards. Within a way, at each frequency, the BEM solves the cabinet once for all of that way's radiators (the cone, its port, its slots) and returns the pressure each puts on itself and on the others.
This article is about one small detail of that coupling, the power the speaker radiates. It sounds like the easiest quantity of all. It turned out to be wrong in exactly the places where it matters most.

One formula
Each radiator \(j\) (the cone, a port, a slot) moves air with a volume velocity \(U_j\). The BEM gives the radiation impedance matrix \(Z\): the mean pressure on radiator \(i\) is
$$p_i = \sum_j Z_{ij} U_j .$$
The diagonal terms are each radiator's own load. The others are the coupling between radiators, the pressure the port feels because the cone moves, and the other way round. The power the radiators put into the air is the real part of pressure times flow, summed over all of them:
$$W = \mathrm{Re}\left(\sum_i p_i^{*} U_i\right) = \mathrm{Re}\left(U^{H} Z U\right).$$
\(U^{H}\) is the conjugate transpose of the vector of flows. Since \(Z\) is symmetric (reciprocity), this is \(U^{H}\mathrm{Re}(Z)U\): only the resistive part of \(Z\) radiates. The reactive part is the air that moves back and forth with the radiators without ever leaving.
What physics demands
A formula is not enough. Whatever the flows, the result has to obey a few rules, and each one is a test the simulation can fail:
- No negative power. A speaker in free air cannot draw energy from it. The resistive part of \(Z\) must be positive semi-definite, so that \(W \geq 0\) for any set of flows, including flows that cancel.
- The same watts far away. The power the radiators put in must leave through any large sphere around the cabinet: $$W = \frac{1}{\rho c} \oint |p|^2 dS .$$
- Every watt accounted for. What the amplifier delivers must equal the heat in the voice coil, the suspension, the box's absorption and leaks, the port's losses, plus the radiated power. This is Tellegen's theorem applied to the network, and it holds to round-off or it doesn't hold at all.
- The known limit. Far below the cabinet's size, the coupled model must fall back on the lumped one: the port tunes where it should, a passive radiator notches where it should, a cardioid rejects behind as it should.
None of these is new physics. Writing them down as tests is what makes them useful, because a solver that violates one of them tells you where it went wrong.
Where it broke
The obvious way to get \(Z\) is to read the pressure the BEM computes on each radiator. That is what Huygens did, and the tests above found a problem at low frequency.
When a cabinet is small compared with the wavelength, almost all the pressure on a cone is reactive: air pushed back and forth. The resistance, the part that radiates, is a few thousandths of the reactance. The BEM's pressure is accurate to a few thousandths too, on a coarse mesh. So the numerical error, small compared with the pressure, lands on a quantity of the same size. On a single radiator, this means about half a per cent of error on its resistance. Nobody would notice.
The trouble starts when radiators cancel. Below its tuning, a port moves in opposition to its cone. A cardioid's slots work against the front. Two ways crossing over in phase partly cancel each other. In all these cases the radiated power is a small difference between large terms, and the error on each term does not cancel with them. In the tests:
- a vented box radiated 41 % too much at 30 Hz, below its tuning, and a negative power at 20 Hz;
- the cardioid radiated 45 % too much at 40 Hz;
- on a whole speaker, 77 % of the power was missing where the woofer and the tweeter cancel at their crossover, which put the directivity index 6.4 dB too high there.
A negative radiated power is not a rounding issue. It means the model's resistance matrix is not positive semi-definite, so it can describe a speaker that pulls energy out of the room.
The fix
At low frequency, the far field is easy to get right. The flows set its strength, and a few spherical harmonics describe it. So below \(kR = 4\), where \(R\) is the distance from the cabinet's middle to its furthest point, Huygens now computes each radiator's far field \(F_j\) on a sphere and builds the resistance from it:
$$G_{ij} = \frac{1}{\rho c} \sum_n w_n F_i^{*}(d_n) F_j(d_n).$$
\(G\) is a Gram matrix, so it is positive semi-definite by construction. No set of flows can give a negative power any more. On the test cabinets, the power in and the power out now agree within \(10^{-5}\). The sphere's directions \(d_n\) and weights \(w_n\) come from a product rule exact for the far fields up to that frequency.
Above \(kR = 4\) (about 1.4 kHz for a 15 × 25 × 12 cm box, 400 Hz for a floorstander), the resistance is no longer tiny compared with the reactance, and reading it from the pressure on the radiators works again: within 1 % on these coarse meshes, 0.7 % seen. That is also where a far sphere would need many more directions.
Why bother

Sound power is not an abstract quantity. It is what the directivity index divides by, and what the CTA-2034 in-room prediction is built from. A cardioid exists precisely to change the ratio between what goes forward and what goes everywhere. If the total power is wrong where the radiators cancel, the directivity index is wrong exactly where the design is supposed to make a difference, and the curves would push the design in the wrong direction.
The four rules above now run as tests on a vented box, a passive radiator, a cardioid and a whole crossed-over speaker, every time Huygens changes. That is the standard I want for it, curves that obey the physics before they look nice.