Previous 199869 Revisions Next

r30701 Wednesday 28th May, 2014 at 18:03:05 UTC by Couriersud
Dead code removal
[src/emu/netlist/analog]nld_solver.c nld_solver.h

trunk/src/emu/netlist/analog/nld_solver.c
r30700r30701
2323// ----------------------------------------------------------------------------------------
2424
2525ATTR_COLD netlist_matrix_solver_t::netlist_matrix_solver_t()
26: m_owner(NULL)
27, m_calculations(0)
26: m_calculations(0)
2827{
2928}
3029
r30700r30701
3433        delete m_inps[i];
3534}
3635
37ATTR_COLD void netlist_matrix_solver_t::setup(netlist_analog_net_t::list_t &nets, NETLIB_NAME(solver) &aowner)
36ATTR_COLD void netlist_matrix_solver_t::setup(netlist_analog_net_t::list_t &nets)
3837{
39   m_owner = &aowner;
40
4138   NL_VERBOSE_OUT(("New solver setup\n"));
4239
4340   m_nets.resize(nets.count());
r30700r30701
111108                }
112109                    break;
113110            default:
114               owner().netlist().error("unhandled element found\n");
111               netlist().error("unhandled element found\n");
115112               break;
116113         }
117114      }
r30700r30701
255252ATTR_HOT double netlist_matrix_solver_t::solve()
256253{
257254
258   netlist_time now = owner().netlist().time();
255   netlist_time now = netlist().time();
259256   netlist_time delta = now - m_last_step;
260257
261258   // We are already up to date. Avoid oscillations.
r30700r30701
275272      do
276273      {
277274            update_dynamic();
278            while ((this_resched = vsolve_non_dynamic()) > m_params.m_gs_loops)
279                owner().netlist().warning("Dynamic Solve iterations exceeded .. Consider increasing RESCHED_LOOPS");
275            // Gauss-Seidel will revert to Gaussian elemination if steps exceeded.
276            this_resched = vsolve_non_dynamic();
280277            newton_loops++;
281278      } while (this_resched > 1 && newton_loops < m_params.m_nr_loops);
282279
283280      // reschedule ....
284281      if (this_resched > 1 && !m_Q_sync.net().is_queued())
285282      {
286            owner().netlist().warning("NEWTON_LOOPS exceeded ... reschedule");
283            netlist().warning("NEWTON_LOOPS exceeded ... reschedule");
287284           m_Q_sync.net().reschedule_in_queue(m_params.m_nt_sync_delay);
288285           return 1.0;
289286      }
290287   }
291288   else
292289   {
293      while (vsolve_non_dynamic() > m_params.m_gs_loops)
294            owner().netlist().warning("Non-Dynamic Solve iterations exceeded .. Consider increasing RESCHED_LOOPS");
290      vsolve_non_dynamic();
295291   }
296292   const double next_time_step = compute_next_timestep(delta.as_double());
297293    update_inputs();
r30700r30701
331327}
332328
333329template <int m_N, int _storage_N>
334ATTR_COLD void netlist_matrix_solver_direct_t<m_N, _storage_N>::vsetup(netlist_analog_net_t::list_t &nets, NETLIB_NAME(solver) &owner)
330ATTR_COLD void netlist_matrix_solver_direct_t<m_N, _storage_N>::vsetup(netlist_analog_net_t::list_t &nets)
335331{
336332    m_dim = nets.count();
337   netlist_matrix_solver_t::setup(nets, owner);
333   netlist_matrix_solver_t::setup(nets);
338334
339335   m_terms.clear();
340336   m_rail_start = 0;
r30700r30701
10191015
10201016      register_sub(*ms, pstring::sprintf("Solver %d",m_mat_solvers.count()));
10211017
1022        ms->vsetup(groups[i], *this);
1018        ms->vsetup(groups[i]);
10231019
10241020        m_mat_solvers.add(ms);
10251021
trunk/src/emu/netlist/analog/nld_solver.h
r30700r30701
4646   ATTR_COLD netlist_matrix_solver_t();
4747   ATTR_COLD virtual ~netlist_matrix_solver_t();
4848
49    ATTR_COLD virtual void vsetup(netlist_analog_net_t::list_t &nets,
50            NETLIB_NAME(solver) &owner) = 0;
49    ATTR_COLD virtual void vsetup(netlist_analog_net_t::list_t &nets) = 0;
5150
5251   ATTR_HOT double solve();
5352
5453   ATTR_HOT inline bool is_dynamic() { return m_dynamic.count() > 0; }
5554   ATTR_HOT inline bool is_timestep() { return m_steps.count() > 0; }
5655
57   ATTR_HOT inline const NETLIB_NAME(solver) &owner() const;
58
5956    ATTR_HOT void update_forced();
6057
6158   /* netdevice functions */
r30700r30701
9592       netlist_terminal_t::list_t m_rails;
9693   };
9794
98    ATTR_COLD void setup(netlist_analog_net_t::list_t &nets,
99            NETLIB_NAME(solver) &owner);
95    ATTR_COLD void setup(netlist_analog_net_t::list_t &nets);
10096
101   NETLIB_NAME(solver) *m_owner;
102
10397    // return true if a reschedule is needed ...
10498    ATTR_HOT virtual int vsolve_non_dynamic() = 0;
10599
r30700r30701
143137
144138   virtual ~netlist_matrix_solver_direct_t() {}
145139
146   ATTR_COLD virtual void vsetup(netlist_analog_net_t::list_t &nets, NETLIB_NAME(solver) &owner);
140   ATTR_COLD virtual void vsetup(netlist_analog_net_t::list_t &nets);
147141   ATTR_COLD virtual void reset() { netlist_matrix_solver_t::reset(); }
148142
149143   ATTR_HOT inline const int N() const { if (m_N == 0) return m_dim; else return m_N; }
r30700r30701
254248       netlist_solver_parameters_t m_params;
255249);
256250
257ATTR_HOT inline const NETLIB_NAME(solver) &netlist_matrix_solver_t::owner() const
258{
259   return *m_owner;
260}
261251
262
263252#endif /* NLD_SOLVER_H_ */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team