From ea3bc50af262215d912cedea7c6030d7b797904e Mon Sep 17 00:00:00 2001 From: colin Date: Fri, 30 Sep 2022 03:17:14 -0700 Subject: [PATCH] app: stacked_cores: ingest new results; define next sims --- .../stacked_cores/scripts/plot_inverters.py | 93 +++---------- .../scripts/stacked_cores_40xx_db.py | 126 +++++++++++++----- crates/applications/stacked_cores/src/main.rs | 45 ++++--- 3 files changed, 137 insertions(+), 127 deletions(-) diff --git a/crates/applications/stacked_cores/scripts/plot_inverters.py b/crates/applications/stacked_cores/scripts/plot_inverters.py index a2178fa..0c78976 100755 --- a/crates/applications/stacked_cores/scripts/plot_inverters.py +++ b/crates/applications/stacked_cores/scripts/plot_inverters.py @@ -4,6 +4,7 @@ from fake_cores_db import * from stacked_cores_40xx_db import * +# plot pre-40xx sims for (name, curve) in [ # ("fake step", fwd_fake_step.logically_inverted()), # ("fake 1.5x", fwd_fake_1_5x.logically_inverted()), @@ -36,81 +37,31 @@ for (name, curve) in [ # ("39 2:0 (8e10 I)", inv_39_2_0_8e10), # ("39 2:0 (1e11 I)", inv_39_2_0_1e11), # ("39 2:0 (15e10 I)", inv_39_2_0_15e10), - - # ("40 12x 3:1 (400um, 5e10 I)", fwd_40_12_3_1_5e10.logically_inverted()), - # ("40 6x 3:1 (400um, 5e10 I)", fwd_40_6_3_1_5e10.logically_inverted()), - # ("40 6x 7:1 (400um, 5e10 I)", fwd_40_6_7_1_5e10.logically_inverted()), - # ("40 20x 3:1 (600um, 3e10 I)", fwd_40_600um_20_3_1_3e10.logically_inverted()), - # ("40 20x 3:1 (600um, 5e10 I)", fwd_40_600um_20_3_1_5e10.logically_inverted()), - # # ("40 20x 3:1 (600um, 5e10 I)-flipped-xy", fwd_40_600um_20_3_1_5e10.logically_inverted_x()), - # # ("40 20x 3:1 (600um, 5e10 I)-flipped", fwd_40_600um_20_3_1_5e10.logically_inverted_x()), - # # ("40 20x 3:1 (600um, 5e10 I)-shifted", fwd_40_600um_20_3_1_5e10.shifted_x(-0.10).logically_inverted()), - # ("40 20x 3:1 (600um, 1e11 I)", fwd_40_600um_20_3_1_1e11.logically_inverted()), - # ("40 20x 3:1 (600um, 2e11 I)", fwd_40_600um_20_3_1_2e11.logically_inverted()), - # ("40 12x 5:1 (600um, 5e10 I)", fwd_40_600um_12_5_1_5e10.logically_inverted()), - # ("40 12x 5:1 (600um, 1e11 I)", fwd_40_600um_12_5_1_1e11.logically_inverted()), - # ("40 12x 5:1 (600um, 2e11 I)", fwd_40_600um_12_5_1_2e11.logically_inverted()), - - # ("40 8x 5:1 (600um, 5e10 I)", fwd_40_600um_8_5_1_5e10.logically_inverted()), - # ("40 8x 7:1 (600um, 5e10 I)", fwd_40_600um_8_7_1_5e10.logically_inverted()), - - # ("40 8x 7:1 (600um, 1e11 I)", fwd_40_600um_8_7_1_1e11.logically_inverted()), - - # ("40 6x 5:1 (600um, 5e10 I)", fwd_40_600um_6_5_1_5e10.logically_inverted()), - # ("40 6x 7:1 (600um, 5e10 I)", fwd_40_600um_6_7_1_5e10.logically_inverted()), - # ("40 6x 9:1 (600um, 5e10 I)", fwd_40_600um_6_9_1_5e10.logically_inverted()), - - # ("40 6x 9:1 (600um, 1e11 I)", fwd_40_600um_6_9_1_1e11.logically_inverted()), - # ("40 6x 11:1 (600um, 5e10 I)", fwd_40_600um_6_11_1_5e10.logically_inverted()), - - # ("40 6x 5:1 (600um, 5e10 I)", fwd_40_600um_6_5_1_5e10.logically_inverted()), - # ("40 8x 5:1 (600um, 5e10 I)", fwd_40_600um_8_5_1_5e10.logically_inverted()), - # ("40 10x 5:1 (600um, 5e10 I)", fwd_40_600um_10_5_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, 1e11 I)", fwd_40_800um_12_7_1_1e11.logically_inverted()), - # ("40 10x 5:1 (600um, 5e10 I)", fwd_40_600um_10_5_1_5e10.logically_inverted()), - # ("40 10x 9:1 (800um, 2e11 I)", fwd_40_800um_10_9_1_2e11.logically_inverted()), - - # ("40 12x 5:1 (600um, 5e10 I)", fwd_40_600um_12_5_1_5e10.logically_inverted()), - # ("40 12x 7:1 (800um, 5e10 I)", fwd_40_800um_12_7_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 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, 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") curve.plot_equilibrium(title = f"{name} equilibrium") # curve.plot_integral(title = f"{name} integrated") -for (params, curve) in filter_meas(): - curve = curve.logically_inverted() - if curve.is_viable_inverter(): - curve.plot(title = f"{params.human_name} mapping") - curve.logically_inverted().plot_slope(title = f"{params.human_name} slope") - curve.plot_equilibrium(title = f"{params.human_name} equilibrium") +of_interest = [] -# for (params, curve) in filter_meas(rad_um=800): -# curve = curve.logically_inverted() -# curve.plot(title = f"{params.human_name} mapping") -# curve.logically_inverted().plot_slope(title = f"{params.human_name} slope") -# curve.plot_equilibrium(title = f"{params.human_name} equilibrium") +# plot select stims: +# of_interest += filter_meas(rad_um=800, drive=5e10, couplings=12, wrappings=5) +# of_interest += filter_meas(rad_um=800, drive=5e10, couplings=8, wrappings=11) +# of_interest += filter_meas(rad_um=800, drive=5e10, couplings=12, wrappings=7) +# of_interest += filter_meas(rad_um=800, drive=5e10, couplings=12, wrappings=5) +# of_interest += filter_meas(rad_um=800, drive=5e10, couplings=10, wrappings=9) +# of_interest += filter_meas(rad_um=800, drive=1e11, couplings=18, wrappings=5) +# of_interest += filter_meas(rad_um=800, drive=1e11, couplings=12, wrappings=7) +# of_interest += filter_meas(rad_um=800, drive=1e11, couplings=24, wrappings=3) +# of_interest += [(p, c.shifted_y(-0.13)) for (p, c) in filter_meas(rad_um=800, drive=1e11, couplings=12, wrappings=7)] + +# plot all viable inverters +of_interest += [(p, c) for (p, c) in filter_meas() if c.logically_inverted().is_viable_inverter()] + + +for (params, curve) in of_interest: + curve = curve.logically_inverted() + curve.plot(title = f"{params.human_name} mapping") + curve.logically_inverted().plot_slope(title = f"{params.human_name} slope") + curve.plot_equilibrium(title = f"{params.human_name} equilibrium") diff --git a/crates/applications/stacked_cores/scripts/stacked_cores_40xx_db.py b/crates/applications/stacked_cores/scripts/stacked_cores_40xx_db.py index 0852c7c..4012308 100755 --- a/crates/applications/stacked_cores/scripts/stacked_cores_40xx_db.py +++ b/crates/applications/stacked_cores/scripts/stacked_cores_40xx_db.py @@ -23,9 +23,10 @@ class SimParams: @property def um_str(self) -> str: return { - 400: "0.0004", - 600: "0.00059999997", - 800: "0.0008", + 400: "0.0004", + 600: "0.00059999997", + 800: "0.0008", + 1200: "0.0011999999", }[self.um] @property @@ -86,8 +87,8 @@ sims = [ (SimParams(18, 2, 800, "5e10"), "fwd_40_800um_18_5_1_5e10", 10000), (SimParams(12, 3, 800, "1e11"), "fwd_40_800um_12_7_1_1e11", 8000), (SimParams(10, 4, 800, "2e11"), "fwd_40_800um_10_9_1_2e11", 8000), - (SimParams(12, 2, 800, "5e10"), "fwd_40_800um_12_5_1_5e10", 8000), (SimParams(8, 5, 800, "5e10"), "fwd_40_800um_8_11_1_5e10", 8000), + (SimParams(8, 5, 800, "1e11"), "fwd_40_800um_8_11_1_1e11", 8000), (SimParams(12, 2, 800, "5e10"), "fwd_40_800um_12_5_1_5e10", 8000), (SimParams(10, 4, 800, "5e10"), "fwd_40_800um_10_9_1_5e10", 8000), (SimParams(12, 2, 800, "1e11"), "fwd_40_800um_12_5_1_1e11", 8000), @@ -849,39 +850,6 @@ Piecewise( ) """) -set_meas("40-0.0008rad-18coupling-5_1_winding-5e10-drive", """ -Piecewise( - [ - [ -6973, -3314 ], # -2.0 - [ -6359, -2380 ], # -1.5 - [ -5476, -1830 ], # -1.0 - [ -4932, -1774 ], # -0.8 - [ -4300, -1686 ], # -0.6 - [ -3906, -1549 ], # -0.5 - [ -3118, -1134 ], # -0.4 - [ -92, 305 ], # -0.3 - [ 868, 1000 ], # -0.25 - [ 1629, 1735 ], # -0.2 - [ 1966, 2160 ], # -0.17 - [ 2142, 2430 ], # -0.15 - [ 2285, 2676 ], # -0.13 - [ 2453, 3016 ], # -0.1 - [ 2574, 3302 ], # -0.07 - [ 2638, 3460 ], # -0.05 - [ 2757, 3600 ], # 0.0 - [ 2851, 3678 ], # 0.05 - [ 2946, 3762 ], # 0.1 - [ 3235, 4021 ], # 0.2 - [ 3559, 4245 ], # 0.3 - [ 3856, 4339 ], # 0.5 - [ 4154, 4342 ], # 0.8 - [ 4308, 4322 ], # 1.0 - [ 4707, 4173 ], # 1.5 - [ 5138, 4065 ], # 2.0 - ] -) -""") - set_meas("40-0.0008rad-12coupling-7_1_winding-5e10-drive", """ Piecewise( [ @@ -915,6 +883,39 @@ Piecewise( ) """) +set_meas("40-0.0008rad-18coupling-5_1_winding-5e10-drive", """ +Piecewise( + [ + [ -6973, -3314 ], # -2.0 + [ -6359, -2380 ], # -1.5 + [ -5476, -1830 ], # -1.0 + [ -4932, -1774 ], # -0.8 + [ -4300, -1686 ], # -0.6 + [ -3906, -1549 ], # -0.5 + [ -3118, -1134 ], # -0.4 + [ -92, 305 ], # -0.3 + [ 868, 1000 ], # -0.25 + [ 1629, 1735 ], # -0.2 + [ 1966, 2160 ], # -0.17 + [ 2142, 2430 ], # -0.15 + [ 2285, 2676 ], # -0.13 + [ 2453, 3016 ], # -0.1 + [ 2574, 3302 ], # -0.07 + [ 2638, 3460 ], # -0.05 + [ 2757, 3600 ], # 0.0 + [ 2851, 3678 ], # 0.05 + [ 2946, 3762 ], # 0.1 + [ 3235, 4021 ], # 0.2 + [ 3559, 4245 ], # 0.3 + [ 3856, 4339 ], # 0.5 + [ 4154, 4342 ], # 0.8 + [ 4308, 4322 ], # 1.0 + [ 4707, 4173 ], # 1.5 + [ 5138, 4065 ], # 2.0 + ] +) +""") + set_meas("40-0.0008rad-12coupling-7_1_winding-1e11-drive", """ Piecewise( [ @@ -924,8 +925,14 @@ Piecewise( [ -6077, -4361 ], # -0.5 [ -5057, -3730 ], # -0.3 [ -3765, -3111 ], # -0.2 + [ -2393, -2551 ], # -0.17 + [ -1520, -2077 ], # -0.15 + [ -755, -1672 ], # -0.13 [ 214, -946 ], # -0.1 + [ 995, -345 ], # -0.07 + [ 1434, 168 ], # -0.05 [ 2253, 1101 ], # 0.0 + [ 2806, 1547 ], # 0.05 [ 3407, 1949 ], # 0.1 [ 4095, 2422 ], # 0.2 [ 4350, 2604 ], # 0.3 @@ -943,7 +950,15 @@ Piecewise( [ -10851, -3027 ], # -1.0 [ -9108, -2492 ], # -0.5 [ -7329, -1814 ], # -0.2 + [ -6967, -1564 ], # -0.17 + [ -6658, -1477 ], # -0.15 + [ -6280, -1214 ], # -0.13 + [ -5205, -679 ], # -0.1 + [ -2706, 389 ], # -0.07 + [ -1244, 1084 ], # -0.05 [ 1602, 2786 ], # 0.0 + [ 3466, 3593 ], # 0.05 + [ 4152, 3872 ], # 0.1 [ 4626, 4063 ], # 0.2 [ 5467, 4427 ], # 0.5 [ 6597, 4912 ], # 1.0 @@ -951,10 +966,47 @@ Piecewise( ) """) +set_meas("40-0.0008rad-8coupling-11_1_winding-5e10-drive", """ +Piecewise( + [ + [ -5239, -7279 ], # -1.0 + [ 754, -5300 ], # -0.17 + [ 865, -5224 ], # -0.15 + [ 955, -5150 ], # -0.13 + [ 1050, -5053 ], # -0.1 + [ 1121, -4957 ], # -0.07 + [ 1158, -4899 ], # -0.05 + [ 1257, -4763 ], # 0.0 + [ 1356, -4640 ], # 0.05 + [ 1499, -4516 ], # 0.1 + [ 3477, -3796 ], # 1.0 + ] +) +""") + +set_meas("40-0.0008rad-12coupling-5_1_winding-5e10-drive", """ +Piecewise( + [ + [ -5684, -3702 ], # -1.0 + [ 1295, -89 ], # -0.17 + [ 1525, 164 ], # -0.15 + [ 1720, 388 ], # -0.13 + [ 1982, 740 ], # -0.1 + [ 2192, 1060 ], # -0.07 + [ 2311, 1260 ], # -0.05 + [ 2549, 1545 ], # 0.0 + [ 2729, 1725 ], # 0.05 + [ 2906, 1875 ], # 0.1 + [ 4790, 2570 ], # 1.0 + ] +) +""") + set_meas("40-0.0008rad-10coupling-9_1_winding-5e10-drive", """ Piecewise( [ [ -5306, -6061 ], # -1.0 + [ 1379, -3250 ], # -0.05 [ 1475, -3098 ], # 0.0 [ 3081, -2179 ], # 0.5 [ 3561, -2147 ], # 1.0 diff --git a/crates/applications/stacked_cores/src/main.rs b/crates/applications/stacked_cores/src/main.rs index 3b21e08..7457b76 100644 --- a/crates/applications/stacked_cores/src/main.rs +++ b/crates/applications/stacked_cores/src/main.rs @@ -3826,27 +3826,35 @@ fn main() { ][..], ] { for (coupling_loops, s0_loops, s_major, cur_str, cur_flt) in [ - (24, 1, um(800), "1e11", 1e11), // completed; verified geom - (18, 2, um(800), "1e11", 1e11), // completed; verified geom - (12, 3, um(800), "5e10", 5e10), // completed; verified geom + // VIABLE INVERTERS, ordered by effectiveness + (12, 3, um(800), "5e10", 5e10), // completed; verified geom; VIABLE INVERTER + (8, 3, um(600), "5e10", 5e10), // completed; VIABLE INVERTER + (12, 1, um(400), "5e10", 5e10), // completed; VIABLE INVERTER (barely) - (18, 2, um(800), "5e10", 5e10), // incomplete; verified geom - (12, 3, um(800), "1e11", 1e11), // incomplete; verified geom - (10, 4, um(800), "2e11", 2e11), // incomplete; UNVERIFIED GEOM - (8, 5, um(800), "5e10", 5e10), // incomplete; UNVERIFIED GEOM - (12, 2, um(800), "5e10", 5e10), // incomplete; UNVERIFIED GEOM - (10, 4, um(800), "5e10", 5e10), // incomplete; UNVERIFIED GEOM - (12, 2, um(800), "1e11", 1e11), // incomplete; UNVERIFIED GEOM - (10, 4, um(800), "1e11", 1e11), // incomplete; UNVERIFIED GEOM + // targeted/interested WIPs + (12, 4, um(1200), "1e11", 1e11), // unstarted; UNVERIFIED GEOM + (8, 5, um(800), "1e11", 1e11), // unstarted; UNVERIFIED GEOM; + (10, 4, um(800), "1e11", 1e11), // unstarted; UNVERIFIED GEOM + (10, 5, um(1200), "1e11", 1e11), // unstarted; UNVERIFIED GEOM - (6, 3, um(600), "5e10", 5e10), // completed - (10, 3, um(600), "5e10", 5e10), // completed - (8, 3, um(600), "5e10", 5e10), // completed + // (18, 2, um(800), "5e10", 5e10), // incomplete; verified geom; too early tx + // (12, 3, um(800), "1e11", 1e11), // incomplete; verified geom; too low tx + // (10, 4, um(800), "2e11", 2e11), // incomplete; UNVERIFIED GEOM; too low slope + // (8, 5, um(800), "5e10", 5e10), // incomplete; UNVERIFIED GEOM; too low tx + // (12, 2, um(800), "5e10", 5e10), // incomplete; UNVERIFIED GEOM; too early tx + // (10, 4, um(800), "5e10", 5e10), // incomplete; UNVERIFIED GEOM; too low tx + // (12, 2, um(800), "1e11", 1e11), // unstarted; UNVERIFIED GEOM; - (6, 2, um(600), "5e10", 5e10), // completed - (8, 2, um(600), "5e10", 5e10), // completed - (10, 2, um(600), "5e10", 5e10), // completed - (12, 2, um(600), "5e10", 5e10), // completed + // (24, 1, um(800), "1e11", 1e11), // completed; verified geom; too early tx + // (18, 2, um(800), "1e11", 1e11), // completed; verified geom; too early tx + + // (6, 3, um(600), "5e10", 5e10), // completed + // (10, 3, um(600), "5e10", 5e10), // completed + + // (6, 2, um(600), "5e10", 5e10), // completed + // (8, 2, um(600), "5e10", 5e10), // completed + // (10, 2, um(600), "5e10", 5e10), // completed + // (12, 2, um(600), "5e10", 5e10), // completed // (8, 1, um(600), "5e10", 5e10), // not started @@ -3865,7 +3873,6 @@ fn main() { // (20, 1, um(600), "2e11", 2e11), // completed // (12, 2, um(600), "2e11", 2e11), // completed. higher current actually weakens transfer (why?) - // (12, 1, um(400), "5e10", 5e10), // completed // (6, 1, um(400), "5e10", 5e10), // completed // (6, 3, um(400), "5e10", 5e10), // completed // (4, 5, um(400), "5e10", 5e10), // doesn't transition enough on p100