diff --git a/opossum/examples/ghost_focus.rs b/opossum/examples/ghost_focus.rs index 338a11020e49ed32f7f5a684c42a4fb7ee36dae3..e210173197ce03d2c847130763698d5ff9e2ec6e 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 5d4157cec693f31b09ee1ce33fa35cc407013aaa..e4480ca4bd1a4a0a2e7ec9a0f18af7a11255f751 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 7f4579546e61625a092a620f2240a2f52b98ffa1..49a90f28fabb0060935a1ab5fce9f79719402730 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 29d3a498ae9150a95d7424aacc22a21970a82df2..e7cfa5fd8dd7ae485ba2eaa2aba940f7f6c94a67 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 9de6d6e8cdecd59fa2d3475a125c1019690efae9..ecfaa6977b33fd14190fc8722136f9c6963cbe5c 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 899a075975b27409f1ed98e0005ee5168e8d9371..f709f0d286e1d1def8e4c9ad1779078b679898f4 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 2aaa6296aab4d12e28bcfacee341bdb1b4b38814..522cb92fecf228c87be3b271c926c4c56acee230 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 df788b1d1470735e5f9c9426a66908f3e83d142f..ab92d23da7879fbc3cd62a2c42b636a7d4d6bcb9 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 1edbb0de3be1082adc3830201591de27368f7fb0..1f5de720cbab427e7f0d16b4cfbe1ed03e8b61e7 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 996d708d2160a31ddf296558dbd66ea49f4da385..6e365b29b844a9b1b275a1f6054eb2c1310e5d8e 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 f663647222ca783c981fc6aefc90cee64c56f4aa..3e736d7667f28ed6b140f527278285213c11efa7 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))?;