diff options
Diffstat (limited to 'src/lib/netlist/solver/nld_ms_gcr.h')
-rw-r--r-- | src/lib/netlist/solver/nld_ms_gcr.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/lib/netlist/solver/nld_ms_gcr.h b/src/lib/netlist/solver/nld_ms_gcr.h index b5601e9d65f..7e8e233d1cc 100644 --- a/src/lib/netlist/solver/nld_ms_gcr.h +++ b/src/lib/netlist/solver/nld_ms_gcr.h @@ -33,7 +33,7 @@ public: : matrix_solver_t(anetlist, name, matrix_solver_t::ASCENDING, params) , m_dim(size) , mat(size) - , m_proc(nullptr) + , m_proc() { } @@ -63,7 +63,8 @@ private: std::vector<unsigned> m_term_cr[storage_N]; mat_cr_t<storage_N> mat; - extsolver m_proc; + //extsolver m_proc; + plib::dynproc<void, double * RESTRICT, double * RESTRICT, double * RESTRICT> m_proc; }; @@ -153,11 +154,19 @@ void matrix_solver_GCR_t<m_N, storage_N>::vsetup(analog_net_t::list_t &nets) if (netlist().lib().isLoaded()) { pstring symname = static_compile_name(); +#if 0 m_proc = this->netlist().lib().template getsym<extsolver>(symname); if (m_proc != nullptr) this->log().verbose("External static solver {1} found ...", symname); else this->log().warning("External static solver {1} not found ...", symname); +#else + m_proc.load(this->netlist().lib(), symname); + if (m_proc.resolved()) + this->log().warning("External static solver {1} found ...", symname); + else + this->log().warning("External static solver {1} not found ...", symname); +#endif } } @@ -375,7 +384,8 @@ unsigned matrix_solver_GCR_t<m_N, storage_N>::vsolve_non_dynamic(const bool newt /* now solve it */ - if (m_proc != nullptr) + //if (m_proc != nullptr) + if (m_proc.resolved()) { //static_solver(m_A, RHS); m_proc(mat.A, RHS, new_V); |