Skip to content
RFrftools.io
Power ElectronicsMarch 1, 20268 min read

Magnetics Optimizer: Pareto-Optimal Transformers

A 48 V to 12 V, 36 W flyback through the Magnetics Optimizer: the loss-versus-size Pareto front, core loss from datasheets, and what interleaving is worth.

Contents

Why Magnetics Design Is Still Hard

Power electronics simulation has become very good. You can run a switching converter in SPICE, Monte Carlo the control loop and estimate radiated emissions before the board exists. Magnetics are still stubbornly manual: estimate the volt-seconds, pick a core from a catalogue by rule of thumb, calculate turns, check the winding fits, check the flux stays below saturation, and hope the temperature rise is acceptable.

"Pick a core" is not a deterministic step. Ferrite and powder vendors offer dozens of materials and hundreds of shapes — E, ETD, PQ, RM, toroids — each with its own loss curve, saturation flux density and thermal behaviour. And there is no single best design: minimum loss wants a large core and thick wire, minimum size pushes flux density and window fill. Which trade-off is right depends on your thermal budget and board area.

The Magnetics Optimizer treats this as a two-objective search over 40 cores in 104 core/material combinations and returns the Pareto front: every design for which no reduction in loss is possible without a larger core.

The Design Problem: 48 V Flyback, 36 W, 100 kHz

ParameterValue
TopologyFlyback transformer
V_in (nominal)48 V
V_out / I_out12 V / 3 A (36 W)
f_sw100 kHz
Duty cycle45 %
Ambient / maximum temperature40 °C / 100 °C
Objective weight0.3 (balanced, leaning to low loss)
The volt-seconds applied to the primary each cycle are
λ=VinDfsw=48×0.45100 kHz=216 μVs\lambda = \frac{V_{in} D}{f_{sw}} = \frac{48 \times 0.45}{100\,\text{kHz}} = 216\ \mu\text{Vs}

A flyback also stores its output energy in the core, so the magnetizing inductance is not free. At the boundary of continuous conduction, with an estimated 90 % efficiency (PinP_{in} = 40 W):

Ipk=2PinVinD=3.70 A,Lm=VinDfswIpk=58.3 μHI_{pk} = \frac{2 P_{in}}{V_{in} D} = 3.70\ \text{A}, \qquad L_m = \frac{V_{in} D}{f_{sw} I_{pk}} = 58.3\ \mu\text{H}

Every design the optimizer returns realizes that 58.3 µH: for each turns count it solves for the air gap that gives it.

How the Search Works

Each candidate is a core, a primary turns count (the secondary follows from the turns ratio), primary and secondary wire gauges, an air gap and a winding arrangement. Each is evaluated at 10 operating points — 20, 40, 60, 80 and 100 % load, at nominal input and +10 % — and scored by its worst-case total loss and its core volume.

Volume depends only on the core, so the front is, in effect, each core's lowest achievable loss, filtered for dominance. The optimizer builds it in two stages:

  1. Every core is searched. Each gets 600 random designs, and its best feasible one is refined by 800 steps of local search. Without this stage the search would converge on the first feasible cluster it found and never try the smaller cores.
  2. NSGA-II (200 designs × 150 generations on the free tier, 500 × 400 on Pro) then starts from those per-core bests.

Every feasible design evaluated goes into an archive, and the front returned is the archive's non-dominated set. The objective weight then picks one design from that front — it does not steer the search, so changing it never changes the front.

Physics Models

Core loss at the AC flux amplitude. Loss per unit volume follows the Steinmetz form
Pv=k fα BacβP_v = k \, f^{\alpha} \, B_{ac}^{\beta}

with kk, α\alpha and β\beta fitted to the manufacturer's published loss points, and BacB_{ac} the AC amplitude of the flux, not its peak. A flyback's flux swings from zero to BpkB_{pk}, so Bac=Bpk/2B_{ac} = B_{pk}/2. Evaluating Steinmetz at BpkB_{pk} would overstate the loss by 2β2^\beta, about 3.8× for N87. The Micrometals iron powder uses Micrometals' own loss formula instead.

Peak flux in an energy-storing design follows from the stored current:
Bpk=LmIpkN1AeB_{pk} = \frac{L_m I_{pk}}{N_1 A_e}
AC winding resistance uses Dowell's model: skin depth at 100 kHz is 209 µm, and the ratio FR=Rac/RdcF_R = R_{ac}/R_{dc} grows quickly with the number of layers through the proximity term. Thermal resistance depends on the core's size, taken from the TDK data book's measured values (or its fit, Rth=67.6⋅Ve−0.56R_{th} = 67.6 \cdot V_e^{-0.56}), not on the material. The temperature rise is the total loss times that thermal resistance:
ΔT=Ptotal Rth\Delta T = P_{total} \, R_{th}
Constraints, all enforced at the worst operating point:
  • Bpk<0.8 BsatB_{pk} < 0.8 \, B_{sat} — 20 % saturation margin;
  • window fill <0.40< 0.40;
  • a hot-spot temperature within the limit, Tamb+ΔT≤TmaxT_{amb} + \Delta T \le T_{max};
  • each material is used only within 1.5× the frequency span of its loss data, so no fit is extrapolated far outside what was measured.

Results for the 48 V Flyback

The front has four designs:

Core / materialVolumeWorst-case lossEfficiencyB_acR_th
PQ26/20, N975.44 cm³0.509 W98.61 %63 mT32 K/W
RM10, N873.36 cm³0.519 W98.58 %78 mT40 K/W
PQ20/16, N972.37 cm³0.550 W98.50 %120 mT51 K/W
RM8, N871.86 cm³0.574 W98.43 %119 mT57 K/W
The front is flat: shrinking the core from 5.4 to 1.9 cm³ — almost 3× — costs only 65 mW. That is typical when winding loss dominates, as it does here, and it's something a hand design rarely reveals.

At weight 0.3 the optimizer recommends RM10 with N87:

ParameterValue
Turns14 primary, 4 secondary
WireAWG 21 primary, AWG 14 secondary
WindingP-S-P interleaved
Air gap0.40 mm
Magnetizing inductance58.3 µH
B_pk / B_ac156 mT / 78 mT (B_sat 0.39 T, 50 % margin)
Window fill0.37
Core / winding loss0.196 W / 0.323 W
Temperature rise20.7 °C (60.7 °C at 40 °C ambient)
The loss comes from the 100 % load point at nominal input (0.519 W); the +10 % input case is slightly lower (0.491 W), because the RMS primary current falls.

Every figure on the result carries its source: the N87 data sheet (TDK, June 2025) for the material, the TDK RM10 core data for geometry, and the TDK data book for thermal resistance.

Comparing Core Materials

MaterialLoss dataUsable rangeB_sat (100 °C)Status
N87TDK data sheet, fitted to 4 points17–750 kHz0.39 Tverified
N97TDK data sheet, fitted to 4 points17–750 kHz0.41 Tverified
N49TDK data sheet, fitted to 3 points200 kHz–1.5 MHz0.40 Tverified
3C90Ferroxcube, 1 typical + 2 maximum points17–150 kHz0.38 Tverified (conservative)
3C95Ferroxcube, one point67–150 kHz0.41 Tunverified
3F36Ferroxcube, two points at one frequency333–750 kHz0.42 Tunverified
Mix26Micrometals' own formula—1.4 Tverified
R, Pno identified source—1.5 Tunverified
A design on an unverified material is still returned — sometimes it's the only small option — but it carries an "unverified" badge and a note on what the data does and doesn't cover, so its loss and temperature rise are read as estimates.

Frequency moves the front across materials. At 200 kHz the same flyback's front is all N49 — RM12 through RM6 — and the recommended RM10/N49 loses only 0.274 W: with the same turns, the flux swing halves, and N49 is built for that range. At 400 kHz the front is N49 again. The optimizer finds the crossover by evaluating everything; there is no hard-coded frequency threshold.

Interleaving and AC Winding Loss

At 100 kHz the winding, not the core, is the larger loss here: 0.32 W of copper against 0.20 W of ferrite. The winding arrangement matters accordingly. Holding the recommended design fixed and changing only the arrangement:

WindingTotal loss
None (P then S)0.863 W
P-S-P0.519 W
S-P-S0.863 W
Full0.519 W
Splitting the primary around the secondary (P-S-P) halves the primary's effective layer count, and the proximity term in Dowell's model falls with it: 0.34 W saved, 40 % of the loss, for no extra parts. Splitting only the secondary (S-P-S) does nothing for this design, because the primary's AC resistance is what dominates. The optimizer evaluates all four arrangements for every candidate.

Saturation Margin and Fill Factor

The two classic hand-design failures are core saturation and an overfilled window. Saturation is checked at the worst operating point with a 20 % derate: the recommended design runs at 156 mT against 390 mT, 50 % below saturation. Window fill is capped at 0.40, which is already optimistic for hand-wound parts with bobbin, insulation and tape; the recommended design fills 0.37. A design that violates either limit is discarded, whatever its loss.

Why This Matters

A hand design is usually either oversized for its efficiency target or thermally marginal, because the interaction of core geometry, material, AC winding resistance, air gap and thermal resistance is too high-dimensional to navigate by intuition. The optimizer searches it exhaustively and shows you the whole trade-off. Here it says something a catalogue browse wouldn't: this flyback can be almost 3× smaller for 65 mW more loss, provided the primary is interleaved.

Updated 2026-09-19. Core loss now uses manufacturer-sourced material data at the AC flux amplitude, every design realizes the required magnetizing inductance, and the front is built from every core rather than a converged population. The designs and numbers above replace an earlier example that predates those fixes. Run the Magnetics Optimizer

Frequently Asked Questions

The set of designs for which no reduction in loss is possible without a larger core. For the 48 V to 12 V, 36 W flyback it runs from PQ26/20 (5.44 cm³, 0.509 W) to RM8 (1.86 cm³, 0.574 W) — almost 3× smaller for 65 mW more loss.
Steinmetz loss data is measured with a symmetric AC flux of a given amplitude. A flyback's flux swings from zero to its peak, so the AC amplitude is half the peak. Using the peak overstates the loss by 2^β — about 3.8× for N87.
Every core is sampled and its best design refined by local search, then NSGA-II runs from those seeds. Every feasible design evaluated is archived, and the front returned is the archive's non-dominated set, so it does not depend on where the population converged. The objective weight only picks a design from that front.
In the worked example at 100 kHz, P-S-P interleaving cut the total loss from 0.863 W to 0.519 W — 40 % — by halving the primary's effective layer count and with it the proximity loss. Splitting only the secondary did nothing, because the primary's AC resistance dominated.

Related Articles