From f6d1a9ce984bc77465daf53a4cf056d413f7584c Mon Sep 17 00:00:00 2001 From: Udo Eisenbarth <u.eisenbarth@gsi.de> Date: Fri, 28 Jul 2023 16:45:45 +0200 Subject: [PATCH] Add group node example. Analysis seems to work. Display of graph wrong. --- Cargo.lock | 8 +++---- examples/group_test.rs | 51 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 examples/group_test.rs diff --git a/Cargo.lock b/Cargo.lock index f3730bb2..e723310a 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 00000000..f79b2ef2 --- /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(()) +} -- GitLab