On the surface, the subwooferjs library is great for modeling a single subwoofer. A driver, an enclosure, and we can determine the response curve. We can determine if a driver is well-suited towards a sealed system or a ported system and we can determine if the driver is well-suited to be downfired. It's missing a few features (bandpass, voice coil wiring options, etc.) but those features will come in later editions.
What if you wanted to compare two subwoofer systems? Let's say you have a driver gathering dust in the garage and you want to use it, but you're unsure of how best to use it?
Well, with just a few more lines of code, one can model multiple subwoofer systems and compare them!
I've put up an example at Runkit. This example models a Rockford Punch P2 2-ohm DVC car audio driver and couples it with both a 28L sealed enclosure and a 56L ported enclosure tuned to 35hz. The RunKit example then gathers response curve data for each enclosure from 10-160hz at 1/3oct.
If you wanted more detail, adjust the "bandwidth" variable to any larger number. Most of the popular speaker design software packages will model at 1/48oct, for example.