summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/solver
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2020-06-28 13:14:16 +0200
committer couriersud <couriersud@gmx.org>2020-06-28 13:14:43 +0200
commitab31af569fb543f4b81fe30c3c37f6c957b09c48 (patch)
tree6a93d3b374bbce8c135b1070283d88d5b48de2a1 /src/lib/netlist/solver
parent3fcdfa0a9b1783f556abe36c9fb927c25c2170ee (diff)
netlist: include file refactoring.
The purpose of this ongoing exercise is to remove unnecessary dependencies in header files. netlist implementations should only have access to what they need. The same applies to device implementations. Core stuff will be moved to the core subdirectory going forward.
Diffstat (limited to 'src/lib/netlist/solver')
-rw-r--r--src/lib/netlist/solver/nld_matrix_solver.cpp4
-rw-r--r--src/lib/netlist/solver/nld_matrix_solver.h5
-rw-r--r--src/lib/netlist/solver/nld_matrix_solver_ext.h2
-rw-r--r--src/lib/netlist/solver/nld_ms_direct.h4
-rw-r--r--src/lib/netlist/solver/nld_ms_direct1.h2
-rw-r--r--src/lib/netlist/solver/nld_ms_direct2.h2
-rw-r--r--src/lib/netlist/solver/nld_ms_gcr.h2
-rw-r--r--src/lib/netlist/solver/nld_ms_gmres.h2
-rw-r--r--src/lib/netlist/solver/nld_ms_sm.h2
-rw-r--r--src/lib/netlist/solver/nld_ms_sor.h2
-rw-r--r--src/lib/netlist/solver/nld_ms_sor_mat.h2
-rw-r--r--src/lib/netlist/solver/nld_ms_w.h3
-rw-r--r--src/lib/netlist/solver/nld_solver.cpp12
-rw-r--r--src/lib/netlist/solver/nld_solver.h5
14 files changed, 25 insertions, 24 deletions
diff --git a/src/lib/netlist/solver/nld_matrix_solver.cpp b/src/lib/netlist/solver/nld_matrix_solver.cpp
index 87ae2de71d7..6eb4878c9b2 100644
--- a/src/lib/netlist/solver/nld_matrix_solver.cpp
+++ b/src/lib/netlist/solver/nld_matrix_solver.cpp
@@ -37,7 +37,7 @@ namespace solver
// ----------------------------------------------------------------------------------------
matrix_solver_t::matrix_solver_t(netlist_state_t &anetlist, const pstring &name,
- const analog_net_t::list_t &nets,
+ const net_list_t &nets,
const solver_parameters_t *params)
: device_t(anetlist, name)
, m_params(*params)
@@ -67,7 +67,7 @@ namespace solver
return &state().setup().get_connected_terminal(*term)->net();
}
- void matrix_solver_t::setup_base(setup_t &setup, const analog_net_t::list_t &nets)
+ void matrix_solver_t::setup_base(setup_t &setup, const net_list_t &nets)
{
log().debug("New solver setup\n");
std::vector<core_device_t *> step_devices;
diff --git a/src/lib/netlist/solver/nld_matrix_solver.h b/src/lib/netlist/solver/nld_matrix_solver.h
index 3fd0e2fd6d9..55af6a34161 100644
--- a/src/lib/netlist/solver/nld_matrix_solver.h
+++ b/src/lib/netlist/solver/nld_matrix_solver.h
@@ -186,6 +186,7 @@ namespace solver
using list_t = std::vector<matrix_solver_t *>;
using fptype = nl_fptype;
using arena_type = plib::mempool_arena<plib::aligned_arena, PALIGN_VECTOROPT>;
+ using net_list_t = plib::aligned_vector<analog_net_t *>;
// after every call to solve, update inputs must be called.
// this can be done as well as a batch to ease parallel processing.
@@ -266,7 +267,7 @@ namespace solver
protected:
matrix_solver_t(netlist_state_t &anetlist, const pstring &name,
- const analog_net_t::list_t &nets,
+ const net_list_t &nets,
const solver_parameters_t *params);
virtual void vsolve_non_dynamic() = 0;
@@ -289,7 +290,7 @@ namespace solver
private:
// base setup - called from constructor
- void setup_base(setup_t &setup, const analog_net_t::list_t &nets) noexcept(false);
+ void setup_base(setup_t &setup, const net_list_t &nets) noexcept(false);
void sort_terms(matrix_sort_type_e sort);
diff --git a/src/lib/netlist/solver/nld_matrix_solver_ext.h b/src/lib/netlist/solver/nld_matrix_solver_ext.h
index 275ef135c69..7541795c2a1 100644
--- a/src/lib/netlist/solver/nld_matrix_solver_ext.h
+++ b/src/lib/netlist/solver/nld_matrix_solver_ext.h
@@ -25,7 +25,7 @@ namespace solver
using float_type = FT;
matrix_solver_ext_t(netlist_state_t &anetlist, const pstring &name,
- const analog_net_t::list_t &nets,
+ const net_list_t &nets,
const solver_parameters_t *params, const std::size_t size)
: matrix_solver_t(anetlist, name, nets, params)
, m_new_V(size)
diff --git a/src/lib/netlist/solver/nld_ms_direct.h b/src/lib/netlist/solver/nld_ms_direct.h
index b32e4d2172b..8cfb6b65273 100644
--- a/src/lib/netlist/solver/nld_ms_direct.h
+++ b/src/lib/netlist/solver/nld_ms_direct.h
@@ -30,7 +30,7 @@ namespace solver
using float_type = FT;
matrix_solver_direct_t(netlist_state_t &anetlist, const pstring &name,
- const analog_net_t::list_t &nets,
+ const matrix_solver_t::net_list_t &nets,
const solver_parameters_t *params, std::size_t size);
void reset() override { matrix_solver_t::reset(); }
@@ -189,7 +189,7 @@ namespace solver
template <typename FT, int SIZE>
matrix_solver_direct_t<FT, SIZE>::matrix_solver_direct_t(netlist_state_t &anetlist, const pstring &name,
- const analog_net_t::list_t &nets,
+ const matrix_solver_t::net_list_t &nets,
const solver_parameters_t *params,
std::size_t size)
: matrix_solver_ext_t<FT, SIZE>(anetlist, name, nets, params, size)
diff --git a/src/lib/netlist/solver/nld_ms_direct1.h b/src/lib/netlist/solver/nld_ms_direct1.h
index e33846ad403..c9188a7dc9c 100644
--- a/src/lib/netlist/solver/nld_ms_direct1.h
+++ b/src/lib/netlist/solver/nld_ms_direct1.h
@@ -25,7 +25,7 @@ namespace solver
using base_type = matrix_solver_direct_t<FT, 1>;
matrix_solver_direct1_t(netlist_state_t &anetlist, const pstring &name,
- const analog_net_t::list_t &nets,
+ const matrix_solver_t::net_list_t &nets,
const solver_parameters_t *params)
: matrix_solver_direct_t<FT, 1>(anetlist, name, nets, params, 1)
{}
diff --git a/src/lib/netlist/solver/nld_ms_direct2.h b/src/lib/netlist/solver/nld_ms_direct2.h
index 365c1cac33e..0fb1345e1a6 100644
--- a/src/lib/netlist/solver/nld_ms_direct2.h
+++ b/src/lib/netlist/solver/nld_ms_direct2.h
@@ -29,7 +29,7 @@ namespace solver
using float_type = FT;
matrix_solver_direct2_t(netlist_state_t &anetlist, const pstring &name,
- const analog_net_t::list_t &nets,
+ const matrix_solver_t::net_list_t &nets,
const solver_parameters_t *params)
: matrix_solver_direct_t<FT, 2>(anetlist, name, nets, params, 2)
{}
diff --git a/src/lib/netlist/solver/nld_ms_gcr.h b/src/lib/netlist/solver/nld_ms_gcr.h
index fb5c675dd14..a5ab9f6c283 100644
--- a/src/lib/netlist/solver/nld_ms_gcr.h
+++ b/src/lib/netlist/solver/nld_ms_gcr.h
@@ -36,7 +36,7 @@ namespace solver
using fptype = typename base_type::fptype;
matrix_solver_GCR_t(netlist_state_t &anetlist, const pstring &name,
- const analog_net_t::list_t &nets,
+ const matrix_solver_t::net_list_t &nets,
const solver_parameters_t *params, const std::size_t size)
: matrix_solver_ext_t<FT, SIZE>(anetlist, name, nets, params, size)
, mat(static_cast<typename mat_type::index_type>(size))
diff --git a/src/lib/netlist/solver/nld_ms_gmres.h b/src/lib/netlist/solver/nld_ms_gmres.h
index 837c0bc780e..47d00e7e2ef 100644
--- a/src/lib/netlist/solver/nld_ms_gmres.h
+++ b/src/lib/netlist/solver/nld_ms_gmres.h
@@ -35,7 +35,7 @@ namespace solver
// This is already preconditioning.
matrix_solver_GMRES_t(netlist_state_t &anetlist, const pstring &name,
- analog_net_t::list_t &nets,
+ matrix_solver_t::net_list_t &nets,
const solver_parameters_t *params,
const std::size_t size)
: matrix_solver_direct_t<FT, SIZE>(anetlist, name, nets, params, size)
diff --git a/src/lib/netlist/solver/nld_ms_sm.h b/src/lib/netlist/solver/nld_ms_sm.h
index fd11a32a102..85c4731050e 100644
--- a/src/lib/netlist/solver/nld_ms_sm.h
+++ b/src/lib/netlist/solver/nld_ms_sm.h
@@ -55,7 +55,7 @@ namespace solver
static constexpr const std::size_t storage_N = 100;
matrix_solver_sm_t(netlist_state_t &anetlist, const pstring &name,
- const analog_net_t::list_t &nets,
+ const matrix_solver_t::net_list_t &nets,
const solver_parameters_t *params, const std::size_t size)
: matrix_solver_ext_t<FT, SIZE>(anetlist, name, nets, params, size)
, m_cnt(0)
diff --git a/src/lib/netlist/solver/nld_ms_sor.h b/src/lib/netlist/solver/nld_ms_sor.h
index 6b1a21afd39..a828a1cd715 100644
--- a/src/lib/netlist/solver/nld_ms_sor.h
+++ b/src/lib/netlist/solver/nld_ms_sor.h
@@ -30,7 +30,7 @@ namespace solver
using float_type = FT;
matrix_solver_SOR_t(netlist_state_t &anetlist, const pstring &name,
- analog_net_t::list_t &nets,
+ matrix_solver_t::net_list_t &nets,
const solver_parameters_t *params, const std::size_t size)
: matrix_solver_direct_t<FT, SIZE>(anetlist, name, nets, params, size)
, m_lp_fact(*this, "m_lp_fact", 0)
diff --git a/src/lib/netlist/solver/nld_ms_sor_mat.h b/src/lib/netlist/solver/nld_ms_sor_mat.h
index 2d29d0f01cd..f725213228c 100644
--- a/src/lib/netlist/solver/nld_ms_sor_mat.h
+++ b/src/lib/netlist/solver/nld_ms_sor_mat.h
@@ -30,7 +30,7 @@ namespace solver
using float_type = FT;
matrix_solver_SOR_mat_t(netlist_state_t &anetlist, const pstring &name,
- const analog_net_t::list_t &nets,
+ const matrix_solver_t::net_list_t &nets,
const solver_parameters_t *params, std::size_t size)
: matrix_solver_direct_t<FT, SIZE>(anetlist, name, nets, params, size)
, m_omega(*this, "m_omega", static_cast<float_type>(params->m_gs_sor))
diff --git a/src/lib/netlist/solver/nld_ms_w.h b/src/lib/netlist/solver/nld_ms_w.h
index 598a4b9e516..fde53aac884 100644
--- a/src/lib/netlist/solver/nld_ms_w.h
+++ b/src/lib/netlist/solver/nld_ms_w.h
@@ -61,7 +61,7 @@ namespace solver
static constexpr const std::size_t storage_N = 100;
matrix_solver_w_t(netlist_state_t &anetlist, const pstring &name,
- const analog_net_t::list_t &nets,
+ const matrix_solver_t::net_list_t &nets,
const solver_parameters_t *params, const std::size_t size)
: matrix_solver_ext_t<FT, SIZE>(anetlist, name, nets, params, size)
, m_cnt(0)
@@ -79,7 +79,6 @@ namespace solver
template <typename T>
void LE_compute_x(T & x);
-
template <typename T1, typename T2>
float_ext_type &A(const T1 &r, const T2 &c) { return m_A[r][c]; }
template <typename T1, typename T2>
diff --git a/src/lib/netlist/solver/nld_solver.cpp b/src/lib/netlist/solver/nld_solver.cpp
index b38616945f9..c3a42f0721f 100644
--- a/src/lib/netlist/solver/nld_solver.cpp
+++ b/src/lib/netlist/solver/nld_solver.cpp
@@ -86,7 +86,7 @@ namespace devices
// FIXME: should be created in device space
template <class C>
NETLIB_NAME(solver)::solver_ptr create_it(netlist_state_t &nl, pstring name,
- analog_net_t::list_t &nets,
+ NETLIB_NAME(solver)::net_list_t &nets,
solver::solver_parameters_t &params, std::size_t size)
{
return plib::make_unique<C, host_arena>(nl, name, nets, &params, size);
@@ -96,7 +96,7 @@ namespace devices
template <typename FT, int SIZE>
NETLIB_NAME(solver)::solver_ptr NETLIB_NAME(solver)::create_solver(std::size_t size,
const pstring &solvername,
- analog_net_t::list_t &nets)
+ NETLIB_NAME(solver)::net_list_t &nets)
{
switch (m_params.m_method())
{
@@ -133,7 +133,7 @@ namespace devices
template <typename FT>
NETLIB_NAME(solver)::solver_ptr NETLIB_NAME(solver)::create_solvers(
const pstring &sname,
- analog_net_t::list_t &nets)
+ net_list_t &nets)
{
std::size_t net_count = nets.size();
switch (net_count)
@@ -200,7 +200,7 @@ namespace devices
auto &n = dynamic_cast<analog_net_t &>(*net);
if (!already_processed(n))
{
- groupspre.emplace_back(analog_net_t::list_t());
+ groupspre.emplace_back(NETLIB_NAME(solver)::net_list_t());
process_net(netlist, n);
}
}
@@ -210,7 +210,7 @@ namespace devices
groups.push_back(g);
}
- std::vector<analog_net_t::list_t> groups;
+ std::vector<NETLIB_NAME(solver)::net_list_t> groups;
private:
@@ -280,7 +280,7 @@ namespace devices
}
}
- std::vector<analog_net_t::list_t> groupspre;
+ std::vector<NETLIB_NAME(solver)::net_list_t> groupspre;
};
void NETLIB_NAME(solver)::post_start()
diff --git a/src/lib/netlist/solver/nld_solver.h b/src/lib/netlist/solver/nld_solver.h
index f1395543524..4ff70d04606 100644
--- a/src/lib/netlist/solver/nld_solver.h
+++ b/src/lib/netlist/solver/nld_solver.h
@@ -49,6 +49,7 @@ namespace devices
//using solver_ptr = device_arena::unique_ptr<solver::matrix_solver_t>;
using solver_ptr = host_arena::unique_ptr<solver::matrix_solver_t>;
+ using net_list_t = solver::matrix_solver_t::net_list_t;
private:
logic_input_t m_fb_step;
@@ -63,11 +64,11 @@ namespace devices
template <typename FT, int SIZE>
solver_ptr create_solver(std::size_t size,
- const pstring &solvername, analog_net_t::list_t &nets);
+ const pstring &solvername, net_list_t &nets);
template <typename FT>
solver_ptr create_solvers(
- const pstring &sname, analog_net_t::list_t &nets);
+ const pstring &sname, net_list_t &nets);
};
} // namespace devices