try dumb vertical scaling of inverters

it seems that if we take a non-inverter than has y(0) *close* to 0, and
scale it enough, then we get stable transfer.

this suggests we really just want something with a massive number of
couplings (to keep the coupling ideal) and enough asymmetric windings to
get us > 1.0 tx ratio over some range.
This commit is contained in:
2022-09-29 16:17:48 -07:00
parent 83bd15673d
commit 162e9630ad
2 changed files with 27 additions and 5 deletions

View File

@@ -60,6 +60,16 @@ class Piecewise:
(x, y + shift) for (x, y) in self.xy
])
def scaled_y(self, scale: float) -> 'Piecewise':
return Piecewise([
(x, y * scale) for (x, y) in self.xy
])
def clipped(self, min_: float = 0.00, max_: float = 1.0) -> 'Piecewise':
return Piecewise([
(x, min(max_, max(min_, y))) for (x, y) in self.xy
])
def line_for(self, x: float) -> Line:
for first_lower in self.xy[:-1][::-1]:
if first_lower[0] < x: break

View File

@@ -76,12 +76,24 @@ for (name, curve) in [
# ("40 10x 5:1 (600um, 5e10 I)", fwd_40_600um_10_5_1_5e10.logically_inverted()),
# ("40 10x 9:1 (800um, 5e10 I)", fwd_40_800um_10_9_1_5e10.logically_inverted()),
("40 24x 3:1 (800um, 1e11 I)", fwd_40_800um_24_3_1_1e11.logically_inverted()),
("40 18x 5:1 (800um, 1e11 I)", fwd_40_800um_18_5_1_1e11.logically_inverted()),
# ("40 24x 3:1 (800um, 1e11 I)", fwd_40_800um_24_3_1_1e11.logically_inverted()),
# ("40 18x 5:1 (800um, 1e11 I)", fwd_40_800um_18_5_1_1e11.logically_inverted()),
# ("40 18x 5:1 (800um, 5e10 I)", fwd_40_800um_18_5_1_5e10.logically_inverted()),
# ("40 12x 7:1 (800um, 1e11 I)", fwd_40_800um_12_7_1_1e11.logically_inverted()),
# ("40 12x 7:1 (800um, 5e10 I)", fwd_40_800um_12_7_1_5e10.logically_inverted()),
# ("40 10x 9:1 (800um, 2e11 I)", fwd_40_800um_10_9_1_2e11.logically_inverted()),
# ("40 10x 9:1 (800um, 5e10 I)", fwd_40_800um_10_9_1_5e10.logically_inverted()),
# ("40 18x 5:1 (800um, 1e11 I)", fwd_40_800um_18_5_1_1e11.logically_inverted()),
# ("40 18x 5:1 (800um, 1e11 I) + 0.3", fwd_40_800um_18_5_1_1e11.logically_inverted().shifted_y(0.3)),
("40 12x 7:1 (800um, 1e11 I)", fwd_40_800um_12_7_1_1e11.logically_inverted()),
("40 12x 7:1 (800um, 5e10 I)", fwd_40_800um_12_7_1_5e10.logically_inverted()),
("40 10x 9:1 (800um, 2e11 I)", fwd_40_800um_10_9_1_2e11.logically_inverted()),
("40 10x 9:1 (800um, 5e10 I)", fwd_40_800um_10_9_1_5e10.logically_inverted()),
("40 12x 7:1 (800um, 1e11 I) x 1.5", fwd_40_800um_12_7_1_1e11.scaled_y(1.5).clipped().logically_inverted()),
("40 12x 7:1 (800um, 1e11 I) x 2.0", fwd_40_800um_12_7_1_1e11.scaled_y(2.0).clipped().logically_inverted()),
# ("40 12x 7:1 (800um, 5e10 I)", fwd_40_800um_12_7_1_5e10.logically_inverted()),
# ("40 12x 7:1 (800um, 5e10 I)", fwd_40_800um_12_7_1_5e10.scaled_y(1.5).logically_inverted()),
# ("40 12x 7:1 (800um, 5e10 I)", fwd_40_800um_12_7_1_5e10.scaled_y(2.0).logically_inverted()),
]:
curve.plot(title = f"{name} mapping")
curve.logically_inverted().plot_slope(title = f"{name} slope")