transient_sin/
transient_sin.rs1use reda_spsim::{netlist::Circuit, probe::Drawer, simulate::ngspice::NgSpiceShared, SineVoltage, TranCommandBuilder};
2use reda_unit::u;
3
4fn main_result() -> Result<(), Box<dyn std::error::Error>> {
5 let mut circuit = Circuit::new("Transient sin");
6
7 circuit.add_sine_voltage("input", "in", "0", SineVoltage::sin(u!(1 V), u!(100 Hz)));
8 circuit.add_resistor("1", "in", "1", u!(3 kΩ));
9 circuit.add_resistor("2", "1", "0", u!(1 kΩ));
10
11 let simulate = NgSpiceShared::default()?;
12 let mut simulator = circuit.simulator(simulate);
13 let command = TranCommandBuilder::default()
14 .t_stop(u!(0.02 s))
15 .t_step(u!(1 us))
16 .build().unwrap();
17 let analysis = simulator.run_tran(&command)?;
18
19 analysis.draw_nodes(&Drawer::default(), &["in"], "./images/transient-sin-nodes.png")?;
20 analysis.draw_all_branchs(&Drawer::default(), "./images/transient-sin-branchs.png")?;
21
22 Ok(())
23}
24
25fn main() {
26 if let Err(e) = main_result() {
27 eprintln!("{}", e);
28 }
29}