Skip to content

Add Notton family converter loss models - #4

Merged
martincornejo merged 14 commits into
mainfrom
simses-legacy-port
Apr 20, 2026
Merged

martincornejo merged 14 commits into
mainfrom
simses-legacy-port

Conversation

@martincornejo

Copy link
Copy Markdown
Collaborator

Closes #3

martincornejo and others added 13 commits April 20, 2026 13:41
Port MolicelNMC cell from legacy simses: 18650 NMC, 1.9 Ah, analytical
OCV (sum-of-sigmoids + linear), 1-D Rint LUT in SOC. Legacy ships a
temperature- and direction-dependent Rint CSV but every column is
identical in the source data, so only the single SOC-keyed curve is
bundled.

Source: Schuster et al., J. Energy Storage 1 (2015) 44-53.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Port PanasonicNCA cell from legacy simses: 18650 NCA, 2.73 Ah,
conservative 0.5 C charge / 3.5 C discharge, analytical OCV
(sum-of-sigmoids + linear), 1-D Rint LUT in SOC with separate charge
and discharge curves. Ships without a default degradation model (no
matching cyclic model available in legacy).

Source: Keil et al., J. Electrochem. Soc. 163(9) (2016) A1872-A1880.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Extend CalendarDegradation and CyclicDegradation protocols so
update_resistance receives the accumulated resistance rise, symmetric
with the existing accumulated_qloss argument on update_capacity.
Unlocks aging models with non-linear R rise (e.g. sqrt-time calendar,
power-law cyclic) that need virtual-time continuation.

Behaviour-preserving: the NoOp stubs and SonyLFP models (linear in
time / FEC) simply ignore the new argument. Tests, the extending-
degradation example, and the concept + guide docs are updated for the
new signature.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Port Molicel NMC calendar + cyclic aging from legacy simses:

- Calendar: t^0.75 capacity fade and sqrt(t) resistance rise with
  virtual-time continuation. Stress factors are 2-D lookups over
  (SOC, T) valid in T ∈ [10, 50] °C.
- Cyclic: Q^0.5562 power law in charge throughput with virtual-
  throughput continuation for both capacity fade and resistance rise.
  Stress factors are 1-D lookups over DoD.

The legacy model's asymmetric C-rate branching (separate coefficients
above 0.5 C for charge vs discharge) is omitted — it requires
charge/discharge direction on the HalfCycle, which the detector does
not expose. DoD is the dominant stress factor and is preserved.

Wired up as MolicelNMC.default_degradation_model so
`Battery(MolicelNMC(), ..., degradation=True)` picks it up.

Source: Ni Chuanqin (EES, TUM); Schmalstieg et al. 2014.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Port Notton generic parametric PV-inverter loss model:
η(p) = p / (p + P0 + K·p²), with three coefficient presets (Type 1, 2,
3) from the reference paper and support for user-supplied coefficients.
Follows the SinamicsS120Fit pattern — sample the fit at 201 points
(101 per direction, mirrored about zero) at construction, interpolate
at runtime so ac_to_dc and dc_to_ac stay numerically invertible.

Source: Notton et al., Renewable Energy 35(2) (2010) 541-554.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Port Bonfiglioli RPS TL-4Q converter: Notton-form fit with asymmetric
charge/discharge coefficients and a minimum-efficiency floor. Two
published coefficient sets are provided:

- DATASHEET (default): manufacturer datasheet, symmetric ch/dch.
- FIELD_DATA: measured on FCR battery systems, asymmetric; reflects
  real deployment losses including auxiliary consumption.

Source: F. Müller (M.Sc. thesis, TUM); Bonfiglioli RPS TL-4Q datasheet.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Port Sungrow SC1000TL manufacturer-specific fit with asymmetric ch/dch
coefficients backed by field data from an FCR BESS. Three fit families
selectable via the ``fit`` constructor argument:

- notton (default): classic Notton form, with a 0.2092 minimum
  efficiency floor on the discharge branch.
- rampinelli: three-parameter loss polynomial, same discharge floor.
- rational: direct rational efficiency curve, no floor needed.

Source: field fit by F. Müller (M.Sc. thesis, TUM).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Update the cell-models, converter-models, and API-reference pages for
the ported models (MolicelNMC, PanasonicNCA, Notton, Bonfiglioli,
Sungrow, and the MolicelNMC degradation pair). Existing chooser-table
structure preserved — one row per instance, per-instance description
and usage merged into a single section.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Refactor the Notton-form converter family so generic fit classes and
specific product classes are cleanly separated:

- Notton(P0, K): generic symmetric Notton fit.
- AsymmetricNotton(charge, discharge): per-direction (P0, K) pairs.
- NottonType1, NottonType2, NottonType3: published inverter presets
  from Notton et al. 2010 as no-arg Notton subclasses.
- Rampinelli(K0, K1, K2): three-parameter generic fit family.
- BonfiglioliTL4Q, BonfiglioliTL4QFieldData: datasheet (Notton subclass)
  and FCR field-data (AsymmetricNotton subclass) variants of the
  Bonfiglioli RPS TL-4Q.
- SungrowSC1000TL: AsymmetricNotton subclass for the Sungrow SC1000TL,
  reproducing the Notton fit that was the legacy default.

Drops the minimum-efficiency floor: the Notton curve is monotonic,
well-behaved at low p, and round-trips cleanly through the LUT without
it. Drops the internal fit-family selector on Sungrow (Rampinelli and
rational-form variants from the thesis are not ported; the original
Notton default is).

Model names now carry the manufacturer model designation — mirrors
SinamicsS120 and makes call sites self-explanatory
(``BonfiglioliTL4Q()``, ``SungrowSC1000TL()``).

Extract a shared ``_notton_lut`` helper so Notton and AsymmetricNotton
deduplicate the sample-and-invert logic.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Follow-up to the MolicelNMC + PanasonicNCA cell reverts: remove the
associated sections and registry entries from the cell-models guide,
API reference, and extending-cells guide.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@martincornejo

martincornejo commented Apr 20, 2026 •

Copy link
Copy Markdown
Collaborator Author

Only the converter models will be ported (for now)

@martincornejo martincornejo changed the title Simses legacy port Add Notton family converter loss models Apr 20, 2026
@martincornejo
martincornejo merged commit 127c9f5 into main Apr 20, 2026
5 checks passed
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.

Port selected models from legacy simses

1 participant