diff --git a/Cargo.lock b/Cargo.lock index f3730bb2359e8b4ff353194d9c0a6580dc290dce..e723310ae6fecf75a986ac7315e8057b75ac5a6f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -806,15 +806,15 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.175" +version = "1.0.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d25439cd7397d044e2748a6fe2432b5e85db703d6d097bd014b3c0ad1ebff0b" +checksum = "63ba2516aa6bf82e0b19ca8b50019d52df58455d3cf9bdaf6315225fdd0c560a" [[package]] name = "serde_derive" -version = "1.0.175" +version = "1.0.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b23f7ade6f110613c0d63858ddb8b94c1041f550eab58a16b371bdf2c9c80ab4" +checksum = "401797fe7833d72109fedec6bfcbe67c0eed9b99772f26eb8afd261f0abc6fd3" dependencies = [ "proc-macro2", "quote", diff --git a/examples/group_test.rs b/examples/group_test.rs new file mode 100644 index 0000000000000000000000000000000000000000..f79b2ef2c1c61655bb230bb42c4171ef7c8e6da7 --- /dev/null +++ b/examples/group_test.rs @@ -0,0 +1,51 @@ +use std::fs::File; +use std::io::Write; + +use opossum::{ + analyzer::AnalyzerEnergy, + error::OpossumError, + lightdata::{DataEnergy, LightData}, + nodes::{Detector, Dummy, NodeGroup, Source}, + optic_node::OpticNode, + optic_scenery::OpticScenery, + spectrum::create_he_ne_spectrum, +}; + +fn main() -> Result<(), OpossumError> { + let mut scenery = OpticScenery::new(); + scenery.set_description("optic group demo"); + + let i_s = scenery.add_element( + "Source", + Source::new(LightData::Energy(DataEnergy { + spectrum: create_he_ne_spectrum(1.0), + })), + ); + let i_d = scenery.add_element("Detector", Detector::default()); + + let mut group = NodeGroup::new(); + let i_g_d1 = group.add_node(OpticNode::new("dummy1", Dummy)); + let i_g_d2 = group.add_node(OpticNode::new("dummy2", Dummy)); + group.connect_nodes(i_g_d1, "rear", i_g_d2, "front")?; + group.map_input_port(i_g_d1, "front", "input")?; + group.map_output_port(i_g_d2, "rear", "output")?; + let i_g = scenery.add_element("test group", group); + + scenery.connect_nodes(i_s, "out1", i_g, "input")?; + scenery.connect_nodes(i_g, "output", i_d, "in1")?; + + let path = "group_test.dot"; + let mut output = File::create(path).unwrap(); + write!(output, "{}", scenery.to_dot()).unwrap(); + + scenery.report(); + println!(""); + let mut analyzer = AnalyzerEnergy::new(&scenery); + print!("Analyze..."); + analyzer.analyze()?; + println!("Sucessful"); + println!(""); + scenery.report(); + + Ok(()) +}