Motor Xd
I've been using Motor Xd for about three years now, mainly for designing small BLDC motors in the 500W to 2kW range. It's not the most polished piece of software I've worked with, but it does one thing decently — it lets you model motor geometry, run FEM simulations, and get back torque curves without needing a full Ansys license. Most people in this space either buy expensive commercial tools or spend weeks writing their own MATLAB scripts. Motor Xd sits somewhere in between. It's a desktop application for electromagnetic motor design and analysis. The interface is pretty basic — you define your stator and rotor dimensions, set the magnet type, choose your winding configuration, and then run the simulation. It uses a 2D FEM solver under the hood. The output gives you back magnetic flux density maps, torque ripple numbers, back-EMF waveforms, and efficiency maps across a range of speeds and currents. For hobbyist-level and small-scale industrial motor projects, it's generally sufficient. Don't expect it to replace Ansys Maxwell if you're doing production-grade EV traction motor design. But for a 72V e-bike hub motor? It's probably all you need. The download comes from the official site, and right now it's version 3.2.1. Make sure you're grabbing the full installer, not the portable zip — the portable version has some licensing checks that fail on fresh Windows installs and you'll spend an hour going down a rabbit hole before you figure out why the solver won't launch. Install goes fast. First time you open it, you'll need to activate the license. If you got the free community edition, it registers automatically. The paid version asks for a serial key. After that, the first project you create should use the template files they include — they're in the installation directory under /templates/. Don't skip this step. A lot of beginners start from scratch and end up with mesh settings that are either way too coarse (giving garbage results) or way too fine (simulation takes 40 minutes for something that should take two).
Here's how I actually use it, not some idealized version: Start with the stator lamination geometry. Input the outer diameter, inner diameter, stack length, and slot/pole combination. For a typical 9-slot 8-pole arrangement, Motor Xd handles the slot fill calculation automatically, but the wire gauge you pick matters — the software assumes a round wire with enamel insulation, and the packing factor it uses is 0.72 by default. If you're using rectangular magnet wire, bump that to 0.78 or so, otherwise your resistance numbers will be off and your thermal calculations will be optimistic. Next, the rotor. This is where most people mess up. You define the magnet dimensions, the retention sleeve material if you're doing a high-speed design, and the rotor core dimensions. The software will warn you if the rotor structural stress exceeds the material limits — it doesn't stop you from running the simulation, but it flags it in red. I learned the hard way that the stress calculation in the free version only covers centrifugal force and doesn't account for thermal shrink fits. If you're designing a motor that spins above 8,000 RPM, you need to manually verify the interference fit yourself.
Winding data goes in after that. Coil pitch, number of turns per slot, wire gauge. Motor Xd calculates the phase resistance and inductance from these inputs. The inductance values are rough approximations — they don't include saturation effects in the leakage path. For preliminary design work, it's fine. For final validation, you'll want to cross-check with a proper FEM run or measure it on a prototype. Then you hit Solve. The solver runs through the magnetic field calculation, computes torque, back-EMF, and losses. A typical small motor model takes about 3 to 8 minutes depending on mesh density. I usually run the default mesh first to get a quick check, then switch to fine mesh if the results look reasonable. The fine mesh pass on a 2kW motor model can take 20 to 30 minutes on a decent CPU.
Get the Full Details

One thing the documentation doesn't tell you
When you export results, the back-EMF waveform is given as a line plot in the built-in viewer, but if you need the harmonic content for inverter design work, you have to export the raw data and run your own FFT. The software doesn't include a harmonic analysis tool. I write a quick Python script that reads the CSV export and does the FFT with numpy. Takes about ten minutes to set up the first time, then you reuse it for every project. Without it, you're guessing at what your THD looks like, which is fine for a first iteration but painful if you're trying to meet a specific noise target. Once I designed a motor with a fractional-slot concentrated winding — 12 slots, 10 poles. The solver ran, gave me results, and the torque ripple number looked suspiciously low. Turns out Motor Xd's default assumption for fractional-slot windings is that the winding factor is calculated for a full-pitch coil, but my actual coil pitch was 5/6 of a pole pitch. The software didn't flag this because the coil pitch field accepts any value without validation against the slot/pole combination. I caught it only because I manually calculated the winding factor on paper and it didn't match. The fix was to go into the advanced winding settings and override the pitch factor manually. This wasn't obvious from the UI. The help file mentions it in passing under "advanced coil configuration options," but most people don't read that section unless they've already hit a problem. It's a 2D tool. That's the fundamental limitation. If you need axial flux analysis, end-winding effects, or 3D fringing fields at the rotor ends, it won't give you accurate numbers. The end-winding resistance is estimated from a formula, not simulated. For short-stack motors, this estimate can be off by 15 to 20 percent. I always add a margin to the resistance value when the stack length is less than 1.5 times the outer diameter. It's not a perfect fix, but it keeps your thermal predictions from being wildly optimistic.
Also, the material database is limited. You get standard silicon steel grades and a few common magnet materials — N35, N42, N52, SH andUH temperature classes for neodymium. If you're working with samarium-cobalt or exotic steel alloys, you have to enter the B-H curve manually. Entering the curve point by point is tedious and easy to mess up. One wrong point and your saturation prediction is garbage.
Alternatives worth knowing about
If Motor Xd doesn't fit your needs, there's OpenMotorCAD, which is browser-based and free but less mature. JMAG-Express is another option if your organization has access to it — it's significantly more accurate but requires a license. For purely academic work, the FEMM software from MIT is free and capable, but the workflow is entirely manual and you'll spend more time learning the tool than actually designing motors. Motor Xd strikes a reasonable balance for people who want to iterate quickly without becoming finite element specialists. The bottom line is that Motor Xd gets you from zero to a workable motor design faster than writing your own code, and faster than learning a professional FEM package. It won't replace those tools for production work, but as a design exploration tool, it's solid. Just pay attention to the assumptions it's making, verify the results you care about, and don't blindly trust the output numbers on anything that's going into a customer-facing product.
