GreyLabs
Simulate real motors →

Current angle γ vs rotor position: a toy synchronous reluctance motor

Ideal 4-pole (p = 2), 3-phase SynRM with sinusoidal currents and no saturation. Torque is T = (3/2)·p·(ψdiq − ψqid) = (3/4)·p·(Ld−Lq)·I²·sin 2γ. An optional made-up 6th-harmonic term stands in for ripple. No field solving happens here.

Machine (mechanical view)

current out current in stator MMF torque on rotor
The controller keeps the current vector at this angle relative to the rotor's d-axis.

State

Torque vs γ (the curve you choose a point on)

Solid line: ideal torque at this |I|. Dot: where you are now. Dashed line marks the peak (MTPA).

Torque vs rotor position (what you trace)

Each settings change starts a new trace; older ones fade. Dashed line is the true one-revolution average.

Phase currents vs current-vector angle (electrical)

ia ib ic

Rotor (dq) frame

current i flux linkage ψ

Torque is proportional to the cross product ψ × i: the area swept between the two arrows. When Ld = Lq they stay parallel and torque is zero.

This is a simplified toy model — great for intuition. Ready to run a real 3D axial-flux field solver? 🔬 Or simulate real motors here!
  1. Controller-locked, spin: the rotor turns, the currents rotate with it, γ never changes, and torque is a flat line. Each γ gives one number.
  2. Move γ: the flat line moves up and down along the sin 2γ curve. Picking γ is the only real choice; 45° wins in this ideal model.
  3. Switch to frozen DC currents, then drag the rotor: you trace the same sin 2γ curve, because a fixed excitation with a moving rotor is secretly a γ sweep (γ = φ − p·θm).
  4. Frozen, spin: torque swings positive and negative and averages to zero. That is why the controller has to track the rotor.
  5. Add toy ripple, controller-locked: now the flat line wiggles. The average is unchanged; the wiggle is what a position sweep at fixed γ is for.

Read me: how this toy works

This page is a teaching toy for one question that trips up almost everyone who starts simulating synchronous motors: if torque depends on both the rotor position and the phase of the currents, do I need to sweep both to know how much torque my motor makes? The short answer is no. In a running motor the controller ties the currents to the rotor, which leaves one meaningful knob, the current angle γ. Everything else here exists to make that visible.

  1. The short version
  2. The machine being modeled
  3. Mechanical vs electrical angles
  4. From three phases to d and q
  5. Where the torque comes from
  6. The two modes
  7. Reading each panel
  8. About the toy ripple
  9. What a real machine adds
  10. Mapping this onto a field simulation
  11. A note on axial-flux machines
  12. Glossary
  13. References and further reading

The short version

Rotor position is not something you choose. The rotor visits every position as it spins, so anything that depends on position gets averaged. What you do choose, through the motor controller, is where the stator's current vector points relative to the rotor. That angle is γ. Pick a current magnitude, pick γ, and in an ideal machine the torque is a single constant number no matter where the rotor is. So the useful curve is torque vs γ, and its peak is the most torque you can get per amp.

Sweeping rotor position still has a job: at a fixed γ, it shows how much the torque wiggles around its average. That wiggle is torque ripple. If you only care about average torque, you can skip the position sweep; you cannot skip the γ sweep.

The machine being modeled

The drawing shows a 4-pole (p = 2 pole pairs), 12-slot, 3-phase synchronous reluctance motor (SynRM). The stator has one slot per pole per phase, in the classic pattern A, −C, B, −A, C, −B, repeated twice around. Slot colours show the current in each coil side: warm for current flowing out of the page, cool for current flowing in, stronger colour for more current.

The rotor has no magnets and no windings. Its curved slots are flux barriers: air (or other non-magnetic material) that makes it easy for magnetic flux to travel along one direction, the d-axis, and hard along the direction 90 electrical degrees away, the q-axis. The rotor therefore has a high inductance Ld along d and a low inductance Lq along q. The black tick labelled d marks one d-axis; the fainter ticks mark the other three.

A reluctance motor makes torque the way a piece of iron is pulled into a magnetic field: the rotor tries to turn its easy axis toward the stator's field. If the stator field keeps rotating just ahead of the d-axis, the rotor keeps getting pulled around.

Mechanical vs electrical angles

With p pole pairs, the magnetic pattern repeats p times per revolution. One full electrical cycle happens every 360°/p of mechanical rotation:

θe = p · θm

Here p = 2, so turning the rotor 180° mechanically is 360° electrically. γ, φ, the phase currents and the dq frame are all in electrical degrees. The rotor position slider is in mechanical degrees. Keeping these straight removes most of the confusion in motor math.

From three phases to d and q

Three balanced, sinusoidal phase currents 120° apart add up to a single current vector of constant length that rotates in the stator. In this toy the phase currents are:

ia = I cos(θe + γ),   ib = I cos(θe + γ − 120°),   ic = I cos(θe + γ + 120°)

The Clarke transformation turns the three phase currents into two stationary components (α, β). The Park (dq0) transformation then rotates those into a frame that turns with the rotor, with d along the rotor's easy axis and q along its hard axis. In the amplitude-invariant form used here:

iα = (2/3)(ia − ½ ib − ½ ic),   iβ = (1/√3)(ib − ic) id = iα cos θe + iβ sin θe,   iq = −iα sin θe + iβ cos θe

Plugging the phase currents in gives the payoff of the whole transformation:

id = I cos γ,   iq = I sin γ

The rotor position has dropped out. Seen from the rotor, the three AC phase currents are just two constant (DC) numbers set by I and γ. This is why motor controllers work in the dq frame, and it's the heart of field-oriented control (FOC, also called vector control).

Where the torque comes from

Each axis has its own inductance, so the flux linkages are:

ψd = Ld id,   ψq = Lq iq

Electromagnetic torque is the cross product of flux linkage and current, scaled by the number of pole pairs:

T = (3/2) · p · (ψd iq − ψq id) = (3/2) · p · (Ld − Lq) · id iq T = (3/4) · p · (Ld − Lq) · I² · sin 2γ

A few things fall straight out of this:

The factor 3/2 comes from the amplitude-invariant scaling used above. With the power-invariant version of the transformation it disappears; both conventions are common, so check which one a reference uses before comparing numbers.

The two modes

Controller-locked (γ held)

This is what a real drive does. A position sensor (or an estimator) reads θm, and the controller sets the phase currents so the current vector always sits at angle γ ahead of the d-axis. As the rotor turns, the currents rotate with it. Drag the rotor or press Spin rotor: the MMF arrows follow the rotor, id and iq stay fixed, and the torque trace is a flat line.

In a full drive, an outer speed loop decides how much torque it needs and sets I accordingly; the choice of γ for that I comes from a rule like MTPA. The γ slider stands in for that rule.

Frozen DC currents

Here the phase currents are frozen at a fixed stator-frame angle φ, like holding a stepper motor in place. Now moving the rotor changes γ:

γ = φ − p · θm

Drag the rotor slowly and watch the dot in the torque-vs-γ panel: it slides along the same sin 2γ curve. That is why "hold the excitation fixed, sweep the rotor, find the peak torque" gives the right answer for peak torque. It is a γ sweep in disguise. The peak is the pull-out torque: push past it and the rotor slips a pole.

Press Spin rotor in this mode and the torque swings positive and negative, completing 2p = 4 cycles per revolution and averaging to exactly zero. Fixed currents cannot drive a spinning rotor. The controller has to track the rotor, which is the whole point of controller-locked mode.

Switching modes keeps the physical state continuous: the currents and rotor stay where they were, and only the meaning of the top slider changes.

Reading each panel

Machine
Stator slots coloured by current, rotor with flux barriers, orange arrows for the stator MMF (the direction the stator's field points, two arrows because there are two north poles), and a curved black arrow for the torque on the rotor. A counter-clockwise arrow means the rotor is pushed toward increasing θm, so spinning forward with positive torque is motoring.
Torque vs γ
The ideal (3/4)p(Ld−Lq)I² sin 2γ curve for the current settings. The orange dot is the present operating point; the dashed line marks the MTPA peak. This is the one curve a design comparison really needs at a given current.
Torque vs rotor position
Points traced as you move or spin the rotor. Each time a setting other than position changes, a new trace starts and older ones fade, so you can stack several γ values and see them as separate horizontal bands. The dashed line is the true one-revolution average for the current settings, not the average of the points you happened to trace.
Phase currents
ia, ib, ic as functions of the current-vector angle (θe + γ in locked mode, φ in frozen mode). The vertical orange line marks where the drive is now, and the dots are the instantaneous phase currents. In locked mode the line sweeps as the rotor turns; in frozen mode it stays put.
Rotor (dq) frame
The current vector (orange) at angle γ from the d-axis, and the flux-linkage vector (purple), which bends toward d because Ld > Lq. The shaded parallelogram's area is ψ × i, proportional to torque. Try setting Lq equal to Ld and watch it collapse.
State
The numbers behind the pictures: electrical angle, γ, id, iq, ψd, ψq, instantaneous torque, and the one-revolution average (highlighted), which is what "the motor's torque" usually means.

About the toy ripple

The ripple slider adds a made-up term to show what ripple looks like, not to predict it:

ΔT = r · Tpk · cos(6 θe)

A 6th electrical harmonic is a natural choice for a balanced 3-phase machine, and for this 12-slot, 4-pole layout the slot pattern also repeats every 60 electrical degrees. Real torque ripple comes from the discrete slots, the flux barrier layout, saturation, and non-sinusoidal currents from the inverter, and its size and harmonic content depend strongly on the geometry. It is commonly quoted as (Tmax − Tmin) / Tavg at a given operating point. Notice that adding ripple leaves the average unchanged: that's why average torque and ripple can be studied separately.

What a real machine adds

Mapping this onto a field simulation

If you are running a magnetostatic finite element (or similar) solver, the toy suggests a workflow that grows with your needs:

  1. Average torque at one current. Fix |I|. Sweep γ over roughly 0° to 90° electrical, doing one static solve per γ at any rotor position, with phase currents set from I, γ, and that position. The peak of T(γ) is your MTPA torque. Torque vs γ is smooth with one peak, so a handful of points and a curve fit, or a golden-section search, is enough.
  2. Ripple. At the best γ, keep the currents locked to the rotor (controller-locked mode) and step the rotor through one ripple period. A good first guess for that period is 360°/LCM(slots, poles) mechanical, which is 30° for this 12-slot, 4-pole layout; check that the result actually repeats. The average of this sweep refines step 1, and max minus min is the ripple.
  3. Everything else: flux maps. Compute ψd(id, iq) and ψq(id, iq) on a grid of currents (each averaged over a ripple period if you like). Torque, MTPA curves, inductance saturation curves, voltage limits and efficiency maps then come from the equations above, without new solves. This is the approach used by open-source tools like SyR-e.

For extracting torque from a field solution, the usual method is the Maxwell stress tensor integrated over a surface in the middle of the air gap. It is sensitive to mesh quality, so a good check is to compare it with (3/2)p(ψdiq − ψqid) computed from the solver's flux linkages, or with a virtual-work (co-energy) estimate from two nearby rotor positions. Agreement within a few percent means the gap mesh is probably fine.

A note on axial-flux machines

In an axial-flux motor the air gap is a flat annulus rather than a cylinder, and flux crosses it parallel to the shaft. None of the dq math changes: d and q axes, γ, the torque equation and the modes all apply as-is. The practical differences are in the field solution. The stress-tensor surface becomes a plane at mid-gap, torque is the integral of r × (tangential force) over that annulus, and because the geometry changes with radius, full 3D solves or several 2D "slices" at different radii are common.

Glossary

d-axis, q-axis
The rotor's easy and hard magnetic directions, 90 electrical degrees apart. The dq frame rotates with the rotor.
γ (current angle)
Angle of the stator current vector measured from the rotor's d-axis, in electrical degrees. Some texts measure it from the q-axis instead, which shifts every formula by 90°.
φ (excitation angle)
Angle of the current vector in the stationary stator frame. Used here only for frozen mode.
Pole pairs, p
Number of north-south pairs on the rotor. Sets the ratio between electrical and mechanical angles.
MMF
Magnetomotive force: the "push" that stator currents give to magnetic flux. Its direction is the orange arrows.
Flux linkage, ψ
Total magnetic flux passing through a winding, weighted by turns. Inductance is flux linkage per amp.
Saliency
The difference between Ld and Lq. No saliency, no reluctance torque.
MTPA
Maximum torque per ampere: choosing γ to get the most torque from a given current.
FOC
Field-oriented control, the standard way to run synchronous motors by regulating id and iq in the rotor frame.
Torque ripple
Periodic variation of torque around its average as the rotor turns.
Cogging torque
Position-dependent torque with no current applied. A permanent-magnet effect; an ideal pure SynRM has none.

References and further reading

This is a toy: linear inductances, ideal sinusoidal currents, and a made-up ripple term. Use it to build intuition, not to size a motor.