Parameterize Vec3 over Real type. BROKEN TESTS
sim::pml_boundary_conditions_{x,y,z} are broken, among others. Unsure if this is new. I don't see an obvious cause yet.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
use crate::geom::{Index, Meters, Vec2, Vec3, Vec3u};
|
||||
use crate::{Material as _, MaterialExt as _};
|
||||
use crate::mat;
|
||||
use crate::real::{Real as _, ToFloat as _};
|
||||
use crate::sim::{Cell, GenericSim, StaticSim};
|
||||
use crate::meas::AbstractMeasurement;
|
||||
use crossterm::{cursor, QueueableCommand as _};
|
||||
@@ -152,7 +153,7 @@ impl<'a, S: GenericSim> RenderSteps<'a, S> {
|
||||
trace!("rendering at {}x{} with z={}", width, height, z);
|
||||
let mut me = Self::new(state, measurements, width, height, z);
|
||||
me.render_scalar_field(10.0, false, 2, |cell| {
|
||||
cell.mat().conductivity().mag() as f32 + if cell.mat().is_vacuum() {
|
||||
cell.mat().conductivity().mag().to_f32() + if cell.mat().is_vacuum() {
|
||||
0.0
|
||||
} else {
|
||||
5.0
|
||||
@@ -193,12 +194,12 @@ impl<'a, S: GenericSim> RenderSteps<'a, S> {
|
||||
let y_prop = y_px as f32 / self.im.height() as f32;
|
||||
let y_m = y_prop * (self.sim.height() as f32 * self.sim.feature_size() as f32);
|
||||
let z_m = self.z as f32 * self.sim.feature_size() as f32;
|
||||
self.sim.sample(Meters(Vec3::new(x_m as _, y_m as _, z_m as _)))
|
||||
self.sim.sample(Meters(Vec3::new(x_m, y_m, z_m)))
|
||||
}
|
||||
|
||||
////////////// Ex/Ey/Bz configuration ////////////
|
||||
fn render_b_z_field(&mut self, scale: f32) {
|
||||
self.render_scalar_field(1.0e-4 * scale, true, 1, |cell| cell.b().z() as f32);
|
||||
self.render_scalar_field(1.0e-4 * scale, true, 1, |cell| cell.b().z().to_f32());
|
||||
}
|
||||
fn render_e_xy_field(&mut self, scale: f32) {
|
||||
self.render_vector_field(Rgb([0xff, 0xff, 0xff]), 100.0 * scale, |cell| cell.e().xy().to_f32());
|
||||
@@ -209,24 +210,24 @@ impl<'a, S: GenericSim> RenderSteps<'a, S> {
|
||||
}
|
||||
////////////// Magnitude configuration /////////////
|
||||
fn render_b(&mut self, scale: f32) {
|
||||
self.render_scalar_field(1.0e-3 * scale, false, 1, |cell| cell.b().mag() as f32);
|
||||
self.render_scalar_field(1.0e-3 * scale, false, 1, |cell| cell.b().mag().to_f32());
|
||||
}
|
||||
fn render_current(&mut self, scale: f32) {
|
||||
self.render_scalar_field(1.0e1 * scale, false, 0, |cell| {
|
||||
cell.e().elem_mul(cell.mat().conductivity()).mag() as f32
|
||||
cell.e().elem_mul(cell.mat().conductivity()).mag().to_f32()
|
||||
});
|
||||
}
|
||||
|
||||
////////////// Bx/By/Ez configuration ////////////
|
||||
fn render_e_z_field(&mut self, scale: f32) {
|
||||
self.render_scalar_field(1e4 * scale, true, 1, |cell| cell.e().z() as f32);
|
||||
self.render_scalar_field(1e4 * scale, true, 1, |cell| cell.e().z().to_f32());
|
||||
}
|
||||
fn render_b_xy_field(&mut self, scale: f32) {
|
||||
self.render_vector_field(Rgb([0xff, 0xff, 0xff]), 1.0e-9 * scale, |cell| cell.b().xy().to_f32());
|
||||
}
|
||||
|
||||
fn render_m(&mut self, scale: f32) {
|
||||
self.render_scalar_field(1.0e5 * scale, false, 1, |cell| cell.mat().m().mag() as f32);
|
||||
self.render_scalar_field(1.0e5 * scale, false, 1, |cell| cell.mat().m().mag().to_f32());
|
||||
self.render_vector_field(Rgb([0xff, 0xff, 0xff]), 1.0e5 * scale, |cell| cell.mat().m().xy().to_f32());
|
||||
}
|
||||
|
||||
@@ -558,7 +559,7 @@ impl<S: GenericSim> Renderer<S> for PlotlyRenderer {
|
||||
yv.push(y);
|
||||
zv.push(z);
|
||||
// opacities.push((cell.e().mag() * 0.1).min(1.0) as f64)
|
||||
let mat = cell.mat().conductivity().mag() + if cell.mat().is_vacuum() {
|
||||
let mat = cell.mat().conductivity().mag().to_f32() + if cell.mat().is_vacuum() {
|
||||
0.0
|
||||
} else {
|
||||
5.0
|
||||
@@ -566,9 +567,9 @@ impl<S: GenericSim> Renderer<S> for PlotlyRenderer {
|
||||
//let g = scale_unsigned_to_u8(mat, 10.0);
|
||||
//let r = scale_unsigned_to_u8(cell.mat().m().mag(), 100.0);
|
||||
//let b = scale_unsigned_to_u8(cell.e().mag(), 1e2);
|
||||
let r = scale_unsigned_to_u8(cell.mat().m().mag() as f32, 100.0);
|
||||
let g = scale_unsigned_to_u8(cell.e().mag() as f32, 1e2);
|
||||
let b = scale_unsigned_to_u8(mat as f32, 10.0);
|
||||
let r = scale_unsigned_to_u8(cell.mat().m().mag().to_f32(), 100.0);
|
||||
let g = scale_unsigned_to_u8(cell.e().mag().to_f32(), 1e2);
|
||||
let b = scale_unsigned_to_u8(mat, 10.0);
|
||||
let alpha = 1.0;
|
||||
colors.push(Rgba::new(r, g, b, alpha));
|
||||
}
|
||||
@@ -666,6 +667,7 @@ impl<S: GenericSim + Clone + Serialize> Renderer<S> for SerializerRenderer {
|
||||
}
|
||||
fn render(&self, state: &S, measurements: &[Box<dyn AbstractMeasurement>], _config: RenderConfig) {
|
||||
let frame = SerializedFrame {
|
||||
// N.B.: `to_static` isn't 100% necessary here, but it tends to result in a smaller file.
|
||||
state: state.to_static(),
|
||||
measurements: measurements.iter().cloned().collect(),
|
||||
};
|
||||
|
Reference in New Issue
Block a user