summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/netlist/analog/nld_solver.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/netlist/analog/nld_solver.h')
-rw-r--r--src/emu/netlist/analog/nld_solver.h112
1 files changed, 56 insertions, 56 deletions
diff --git a/src/emu/netlist/analog/nld_solver.h b/src/emu/netlist/analog/nld_solver.h
index 99bb45d7e5b..ca8129bf207 100644
--- a/src/emu/netlist/analog/nld_solver.h
+++ b/src/emu/netlist/analog/nld_solver.h
@@ -15,7 +15,7 @@
#define SOLVER(_name, _freq) \
NET_REGISTER_DEV(solver, _name) \
- PARAM(_name.FREQ, _freq)
+ PARAM(_name.FREQ, _freq)
// ----------------------------------------------------------------------------------------
// solver
@@ -27,9 +27,9 @@ class NETLIB_NAME(solver);
struct netlist_solver_parameters_t
{
- double m_accuracy;
- double m_convergence_factor;
- int m_resched_loops;
+ double m_accuracy;
+ double m_convergence_factor;
+ int m_resched_loops;
};
class netlist_matrix_solver_t
@@ -39,23 +39,23 @@ public:
typedef netlist_core_device_t::list_t dev_list_t;
netlist_matrix_solver_t() : m_owner(NULL) {}
- virtual ~netlist_matrix_solver_t() {}
+ virtual ~netlist_matrix_solver_t() {}
ATTR_COLD virtual void setup(netlist_net_t::list_t &nets, NETLIB_NAME(solver) &owner);
// return true if a reschedule is needed ...
- ATTR_HOT virtual int solve_non_dynamic() = 0;
+ ATTR_HOT virtual int solve_non_dynamic() = 0;
ATTR_HOT virtual void step(const netlist_time delta);
- ATTR_HOT bool solve();
+ ATTR_HOT bool solve();
ATTR_HOT void update_inputs();
- ATTR_HOT void update_dynamic();
+ ATTR_HOT void update_dynamic();
ATTR_HOT void schedule();
ATTR_HOT inline bool is_dynamic() { return m_dynamic.count() > 0; }
- ATTR_HOT inline bool is_timestep() { return m_steps.count() > 0; }
+ ATTR_HOT inline bool is_timestep() { return m_steps.count() > 0; }
ATTR_HOT inline const NETLIB_NAME(solver) &owner() const;
ATTR_COLD virtual void reset();
@@ -67,9 +67,9 @@ protected:
dev_list_t m_dynamic;
netlist_core_terminal_t::list_t m_inps;
dev_list_t m_steps;
- netlist_time m_last_step;
+ netlist_time m_last_step;
- NETLIB_NAME(solver) *m_owner;
+ NETLIB_NAME(solver) *m_owner;
};
template <int m_N, int _storage_N>
@@ -77,40 +77,40 @@ class netlist_matrix_solver_direct_t: public netlist_matrix_solver_t
{
public:
- netlist_matrix_solver_direct_t() : netlist_matrix_solver_t() {}
+ netlist_matrix_solver_direct_t() : netlist_matrix_solver_t() {}
- virtual ~netlist_matrix_solver_direct_t() {}
+ virtual ~netlist_matrix_solver_direct_t() {}
- ATTR_COLD virtual void setup(netlist_net_t::list_t &nets, NETLIB_NAME(solver) &owner);
- ATTR_COLD virtual void reset() { netlist_matrix_solver_t::reset(); }
- ATTR_HOT virtual int solve_non_dynamic();
+ ATTR_COLD virtual void setup(netlist_net_t::list_t &nets, NETLIB_NAME(solver) &owner);
+ ATTR_COLD virtual void reset() { netlist_matrix_solver_t::reset(); }
+ ATTR_HOT virtual int solve_non_dynamic();
- ATTR_HOT inline const int N() const { return (m_N == 0) ? m_nets.count() : m_N; }
+ ATTR_HOT inline const int N() const { return (m_N == 0) ? m_nets.count() : m_N; }
protected:
- ATTR_HOT inline void build_LE(double (* RESTRICT A)[_storage_N], double (* RESTRICT RHS));
- ATTR_HOT inline void gauss_LE(double (* RESTRICT A)[_storage_N],
- double (* RESTRICT RHS),
- double (* RESTRICT x));
- ATTR_HOT inline double delta(
- const double (* RESTRICT RHS),
- const double (* RESTRICT V));
- ATTR_HOT inline void store(const double (* RESTRICT RHS), const double (* RESTRICT V));
+ ATTR_HOT inline void build_LE(double (* RESTRICT A)[_storage_N], double (* RESTRICT RHS));
+ ATTR_HOT inline void gauss_LE(double (* RESTRICT A)[_storage_N],
+ double (* RESTRICT RHS),
+ double (* RESTRICT x));
+ ATTR_HOT inline double delta(
+ const double (* RESTRICT RHS),
+ const double (* RESTRICT V));
+ ATTR_HOT inline void store(const double (* RESTRICT RHS), const double (* RESTRICT V));
- double m_RHS[_storage_N]; // right hand side - contains currents
+ double m_RHS[_storage_N]; // right hand side - contains currents
private:
- ATTR_COLD int get_net_idx(netlist_net_t *net);
+ ATTR_COLD int get_net_idx(netlist_net_t *net);
- struct terms_t{
- int net_this;
- int net_other;
- netlist_terminal_t *term;
- };
- int m_term_num;
- int m_rail_start;
- terms_t m_terms[100];
+ struct terms_t{
+ int net_this;
+ int net_other;
+ netlist_terminal_t *term;
+ };
+ int m_term_num;
+ int m_rail_start;
+ terms_t m_terms[100];
};
template <int m_N, int _storage_N>
@@ -118,42 +118,42 @@ class netlist_matrix_solver_gauss_seidel_t: public netlist_matrix_solver_t
{
public:
- netlist_matrix_solver_gauss_seidel_t() : netlist_matrix_solver_t() {}
+ netlist_matrix_solver_gauss_seidel_t() : netlist_matrix_solver_t() {}
- virtual ~netlist_matrix_solver_gauss_seidel_t() {}
+ virtual ~netlist_matrix_solver_gauss_seidel_t() {}
- ATTR_COLD virtual void setup(netlist_net_t::list_t &nets, NETLIB_NAME(solver) &owner)
- {
- netlist_matrix_solver_t::setup(nets, owner);
- m_fallback.m_params = m_params;
- m_fallback.setup(nets, owner);
- }
+ ATTR_COLD virtual void setup(netlist_net_t::list_t &nets, NETLIB_NAME(solver) &owner)
+ {
+ netlist_matrix_solver_t::setup(nets, owner);
+ m_fallback.m_params = m_params;
+ m_fallback.setup(nets, owner);
+ }
- ATTR_HOT int solve_non_dynamic();
+ ATTR_HOT int solve_non_dynamic();
- ATTR_HOT inline const int N() const { if (m_N == 0) return m_nets.count(); else return m_N; }
+ ATTR_HOT inline const int N() const { if (m_N == 0) return m_nets.count(); else return m_N; }
- ATTR_COLD virtual void reset()
- {
- netlist_matrix_solver_t::reset();
- m_fallback.reset();
- }
+ ATTR_COLD virtual void reset()
+ {
+ netlist_matrix_solver_t::reset();
+ m_fallback.reset();
+ }
private:
- netlist_matrix_solver_direct_t<m_N, _storage_N> m_fallback;
+ netlist_matrix_solver_direct_t<m_N, _storage_N> m_fallback;
};
class netlist_matrix_solver_direct1_t: public netlist_matrix_solver_direct_t<1,1>
{
public:
- ATTR_HOT int solve_non_dynamic();
+ ATTR_HOT int solve_non_dynamic();
private:
};
class netlist_matrix_solver_direct2_t: public netlist_matrix_solver_direct_t<2,2>
{
public:
- ATTR_HOT int solve_non_dynamic();
+ ATTR_HOT int solve_non_dynamic();
private:
};
@@ -170,9 +170,9 @@ NETLIB_DEVICE_WITH_PARAMS(solver,
netlist_param_double_t m_sync_delay;
netlist_param_double_t m_accuracy;
netlist_param_double_t m_convergence;
- netlist_param_double_t m_gmin;
- netlist_param_int_t m_resched_loops;
- netlist_param_int_t m_parallel;
+ netlist_param_double_t m_gmin;
+ netlist_param_int_t m_resched_loops;
+ netlist_param_int_t m_parallel;
netlist_time m_inc;
netlist_time m_last_step;