diff options
Diffstat (limited to 'src/lib/netlist/solver/nld_ms_direct_lu.h')
-rw-r--r-- | src/lib/netlist/solver/nld_ms_direct_lu.h | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/src/lib/netlist/solver/nld_ms_direct_lu.h b/src/lib/netlist/solver/nld_ms_direct_lu.h index c379cf8d055..e7cedc1dd29 100644 --- a/src/lib/netlist/solver/nld_ms_direct_lu.h +++ b/src/lib/netlist/solver/nld_ms_direct_lu.h @@ -8,11 +8,11 @@ #ifndef NLD_MS_DIRECT_H_ #define NLD_MS_DIRECT_H_ -#include <algorithm> - #include "solver/nld_solver.h" #include "solver/nld_matrix_solver.h" +#include <algorithm> + //#define A(r, c) m_A[_r][_c] namespace netlist @@ -36,9 +36,9 @@ public: virtual void vsetup(analog_net_t::list_t &nets) override; virtual void reset() override { matrix_solver_t::reset(); } - inline unsigned N() const { if (m_N == 0) return m_dim; else return m_N; } + unsigned N() const { if (m_N == 0) return m_dim; else return m_N; } - inline int vsolve_non_dynamic(const bool newton_raphson); + int vsolve_non_dynamic(const bool newton_raphson); protected: virtual void add_term(int net_idx, terminal_t *term) override; @@ -139,12 +139,10 @@ protected: nl_double compute_next_timestep(); template <typename T1, typename T2> - inline nl_ext_double &A(const T1 r, const T2 c) { return m_A[r][c]; } + nl_ext_double &A(const T1 r, const T2 c) { return m_A[r][c]; } //nl_double m_A[storage_N][((storage_N + 7) / 8) * 8]; nl_double m_RHS[storage_N]; - nl_double m_last_RHS[storage_N]; // right hand side - contains currents - nl_double m_last_V[storage_N]; terms_for_net_t *m_rails_temp; @@ -355,7 +353,6 @@ void matrix_solver_direct_t<m_N, storage_N>::vsetup(analog_net_t::list_t &nets) * save states */ save(NLNAME(m_RHS)); - save(NLNAME(m_last_RHS)); save(NLNAME(m_last_V)); for (unsigned k = 0; k < N(); k++) @@ -590,13 +587,10 @@ unsigned matrix_solver_direct_t<m_N, storage_N>::solve_non_dynamic(const bool ne } template <unsigned m_N, unsigned storage_N> -inline int matrix_solver_direct_t<m_N, storage_N>::vsolve_non_dynamic(const bool newton_raphson) +int matrix_solver_direct_t<m_N, storage_N>::vsolve_non_dynamic(const bool newton_raphson) { this->build_LE_A(); - this->build_LE_RHS(m_last_RHS); - - for (unsigned i=0, iN=N(); i < iN; i++) - m_RHS[i] = m_last_RHS[i]; + this->build_LE_RHS(m_RHS); return this->solve_non_dynamic(newton_raphson); } @@ -608,11 +602,6 @@ matrix_solver_direct_t<m_N, storage_N>::matrix_solver_direct_t(const solver_para , m_lp_fact(0) { m_rails_temp = palloc_array(terms_for_net_t, N()); - - for (unsigned k = 0; k < N(); k++) - { - m_last_RHS[k] = 0.0; - } } template <unsigned m_N, unsigned storage_N> @@ -626,7 +615,6 @@ matrix_solver_direct_t<m_N, storage_N>::matrix_solver_direct_t(const eSolverType for (unsigned k = 0; k < N(); k++) { m_terms[k] = palloc(terms_for_net_t); - m_last_RHS[k] = 0.0; } } |