Skip to content
Snippets Groups Projects
pa_doublepass_graph.rs 2.29 KiB
use opossum::analyzer::AnalyzerEnergy;
use opossum::error::OpossumError;
use opossum::nodes::{Dummy, NodeReference};
use opossum::OpticScenery;
use std::fs::File;
use std::io::Write;

fn main() -> Result<(), OpossumError> {
    let mut scenery = OpticScenery::new();
    scenery.set_description("PreAmp Doublepass section");
    //let n0 = scenery.add_element("LightSource", Source::default());
    let n1 = scenery.add_element("TFP", Dummy);
    let n2 = scenery.add_element("19mm amp", Dummy);
    //let n3 = scenery.add_element("Faraday", Dummy);
    let n4 = scenery.add_element("0° mirror", Dummy);

    let mut node = NodeReference::from_node(scenery.node(n1).unwrap());
    node.set_inverted(true);
    let n1r = scenery.add_node(node);

    // let mut node= NodeReference::new(scenery.node(n3).unwrap());
    // node.set_inverted(true);
    // let n3r = scenery.add_node(node);

    let mut node = NodeReference::from_node(scenery.node(n2)?);
    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")?;
    scenery.connect_nodes(n2, "rear", n4, "front")?;
    //  scenery.connect_nodes(n3, "rear", n4, "front").unwrap();
    scenery.connect_nodes(n4, "rear", n2r, "rear")?;
    // scenery.connect_nodes(n3r, "front", n2r, "rear").unwrap();
    scenery.connect_nodes(n2r, "front", n1r, "rear")?;

    // let mut group = NodeGroup::new();
    // let g_n1 = group.add_node(OpticNode::new("Beamsplitter", Dummy));
    // let g_n2 = group.add_node(OpticNode::new("Lens", Dummy));
    // let g_n3 = group.add_node(OpticNode::new("Lens2", Dummy));
    // let g_n4  = group.add_node(OpticNode::new("Det", Detector::default()));

    // 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();
    write!(output, "{}", scenery.to_dot()?).unwrap();
    // write!(output, "{}", scenery.to_dot()).unwrap();

    let mut analyzer = AnalyzerEnergy::new(&scenery);
    print!("Analyze...");
    analyzer.analyze()?;
    println!("Sucessful");

    Ok(())
}