diff options
author | couriersud <couriersud@arcor.de> | 2016-12-23 23:37:56 +0100 |
---|---|---|
committer | couriersud <couriersud@arcor.de> | 2016-12-24 00:58:36 +0100 |
commit | 3506240e198084966715e1dcbe3e74d9a6e100e4 (patch) | |
tree | bee1a0ef774814f5ac03d8400459e71fd10e5c39 | |
parent | c6440a43d4c3f53ba4635daab73d465b703b0164 (diff) |
Added inductor to netlist. (nw)
-rw-r--r-- | src/lib/netlist/analog/nld_twoterm.cpp | 21 | ||||
-rw-r--r-- | src/lib/netlist/analog/nld_twoterm.h | 61 | ||||
-rw-r--r-- | src/lib/netlist/devices/net_lib.cpp | 1 |
3 files changed, 73 insertions, 10 deletions
diff --git a/src/lib/netlist/analog/nld_twoterm.cpp b/src/lib/netlist/analog/nld_twoterm.cpp index 3ddff27557d..089b11f8607 100644 --- a/src/lib/netlist/analog/nld_twoterm.cpp +++ b/src/lib/netlist/analog/nld_twoterm.cpp @@ -117,6 +117,27 @@ NETLIB_UPDATE(C) } // ---------------------------------------------------------------------------------------- +// nld_L +// ---------------------------------------------------------------------------------------- + +NETLIB_RESET(L) +{ + set(netlist().gmin(), 0.0, 5.0 / netlist().gmin()); + //set(1.0/NETLIST_GMIN, 0.0, -5.0 * NETLIST_GMIN); +} + +NETLIB_UPDATE_PARAM(L) +{ + //step_time(1.0/48000.0); + //m_GParallel = netlist().gmin() / m_L(); +} + +NETLIB_UPDATE(L) +{ + NETLIB_NAME(twoterm)::update(); +} + +// ---------------------------------------------------------------------------------------- // nld_D // ---------------------------------------------------------------------------------------- diff --git a/src/lib/netlist/analog/nld_twoterm.h b/src/lib/netlist/analog/nld_twoterm.h index b5de48ae1d8..f59b9e62594 100644 --- a/src/lib/netlist/analog/nld_twoterm.h +++ b/src/lib/netlist/analog/nld_twoterm.h @@ -40,34 +40,38 @@ // ----------------------------------------------------------------------------- #define RES(name, p_R) \ - NET_REGISTER_DEV(RES, name) \ + NET_REGISTER_DEV(RES, name) \ NETDEV_PARAMI(name, R, p_R) #define POT(name, p_R) \ - NET_REGISTER_DEV(POT, name) \ + NET_REGISTER_DEV(POT, name) \ NETDEV_PARAMI(name, R, p_R) /* Does not have pin 3 connected */ #define POT2(name, p_R) \ - NET_REGISTER_DEV(POT2, name) \ + NET_REGISTER_DEV(POT2, name) \ NETDEV_PARAMI(name, R, p_R) #define CAP(name, p_C) \ - NET_REGISTER_DEV(CAP, name) \ + NET_REGISTER_DEV(CAP, name) \ NETDEV_PARAMI(name, C, p_C) +#define IND(name, p_L) \ + NET_REGISTER_DEV(IND, name) \ + NETDEV_PARAMI(name, L, p_L) + /* Generic Diode */ -#define DIODE(name, model) \ - NET_REGISTER_DEV(DIODE, name) \ +#define DIODE(name, model) \ + NET_REGISTER_DEV(DIODE, name) \ NETDEV_PARAMI(name, MODEL, model) -#define VS(name, pV) \ - NET_REGISTER_DEV(VS, name) \ +#define VS(name, pV) \ + NET_REGISTER_DEV(VS, name) \ NETDEV_PARAMI(name, V, pV) -#define CS(name, pI) \ - NET_REGISTER_DEV(CS, name) \ +#define CS(name, pI) \ + NET_REGISTER_DEV(CS, name) \ NETDEV_PARAMI(name, I, pI) // ----------------------------------------------------------------------------- @@ -303,6 +307,43 @@ private: }; +// ----------------------------------------------------------------------------- +// nld_L +// ----------------------------------------------------------------------------- + +NETLIB_OBJECT_DERIVED(L, twoterm) +{ +public: + NETLIB_CONSTRUCTOR_DERIVED(L, twoterm) + , m_L(*this, "L", 1e-6) + , m_GParallel(0.0) + , m_G(0.0) + , m_I(0.0) + { + //register_term("1", m_P); + //register_term("2", m_N); + } + + NETLIB_TIMESTEP() + { + /* Gpar should support convergence */ + m_I = m_I + m_G * deltaV(); + m_G = step / m_L() + m_GParallel; + set(m_G, 0.0, m_I); + } + + param_double_t m_L; + +protected: + NETLIB_RESETI(); + NETLIB_UPDATEI(); + NETLIB_UPDATE_PARAMI(); + +private: + nl_double m_GParallel; + nl_double m_G; + nl_double m_I; +}; // ----------------------------------------------------------------------------- // A generic diode model to be used in other devices (Diode, BJT ...) diff --git a/src/lib/netlist/devices/net_lib.cpp b/src/lib/netlist/devices/net_lib.cpp index 092d5239988..3e654dab2d1 100644 --- a/src/lib/netlist/devices/net_lib.cpp +++ b/src/lib/netlist/devices/net_lib.cpp @@ -77,6 +77,7 @@ static void initialize_factory(factory_list_t &factory) ENTRY(POT, POT, "R") ENTRY(POT2, POT2, "R") ENTRY(C, CAP, "C") + ENTRY(L, IND, "L") ENTRY(D, DIODE, "MODEL") ENTRY(VCVS, VCVS, "-") ENTRY(VCCS, VCCS, "-") |