Skip to content

461 serializedmagnets - #481

Draft
gupichon-soleil wants to merge 2 commits into
mainfrom
461-serializedmagnets
Draft

gupichon-soleil wants to merge 2 commits into
mainfrom
461-serializedmagnets

Conversation

@gupichon-soleil

Copy link
Copy Markdown
Contributor

No description provided.

GamelinAl and others added 2 commits October 13, 2026 11:55
A serialized family (N magnets on one power supply) has a single degree
of freedom, the PS current I. The accessors now follow that in design
and live:

- family.hardware returns I (was N x I) and sets I.
- family.strength returns the average strength sum(f_i(I))/N and sets
  the I that gives it (exact inverse of the piecewise-linear curves).
- magnet[i].strength sets I = f_i^-1(x) with the magnet's own submodel;
  the other magnets follow. Design no longer splits the value by length.
- Array writes give the PS the mean of the currents asked by the series
  members present in the array, not by all N, so writing one member no
  longer moves the PS by 1/N. Inconsistent requests log a warning.
  Design arrays (no aggregator) apply the same rule as live.

Combined-function magnets keep their current behaviour: the strength
aggregator now calls MagnetModel.compute_hardware_values_partial(),
whose default is the previous logic; LinearSerializedMagnetModel
overrides it.

Also:
- Build the serialized submodels once, at configuration. Attaching a
  family used to rebuild them, so the per-magnet accessors kept stale
  submodels that never received the magnetic rigidity.
- SerializedMagnetsArray.unit() no longer splits unit strings into
  characters.
- Remove ReadWriteSerializedStrengths.elements / get_elements(); use
  SerializedMagnets.get_magnets().

Tests: new design/live tests for idempotence, family values, per-magnet
writes, design/live parity and array writes; tests that relied on the
sum and length-sharing convention are updated.

Refs #461

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…alized-accessors

Implement the agreed serialized-magnet accessor convention

This branch has not been deployed

No deployments
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.

SerializedMagnets: get/set are not consitent and design/live disagree

3 participants