The machine example library

These are complete, working machine models, not fragments. Each one ships with Nabla under examples/ as a model file, a Python script and a write-up. Open the model and press Solve, or run the script and watch it build the machine from an empty document — geometry, winding, materials, mesh, solve, figures and a PDF report.

Pick one by what you are trying to do. E01 is the fastest way to see a PMSM solve end to end. E02 has the dq performance workflow. E04 and E06 draw their own rotors. E07 and E08 are induction machines, where the rotor current is part of the solve. Every page tells you what to look at, which numbers are solid, which are near the resolution limit, and what to change if you want to explore.

The designs are plausible but invented, so treat them as worked examples rather than as evidence of accuracy. For accuracy, the validation dossier states a reference and a tolerance for every case before it runs, and publishes the failures alongside the passes.

12-slot / 10-pole surface-PM synchronous machine

E01 — 12-slot / 10-pole surface-PM synchronous machine

PMSM · Concentrated, double layer

PMSM · Surface-Mounted PM · 12 slots / 10 poles · 4.956 N·m at 2000 rpm · 91.7 % efficient · 6658 nodes;

Start here. A small surface-magnet servo motor that solves in under a minute and shows the three results a PMSM is judged on: cogging torque, back-EMF and torque under load. Repeats itself at second order for comparison.

View example
36-slot / 6-pole spoke-type PM synchronous machine

E02 — 36-slot / 6-pole spoke-type PM synchronous machine

PMSM · Distributed, double layer, 5/6 pitch

PMSM · Spoke-Type PM · 36 slots / 6 poles · 31.534 N·m at 1500 rpm · 95.5 % efficient · 5182 nodes · 103 s

A 5 kW spoke-rotor machine and the full dq workflow that goes with it - saliency, an MTPA current angle, efficiency and loss maps, fitted iron loss and a mass breakdown.

View example
48-slot / 8-pole segmented-Halbach PM synchronous machine

E03 — 48-slot / 8-pole segmented-Halbach PM synchronous machine

PMSM · Distributed, single layer, 4 parallel branches

PMSM · Halbach Array · 48 slots / 8 poles · 22.635 N·m at 1500 rpm · 97.4 % efficient · 4256 nodes · 87 s

Three construction choices you can see in the field: a segmented Halbach magnet array, stator skew solved as five axial slices, and a phase wound as four parallel branches. Includes a five-phase variant.

View example
24-slot / 8-pole V-shape interior-PM synchronous machine

E04 — 24-slot / 8-pole V-shape interior-PM synchronous machine

PMSM · Distributed, double layer, full pitch (q = 1)

PMSM · Custom Rotor (DXF, V-shape IPM) · 24 slots / 8 poles · 45.903 N·m at 3000 rpm · 94.2 % efficient · 8156 nodes · 85 s

A 15 kW traction-style motor with the magnets buried in a V, where a third of the torque is reluctance torque. Draws its own rotor as a DXF, and shows demagnetisation risk and magnet eddy currents.

View example
18-slot / 16-pole surface-PM outrunner, 45 mm across, 20 000 rpm

E05 — 18-slot / 16-pole surface-PM outrunner, 45 mm across, 20 000 rpm

PMSM - Outrunner · Concentrated, double layer, q = 0.375

PMSM - Outrunner · Surface-Mounted PM · 18 slots / 16 poles · 0.387 N·m at 20000 rpm · 90.4 % efficient · 3748 nodes · 55 s

A 45 mm drone-class outrunner at 20 000 rpm, where iron loss is the larger half of the loss budget rather than a footnote. Inverted geometry, and iron loss fitted to a table that reaches 3 kHz.

View example
24-slot / 8-pole interior-PM outrunner on a drawn rotor, 120 mm across

E06 — 24-slot / 8-pole interior-PM outrunner on a drawn rotor, 120 mm across

PMSM - Outrunner · Distributed, double layer, full pitch (q = 1)

PMSM - Outrunner · Custom Rotor (DXF, interior-PM in the annular band) · 24 slots / 8 poles · 8.038 N·m at 3000 rpm · 94.5 % efficient · 3585 nodes · 41 s

A 2.5 kW direct-drive outer-rotor motor with buried magnets, drawn into the annular rotor band. The two harder routes - outrunner and custom rotor - in one model.

View example
36-slot / 28-bar 4-pole squirrel-cage induction machine

E07 — 36-slot / 28-bar 4-pole squirrel-cage induction machine

IM · Distributed, double layer

IM · Rectangular Tooth · 36 slots / 4 poles · 4.673 N·m at 1418 rpm · 67.1 % efficient · 5717 nodes · 109 s

The first induction machine: a 28-bar squirrel cage whose rotor current is solved rather than imposed, with the T-equivalent circuit extracted and the torque, current, power-factor and efficiency curves swept against slip.

View example
24-slot / 18-bar 4-pole induction machine with skewed rotor bars

E08 — 24-slot / 18-bar 4-pole induction machine with skewed rotor bars

IM · Distributed, double layer

IM · Trapezoidal Tooth · 24 slots / 4 poles · 10.677 N·m at 1425 rpm · 70.2 % efficient · 9698 nodes · 618 s

Skewed rotor bars solved as three coupled axial slices, on a deep bar where the skin effect matters. The slowest model here, and the one that shows what skew costs and what it buys.

View example

Beyond machines

Nabla is not only a machine tool, and none of these is a machine. Each one is a plain geometry model — lines, circles, regions, coils, boundary conditions — built from an empty document by a single Python script, with no machine module involved anywhere. Between them they cover the whole solver: static, transient, time-harmonic and thermal; planar and axisymmetric; permanent magnets, eddy currents, external circuits, motion and the far-field boundary. They are also the shortest way to see the shape of an API script before committing to a rotor.

Permanent-magnet latch: flux density with flux lines at the closed gap

Magnet latch — pull-off force and the far-field boundary

Non-machine · Planar static · No coil, no current

Permanent magnet · U-yoke and keeper · 172 N at the closed gap · balloon BC 0.01 % off a 20× box on 84 % of the nodes · 4605 nodes · 35 s

The simplest device here and the only one whose sole source is a magnet's own remanence. A gap sweep against the classical permeance model - which it misses by 34 %, for two reasons it names - and the far-field balloon boundary condition measured against a 20× Dirichlet box.

View example
Tubular pull-in solenoid: flux density at the fully closed position

Solenoid actuator — force and inductance over the stroke

Non-machine · Axisymmetric static

800-turn coil · 20 mm stroke × 3 currents, 33 solves · 2.0 N at the seat · L from 62.2 to 45.1 mH · ~2650 nodes · 40 s

The axisymmetric primer: model x is the radius, the solver integrates over 2π, and there is no axial length to set. The eggshell force is cross-checked against the virtual-work derivative of the device's own inductance curve - and the example is precise about where that check works and why.

View example
Single-stage coilgun: flux density with flux lines at the step of peak force

Gauss gun — a coilgun from force map to muzzle velocity

Non-machine · Axisymmetric · Static + transient + circuit + BH

85.3 N peak at 100 A · 175 A pulse · quasi-static error 11.2 % · 25.1 m/s muzzle, 3.5 % efficient · 3 min 15 s

The largest of these: one script using the static solver, the transient solver, an external circuit and a nonlinear BH curve on the same device, then integrating the mechanics in Python and measuring the error of having done so. The turn-off timing sweep is the figure that pays for it.

View example
Single-phase shell-type transformer: flux density at the peak-current step

Single-phase transformer — a hand-built coil on a hand-built netlist

Non-machine · Planar transient, circuit-coupled

2 kVA, 212 / 53 V at 50 Hz · saturating M-19 core · turns ratio recovered to 0.01 % · 4312 nodes · 300 steps · 1 min 55 s

The circuit-coupling reference: what you copy to drive your own windings from your own netlist. Two galvanically isolated loops tied only by the core flux - and a measured demonstration that turning saturation off does not make a BH core linear at its operating point.

View example
AC loss in a seven-strand copper cable

Cable AC loss — skin and proximity effect in a stranded cable

Non-machine · Transient and time-harmonic

Eddy currents · 37-strand honeycomb bundle · 100 A at 10 kHz · outer shell 3.6× the mean · 12642 nodes · 81 s

Thirty-seven copper strands driven identically, and at 10 kHz the outermost ring does nearly all the work while the middle of the bundle goes dark. Parametrized strand count, and the same model solved twice - three periods of transient and one frequency-domain solve - to compare the two.

View example
Eddy-current brake: induced current density in the aluminium rail

Eddy-current brake — drag against speed, through a sliding band

Non-machine · Planar transient with linear motion

8 poles · peak drag 864 N at 10 m/s · power balance within 1.75 % · 3393 nodes · 1 min 22 s

The motion demo, and the only one whose eddy currents come from movement rather than an AC source: no impressed current anywhere, just magnets and a sliding rail. Drag peaks and then falls as the currents start shielding the rail - and the three sliding-band rules are written out where they apply.

View example
Induction heating: induced current density in the billet skin at 10 kHz

Induction heating — a frequency sweep that becomes a thermal transient

Non-machine · Axisymmetric time-harmonic + thermal

105 W at 10 kHz · four frequencies in 11 s · time-harmonic vs settled transient 1.25 % · equilibrium 318 °C · 20 s

Why the frequency domain exists: four operating points as four complex solves, where the settled transient of one of them costs six times the whole sweep. Then the measured induced power is handed to the thermal module - explicitly, because Nabla's thermal solve is uncoupled - and heats the billet to equilibrium.

View example
Shielding factor against frequency for a high-permeability can and an aluminium one

Magnetic shield — mu-metal against aluminium, 1 Hz to 100 kHz

Non-machine · Planar time-harmonic sweep

17 solves on one mesh · high-μ factor 250, flat across five decades · aluminium wins above 29.7 kHz · 50056 nodes · 2 min 45 s

Flux shunting and induction shielding are different physics, and putting both on one axis is the whole engineering answer. Five closed-form anchors, one mesh shared node for node between the legs, and a shielding factor that a 1 mm aluminium can takes away from mu-metal above 30 kHz.

View example
Power-module thermal stack: steady-state temperature field

Power-module thermal stack — junction temperature and pulsed loading

Non-machine · Planar thermal, no electromagnetics

2 × 100 W · T j 53.6 °C, R th 168 mK/W · 29 K ripple at 10 % duty · 5341 nodes · 35 s

The only example in either library with no electromagnetics in it at all: nine layers, all three thermal boundary condition types, and a 10 % duty pulse train whose first peak already lands within 4 K of the final steady state. A module sized on average power is sized wrong.

View example

Guided case studies

Step-by-step walkthroughs of the GUI workflow on four smaller problems — built by hand rather than by script, and written for someone opening Nabla for the first time.

PMSM

PMSM

Transient 2D

Calculate the magnetic field distribution and torque in a permanent magnet synchronous motor (PMSM).

View Example
Induction Motor

Induction Motor

Transient 2D

Analyze the electromagnetic performance of a squirrel-cage induction motor under various load conditions.

View Example
Eddy Current in hollow cylinder

Eddy Current in a Cylinder

Transient 2D

Simulate eddy currents induced in a hollow conductive cylinder by a time-varying magnetic field.

View Example
bEMF in Linear Machine

bEMF in Linear Machine

Transient 2D

Calculate the back electromotive force (bEMF) in a linear electromagnetic machine during operation.

View Example