Docs / Hard limitations

Hard limitations

This is the authoritative scope statement for cufemlab: exactly what is independently validated today, what ships as an engineering estimate, and what is on the roadmap toward full 3-D motor simulation — stated plainly so nothing is ever mistaken for more than it is.

How to read this page. cufemlab is deliberately narrow and honest. Where a workflow is validated, it carries an independent cross-check with a per-run card. Where a result is an engineering estimate, we say so in the same breath. Everything under Roadmap is a direction we are building toward — not a shipped, claimed capability. Separating the two is the entire product.

Scope at a glance

The live catalog is 15 analysis workflows (magnetics, a thermal / core-loss / coupling lane, a neural surrogate, and GPU-accelerated 3-D field analysis), all self-serve through the web app and the Python SDK. Here is where each capability sits today.

On the 3-D lane specifically: GPU-accelerated 3-D field analysis is available on compatible GPU workers. Runtime metadata reports the actual execution backend and fallback state. It is experimental, it is fail-closed (no silent CPU fallback), and it is not an independently validated 3-D torque prediction — it is the GPU execution lane for the same 3-D field solve as the CPU cufem3d_field_validation utility.

Available today

  • Validated 2-D coggingcogging_torque_movingband (moving-band / Arkkio), independently cross-checked vs FEMM and GetDP with a per-run validation card that cites tolerance and measured error.
  • 3-D field & flux validationcufem3d_field_validation: 3-D magnetostatic edge-element (Nédélec) solve returning geometry, mesh, magnetic field & flux (VTU) and a relative-error field verdict.
  • Utilitiesmaterial_comparison and deterministic HMAC-signed evidence via signed_report_generation (SHA-256 provenance).
  • Demo quick-checkdemo_motor_quick_check, a free-tier smoke check of the job submission and result flow.
  • Thermal / core-loss / coupling lanethermal_conduction_steady, thermal_conduction_transient, eddy_thermal_coupled, core_loss_estimate, coreloss_thermal_coupled: validated internally (MMS / Crank-Nicolson order / energy balance / cited Bertotti coefficients); external validation passport not yet attached (validation_card=not_validated).
  • Field-to-field neural surrogatefield_to_field_neural_operator: an experimental in-distribution surrogate / self-validating demo (held-out rel-L2 0.68% on the training distribution; OOD degrades). Not a general-purpose neural operator; arbitrary custom-field input is a follow-on.
  • result.v1 envelope, downloadable artifacts, API keys, and a per-user concurrency cap, all live and enforced.

Maturing

  • pmsm_operating_torque — a 2-D operating-torque engineering estimate, not independently validated.
  • iron_loss_estimate — a Steinmetz-type core-loss engineering estimate.
  • 3-D field validation runs on CPU today; GPU acceleration for the 3-D lane is being built.
  • cogging_sweep_2d — a legacy / partial 2-D sweep, superseded by the moving-band workflow.

Roadmap / not claimed

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

Validated vs engineering estimate

Two of the torque-class workflows sit at different confidence levels, and we are explicit about which is which. Read a result's .verdict and validation card before you rely on it.

independently validated

Moving-band cogging

cogging_torque_movingband is the flagship 2-D no-load cogging workflow. Every run is cross-checked against two independent open-source solvers and ships a card that states the declared tolerance and the measured error.

Cross-check: FEMM + GetDP
Per-run validation card · error vs tol
engineering estimate

Operating torque & iron loss

pmsm_operating_torque (2-D on-load) and iron_loss_estimate (Steinmetz-type) are directional engineering estimates. They are useful for early trade studies but are not independently validated and carry no cross-check card.

No independent card
Treat as directional, not sign-off
The one validated torque lane. If you need a torque number you can defend, use cogging_torque_movingband and read its card. The operating-torque and iron-loss workflows are estimates by design — see the motor workflow for how they fit a study.

cogging_sweep_2d is legacy

cogging_sweep_2d is an older 2-D sweep that predates the moving-band implementation. It remains in the catalog for backward compatibility but is partial and superseded. For any new work, prefer cogging_torque_movingband — it is the validated path and the one that carries the FEMM/GetDP card.

The 3-D lane: field validation today, full torque on the roadmap

cufemlab has a live 3-D lane. cufem3d_field_validation performs a 3-D magnetostatic edge-element (Nédélec) solve and returns geometry, mesh, and the magnetic field & flux as VTU, together with a relative-error field verdict. This is the geometry and field validation lane — available now, free-trial eligible (1 credit, ≤ 5 min), currently on CPU.

What sits on the roadmap is full 3-D motor torque with skew and end-effects, and full 3-D operating maps. The 3-D lane today validates geometry, mesh, magnetic field, and flux, and the roadmap extends it toward full 3-D motor simulation. The 3-D verdict is a relative-error verdict on the computed field and flux, and full 3-D motor torque with skew and end-effects is the direction this lane is building toward.

3-D field & flux validation via the SDKPython
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(name="rotor-3d-check")
mesh    = client.upload_file(project.id, "rotor.step")          # .step / .stp / .iges / .stl

job = client.analyze(
    project_id=project.id,
    analysis_type="cufem3d_field_validation",               # 3-D magnetostatic edge-element (Nedelec)
    input_params={},
    input_file_ids=[mesh.id],
)                                                            # omit max_minutes -> per-analysis default

job.wait(poll_interval=5)
r = job.result()
print(r.verdict, r.value, r.summary)                          # relative-error field & flux verdict

See getting started for how to submit a job, upload geometry, and read the result verdict, and compute architecture for the result.v1 contract.

The new thermal / core-loss / neural lane: what it is and is not

As of 2026-07-11 the platform ships a thermal, core-loss and coupling lane plus a neural surrogate. These are real and live, but their validation status is precise — do not read them as externally certified.

Not in the product today

The following are not shipped and are not claimed. Several are on the roadmap; all are called out here so a planned direction is never read as a live capability.

No commercial-tool benchmark claim

ANSYS / JMAG / COMSOL are not benchmarked. cufemlab makes no speed or accuracy claim relative to any commercial CAE tool. Our validation story is the independent open-source cross-check (FEMM, GetDP) shipped on the moving-band card — not a head-to-head against a commercial suite. Where you need production sign-off against a commercial reference, use your commercial tool of record.

Billing and access

Billing is fail-closed: if entitlement cannot be confirmed, the job does not run. Stripe is not activated yet — there is no live self-serve card payment path, and no mock or placeholder billing is presented as real. Access today is via pilot and technical evaluation. Managed Jupyter access is provisioned as up to 24 h/day (never described as unlimited); see cufem in Jupyter.

The per-user concurrency cap is enforced: a second concurrent job over the cap returns HTTP 429 CONCURRENCY_LIMIT_EXCEEDED. Compute, queueing, and the result.v1 contract are described in compute architecture.

Where to go next

Start with getting started, review the validated motor workflow, and browse examples & recipes. For the direction of travel toward full 3-D motor simulation, see the roadmap. If any page, output, or report appears to contradict this scope statement, that is a bug — please report it to info@secrotec.nl. cufemlab is built by Secrotec B.V.