Docs / Physics domains

Physics domains

cufemlab is a GPU finite-element tool for electric-machine engineers: 2-D magnetostatic FEM motor workflows and a live 3-D magnetic field validation lane, plus a new GPU thermal, core-loss and coupled-multiphysics lane (internally validated) and an experimental neural surrogate — with every externally-validated result carrying an independent cross-check.

Read this first. This page maps the product to physics domains and separates what is available today from what is maturing or on the roadmap. Exactly two of the fifteen public types are cross-checked against an external reference: moving-band cogging (against FEMM and GetDP) and CPU 3-D field validation (against an analytic sphere). Every other type still ships a validation card, but it reports validation_card.status = not_validated; the operating-torque and iron-loss workflows are clearly-labelled engineering estimates. We never present an estimate as a validated result, and we make no accuracy or speed claim against any commercial tool.

Magnetostatics — the domain we solve today

The core physics domain is low-frequency magnetostatics for permanent-magnet and reluctance machines: solve for the magnetic vector potential over a 2-D motor cross-section, recover air-gap flux density, and integrate the Maxwell stress tensor (Arkkio) to get torque. Everything the platform ships today is built on this domain — the eight magnetostatics workflows are organised around this magnetostatic core, from the validated cogging path to the supporting utilities. The self-serve app is live at /app/, and a Python client SDK drives the same engine programmatically against https://app.cufemlab.secrotec.nl.

validated

2-D moving-band cogging

The flagship workflow: no-load cogging torque on a 2-D moving-band / Arkkio model. Each run emits a validation card that cross-checks the result against the open-source solvers FEMM and GetDP and cites the tolerance plus the measured relative error — so the number ships with its own evidence.

cogging_torque_movingband · GPU-first · FEMM + GetDP card
engineering estimate

Operating torque & iron loss

A 2-D operating-torque estimate for a loaded PMSM, and a Steinmetz-type iron-loss estimate. These are honest engineering estimates for early design exploration — useful and repeatable, but not independently validated and never labelled as such in the product.

pmsm_operating_torque (GPU-first) · iron_loss_estimate (CPU)

The magnetics workflows, by role

The eight magnetostatics workflows fall into four roles within the magnetostatics domain. (Six further live types — GPU thermal conduction, eddy-to-thermal coupling, core-loss, coupled core-loss/thermal, and a neural surrogate — are covered in Thermal, core-loss & FNO; the full 15-type list is in the feature matrix.)

New: thermal, core-loss & coupled multiphysics (live)

As of 2026-07-11 the platform also exposes a thermal and core-loss lane on the same GPU engine. These six analysis types are live on the API:

Validation status. All six new types return the standard result.v1 envelope with validation_card = not_validated: the five physics types are validated internally against their own analytic / energy identities, and the neural surrogate is an experimental in-distribution surrogate — none has an external validation passport attached yet. See Thermal, core-loss & FNO for parameters, outputs, artifacts, and runnable examples, and Validation & claims for what each tier means.

Running a magnetics workflow

The SDK flow is the same for every workflow: create a project, optionally upload a geometry file, submit an analyze(...) call, wait for the job, and read the result envelope. Omitting max_minutes uses the per-analysis default, so you never have to guess a limit.

Validated moving-band coggingPython
import os
from cufemlab_client import Client

client = Client(api_key=os.environ["CUFEMLAB_API_KEY"])   # base url defaults to https://app.cufemlab.secrotec.nl
project = client.create_project("PMSM cogging study")

job = client.analyze(
    project_id=project.id,
    analysis_type="cogging_torque_movingband",   # flagship validated 2-D workflow
    input_params={"stator_slots": 12, "rotor_poles": 10},
    gpu=True,                                  # cogging runs GPU-first; omit max_minutes for the default
)

job.wait(poll_interval=10)
result = job.result()

print(result.verdict)    # e.g. PASS - measured against the FEMM/GetDP validation card
print(result.value)      # peak cogging torque
print(result.metrics)    # tolerance + measured relative error from the card

Every result is returned in the result.v1 envelope with .verdict, .value, .summary, and .metrics, plus downloadable artifacts. To attach evidence, run signed_report_generation on the completed job and call job.download_report("report.pdf") for a signed PDF. See Motor workflow and the API reference for the full parameter set.

3-D field validation lane

cufemlab has a live 3-D field validation lane. cufem3d_field_validation runs a 3-D magnetostatic edge-element (Nédélec) solve on a controlled analytic benchmark (a uniformly-magnetized sphere, whose interior field has a known closed form): it builds the 3-D mesh, solves for the magnetic field, and grades the computed field against the analytic reference, returning a relative-error field verdict and a downloadable result artifact. It runs on CPU and is the first rung of our roadmap toward full 3-D motor simulation — a working 3-D magnetostatic field-validation capability you can run today.

3-D magnetostatic field validationPython
project = client.create_project("3-D field validation")

job = client.analyze(
    project_id=project.id,
    analysis_type="cufem3d_field_validation",     # 3-D edge-element (Nedelec) magnetostatic solve
    input_params={"mesh_n": 24},                  # controlled analytic case; omit input_params for the defaults
)
job.wait(poll_interval=10)
r = job.result()

print(r.verdict, r.value)   # relative-error field verdict on a controlled 3-D magnetostatic case
Try it free. The 3-D field validation lane is free-trial eligible (1 credit, typically ≤ 5 min) and currently runs on CPU. Start one from /app/new_analysis.html.
Current capability vs roadmap. The 3-D lane validates geometry, mesh, and the magnetic field on a controlled analytic case today. Full 3-D motor torque with skew and end-effects, and full 3-D operating maps, are on the roadmap — not shipped and never implied. When we quote a torque number today it comes from the validated 2-D moving-band workflow, not from 3-D.

Scope at a glance

Where the product sits across the magnetostatics domain and its neighbours:

Available today

  • 2-D magnetostatic FEM motor workflows
  • Moving-band cogging torque — validated (FEMM/GetDP card)
  • 2-D PMSM operating-torque estimate
  • Iron-loss (Steinmetz-type) estimate
  • Materials comparison (steel & magnet grades)
  • Signed, HMAC / SHA-256 evidence reports
  • 3-D magnetostatic field validation (edge-element Nédélec; geometry / mesh / magnetic field)
  • GPU thermal conduction — steady & transient (internally validated)
  • Eddy-to-thermal & core-loss-to-thermal coupling (internally validated)
  • Bertotti core-loss estimate (cited coefficients)
  • Field-to-field neural surrogate — experimental, in-distribution

Maturing

  • 3-D magnetostatic edge-element (Nédélec) solver — validated on controlled analytic cases, expanding
  • Broader 3-D validation geometries beyond the analytic benchmark

Roadmap / not claimed

  • Full 3-D torque with skew & end-effects
  • Full 3-D operating maps
  • External validation passports for the new thermal / core-loss types
  • Standalone eddy-current as a customer API type (engine-internal today)
  • General-purpose neural operator with arbitrary custom-field / CAD input
  • Full industrial core-loss material database
  • Any commercial-tool (ANSYS / JMAG / COMSOL) benchmark claim

Validated results vs engineering estimates

The distinction is deliberate and visible everywhere in the product:

For an exhaustive list of what is and is not claimed, see Hard limitations; for what comes next, see the Roadmap.

Where each workflow runs

Compute is split by cost profile across a FastAPI + Redis-queue + Postgres backend with a dedicated GPU (RTX-class) node. The magnetics FEM workflows run GPU-first; the estimators, utilities, and the 3-D lane run on CPU:

A per-user concurrency cap protects the shared GPU node — a second concurrent job over the cap returns HTTP 429 CONCURRENCY_LIMIT_EXCEEDED. See Compute: GPU & CPU for the full picture.

Honest boundaries. Billing is fail-closed (Stripe is not activated) — nothing on the platform charges a card, and we never present mock billing as real. Jupyter access is offered up to 24 h/day, not unlimited. cufemlab has not been benchmarked against any commercial tool, and we make no accuracy or speed claim relative to ANSYS, JMAG, or COMSOL. All software and IP are owned by Secrotec B.V.

Where to go next