optimize the Dilate operation

30s => 15s
This commit is contained in:
2022-01-11 15:15:23 -08:00
parent af0e955b0f
commit a9b1f42e0c
2 changed files with 4 additions and 7 deletions

View File

@@ -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 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 set2_region = Torus::new_xz(set2_center, p.wire_set_major, p.wire_minor);
let coupling_region1 = Dilate::new_iterated( let coupling_region1 = Dilate::new(
Wrap::new_about( Wrap::new_about(
Translate::new( Translate::new(
SwapYZ::new(region::and( SwapYZ::new(region::and(
@@ -83,11 +83,11 @@ fn run_sim(id: u32, p: Params) {
1.0, // one half-rev => y=1.0 1.0, // one half-rev => y=1.0
ferro1_center, ferro1_center,
), ),
p.wire_wrap_dilation,
p.wire_wrap_dilation / (p.wire_wrap_iters as f32), p.wire_wrap_dilation / (p.wire_wrap_iters as f32),
p.wire_wrap_iters,
); );
let coupling_region2 = Dilate::new_iterated( let coupling_region2 = Dilate::new(
Wrap::new_about( Wrap::new_about(
Translate::new( Translate::new(
SwapYZ::new(region::and_not( SwapYZ::new(region::and_not(
@@ -99,8 +99,8 @@ fn run_sim(id: u32, p: Params) {
1.0, // one half-rev => y=1.0 1.0, // one half-rev => y=1.0
ferro2_center, ferro2_center,
), ),
p.wire_wrap_dilation,
p.wire_wrap_dilation / (p.wire_wrap_iters as f32), p.wire_wrap_dilation / (p.wire_wrap_iters as f32),
p.wire_wrap_iters,
); );
let coupling_wire_top = Cube::new_centered( let coupling_wire_top = Cube::new_centered(

View File

@@ -250,9 +250,6 @@ impl Dilate {
pub fn new<T: Region + 'static>(inner: T, rad: f32, res: f32) -> Self { pub fn new<T: Region + 'static>(inner: T, rad: f32, res: f32) -> Self {
Self { inner: Box::new(inner), rad, res } Self { inner: Box::new(inner), rad, res }
} }
pub fn new_iterated<T: Region + 'static>(inner: T, resolution: f32, iters: usize) -> Self {
Self::new(inner, resolution * iters as f32, resolution)
}
} }
#[typetag::serde] #[typetag::serde]