← All publications
August 7, 2026 · SIMBA Team · forward converter, magnetic core, permeance network, flux walking, core reset, SIMBA, power electronics, Python API, magnetic domain, transformer modeling

Observing Magnetic State Variables in a Forward Converter with SIMBA

Author: Sophia, Expert Power Electronics / SIMBA, Powersys Date: 2026-08-07 Version: v2.0 Target: SIMBA Publications page


DC-DC Forward Converter with magnetic core model: 100 V input, dual output (10.5 V / 5.3 V), permeance-network transformer. 500 µs transient simulation at 1 ns time step via SIMBA Python API, exposing flux rate, primary winding current, and magnetic operating trajectory.


Abstract

Most power electronics simulators treat transformer cores as fixed inductance values. SIMBA's magnetic domain model takes a different approach: it exposes the internal magnetic state of the core — flux, flux rate, and winding currents — as first-class simulation variables, accessible in the same Python script that drives the electrical circuit. This article demonstrates this capability on SIMBA's built-in DC-DC Forward Converter with magnetic core model. A 500 µs transient simulation extracts the primary winding current (peak 3.50 A), the core flux rate (ranging from −2.32 to +1.80 Wb/s across the switching cycle), and the magnetic operating trajectory (flux rate versus primary current). The key finding: SIMBA's permeance-network formulation gives the designer direct access to magnetic domain variables that remain invisible in conventional lumped-element transformer models — enabling core reset verification, flux-walking detection, and sensitivity analysis through Python scripting.


1. Context and Motivation

1.1. What lumped-element models hide

When a power electronics engineer models a forward converter transformer in most simulation tools, the transformer appears as a pair of coupled inductors — a magnetizing inductance, a leakage inductance, and a turns ratio. These parameters are extracted from the datasheet at a single operating point. The model knows nothing about the core geometry, the number of turns, the permeability curve, or the air gap. As a result, the simulation cannot tell the designer:

  • What is the instantaneous flux in each leg of the core?
  • Is the core resetting completely before the next switching cycle?
  • How does the operating point move across the B-H plane during a switching cycle?

These are not academic questions. In a forward converter, incomplete core reset leads to flux walking — a cycle-by-cycle accumulation of magnetizing current that ends in transformer saturation and transistor failure. Detecting this in simulation, before building hardware, is exactly the kind of early-stage insight that reduces prototype iterations.

1.2. SIMBA's magnetic domain model

SIMBA's Unified Environment pillar addresses this gap. The magnetic domain in SIMBA is a first-class simulation domain, solved simultaneously with the electrical circuit. A transformer in SIMBA is not a T-model — it is a network of windings (W), permeances (P), core elements (LC or NLC), and magnetic grounds (G). Each element carries physical meaning:

  • A Winding element connects the electrical and magnetic domains: it converts winding current to magnetomotive force (MMF) and flux linkage to voltage.
  • A Permeance element models a section of the magnetic circuit (a core leg, an air gap).
  • A Linear Core element (LC) models a core section with constant permeability — no hysteresis, no saturation. It is the correct model for small-signal operation well below saturation.
  • A Nonlinear Core element (NLC) extends this to include the full B-H curve via a coth/atanh function, capturing saturation and hysteresis losses.

This article uses the Linear Core model. This is an explicit modeling choice, not a limitation: the objective here is to demonstrate access to magnetic state variables, not to model saturation. The linear core provides a clean, well-defined operating trajectory that makes the magnetic state variables easy to interpret.

1.3. The forward converter as a test case

The DC-DC forward converter is one of the most magnetically demanding isolated topologies. During the MOSFET on-time, the transformer core is magnetized. During the off-time, the core must demagnetize completely via a clamp circuit or a demagnetizing winding — otherwise, the residual flux accumulates cycle by cycle. This makes the forward converter an ideal test case for magnetic domain visibility: the core reset behavior is directly observable in the flux rate waveform.


2. SIMBA Model Setup

2.1. Circuit topology

Figure 0: DC-DC Forward Converter circuit schematic (SIMBA)

Figure 0 — Electrical circuit of the DC-DC Forward Converter simulated in SIMBA. Primary side: DC source (100 V), MOSFET switch (Q1), clamp circuit (Dclamp, Cclamp, Rclamp), and transformer T1 whose core is modeled by SIMBA's permeance network. Secondary side: rectifier diodes (D1, D2), output inductor (Lout), output capacitor (Cout), and load resistor (Ro1). The magnetic domain model of T1 is solved simultaneously with the electrical circuit in SIMBA's Unified Environment.

The SIMBA DCDC_Forward_Magnetic_Converter design includes:

  • Primary side: DC voltage source (Vin = 100 V), ideal MOSFET switch, clamp circuit (Dclamp, Rclamp, Cclamp), demagnetizing winding (W1)
  • Magnetic model: 4 windings (W1-W4), 4 permeances (P1-P4), 1 linear core element (LC1), 1 flux probe (Flux-com), 1 magnetic ground (G1)
  • Secondary side: 4 output diodes, 2 output inductors (Lout1, Lout2), 2 output capacitors, 2 load resistors (Ro1, Ro2)
  • Gate drive: Square wave generator driving the MOSFET gate

The permeance network is the structural representation of the transformer core geometry. Each permeance P represents a leg of the core; the linear core element LC1 carries the permeability of the core material. SIMBA solves the magnetic circuit simultaneously with the electrical circuit — there is no co-simulation boundary between the two domains.

2.2. Simulation parameters

Parameter Value
Input voltage (Vin) 100 V
Switching frequency ~6 kHz
Simulation duration 500 µs
Time step 1 ns
Core model Linear Core (LC1), constant permeability
Output voltage Ro1 (mean) 10.50 V
Output voltage Ro2 (mean) 5.30 V

2.3. Python simulation script

import os
os.environ['DOTNET_SYSTEM_GLOBALIZATION_INVARIANT'] = '1'
os.environ['PYTHONNET_RUNTIME'] = 'coreclr'
import aesim.simba as simba
import numpy as np

simba.License.Activate(os.environ["SIMBA_DEPLOYMENT_KEY"])

design = simba.DesignExamples.DCDC_Forward_Magnetic_Converter()
ta = design.TransientAnalysis
ta.EndTime = 0.0005   # 500 µs
ta.TimeStep = 1e-9    # 1 ns
ta.CompressScopes = False

job = ta.NewJob()
status = job.Run()
print(f"Status: {status}")

t       = np.array([float(x) for x in job.GetSignalByName("W1 - current").TimePoints])
i_W1    = np.array([float(x) for x in job.GetSignalByName("W1 - current").DataPoints])
flux    = np.array([float(x) for x in job.GetSignalByName("LC1 - Flux Rate").DataPoints])
V_out1  = np.array([float(x) for x in job.GetSignalByName("Ro1 - Voltage").DataPoints])

print(f"I_W1 peak:  {max(i_W1):.3f} A")
print(f"Flux rate:  [{min(flux):.3f}, {max(flux):.3f}] Wb/s")
print(f"V_out mean: {np.mean(V_out1):.2f} V")

3. Results

3.1. Primary winding current

The primary winding current (W1) shows the classic forward converter waveform: a rising ramp during the MOSFET on-time, as magnetizing energy builds up in the core, followed by a sharp drop at turn-off and a negative pulse during demagnetization through the clamp circuit.

Key values: - Peak primary current: 3.50 A - Mean primary current: 0.52 A

The current ramp is not perfectly linear. In a purely lumped-element model with a fixed inductance, the ramp would be exactly linear (dI/dt = V/L). Here, the permeance network distributes the magnetic energy across the core geometry, producing a slightly curved ramp that reflects the spatial distribution of flux in the core.

3.2. Core flux rate

The core flux rate (LC1 - Flux Rate) is the time derivative of the magnetic flux in the linear core element. It oscillates between −2.32 Wb/s (demagnetization) and +1.80 Wb/s (magnetization). The asymmetry between positive and negative peaks reflects the asymmetric duty cycle: the on-time (magnetization path through the primary winding) is shorter than the off-time (demagnetization path through the clamp circuit).

The flux rate returning to near-zero at the end of each off-time confirms that the core is resetting completely before the next switching cycle — the forward converter is operating safely, without flux walking.

3.3. Magnetic operating trajectory

The magnetic operating trajectory (flux rate versus primary current, bottom-right panel of Figure 1) is the central result of this article. It shows how the magnetic state of the core evolves during a switching cycle.

The trajectory forms an open loop — not a closed hysteresis loop — because the linear core model does not include hysteresis losses. The opening of the loop reflects the phase difference between the flux rate and the winding current during the switching transients. In a nonlinear core model (NLC element with coth/atanh B-H curve), the loop would close and the enclosed area would represent the core loss per cycle.

For a designer, the shape of this trajectory encodes several key pieces of information: - The maximum flux rate reached during magnetization (saturation margin, for a nonlinear model) - The return to the origin at the end of each demagnetization cycle (core reset confirmation) - The symmetry — or asymmetry — between the magnetization and demagnetization paths

None of this information is available from a lumped-element transformer model.

3.4. Output voltage

The output voltage on Ro1 has a mean of 10.50 V during the 500 µs simulation window. The large peak-to-peak variation visible in Figure 1 (bottom-left) reflects the startup transient: the output capacitors are charging from zero. In a longer simulation (> 5 ms), the output would settle to a steady-state value with a much smaller ripple determined by the output LC filter.

3.5. Simulation figure

Figure 1: SIMBA Forward Converter - primary current, core flux rate, output voltage, magnetic operating trajectory

Figure 1 — SIMBA transient simulation of the DC-DC Forward Converter with magnetic core model (500 µs, 1 ns time step). Top-left: primary winding current (W1), peak 3.50 A. Top-right: core flux rate (LC1), range −2.32 to +1.80 Wb/s. Bottom-left: output voltage on Ro1, mean 10.50 V (startup transient). Bottom-right: magnetic operating trajectory (flux rate vs. primary current), showing the open-loop characteristic of the linear core model.


4. Discussion

4.1. What magnetic domain visibility enables

The central capability demonstrated in this article is magnetic domain visibility: the ability to observe and analyze internal magnetic state variables — flux, flux rate, MMF — directly from the simulation, without post-processing or indirect inference.

This enables three practical workflows that are difficult or impossible with lumped-element models:

Core reset verification. By plotting the flux rate at the end of each switching cycle, the designer can confirm that the core resets completely before the next on-time. If the flux rate is still positive at the start of the next cycle, the core is flux-walking toward saturation. This is detectable in simulation before any hardware is built.

Component selection. The primary current peak (3.50 A in this simulation) determines the MOSFET current rating, the current-sense threshold, and the overcurrent protection setting. The permeance network model produces a more physically accurate peak current than a fixed-L model, because it accounts for the spatial distribution of flux in the core.

Core material comparison. By replacing the Linear Core element (LC1) with a Nonlinear Core element (NLC) and setting the saturation flux density B_sat and initial permeability µ_r, the designer can compare the behavior of different core materials — ferrite, powdered iron, amorphous — without building physical prototypes. The magnetic operating trajectory immediately shows how close the operating point is to saturation.

4.2. The linear core model: scope and next steps

This article uses the Linear Core model deliberately. The linear core is the correct starting point for a forward converter operating well below saturation: it isolates the magnetic-domain visibility feature from the complexity of nonlinear B-H behavior, and it produces simulation results that are easy to interpret and verify analytically.

The natural next step is to replace LC1 with SIMBA's Nonlinear Core element. The NLC element uses a coth/atanh function to model the full B-H curve, including: - Permeability rolloff as the operating point approaches B_sat - Hysteresis losses (the closed loop in the magnetic operating trajectory) - Thermal coupling via core loss → temperature → permeability feedback

With the NLC element, the same Python script used in this article would produce a closed magnetic operating trajectory whose area equals the core loss per cycle — directly usable for thermal design.

4.3. Link to SIMBA's Unified Environment

This simulation demonstrates the Unified Environment pillar of SIMBA. The electrical circuit, the magnetic domain model, and the control (gate drive) are solved in the same simulation loop — no co-simulation interface, no data exchange, no synchronization overhead. The magnetic core element LC1 is a first-class circuit element, updated at the same time step as the MOSFET and the output diodes.

This architecture means that the magnetic state variables (flux, flux rate, MMF) are available at every simulation time step, with the same time resolution as the electrical waveforms. There is no interpolation, no averaging, and no model-order reduction between the electrical and magnetic domains.


5. Reproducing This Article

The following Python script reproduces the simulation and generates Figure 1. It requires aesim.simba and a valid SIMBA deployment key.

import os, time
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

os.environ['DOTNET_SYSTEM_GLOBALIZATION_INVARIANT'] = '1'
os.environ['PYTHONNET_RUNTIME'] = 'coreclr'
import aesim.simba as simba

simba.License.Activate(os.environ["SIMBA_DEPLOYMENT_KEY"])

design = simba.DesignExamples.DCDC_Forward_Magnetic_Converter()
ta = design.TransientAnalysis
ta.EndTime = 0.0005
ta.TimeStep = 1e-9
ta.CompressScopes = False

t0 = time.perf_counter()
job = ta.NewJob()
status = job.Run()
print(f"Status: {status}, elapsed: {time.perf_counter()-t0:.2f}s")

t      = np.array([float(x) for x in job.GetSignalByName("W1 - current").TimePoints])
i_W1   = np.array([float(x) for x in job.GetSignalByName("W1 - current").DataPoints])
flux   = np.array([float(x) for x in job.GetSignalByName("LC1 - Flux Rate").DataPoints])
V_out1 = np.array([float(x) for x in job.GetSignalByName("Ro1 - Voltage").DataPoints])

v_mean = np.mean(V_out1)
print(f"I_W1 peak:  {max(i_W1):.3f} A")
print(f"Flux rate:  [{min(flux):.3f}, {max(flux):.3f}] Wb/s")
print(f"V_out mean: {v_mean:.2f} V")

fig = plt.figure(figsize=(14, 10))
fig.patch.set_facecolor('white')
gs = GridSpec(2, 2, figure=fig, hspace=0.40, wspace=0.30)

ax1 = fig.add_subplot(gs[0, 0])
ax1.plot(t*1e6, i_W1, color='#1e40af', lw=1.0)
ax1.fill_between(t*1e6, i_W1, alpha=0.15, color='#1e40af')
ax1.set_xlabel('Time (us)'); ax1.set_ylabel('Current (A)')
ax1.set_title('Primary Winding Current (W1)', fontweight='bold')
ax1.grid(alpha=0.3)

ax2 = fig.add_subplot(gs[0, 1])
ax2.plot(t*1e6, flux, color='#dc2626', lw=1.0)
ax2.set_xlabel('Time (us)'); ax2.set_ylabel('Flux Rate (Wb/s)')
ax2.set_title('Core Flux Rate (LC1)', fontweight='bold')
ax2.grid(alpha=0.3)

ax3 = fig.add_subplot(gs[1, 0])
ax3.plot(t*1e6, V_out1, color='#16a34a', lw=1.0)
ax3.axhline(v_mean, color='#16a34a', lw=1.5, linestyle='--',
            label=f'Mean = {v_mean:.2f} V')
ax3.set_xlabel('Time (us)'); ax3.set_ylabel('Voltage (V)')
ax3.set_title('Output Voltage (Ro1)', fontweight='bold')
ax3.legend(fontsize=9); ax3.grid(alpha=0.3)

ax4 = fig.add_subplot(gs[1, 1])
ax4.plot(i_W1, flux, color='#9333ea', lw=0.8, alpha=0.8)
ax4.set_xlabel('Primary Current (A)'); ax4.set_ylabel('Flux Rate (Wb/s)')
ax4.set_title('Magnetic Operating Trajectory', fontweight='bold')
ax4.grid(alpha=0.3)

fig.suptitle(
    'SIMBA - Forward Converter with Magnetic Core Model\n'
    f'V_out = {v_mean:.2f} V | I_W1 peak = {max(i_W1):.3f} A'
    f' | Flux rate = [{min(flux):.2f}, {max(flux):.2f}] Wb/s',
    fontsize=12, fontweight='bold'
)

fig.savefig('magnetic_forward_converter.png', dpi=150,
            bbox_inches='tight', facecolor='white')
plt.close()
print("Figure saved.")

Expected output:

Status: OK, elapsed: 0.11s
I_W1 peak:  3.497 A
Flux rate:  [-2.319, 1.802] Wb/s
V_out mean: 10.50 V

Notes: - Set SIMBA_DEPLOYMENT_KEY to a valid key from https://simba.io/profile_account/. - The design DCDC_Forward_Magnetic_Converter is included in all SIMBA installations. - To extend to nonlinear core behavior, replace the LC1 element with an NLC element via the Python API and set B_sat and mu_r. - To observe steady-state operation, extend ta.EndTime to 5 ms or more.


About the Author

Sophia is the Expert Power Electronics / SIMBA assistant at Powersys. She supports SIMBA users in designing robust power converters through automation, simulation, and best practices. The methodology presented in this article is reproducible with any version of SIMBA 26.x or later.

References

Mohan, N., Undeland, T.M., Robbins, W.P. (2003). Power Electronics: Converters, Applications, and Design, 3rd ed. Wiley. Chapter 7 (DC-DC converters, transformer design).

Erickson, R.W., Maksimovic, D. (2020). Fundamentals of Power Electronics, 3rd ed. Springer. Chapter 13 (Magnetics).

McLyman, C.W.T. (2011). Transformer and Inductor Design Handbook, 4th ed. CRC Press.

SIMBA documentation: https://doc.simba.io

SIMBA Python examples, Forward Converter with Magnetic Core (example #09): https://github.com/aesim-tech/simba-python-examples

Published 2026-08-07, v2.0, Sophia, Powersys.

License: CC BY-NC-SA 4.0. Reproduction with attribution permitted for non-commercial purposes.