diff --git a/opossum/examples/cylindric_lens_test.rs b/opossum/examples/cylindric_lens_test.rs index 6cc0bb4fe0c953d615408a1d50eaf00d87a6a4cd..5d989e664cdf77cb803a542675c8a352c135c730 100644 --- a/opossum/examples/cylindric_lens_test.rs +++ b/opossum/examples/cylindric_lens_test.rs @@ -38,5 +38,6 @@ fn main() -> OpmResult<()> { let mut doc = OpmDocument::new(scenery); doc.add_analyzer(AnalyzerType::RayTrace(RayTraceConfig::default())); + doc.add_analyzer(AnalyzerType::Energy); doc.save_to_file(Path::new("./opossum/playground/cylindric_lens_test.opm")) } diff --git a/opossum/examples/ghost_focus.rs b/opossum/examples/ghost_focus.rs index b1c2720ebdfd1ee5f74ae4891fa502231cb9b0b1..d61fe300ca0dfe47748610f6015be315ddb050f0 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::{ - 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, @@ -17,9 +14,11 @@ use std::path::Path; fn main() -> OpmResult<()> { let mut scenery = NodeGroup::default(); - let i_src = scenery.add_node( - &round_collimated_ray_source(millimeter!(50.0), joule!(2.0), 10)? - )?; + let i_src = scenery.add_node(&round_collimated_ray_source( + millimeter!(50.0), + joule!(2.0), + 10, + )?)?; let i_sd = scenery.add_node(&SpotDiagram::default())?; let mut lens = Lens::default(); diff --git a/opossum/src/main.rs b/opossum/src/main.rs index b4f1eca0242875eed7cc25ad978ea89b7e790ccd..d92ab1d5f08d5de2bbbb970a74ad06d564f9130b 100644 --- a/opossum/src/main.rs +++ b/opossum/src/main.rs @@ -56,11 +56,7 @@ fn create_dot_file(dot_path: &Path, scenery: &NodeGroup) -> OpmResult<()> { .map_err(|e| OpossumError::Other(format!("writing diagram file (.svg) failed: {e}")))?; Ok(()) } -fn create_report_and_data_files( - report_directory: &Path, - analyzer: &dyn Analyzer, - scenery: &NodeGroup, -) -> OpmResult<()> { +fn create_data_dir(report_directory: &Path) -> OpmResult<()> { let data_dir = report_directory.join("data/"); if data_dir.exists() { info!("Delete old report data dir"); @@ -68,9 +64,20 @@ fn create_report_and_data_files( .map_err(|e| OpossumError::Other(format!("removing old data directory failed: {e}")))?; } create_dir(&data_dir) - .map_err(|e| OpossumError::Other(format!("creating data directory failed: {e}")))?; - let mut output = - create_dot_or_report_file_instance(report_directory, "report", "yaml", "detector report")?; + .map_err(|e| OpossumError::Other(format!("creating data directory failed: {e}"))) +} +fn create_report_and_data_files( + report_directory: &Path, + analyzer: &dyn Analyzer, + report_number: usize, + scenery: &NodeGroup, +) -> OpmResult<()> { + let mut output = create_dot_or_report_file_instance( + report_directory, + &format!("report_{report_number}"), + "yaml", + "analysis report", + )?; let analysis_report = analyzer.report(scenery)?; write!( output, @@ -80,7 +87,8 @@ fn create_report_and_data_files( .map_err(|e| OpossumError::Other(format!("writing report file failed: {e}")))?; let mut report_path = report_directory.to_path_buf(); analysis_report.export_data(&report_path)?; - report_path.push("report.html"); + report_path.push(&format!("report_{report_number}.html")); + info!("Write html report to {}", report_path.display()); analysis_report .to_html_report()? .generate_html(&report_path)?; @@ -106,9 +114,9 @@ fn opossum() -> OpmResult<()> { if analyzers.is_empty() { info!("No analyzer defined in document. Stopping here."); } else { - info!("Analyzing..."); - for ana in &analyzers { - let analyzer: &dyn Analyzer = match ana { + create_data_dir(&opossum_args.report_directory)?; + for ana in analyzers.iter().enumerate() { + let analyzer: &dyn Analyzer = match ana.1 { AnalyzerType::Energy => &EnergyAnalyzer::default(), AnalyzerType::RayTrace(config) => &RayTracingAnalyzer::new(config.clone()), AnalyzerType::GhostFocus(config) => &GhostFocusAnalyzer::new(config.clone()), @@ -118,6 +126,7 @@ fn opossum() -> OpmResult<()> { )) } }; + info!("Analysis #{}", ana.0); analyzer.analyze(scenery)?; #[cfg(feature = "bevy")] let analysis_report = create_report_and_data_files( @@ -127,7 +136,7 @@ fn opossum() -> OpmResult<()> { &opossum_args.analyzer, )?; #[cfg(not(feature = "bevy"))] - create_report_and_data_files(&opossum_args.report_directory, analyzer, scenery)?; + create_report_and_data_files(&opossum_args.report_directory, analyzer, ana.0, scenery)?; #[cfg(feature = "bevy")] bevy_main::bevy_main(SceneryBevyData::from_report(&analysis_report)); } @@ -166,6 +175,7 @@ mod test { let report_file = create_report_and_data_files( &Path::new("./files_for_testing/report/_not_valid/"), &EnergyAnalyzer::default(), + 0, &scenery, ); assert!(report_file.is_err()); diff --git a/opossum/src/reporting/html_report.rs b/opossum/src/reporting/html_report.rs index c91082f95bdc5eb1b33914e1f5269ae6ce1c9b05..096357bdde7dc769d9a114b8f0d342c9f729fc63 100644 --- a/opossum/src/reporting/html_report.rs +++ b/opossum/src/reporting/html_report.rs @@ -1,7 +1,5 @@ -use std::{fs, path::Path}; - -use log::info; use serde::Serialize; +use std::{fs, path::Path}; use tinytemplate::TinyTemplate; use crate::error::{OpmResult, OpossumError}; @@ -43,7 +41,6 @@ impl HtmlReport { /// - the base file name could not be determined. /// - the conversion pub fn generate_html(&self, path: &Path) -> OpmResult<()> { - info!("Write html report to {}", path.display()); let mut tt = TinyTemplate::new(); tt.add_template("report", HTML_REPORT) .map_err(|e| OpossumError::Other(e.to_string()))?;