diff --git a/src/meas.rs b/src/meas.rs index 7b24fc4..ebbce2e 100644 --- a/src/meas.rs +++ b/src/meas.rs @@ -56,7 +56,7 @@ impl AbstractMeasurement for Current { } } -/// Mz +/// M pub struct Magnetization(pub u32, pub u32); impl AbstractMeasurement for Magnetization { @@ -66,23 +66,32 @@ impl AbstractMeasurement for Magnetization { } } -/// Bz +/// B pub struct MagneticFlux(pub u32, pub u32); impl AbstractMeasurement for MagneticFlux { fn eval(&self, state: &SimSnapshot) -> String { let b = state.get(self.0, self.1).b(); - format!("Bz({}, {}): ({:.2e}, {:.2e}, {:.2e})", self.0, self.1, b.x(), b.y(), b.z()) + format!("B({}, {}): ({:.2e}, {:.2e}, {:.2e})", self.0, self.1, b.x(), b.y(), b.z()) } } -/// Hz +/// H pub struct MagneticStrength(pub u32, pub u32); impl AbstractMeasurement for MagneticStrength { fn eval(&self, state: &SimSnapshot) -> String { let h = state.get(self.0, self.1).h(); - format!("Hz({}, {}): ({:.2e}, {:.2e}, {:.2e})", self.0, self.1, h.x(), h.y(), h.z()) + format!("H({}, {}): ({:.2e}, {:.2e}, {:.2e})", self.0, self.1, h.x(), h.y(), h.z()) + } +} + +pub struct ElectricField(pub u32, pub u32); + +impl AbstractMeasurement for ElectricField { + fn eval(&self, state: &SimSnapshot) -> String { + let e = state.get(self.0, self.1).e(); + format!("E({}, {}): ({:.2e}, {:.2e}, {:.2e})", self.0, self.1, e.x(), e.y(), e.z()) } } diff --git a/src/render.rs b/src/render.rs index 43486ce..466b4b8 100644 --- a/src/render.rs +++ b/src/render.rs @@ -63,7 +63,7 @@ impl<'a> RenderSteps<'a> { let mut me = Self::new(state, measurements); me.render_scalar_field(10.0, false, 2, |cell| cell.mat().conductivity().mag()); me.render_scalar_field(100.0, true, 0, |cell| cell.mat().m().mag()); - if true { + if false { me.render_b_z_field(); me.render_e_xy_field(); } else { @@ -97,10 +97,10 @@ impl<'a> RenderSteps<'a> { ////////////// Bx/By/Ez configuration //////////// fn render_e_z_field(&mut self) { - self.render_scalar_field(100.0, true, 1, |cell| cell.e().z()); + self.render_scalar_field(1e4, true, 1, |cell| cell.e().z()); } fn render_b_xy_field(&mut self) { - self.render_vector_field(Rgb([0xff, 0xff, 0xff]), 1.0e-4, |cell| cell.b().xy()); + self.render_vector_field(Rgb([0xff, 0xff, 0xff]), 1.0e-9, |cell| cell.b().xy()); } fn render_vector_field) -> Point>(&mut self, color: Rgb, typical: Flt, measure: F) { diff --git a/src/sim.rs b/src/sim.rs index f2f4971..ac2ed95 100644 --- a/src/sim.rs +++ b/src/sim.rs @@ -256,7 +256,7 @@ impl Cell { let delta_ex_y = inv_feature_size * (down.ex() - self.ex()); let nabla_e = Vec3::from((delta_ez_y - delta_ey_z, delta_ex_z - delta_ez_x, delta_ey_x - delta_ex_y)); - let delta_b = -nabla_e * delta_t; + let delta_b = -nabla_e * delta_t; // TODO: should scale delta_t by 2? let h = self.mat.step_h(&self.state, delta_b); Cell { state: CellState {