Skip to content

Corelosses

Auto-generated from CoreLosses.h with comprehensive documentation

Core losses in magnetic materials arise from two primary mechanisms: hysteresis losses (energy dissipated in reorienting magnetic domains) and eddy current losses (currents induced in the conductive material). Accurate prediction of these losses is critical for thermal management and efficiency optimization in transformers, inductors, and other magnetic components.

MKF implements multiple core loss models, each with different trade-offs between accuracy and complexity. The choice of model depends on the waveform type, available material data, and required precision.

Available Models

Steinmetz

The original Steinmetz equation (1892) empirically relates core losses to frequency and flux density:

$$P_v = k \cdot f^\alpha \cdot \hat{B}^\beta$$

Where: - $P_v$ is volumetric power loss (W/m³) - $f$ is frequency (Hz) - $\hat{B}$ is peak flux density (T) - $k$, $\alpha$, $\beta$ are material-specific Steinmetz coefficients

Limitations: Only valid for sinusoidal excitation. Using this model with non-sinusoidal waveforms (triangular, trapezoidal, PWM) will produce significant errors.

Validation Error: 39.4% mean deviation

Reference: Steinmetz, C.P. 'On the law of hysteresis.' AIEE Trans., 1892

iGSE

The improved Generalized Steinmetz Equation (iGSE) extends Steinmetz to arbitrary waveforms:

$$P_v = \frac{1}{T} \int_0^T k_i \left| \frac{dB}{dt} \right|^\alpha (\Delta B)^{\beta - \alpha} dt$$

Where $k_i = \frac{k}{(2\pi)^{\alpha-1} \int_0^{2\pi} |\cos\theta|^\alpha 2^{\beta-\alpha} d\theta}$

Key insight: Core losses depend on the rate of change of flux density (dB/dt), not just peak values. This allows accurate predictions for: - Triangular waveforms (inductors in CCM) - Trapezoidal waveforms (half-bridge converters) - Arbitrary PWM waveforms

Advantage: Uses the same Steinmetz parameters (k, α, β) as the original equation, requiring no additional material characterization.

Validation Error: 35.8% mean deviation

Reference: Li, Abdallah, Sullivan. 'Accurate Prediction of Ferrite Core Loss with Nonsinusoidal Waveforms.' IEEE COMPEL, 2001

Barg

Barg's model extends loss separation for modern ferrite materials with improved temperature and frequency dependence modeling. It separates static and dynamic hysteresis contributions for better accuracy at high frequencies.

Validation Error: 37.4% mean deviation

Reference: Barg et al. 'A Dynamic Hysteresis Loss Model.' IEEE Trans. Power Electronics, 2021

Roshen

Roshen's physics-based model separates hysteresis and eddy current contributions:

$$P_v = P_{hyst} + P_{eddy} + P_{excess}$$

Each component is derived from material physics: - Hysteresis: From B-H loop integration - Eddy currents: From material resistivity and geometry - Excess losses: Anomalous losses from domain wall motion

Advantages: - Better accuracy at extreme operating conditions - Handles DC bias effects - Temperature dependence modeled physically

Disadvantage: Requires more material parameters than Steinmetz-based methods.

Validation Error: 48.8% mean deviation

Reference: Roshen, W. 'Ferrite Core Loss for Power Magnetic Components Design.' IEEE Trans. Magnetics, 1991

Albach

Albach's model combines loss separation with improved high-frequency accuracy:

$$P_v = C_h f B^\gamma + C_e (fB)^2 / \rho + C_a (fB)^{1.5}$$

Where: - $C_h$, $\gamma$ are hysteresis parameters - $C_e$ is the classical eddy current coefficient - $C_a$ accounts for anomalous (excess) losses - $\rho$ is material resistivity

This provides good accuracy across a wide frequency range.

Validation Error: 35.7% mean deviation

Reference: Albach et al. 'Calculating core losses in transformers.' IEEE Trans. Magnetics, 2011

NSE

The Natural Steinmetz Extension (NSE) uses direct integration without equivalent frequency:

$$P_v = \left(\frac{\Delta B}{2}\right)^{\beta-\alpha} \frac{k}{T} \int_0^T \left|\frac{dB}{dt}\right|^\alpha dt$$

This provides a more physically meaningful interpretation by relating losses directly to the actual flux rate of change over the entire period.

Validation Error: 35.8% mean deviation

Reference: Van den Bossche et al. 'Evaluation of the Steinmetz Parameters.' IEEE Trans. Magnetics, 2008

MSE

The Modified Steinmetz Equation (MSE) uses an equivalent frequency concept:

$$P_v = k \cdot f_{eq}^{\alpha-1} \cdot f_r \cdot \hat{B}^\beta$$

Where $f_{eq} = \frac{2}{\Delta B^2 \pi^2} \int_0^T \left(\frac{dB}{dt}\right)^2 dt$

The equivalent frequency captures the effect of non-sinusoidal waveforms by computing what sinusoidal frequency would produce the same losses.

Validation Error: 35.7% mean deviation

Reference: Venkatachalam et al. 'Accurate Prediction of Ferrite Core Loss with Nonsinusoidal Waveforms.' IEEE COMPEL, 2002

Model Comparison

Model Error Reference
Steinmetz 39.4% Link
iGSE 35.8% Link
Barg 37.4% Link
Roshen 48.8% Link
Albach 35.7% Link
NSE 35.8% Link
MSE 35.7% Link

Model Selection Guide

Waveform Type Recommended Model Notes
Sinusoidal Steinmetz Original equation, most manufacturer data available
Triangular iGSE Best for inductor applications (CCM)
Trapezoidal iGSE or MSE Good for half-bridge topologies
Arbitrary PWM iGSE Most general non-sinusoidal model
DC bias present Roshen Physics-based handles bias effects
Wide temp range Roshen or Albach Better temperature extrapolation

Default Recommendation: Use iGSE for most power electronics applications. It handles non-sinusoidal waveforms well and uses readily available Steinmetz parameters.

Usage

#include "physical_models/CoreLosses.h"

// Create a specific model
auto model = OpenMagnetics::CoreLossesModel::factory(
    OpenMagnetics::CoreLossesModels::STEINMETZ
);

// Or use the default model
auto model = OpenMagnetics::CoreLossesModel::factory();

Configuring Default Model

auto& settings = OpenMagnetics::Settings::GetInstance();
// settings.set_corelosses_model(OpenMagnetics::CoreLossesModels::...);

Usage

#include "physical_models/CoreLosses.h"

// Create a specific model
auto model = OpenMagnetics::CoreLossesModel::factory(
    OpenMagnetics::CoreLossesModels::STEINMETZ
);

// Or use the default model
auto model = OpenMagnetics::CoreLossesModel::factory();

Configuring Default Model

auto& settings = OpenMagnetics::Settings::GetInstance();
// settings.set_corelosses_model(OpenMagnetics::CoreLossesModels::...);