diff options
Diffstat (limited to 'src/lib/netlist/solver/nld_ms_direct.h')
-rw-r--r-- | src/lib/netlist/solver/nld_ms_direct.h | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/src/lib/netlist/solver/nld_ms_direct.h b/src/lib/netlist/solver/nld_ms_direct.h index e1583d27be6..9a73cacaa10 100644 --- a/src/lib/netlist/solver/nld_ms_direct.h +++ b/src/lib/netlist/solver/nld_ms_direct.h @@ -8,13 +8,13 @@ #ifndef NLD_MS_DIRECT_H_ #define NLD_MS_DIRECT_H_ -#include <netlist/plib/mat_cr.h> -#include <netlist/plib/vector_ops.h> #include <algorithm> #include <cmath> +#include <netlist/plib/mat_cr.h> +#include <netlist/plib/vector_ops.h> -#include "nld_solver.h" #include "nld_matrix_solver.h" +#include "nld_solver.h" namespace netlist { @@ -32,13 +32,13 @@ public: matrix_solver_direct_t(netlist_base_t &anetlist, const pstring &name, const solver_parameters_t *params, const std::size_t size); matrix_solver_direct_t(netlist_base_t &anetlist, const pstring &name, const eSortType sort, const solver_parameters_t *params, const std::size_t size); - virtual ~matrix_solver_direct_t() override; + ~matrix_solver_direct_t() override = default; - virtual void vsetup(analog_net_t::list_t &nets) override; - virtual void reset() override { matrix_solver_t::reset(); } + void vsetup(analog_net_t::list_t &nets) override; + void reset() override { matrix_solver_t::reset(); } protected: - virtual unsigned vsolve_non_dynamic(const bool newton_raphson) override; + unsigned vsolve_non_dynamic(const bool newton_raphson) override; unsigned solve_non_dynamic(const bool newton_raphson); constexpr std::size_t size() const { return (SIZE > 0) ? static_cast<std::size_t>(SIZE) : m_dim; } @@ -46,7 +46,7 @@ protected: void LE_solve(); template <typename T> - void LE_back_subst(T & RESTRICT x); + void LE_back_subst(T & x); FT &A(std::size_t r, std::size_t c) { return m_A[r * m_pitch + c]; } FT &RHS(std::size_t r) { return m_A[r * m_pitch + size()]; } @@ -67,11 +67,6 @@ private: // ---------------------------------------------------------------------------------------- template <typename FT, int SIZE> -matrix_solver_direct_t<FT, SIZE>::~matrix_solver_direct_t() -{ -} - -template <typename FT, int SIZE> void matrix_solver_direct_t<FT, SIZE>::vsetup(analog_net_t::list_t &nets) { matrix_solver_t::setup_base(nets); @@ -85,8 +80,9 @@ void matrix_solver_direct_t<FT, SIZE>::vsetup(analog_net_t::list_t &nets) t->m_nzrd.push_back(static_cast<unsigned>(size())); } + // FIXME: This shouldn't be necessary ... for (std::size_t k = 0; k < size(); k++) - state().save(*this, RHS(k), plib::pfmt("RHS.{1}")(k)); + state().save(*this, RHS(k), this->name(), plib::pfmt("RHS.{1}")(k)); } @@ -141,10 +137,10 @@ void matrix_solver_direct_t<FT, SIZE>::LE_solve() for (std::size_t j = i + 1; j < kN; j++) { const FT f1 = - A(j,i) * f; - if (f1 != NL_FCONST(0.0)) + if (f1 != plib::constants<FT>::zero) { - const FT * RESTRICT pi = &A(i,i+1); - FT * RESTRICT pj = &A(j,i+1); + const FT * pi = &A(i,i+1); + FT * pj = &A(j,i+1); #if 1 plib::vec_add_mult_scalar_p(kN-i,pi,f1,pj); #else @@ -164,7 +160,7 @@ void matrix_solver_direct_t<FT, SIZE>::LE_solve() template <typename FT, int SIZE> template <typename T> void matrix_solver_direct_t<FT, SIZE>::LE_back_subst( - T & RESTRICT x) + T & x) { const std::size_t kN = size(); |