diff --git a/crates/applications/multi_core_inverter/src/main.rs b/crates/applications/multi_core_inverter/src/main.rs index 4064776..f76c5c2 100644 --- a/crates/applications/multi_core_inverter/src/main.rs +++ b/crates/applications/multi_core_inverter/src/main.rs @@ -100,7 +100,8 @@ struct Params { input_magnitude: f32, clock_phase_duration: f32, clock_decay: f32, // exp decay half-life - conductivity: f32, // wire conductivity + ctl_conductivity: f32, + coupling_conductivity: f32, // 's' = core (ferromagnetic part) s_major: f32, s_minor: f32, @@ -179,8 +180,12 @@ impl Params { self.clock_decay = p; self } - fn with_conductivity(mut self, p: f32) -> Self { - self.conductivity = p; + fn with_ctl_conductivity(mut self, p: f32) -> Self { + self.ctl_conductivity = p; + self + } + fn with_coupling_conductivity(mut self, p: f32) -> Self { + self.coupling_conductivity = p; self } } @@ -278,7 +283,8 @@ fn main() { input_magnitude: 0.0, clock_phase_duration: 0.0, clock_decay: 0.0, - conductivity: 0.0, + ctl_conductivity: 0.0, + coupling_conductivity: 0.0, // 's' = core (ferromagnetic part) s_major: um(160), s_minor: um(30), @@ -301,7 +307,8 @@ fn main() { .with_clock_phase_duration(ps(160000)) .with_clock_decay(ps(12000)) .with_input_magnitude(2.0e7) - .with_conductivity(1e6) + .with_ctl_conductivity(1e6) + .with_coupling_conductivity(1e6) ); run_sim( "33-160ns-12000ps-1e7A", @@ -310,7 +317,8 @@ fn main() { .with_clock_phase_duration(ps(160000)) .with_clock_decay(ps(12000)) .with_input_magnitude(1.0e7) - .with_conductivity(1e6) + .with_ctl_conductivity(1e6) + .with_coupling_conductivity(1e6) ); run_sim( "34-320ns-12000ps-1e7A", @@ -319,7 +327,8 @@ fn main() { .with_clock_phase_duration(ps(320000)) .with_clock_decay(ps(12000)) .with_input_magnitude(1.0e7) - .with_conductivity(1e6) + .with_ctl_conductivity(1e6) + .with_coupling_conductivity(1e6) ); let deferred = || run_sim( "35-320ns-24000ps-1e7A", @@ -328,7 +337,8 @@ fn main() { .with_clock_phase_duration(ps(320000)) .with_clock_decay(ps(24000)) .with_input_magnitude(1.0e7) - .with_conductivity(1e6) + .with_ctl_conductivity(1e6) + .with_coupling_conductivity(1e6) ); run_sim( "36-40ns-4000ps-1e7A-1e5cond", @@ -337,7 +347,8 @@ fn main() { .with_clock_phase_duration(ps(40000)) .with_clock_decay(ps(4000)) .with_input_magnitude(1.0e7) - .with_conductivity(1e5) + .with_ctl_conductivity(1e5) + .with_coupling_conductivity(1e5) ); run_sim( "37-40ns-4000ps-5e8A-1e5cond", @@ -346,7 +357,8 @@ fn main() { .with_clock_phase_duration(ps(40000)) .with_clock_decay(ps(4000)) .with_input_magnitude(5e8) - .with_conductivity(1e5) + .with_ctl_conductivity(1e5) + .with_coupling_conductivity(1e5) ); run_sim( "38-40ns-4000ps-2e8A-1e5cond", @@ -355,7 +367,8 @@ fn main() { .with_clock_phase_duration(ps(40000)) .with_clock_decay(ps(4000)) .with_input_magnitude(2e8) - .with_conductivity(1e5) + .with_ctl_conductivity(1e5) + .with_coupling_conductivity(1e5) ); run_sim( "39-40ns-4000ps-2e9A-1e4cond", @@ -364,7 +377,8 @@ fn main() { .with_clock_phase_duration(ps(40000)) .with_clock_decay(ps(4000)) .with_input_magnitude(2e9) - .with_conductivity(1e4) + .with_ctl_conductivity(1e4) + .with_coupling_conductivity(1e4) ); run_sim( "40-40ns-4000ps-2e10A-1e3cond", @@ -373,7 +387,8 @@ fn main() { .with_clock_phase_duration(ps(40000)) .with_clock_decay(ps(4000)) .with_input_magnitude(2e10) - .with_conductivity(1e3) + .with_ctl_conductivity(1e3) + .with_coupling_conductivity(1e3) ); run_sim( "41-40ns-4000ps-2e6A-1e7cond", @@ -382,7 +397,8 @@ fn main() { .with_clock_phase_duration(ps(40000)) .with_clock_decay(ps(4000)) .with_input_magnitude(2e6) - .with_conductivity(1e7) + .with_ctl_conductivity(1e7) + .with_coupling_conductivity(1e7) ); run_sim( "42-40ns-4000ps-2e5A-1e8cond", @@ -391,7 +407,8 @@ fn main() { .with_clock_phase_duration(ps(40000)) .with_clock_decay(ps(4000)) .with_input_magnitude(2e5) - .with_conductivity(1e8) + .with_ctl_conductivity(1e8) + .with_coupling_conductivity(1e8) ); deferred(); @@ -431,8 +448,8 @@ fn run_sim( assert_eq!(stim.len(), num_cores as usize); - let wire_mat = IsomorphicConductor::new(params.conductivity.cast::()); - // let ferro_mat = wire_mat; + let ctl_mat = IsomorphicConductor::new(params.ctl_conductivity.cast::()); + let coupling_mat = IsomorphicConductor::new(params.coupling_conductivity.cast::()); let ferro_mat = Ferroxcube3R1MH::new(); let last_core = num_cores - 1; @@ -443,13 +460,13 @@ fn run_sim( driver.add_classical_boundary(sim_padding); //////// create the wires and toroids - driver.fill_region(¶ms.input0(), wire_mat); - driver.fill_region(¶ms.sense(last_core), wire_mat); + driver.fill_region(¶ms.input0(), coupling_mat); + driver.fill_region(¶ms.sense(last_core), coupling_mat); for core in 0..num_cores { driver.fill_region(¶ms.s(core), ferro_mat); - driver.fill_region(¶ms.ctl(core), wire_mat); + driver.fill_region(¶ms.ctl(core), ctl_mat); if core != last_core { - driver.fill_region(¶ms.coupling(core), wire_mat); + driver.fill_region(¶ms.coupling(core), coupling_mat); } }