Minor cleanup to Render size
This commit is contained in:
@@ -4,18 +4,19 @@ use coremem::stim::{Stimulus, Sinusoid};
|
|||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
coremem::init_logging();
|
coremem::init_logging();
|
||||||
let feat_size = 5e-6; // feature size
|
let feat_size = 10e-6; // feature size
|
||||||
let from_m = |m| (m/feat_size) as u32;
|
let from_m = |m| (m/feat_size) as u32;
|
||||||
let m_to_um = |px| (px * 1e6) as u32;
|
let m_to_um = |px| (px * 1e6) as u32;
|
||||||
let to_m = |px| px as Flt * feat_size;
|
let to_m = |px| px as Flt * feat_size;
|
||||||
let width = 2000e-6;
|
let width = 1000e-6;
|
||||||
let depth = 500e-6;
|
let depth = 600e-6;
|
||||||
let conductor_inner_rad = 0e-6;
|
let conductor_inner_rad = 0e-6;
|
||||||
let conductor_outer_rad = 5e-6;
|
let conductor_outer_rad = 19e-6;
|
||||||
let ferro_inner_rad = 220e-6;
|
let ferro_inner_rad = 100e-6;
|
||||||
let ferro_outer_rad = 300e-6;
|
let ferro_outer_rad = 200e-6;
|
||||||
let buffer = 100e-6;
|
let buffer = 50e-6;
|
||||||
let peak_current = 1e-80;
|
let peak_current = 2e3;
|
||||||
|
let current_duration = 1e-9; // half-wavelength of the sine wave
|
||||||
let conductivity = 1.0e5;
|
let conductivity = 1.0e5;
|
||||||
let half_width = width * 0.5;
|
let half_width = width * 0.5;
|
||||||
let half_depth = depth * 0.5;
|
let half_depth = depth * 0.5;
|
||||||
@@ -24,14 +25,15 @@ fn main() {
|
|||||||
let depth_px = from_m(depth);
|
let depth_px = from_m(depth);
|
||||||
let size_px = Index((width_px, width_px, depth_px).into());
|
let size_px = Index((width_px, width_px, depth_px).into());
|
||||||
let mut driver = Driver::new(size_px, feat_size);
|
let mut driver = Driver::new(size_px, feat_size);
|
||||||
//driver.set_steps_per_frame(8);
|
driver.set_steps_per_frame(8);
|
||||||
//driver.set_steps_per_frame(40);
|
//driver.set_steps_per_frame(40);
|
||||||
//driver.set_steps_per_frame(200);
|
//driver.set_steps_per_frame(200);
|
||||||
driver.add_y4m_renderer(&*format!("toroid25d-flt{}-{}-feat{}um-{:.1e}A--radii{}um-{}um-{}um.y4m",
|
driver.add_y4m_renderer(&*format!("toroid25d-flt{}-{}-feat{}um-{:.1e}A-{:.1e}s--radii{}um-{}um-{}um.y4m",
|
||||||
std::mem::size_of::<Flt>() * 8,
|
std::mem::size_of::<Flt>() * 8,
|
||||||
*size_px,
|
*size_px,
|
||||||
m_to_um(feat_size),
|
m_to_um(feat_size),
|
||||||
peak_current,
|
peak_current,
|
||||||
|
current_duration,
|
||||||
m_to_um(conductor_outer_rad),
|
m_to_um(conductor_outer_rad),
|
||||||
m_to_um(ferro_inner_rad),
|
m_to_um(ferro_inner_rad),
|
||||||
m_to_um(ferro_outer_rad),
|
m_to_um(ferro_outer_rad),
|
||||||
@@ -90,12 +92,13 @@ fn main() {
|
|||||||
}
|
}
|
||||||
let boundary_xy = half_width - ferro_outer_rad - buffer;
|
let boundary_xy = half_width - ferro_outer_rad - buffer;
|
||||||
println!("boundary: {}um", m_to_um(boundary_xy));
|
println!("boundary: {}um", m_to_um(boundary_xy));
|
||||||
let boundary = Index((from_m(boundary_xy), from_m(boundary_xy), 20).into());
|
let boundary = Index((from_m(boundary_xy), from_m(boundary_xy), 0).into());
|
||||||
driver.add_upml_boundary(boundary);
|
driver.add_upml_boundary(boundary);
|
||||||
|
|
||||||
driver.add_stimulus(Stimulus::new(
|
driver.add_stimulus(Stimulus::new(
|
||||||
conductor_region.clone(),
|
conductor_region.clone(),
|
||||||
Sinusoid::new(Vec3::new(0.0, 0.0, peak_current * 1e-18), 1e9)));
|
Sinusoid::from_wavelength(Vec3::new(0.0, 0.0, peak_current), current_duration * 2.0
|
||||||
|
)));
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
driver.step();
|
driver.step();
|
||||||
|
@@ -21,7 +21,7 @@ pub struct Meta;
|
|||||||
|
|
||||||
impl AbstractMeasurement for Meta {
|
impl AbstractMeasurement for Meta {
|
||||||
fn eval(&self, state: &dyn GenericSim) -> String {
|
fn eval(&self, state: &dyn GenericSim) -> String {
|
||||||
format!("{}x{} feat: {:.1e}m", state.width(), state.height(), state.feature_size())
|
format!("{}x{}x{} feat: {:.1e}m", state.width(), state.height(), state.depth(), state.feature_size())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -62,12 +62,13 @@ struct RenderSteps<'a> {
|
|||||||
|
|
||||||
impl<'a> RenderSteps<'a> {
|
impl<'a> RenderSteps<'a> {
|
||||||
fn render(state: &'a dyn GenericSim, measurements: &'a [Box<dyn AbstractMeasurement>], z: u32) -> RgbImage {
|
fn render(state: &'a dyn GenericSim, measurements: &'a [Box<dyn AbstractMeasurement>], z: u32) -> RgbImage {
|
||||||
let mut width = 1920;
|
let mut width = 640;
|
||||||
|
let max_height = 480;
|
||||||
let mut height = width * state.height() / state.width();
|
let mut height = width * state.height() / state.width();
|
||||||
if height > 1080 {
|
if height > max_height {
|
||||||
let stretch = 1080 as f32 / height as f32;
|
let stretch = max_height as f32 / height as f32;
|
||||||
width = (width as f32 * stretch) as _;
|
width = (width as f32 * stretch) as _;
|
||||||
height = 1080;
|
height = max_height;
|
||||||
}
|
}
|
||||||
trace!("rendering at {}x{}", width, height);
|
trace!("rendering at {}x{}", width, height);
|
||||||
let mut me = Self::new(state, measurements, width, height, z);
|
let mut me = Self::new(state, measurements, width, height, z);
|
||||||
|
@@ -57,6 +57,9 @@ impl Sinusoid {
|
|||||||
omega: freq * consts::TWO_PI,
|
omega: freq * consts::TWO_PI,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
pub fn from_wavelength(amp: Vec3, lambda: Flt) -> Self {
|
||||||
|
Self::new(amp, 1.0/lambda)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TimeVarying for Sinusoid {
|
impl TimeVarying for Sinusoid {
|
||||||
|
Reference in New Issue
Block a user