size_t get_solver_id(solver.matrix_solver_t net) { for (size_t i = 0; i < m_mat_solvers.size(); i++) { if (m_mat_solvers[i] == net) { return(i); } } return(size_t.MaxValue); //return std::numeric_limits<std::size_t>::max(); }
// NETLIB_UPDATE_PARAMI(); public void reschedule(solver.matrix_solver_t solv, netlist_time ts) { netlist_time_ext now = exec().time(); netlist_time_ext sched = now + ts; m_queue.remove <bool_const_false>(solv); m_queue.push <bool_const_false>(new plib.pqentry_t <netlist_time, nld_solver_solver_ptr>(sched, solv)); if (m_Q_step.net().is_queued()) { if (m_Q_step.net().next_scheduled_time() > sched) { m_Q_step.net().toggle_and_push_to_queue(ts); } } else { m_Q_step.net().toggle_and_push_to_queue(ts); } }
//NETLIB_HANDLERI(termhandler); //NETLIB_HANDLER(VCCS, termhandler) protected void termhandler() { solver.matrix_solver_t solv = null; // only called if connected to a rail net ==> notify the solver to recalculate if ((solv = m_IP.solver()) != null) { solv.solve_now(); } else if ((solv = m_IN.solver()) != null) { solv.solve_now(); } else if ((solv = m_OP.solver()) != null) { solv.solve_now(); } else if ((solv = m_ON.solver()) != null) { solv.solve_now(); } }
public void set_solver(solver.matrix_solver_t solver) { m_solver = solver; }
// ---------------------------------------------------------------------------------------- // analog_net_t // ---------------------------------------------------------------------------------------- public analog_net_t(netlist_state_t nl, string aname, detail.core_terminal_t railterminal = null) : base(nl, aname, railterminal) { m_cur_Analog = new state_var <Pointer <nl_fptype> >(this, "m_cur_Analog", new Pointer <nl_fptype>(new std.vector <nl_fptype>(1))); //, m_cur_Analog(*this, "m_cur_Analog", nlconst::zero()) m_solver = null; }