Skip to content

Add induction motor mode, fringing derate, and self-start check#423

Merged
ecto merged 1 commit into
mainfrom
claude/busy-dirac-9py173
Jul 7, 2026
Merged

Add induction motor mode, fringing derate, and self-start check#423
ecto merged 1 commit into
mainfrom
claude/busy-dirac-9py173

Conversation

@ecto

@ecto ecto commented Jul 7, 2026

Copy link
Copy Markdown
Owner

Summary

Extends the motor analysis toolkit with two new capabilities: a thin-sheet axial induction machine model (for drag-cup and PCB-cage rotors) and a Carter-like fringing derate for permanent-magnet flux predictions. Adds a new check_self_start tool to answer the critical design question: will the motor overcome bearing friction and spin?

Key Changes

Induction Motor Mode (calc_motor mode: "induction")

  • New calcMotorInduction() function implementing the Russell–Norsworthy thin-sheet induction closed form
  • Computes fundamental gap field B1 from rotating MMF, torque-per-unit-slip (linear in slip), locked-rotor torque, synchronous speed, and rotor sheet dissipation
  • Rust mirror in new crates/vcad-ecad-sim/src/induction.rs with full test coverage
  • Schema updated to make PM-mode inputs conditional; induction mode requires phase_current_a, electrical_freq_hz, effective_gap_mm, sheet_conductance_s
  • Optional end_effect_factor (default 0.65) models eddy-current return paths outside the active annulus

PM Mode Fringing Derate

  • New fringing_derate() function in crates/vcad-ecad-sim/src/airgap.rs implements Carter-like pole-edge fringing: B_derated = B_raw · w/(w+2g)
  • Opt-in via magnet.pole_width_mm in calc_motor; when provided, both raw MEC prediction and derated flux are reported and claimed
  • Kt/Ke and speed–torque curve use the derated flux; raw value available for FEA grading
  • Honest for pole width ≳ 2× gap; below that treated as a lower bound

New check_self_start Tool

  • Answers "will it spin?" by comparing available standstill torque against bearing friction
  • Accepts either direct available_torque_nm or computed from kt_nm_per_a × current_a
  • Friction estimated from bearing catalog (presets: 608-2RS, 608-ZZ, 625, 688 with light/medium preload) or supplied directly
  • Returns starts (fail-closed: beats worst-case friction), starts_best_case (beats optimistic end), and margin in mN·m
  • Typical sealed 608-2RS pair: 1–4 mN·m; shielded and miniature variants an order of magnitude freer
  • Demonstrates that thin-sheet induction machines (µN·m locked-rotor) require ultra-low-friction bearings to self-start

Implementation Details

  • Induction model: First-order only — linear-in-slip torque (no breakdown peak), no stator leakage/magnetizing reactance, no slotting/saturation. Valid for will-it-spin sizing; not an FEA substitute.
  • Fringing derate: Pure geometry ratio, first-order in gap/width. Mirrors Rust vcad_ecad_sim::airgap::fringing_derate.
  • EM claims: Both induction and fringing derate report their predictions as EM receipt claims (method: "thin-sheet-induction", "mec-fringing-derate") with full input traceability.
  • Schema: calcMotorSchema.required reduced to ["pole_pairs", "turns_per_phase"]; mode-specific inputs validated at runtime.
  • Tests: Comprehensive coverage in ecad.test.ts including reference machine validation (N=30, kw=0.866, p=3, I=1.5 A, f=100 Hz → B1 ≈ 4.7 mT, locked-rotor ≈ 18 µN·m), scaling laws, and edge cases.

Files Modified

  • packages/mcp/src/tools/ecad.tscalcMotor() refactored to dispatch on mode; new `calc

https://claude.ai/code/session_01J1BhGkMGF3m4hEDXVKeTar

Three additions to the motor electromagnetics oracles, all pure
data-in/data-out like the existing calculators:

- calc_motor mode:'induction' — thin-sheet axial induction rotors
  (drag-cup / PCB cage): rotating-MMF fundamental B1 = mu0*F1/g, linear
  slip torque T(s) = k_ee*pi*sigma_s*s*(omega_e/p)*B1^2*(r2^4-r1^4)/4
  with the Russell-Norsworthy end-effect factor (default 0.65). Returns
  B1, torque-per-unit-slip, locked-rotor torque (raw + end-effected),
  sync rpm, and rotor sheet loss at locked rotor. Rust source of truth
  in vcad-ecad-sim::induction, mirrored in TS like calc_coil.

- PM MEC fringing derate — magnet.pole_width_mm opts into a first-order
  Carter-like pole-edge derate w/(w+2g) on the MEC flux; both raw and
  derated B are reported (and claimed) and the derated value drives Kt.
  Rust twin: vcad_ecad_sim::airgap::fringing_derate.

- check_self_start — the will-it-spin gate: starting torque (direct or
  Kt*I) vs friction (direct estimate or documented bearing-drag catalog:
  608-2RS/608-ZZ/625/688 x light/medium preload x count). Fail-closed
  against worst-case friction, with best-case verdict and margin.

All three emit EM receipt claims (new quantities: torque_per_unit_slip,
locked_rotor_torque, synchronous_speed, rotor_copper_loss,
friction_torque, start_margin; new methods: thin-sheet-induction,
mec-fringing-derate, bearing-friction-catalog, torque-friction-margin).

Tests pin the reference machine (N=30, kw=0.866, p=3, 1.5A rms, 100Hz,
g=4.7mm, sigma_s=8120S, r1=15.3, r2=28.5 -> B1 ~4.69mT, locked-rotor
~17.8uNm before end effect) in both Rust and TS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J1BhGkMGF3m4hEDXVKeTar
@vercel

vercel Bot commented Jul 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
vcad-mcp Ready Ready Preview, Comment Jul 7, 2026 2:24pm
3 Skipped Deployments
Project Deployment Actions Updated (UTC)
mecheval Ignored Ignored Jul 7, 2026 2:24pm
vcad Ignored Ignored Jul 7, 2026 2:24pm
vcad-docs Ignored Ignored Jul 7, 2026 2:24pm

Request Review

@ecto
ecto merged commit 028e1bd into main Jul 7, 2026
12 checks passed
@chojiai

chojiai Bot commented Jul 7, 2026

Copy link
Copy Markdown

What shipped

The motor analysis tools now support two new capabilities alongside the existing permanent-magnet mode.

  • Induction motor sizing: calc_motor gains an induction mode for drag-cup and PCB-rotor designs, computing the rotating air-gap field, torque per unit slip, locked-rotor torque, synchronous speed, and rotor heat dissipation from the rotor sheet's conductivity and geometry.
  • Fringing derate for PM flux: When you supply the magnet pole width, the PM flux prediction is automatically corrected for pole-edge fringing, and both the raw and derated values are reported so you can see the adjustment.
  • Self-start check: A new check_self_start tool answers whether a motor will overcome bearing friction at standstill, returning a pass/fail verdict against worst-case friction (from a built-in bearing catalog or a number you supply directly), a best-case verdict, and a safety margin.

Plain-English summary generated by Choji from this pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants