memoize the region lookups for better perf
102s => 57s
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
//! clock -> mem2 coupling
|
||||
|
||||
use coremem::{Driver, mat, meas, SpirvDriver};
|
||||
use coremem::geom::{region, Cube, Dilate, Meters, Region, Spiral, SwapYZ, Torus, Translate, Wrap};
|
||||
use coremem::geom::{region, Cube, Dilate, Memoize, Meters, Region, Spiral, SwapYZ, Torus, Translate, Wrap};
|
||||
use coremem::stim::{CurlStimulus, Gated, Sinusoid1, TimeVarying1 as _};
|
||||
use log::info;
|
||||
|
||||
@@ -71,7 +71,7 @@ fn run_sim(id: u32, p: Params) {
|
||||
let set1_region = Torus::new_xz(set1_center, p.wire_set_major, p.wire_minor);
|
||||
let set2_region = Torus::new_xz(set2_center, p.wire_set_major, p.wire_minor);
|
||||
|
||||
let coupling_region1 = Dilate::new(
|
||||
let coupling_region1 = Memoize::new(Dilate::new(
|
||||
Wrap::new_about(
|
||||
Translate::new(
|
||||
SwapYZ::new(region::and(
|
||||
@@ -85,9 +85,9 @@ fn run_sim(id: u32, p: Params) {
|
||||
),
|
||||
p.wire_wrap_dilation,
|
||||
p.wire_wrap_dilation / (p.wire_wrap_iters as f32),
|
||||
);
|
||||
));
|
||||
|
||||
let coupling_region2 = Dilate::new(
|
||||
let coupling_region2 = Memoize::new(Dilate::new(
|
||||
Wrap::new_about(
|
||||
Translate::new(
|
||||
SwapYZ::new(region::and_not(
|
||||
@@ -101,7 +101,7 @@ fn run_sim(id: u32, p: Params) {
|
||||
),
|
||||
p.wire_wrap_dilation,
|
||||
p.wire_wrap_dilation / (p.wire_wrap_iters as f32),
|
||||
);
|
||||
));
|
||||
|
||||
let coupling_wire_top = Cube::new_centered(
|
||||
ferro_center - Meters::new_y(p.ferro_major + 4.0*p.wire_wrap_minor + 12.0*p.feat_size),
|
||||
@@ -192,8 +192,6 @@ fn run_sim(id: u32, p: Params) {
|
||||
p.feat_size,
|
||||
).unwrap());
|
||||
|
||||
return;
|
||||
|
||||
// mu_r=881.33, starting at H=25 to H=75.
|
||||
let ferro_mat = mat::MHPgram::new(25.0, 881.33, 44000.0);
|
||||
// let ferro_mat = mat::db::conductor(wire_conductivity);
|
||||
@@ -279,6 +277,8 @@ fn run_sim(id: u32, p: Params) {
|
||||
driver.add_measurement(meas::Current::new("couplingtop", coupling_wire_top.clone()));
|
||||
driver.add_measurement(meas::Current::new("couplingbot", coupling_wire_bot.clone()));
|
||||
|
||||
return;
|
||||
|
||||
let prefix = format!("out/{}/{}-{}-{}setmA-{}setps-{}clkmA-{}clkps-{}um-{}:{}wraps",
|
||||
base,
|
||||
base,
|
||||
|
Reference in New Issue
Block a user