From 02df0db4838e65b2f3bd1475446c7df120d8d13d Mon Sep 17 00:00:00 2001 From: "y.zobus" <y.zobus@gsi.de> Date: Thu, 17 Oct 2024 14:18:11 +0000 Subject: [PATCH] * fix: :bug: wrong description of AR coating in example. worked as intended * fixed ax limit "bug" in hitmap plots --- opossum/examples/ghost_focus.rs | 19 ++++++++----------- opossum/src/nodes/cylindric_lens/mod.rs | 3 +++ opossum/src/nodes/detector.rs | 2 ++ opossum/src/nodes/energy_meter.rs | 2 ++ opossum/src/nodes/fluence_detector.rs | 2 ++ opossum/src/nodes/lens/mod.rs | 2 ++ .../src/nodes/ray_propagation_visualizer.rs | 3 +++ opossum/src/nodes/spectrometer.rs | 3 +++ opossum/src/nodes/wavefront.rs | 3 +++ opossum/src/nodes/wedge/mod.rs | 2 ++ opossum/src/surface/hit_map.rs | 2 +- 11 files changed, 31 insertions(+), 12 deletions(-) diff --git a/opossum/examples/ghost_focus.rs b/opossum/examples/ghost_focus.rs index 338a1102..e2101731 100644 --- a/opossum/examples/ghost_focus.rs +++ b/opossum/examples/ghost_focus.rs @@ -4,10 +4,7 @@ use opossum::{ degree, error::OpmResult, joule, millimeter, - nodes::{ - collimated_line_ray_source, round_collimated_ray_source, Lens, NodeGroup, SpotDiagram, - Wedge, - }, + nodes::{round_collimated_ray_source, Lens, NodeGroup, SpotDiagram, Wedge}, optic_node::{Alignable, OpticNode}, optic_ports::PortType, refractive_index::RefrIndexConst, @@ -19,7 +16,7 @@ fn main() -> OpmResult<()> { let mut scenery = NodeGroup::default(); let i_src = scenery.add_node( // collimated_line_ray_source(millimeter!(50.), joule!(1.), 3)? - round_collimated_ray_source(millimeter!(50.0), joule!(1.0), 1)?, + round_collimated_ray_source(millimeter!(50.0), joule!(1.0), 5)?, )?; let i_sd = scenery.add_node(SpotDiagram::default())?; @@ -44,21 +41,21 @@ fn main() -> OpmResult<()> { degree!(10.0), &RefrIndexConst::new(1.5)?, )? - .with_tilt(degree!(0.0, 0.0, 0.0))?; - wedge.set_coating(&PortType::Input, "front", &CoatingType::Fresnel)?; + .with_tilt(degree!(5.0, 0.0, 0.0))?; wedge.set_coating(&PortType::Input, "front", &CoatingType::Fresnel)?; + wedge.set_coating(&PortType::Output, "rear", &CoatingType::Fresnel)?; let i_w = scenery.add_node(wedge)?; let i_sd2 = scenery.add_node(SpotDiagram::default())?; scenery.connect_nodes(i_src, "out1", i_sd, "in1", millimeter!(20.0))?; - scenery.connect_nodes(i_sd, "out1", i_w, "front", millimeter!(80.0))?; - // scenery.connect_nodes(i_sd, "out1", i_l, "front", millimeter!(80.0))?; + // scenery.connect_nodes(i_sd, "out1", i_w, "front", millimeter!(80.0))?; + scenery.connect_nodes(i_sd, "out1", i_l, "front", millimeter!(80.0))?; // scenery.connect_nodes(i_l, "rear", i_w, "front", millimeter!(70.0))?; - scenery.connect_nodes(i_w, "rear", i_sd2, "in1", millimeter!(70.0))?; + scenery.connect_nodes(i_l, "rear", i_sd2, "in1", millimeter!(70.0))?; let mut doc = OpmDocument::new(scenery); let mut config = GhostFocusConfig::default(); - config.set_max_bounces(1); + config.set_max_bounces(2); doc.add_analyzer(AnalyzerType::GhostFocus(config)); doc.save_to_file(Path::new("./opossum/playground/ghost_focus.opm")) } diff --git a/opossum/src/nodes/cylindric_lens/mod.rs b/opossum/src/nodes/cylindric_lens/mod.rs index 5d4157ce..e4480ca4 100644 --- a/opossum/src/nodes/cylindric_lens/mod.rs +++ b/opossum/src/nodes/cylindric_lens/mod.rs @@ -289,10 +289,13 @@ impl OpticNode for CylindricLens { fn reset_data(&mut self) { self.front_surf.set_backwards_rays_cache(Rays::default()); self.front_surf.set_forward_rays_cache(Rays::default()); + self.front_surf.reset_hit_map(); self.rear_surf.set_backwards_rays_cache(Rays::default()); self.rear_surf.set_forward_rays_cache(Rays::default()); + self.rear_surf.reset_hit_map(); } + fn hit_maps(&self) -> HashMap<String, HitMap> { let mut map: HashMap<String, HitMap> = HashMap::default(); map.insert("front".to_string(), self.front_surf.hit_map().to_owned()); diff --git a/opossum/src/nodes/detector.rs b/opossum/src/nodes/detector.rs index 7f457954..49a90f28 100644 --- a/opossum/src/nodes/detector.rs +++ b/opossum/src/nodes/detector.rs @@ -76,6 +76,8 @@ impl OpticNode for Detector { } fn reset_data(&mut self) { self.light_data = None; + todo!(); + // self.surface.reset_hit_map(); } } diff --git a/opossum/src/nodes/energy_meter.rs b/opossum/src/nodes/energy_meter.rs index 29d3a498..e7cfa5fd 100644 --- a/opossum/src/nodes/energy_meter.rs +++ b/opossum/src/nodes/energy_meter.rs @@ -183,6 +183,8 @@ impl OpticNode for EnergyMeter { } fn reset_data(&mut self) { self.light_data = None; + todo!(); + // self.surface.reset_hit_map(); } } diff --git a/opossum/src/nodes/fluence_detector.rs b/opossum/src/nodes/fluence_detector.rs index 9de6d6e8..ecfaa697 100644 --- a/opossum/src/nodes/fluence_detector.rs +++ b/opossum/src/nodes/fluence_detector.rs @@ -159,6 +159,8 @@ impl OpticNode for FluenceDetector { } fn reset_data(&mut self) { self.light_data = None; + todo!(); + // self.surface.reset_hit_map(); } } diff --git a/opossum/src/nodes/lens/mod.rs b/opossum/src/nodes/lens/mod.rs index 899a0759..f709f0d2 100644 --- a/opossum/src/nodes/lens/mod.rs +++ b/opossum/src/nodes/lens/mod.rs @@ -374,9 +374,11 @@ impl OpticNode for Lens { fn reset_data(&mut self) { self.front_surf.set_backwards_rays_cache(Rays::default()); self.front_surf.set_forward_rays_cache(Rays::default()); + self.front_surf.reset_hit_map(); self.rear_surf.set_backwards_rays_cache(Rays::default()); self.rear_surf.set_forward_rays_cache(Rays::default()); + self.rear_surf.reset_hit_map(); } fn hit_maps(&self) -> HashMap<String, HitMap> { let mut map: HashMap<String, HitMap> = HashMap::default(); diff --git a/opossum/src/nodes/ray_propagation_visualizer.rs b/opossum/src/nodes/ray_propagation_visualizer.rs index 2aaa6296..522cb92f 100644 --- a/opossum/src/nodes/ray_propagation_visualizer.rs +++ b/opossum/src/nodes/ray_propagation_visualizer.rs @@ -156,6 +156,9 @@ impl OpticNode for RayPropagationVisualizer { } fn reset_data(&mut self) { self.light_data = None; + todo!(); + + // self.surface.reset_hit_map(); } } diff --git a/opossum/src/nodes/spectrometer.rs b/opossum/src/nodes/spectrometer.rs index df788b1d..ab92d23d 100644 --- a/opossum/src/nodes/spectrometer.rs +++ b/opossum/src/nodes/spectrometer.rs @@ -199,6 +199,9 @@ impl OpticNode for Spectrometer { } fn reset_data(&mut self) { self.light_data = None; + todo!(); + + // self.surface.reset_hit_map(); } } diff --git a/opossum/src/nodes/wavefront.rs b/opossum/src/nodes/wavefront.rs index 1edbb0de..1f5de720 100644 --- a/opossum/src/nodes/wavefront.rs +++ b/opossum/src/nodes/wavefront.rs @@ -264,6 +264,9 @@ impl OpticNode for WaveFront { } fn reset_data(&mut self) { self.light_data = None; + todo!(); + + // self.surface.reset_hit_map(); } } impl From<WaveFrontData> for Proptype { diff --git a/opossum/src/nodes/wedge/mod.rs b/opossum/src/nodes/wedge/mod.rs index 996d708d..6e365b29 100644 --- a/opossum/src/nodes/wedge/mod.rs +++ b/opossum/src/nodes/wedge/mod.rs @@ -245,9 +245,11 @@ impl OpticNode for Wedge { fn reset_data(&mut self) { self.front_surf.set_backwards_rays_cache(Rays::default()); self.front_surf.set_forward_rays_cache(Rays::default()); + self.front_surf.reset_hit_map(); self.rear_surf.set_backwards_rays_cache(Rays::default()); self.rear_surf.set_forward_rays_cache(Rays::default()); + self.rear_surf.reset_hit_map(); } fn hit_maps(&self) -> HashMap<String, HitMap> { let mut map: HashMap<String, HitMap> = HashMap::default(); diff --git a/opossum/src/surface/hit_map.rs b/opossum/src/surface/hit_map.rs index f6636472..3e736d76 100644 --- a/opossum/src/surface/hit_map.rs +++ b/opossum/src/surface/hit_map.rs @@ -133,7 +133,7 @@ impl Plottable for HitMap { ); let y_limits = AxLims::create_useful_axlims( 0.1f64.mul_add(-y_diff, y_min), - 0.1f64.mul_add(-y_diff, y_min), + 0.1f64.mul_add(y_diff, y_max), ); plt_type.set_plot_param(&PlotArgs::XLim(x_limits))?; -- GitLab