Non-uniform current stimuli can be specified easier

This commit is contained in:
2020-12-06 20:56:34 -08:00
parent d619383fb9
commit d9176cdf06
5 changed files with 123 additions and 21 deletions

View File

@@ -1,6 +1,6 @@
use coremem::{Driver, Flt, mat, meas};
use coremem::geom::{Coord, Index, Meters, Sphere, Torus, Vec2, Vec3};
use coremem::stim::{Stimulus, Sinusoid};
use coremem::stim::{CurlStimulus, Sinusoid};
use log::trace;
fn main() {
@@ -29,7 +29,7 @@ fn main() {
let size_px = Index((width_px, width_px, depth_px).into());
let mut driver = Driver::new(size_px, feat_size);
driver.set_steps_per_frame(120);
let base = "wrapped_torus-3";
let base = "wrapped_torus-4";
let ferro_region = Torus::new_xy(Meters((half_width, half_width, half_depth).into()), ferro_major, ferro_minor);
let drive_region = Torus::new_xz(Meters((half_width - ferro_major, half_width, half_depth).into()), wire_major, wire_minor);
let sense_region = Torus::new_xz(Meters((half_width + ferro_major, half_width, half_depth).into()), wire_major, wire_minor);
@@ -43,19 +43,15 @@ fn main() {
println!("boundary: {}um; {}um", m_to_um(boundary_xy), m_to_um(boundary_z));
driver.add_upml_boundary(Meters((boundary_xy, boundary_xy, boundary_z).into()));
driver.add_stimulus(Stimulus::new(
Sphere::new(
Meters((half_width - ferro_major + wire_major, half_width, half_depth).into()),
wire_minor),
Sinusoid::from_wavelength(Vec3::new(0.0, 0.0, peak_current), current_duration * 2.0)
driver.add_stimulus(CurlStimulus::new(
drive_region.clone(),
Sinusoid::from_wavelength(Vec3::new(0.0, 0.0, peak_current), current_duration * 2.0),
drive_region.center(),
drive_region.axis(),
));
driver.add_measurement(meas::Current::new("sense", sense_region.clone()));
driver.add_measurement(meas::Current::new("drive", drive_region.clone()));
// TODO: simulate current in the drive element
//driver.add_stimulus(Stimulus::new(
// conductor_region.clone(),
// Sinusoid::from_wavelength(Vec3::new(0.0, 0.0, peak_current), current_duration * 2.0
//)));
let prefix = format!("{}/{}-flt{}-{}-feat{}um-{}mA-{}ps--radii{}um-{}um-{}um-{}um",
base,