-
Udo Eisenbarth authored
not yet tested.
Udo Eisenbarth authorednot yet tested.
source_detector_test.rs 1.50 KiB
use std::fs::File;
use std::io::Write;
use opossum::{
analyzer::AnalyzerEnergy,
error::OpossumError,
lightdata::{DataEnergy, LightData},
nodes::{BeamSplitter, Detector, IdealFilter, Source, FilterType},
optic_scenery::OpticScenery, spectrum::create_he_ne_spectrum,
};
fn main() -> Result<(), OpossumError> {
let mut scenery = OpticScenery::new();
scenery.set_description("src - detector demo".into());
let i_s = scenery.add_element(
"Source",
Source::new(LightData::Energy(DataEnergy {
spectrum: create_he_ne_spectrum(1.0),
})),
);
let i_bs = scenery.add_element("Beam splitter", BeamSplitter::new(0.6));
let i_f = scenery.add_element("Filter", IdealFilter::new(FilterType::Constant(0.5))?);
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")?;
scenery.connect_nodes(i_bs, "out1_trans1_refl2", i_d1, "in1")?;
scenery.connect_nodes(i_bs, "out2_trans2_refl1", i_f, "front")?;
scenery.connect_nodes(i_f, "rear", i_d2, "in1")?;
let path = "src_detector.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(())
}