Add induction motor mode, fringing derate, and self-start check#423
Merged
Conversation
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
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
What shippedThe motor analysis tools now support two new capabilities alongside the existing permanent-magnet mode.
Plain-English summary generated by Choji from this pull request. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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_starttool to answer the critical design question: will the motor overcome bearing friction and spin?Key Changes
Induction Motor Mode (
calc_motor mode: "induction")calcMotorInduction()function implementing the Russell–Norsworthy thin-sheet induction closed formcrates/vcad-ecad-sim/src/induction.rswith full test coveragephase_current_a,electrical_freq_hz,effective_gap_mm,sheet_conductance_send_effect_factor(default 0.65) models eddy-current return paths outside the active annulusPM Mode Fringing Derate
fringing_derate()function incrates/vcad-ecad-sim/src/airgap.rsimplements Carter-like pole-edge fringing:B_derated = B_raw · w/(w+2g)magnet.pole_width_mmincalc_motor; when provided, both raw MEC prediction and derated flux are reported and claimedNew
check_self_startToolavailable_torque_nmor computed fromkt_nm_per_a × current_astarts(fail-closed: beats worst-case friction),starts_best_case(beats optimistic end), and margin in mN·mImplementation Details
vcad_ecad_sim::airgap::fringing_derate.calcMotorSchema.requiredreduced to["pole_pairs", "turns_per_phase"]; mode-specific inputs validated at runtime.ecad.test.tsincluding 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.ts—calcMotor()refactored to dispatch on mode; new `calchttps://claude.ai/code/session_01J1BhGkMGF3m4hEDXVKeTar