Commit 80f220e
fix(cllc): reject infeasible turns-ratio operating points instead of emitting zero-power waveforms
A CLLC operating point whose turns ratio is inconsistent with Vin/Vout
(e.g. n=1 for a 48->12 V 4:1 step-down) demands a tank voltage gain
n*Vout/Vin far below what a resonant tank can supply — it operates near
the unity-gain load-independent point. No bounded power-transferring
steady state exists for such a point.
On current main this had stopped throwing and instead SILENTLY emitted a
fabricated ~0.5 W zero-power waveform (Isec_rms ~0.04 A vs a requested
5 A) — a regression from 25170b5, whose observable-only convergence gate
accepts the near-zero state (trivially antisymmetric, so a tiny finite
residual rather than +inf), bypassing the existing no-fallback guard.
The older compiled .so threw "no converging seed" honestly; current main
returned garbage (reported as abt#1 from Heaviside).
Add an analytical feasibility pre-check: M_req = |Vo|/|Vi|. If M_req is
outside [0.5, 3.0] — a band that clears every matched full-bridge (M~1)
and half-bridge (M~2) design across its input range — throw
InvalidInputException(INVALID_DESIGN_REQUIREMENTS) naming the gain
mismatch and the correct turns ratio (~Vin/Vout). The +inf "no
converging seed" guard is upgraded from std::runtime_error to the same
exception type, so both infeasibility paths are classifiable and
distinct from a model convergence failure.
The observable-residual gate from 25170b5 is preserved for all
legitimate designs.
Tests: cllc-topology 37/37 (incl. new Test_CllcConverter_Infeasible_TurnsRatio_Throws),
cllc PtP reference designs 6/6, cllc-loss-breakdown 1/1. Zero regressions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 6f1cfe6 commit 80f220e
2 files changed
Lines changed: 84 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1151 | 1151 | | |
1152 | 1152 | | |
1153 | 1153 | | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
| 1182 | + | |
| 1183 | + | |
| 1184 | + | |
| 1185 | + | |
| 1186 | + | |
| 1187 | + | |
| 1188 | + | |
| 1189 | + | |
| 1190 | + | |
| 1191 | + | |
| 1192 | + | |
| 1193 | + | |
1154 | 1194 | | |
1155 | 1195 | | |
1156 | 1196 | | |
| |||
1353 | 1393 | | |
1354 | 1394 | | |
1355 | 1395 | | |
| 1396 | + | |
| 1397 | + | |
1356 | 1398 | | |
1357 | 1399 | | |
1358 | 1400 | | |
| |||
1362 | 1404 | | |
1363 | 1405 | | |
1364 | 1406 | | |
1365 | | - | |
| 1407 | + | |
1366 | 1408 | | |
1367 | 1409 | | |
1368 | 1410 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
121 | 121 | | |
122 | 122 | | |
123 | 123 | | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
124 | 165 | | |
125 | 166 | | |
126 | 167 | | |
| |||
0 commit comments