memoize the region lookups for better perf

102s => 57s
This commit is contained in:
2022-01-11 16:21:05 -08:00
parent 3cbab61aa0
commit 8bda52d973
6 changed files with 63 additions and 14 deletions

View File

@@ -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,