void GainStream::inspect_aux(int level, std::stringstream *ss) { MuStream::inspect_aux(level, ss); inspect_indent(level, ss); *ss << "gain() = " << gain() << std::endl; if (signal_source()) { inspect_indent(level, ss); *ss << "signal_source()" << std::endl; signal_source()->inspect_aux(level+1, ss); } if (gain_source()) { inspect_indent(level, ss); *ss << "gain_source()" << std::endl; gain_source()->inspect_aux(level+1, ss); } }
GainStream *GainStream::clone() { GainStream *c = new GainStream(); c->set_gain(gain()); if (signal_source_) c->set_signal_source(signal_source()->clone()); if (gain_source_) c->set_gain_source(gain_source()->clone()); return c; }
// main program: int sc_main (int argc, char *argv[]) { sc_core::sc_set_time_resolution(1.0, sc_core::SC_NS); sc_core::sc_signal <double> angle; ab_signal <electrical, parallel> mains; ab_signal <electrical, series> output; sc_core::sc_clock pwm("PWM", sc_core::sc_time(0.1, sc_core::SC_MS)); sc_core::sc_trace_file *f = create_tab_trace_file("TRACES", 5e-6); mains.trace(f, "MAINS"); output.trace(f, "OUTPUT"); generator <double> signal_source("SOURCE1", sine(10, 100, 0, 1024)); signal_source(angle); source <electrical> supply("GENERATOR1", cfg::across); supply.input(angle); supply.port(mains); mosfet_2p m("M1", 0.75, 2.5); m(mains, output, pwm); m.port[0] <<= 2 ohm; m.port[1] <<= 2 ohm; R_load r("R1", 2); r.port <<= 2 ohm; r(output); diode_1p d("D1", 0.8, 2); d.port <<= 2 ohm; d(-output); sc_core::sc_start(sc_core::sc_time(10e-3, sc_core::SC_SEC)); close_tab_trace_file(f); return 0; }