Skip to content
Snippets Groups Projects
source_detector_test.rs 1.47 KiB
Newer Older
use std::fs::File;
use std::io::Write;

use opossum::{
    lightdata::{LightData, LightDataEnergy},
Udo Eisenbarth's avatar
Udo Eisenbarth committed
    nodes::{Detector, Source, BeamSplitter},
    optic_scenery::OpticScenery, analyzer::AnalyzerEnergy,
};

fn main() {
    let mut scenery = OpticScenery::new();
    scenery.set_description("src - detector demo".into());

    let i_s = scenery.add_element(
        "Source",
Udo Eisenbarth's avatar
Udo Eisenbarth committed
        Source::new(LightData::Energy(LightDataEnergy { energy: 1.0 })),
Udo Eisenbarth's avatar
Udo Eisenbarth committed
    let i_bs=scenery.add_element("Beam splitter", BeamSplitter::new(0.6));
    let i_d1 = scenery.add_element("Detector 1", Detector::default());
    let i_d2 = scenery.add_element("Detector 2", Detector::default());
    scenery.connect_nodes(i_s, "out1", i_bs, "input1").unwrap();
    scenery.connect_nodes(i_bs, "out1_trans1_refl2", i_d1, "in1").unwrap();
    scenery.connect_nodes(i_bs, "out2_trans2_refl1", i_d2, "in1").unwrap();
    
    let path = "src_detector.dot";
    let mut output = File::create(path).unwrap();
    write!(output, "{}", scenery.to_dot()).unwrap();
    println!("{:?}", scenery.node_ref(i_s).unwrap());
    println!("{:?}", scenery.node_ref(i_d1).unwrap());
    println!("{:?}", scenery.node_ref(i_d2).unwrap());
    let mut analyzer=AnalyzerEnergy::new(&scenery);
    print!("Analyze...");
    match analyzer.analyze() {
        Ok(_) => println!("Sucessful"),
        Err(e) => println!("Error: {}",e)
    }
    println!("{:?}", scenery.node_ref(i_d1).unwrap());
    println!("{:?}", scenery.node_ref(i_d2).unwrap());