Skip to main content

resistor_bridge/
resistor_bridge.rs

1use reda_spice::{netlist::Circuit, simulate::ngspice::NgSpiceShared};
2use reda_unit::u;
3
4/// https://pyspice.fabrice-salvaire.fr/releases/v1.4/examples/resistor/resistor-bridge.html
5fn main_result() -> Result<(), Box<dyn std::error::Error>> {
6    let mut circuit = Circuit::new("Resistor Bridge");
7
8    circuit.add_dc_voltage("input", "1", "0", u!(10 V));
9    circuit.add_resistor("1", "1", "2", u!(2 kΩ));
10    circuit.add_resistor("2", "1", "3", u!(1 kΩ));
11    circuit.add_resistor("3", "2", "0", u!(1 kΩ));
12    circuit.add_resistor("4", "3", "0", u!(2 kΩ));
13    circuit.add_resistor("5", "3", "2", u!(2 kΩ));
14
15    let simulate = NgSpiceShared::default()?;
16    let mut simulator = circuit.simulator(simulate);
17    let analysis = simulator.run_op()?;
18
19    for (name, node) in analysis.nodes.iter() {
20        println!("Node {}: {}", name, node)
21    }
22
23    Ok(())
24}
25
26fn main() {
27    if let Err(e) = main_result() {
28        eprintln!("{}", e);
29    }
30}