Skip to content
Snippets Groups Projects
Commit eadf1c38 authored by y.zobus's avatar y.zobus
Browse files

Added Source and Detector Nodes

parent abbe2dcc
No related branches found
No related tags found
No related merge requests found
use opossum::nodes::{NodeDummy, NodeGroup, NodeReference};
use opossum::nodes::{NodeDummy, NodeGroup, NodeReference, NodeSource, NodeDetector};
use opossum::optic_node::OpticNode;
use opossum::optic_scenery::OpticScenery;
use opossum::analyzer::AnalyzerEnergy;
......@@ -8,6 +8,7 @@ use std::io::Write;
fn main() {
let mut scenery = OpticScenery::new();
scenery.set_description("PreAmp Doublepass section".into());
let n0 = scenery.add_element("LightSource", NodeSource);
let n1 = scenery.add_element("TFP", NodeDummy);
let n2 = scenery.add_element("19mm amp", NodeDummy);
let n3 = scenery.add_element("Faraday", NodeDummy);
......@@ -28,6 +29,7 @@ fn main() {
node.set_inverted(true);
let n2r = scenery.add_node(node);
scenery.connect_nodes(n0, "out1", n1, "front").unwrap();
scenery.connect_nodes(n1, "rear", n2, "front").unwrap();
scenery.connect_nodes(n2, "rear", n3, "front").unwrap();
scenery.connect_nodes(n3, "rear", n4, "front").unwrap();
......@@ -39,8 +41,11 @@ fn main() {
let g_n1 = group.add_node(OpticNode::new("Beamsplitter", NodeDummy));
let g_n2 = group.add_node(OpticNode::new("Lens", NodeDummy));
let g_n3 = group.add_node(OpticNode::new("Lens2", NodeDummy));
let g_n4 = group.add_node(OpticNode::new("Det", NodeDetector));
group.connect_nodes(g_n1, "rear", g_n2, "front").unwrap();
group.connect_nodes(g_n2, "rear", g_n3, "front").unwrap();
group.connect_nodes(g_n3, "rear", g_n4, "in1").unwrap();
scenery.add_node(OpticNode::new("CamBox", group));
let path = "graph.dot";
let mut output = File::create(path).unwrap();
......
......@@ -3,8 +3,12 @@ mod node_dummy;
mod node_reference;
mod node_group;
mod node_beam_splitter;
mod node_source;
mod node_detector;
pub use node_dummy::NodeDummy;
pub use node_reference::NodeReference;
pub use node_group::NodeGroup;
pub use node_beam_splitter::NodeBeamSplitter;
\ No newline at end of file
pub use node_beam_splitter::NodeBeamSplitter;
pub use node_source::NodeSource;
pub use node_detector::NodeDetector;
\ No newline at end of file
use crate::{optic_node::{Optical, Dottable}, optic_ports::OpticPorts};
pub struct NodeDetector;
impl Optical for NodeDetector {
fn node_type(&self) -> &str {
"light sink: detector"
}
fn ports(&self) -> OpticPorts {
let mut ports=OpticPorts::new();
ports.add_input("in1").unwrap();
ports
}
}
impl Dottable for NodeDetector{}
use crate::{optic_node::{Optical, Dottable}, optic_ports::OpticPorts};
pub struct NodeSource;
impl Optical for NodeSource {
fn node_type(&self) -> &str {
"light source"
}
fn ports(&self) -> OpticPorts {
let mut ports=OpticPorts::new();
ports.add_output("out1").unwrap();
ports
}
}
impl Dottable for NodeSource{}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment