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:
@@ -60,6 +60,16 @@ class Piecewise:
|
|||||||
(x, y + shift) for (x, y) in self.xy
|
(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:
|
def line_for(self, x: float) -> Line:
|
||||||
for first_lower in self.xy[:-1][::-1]:
|
for first_lower in self.xy[:-1][::-1]:
|
||||||
if first_lower[0] < x: break
|
if first_lower[0] < x: break
|
||||||
|
@@ -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 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 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 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, 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, 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 12x 7:1 (800um, 1e11 I) x 1.5", fwd_40_800um_12_7_1_1e11.scaled_y(1.5).clipped().logically_inverted()),
|
||||||
("40 10x 9:1 (800um, 2e11 I)", fwd_40_800um_10_9_1_2e11.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 10x 9:1 (800um, 5e10 I)", fwd_40_800um_10_9_1_5e10.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.plot(title = f"{name} mapping")
|
||||||
curve.logically_inverted().plot_slope(title = f"{name} slope")
|
curve.logically_inverted().plot_slope(title = f"{name} slope")
|
||||||
|
Reference in New Issue
Block a user