Added inductor to netlist. (nw)

This commit is contained in:
couriersud 2016-12-23 23:37:56 +01:00
parent c6440a43d4
commit 3506240e19
3 changed files with 73 additions and 10 deletions

View File

@ -116,6 +116,27 @@ NETLIB_UPDATE(C)
NETLIB_NAME(twoterm)::update();
}
// ----------------------------------------------------------------------------------------
// 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
// ----------------------------------------------------------------------------------------

View File

@ -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 ...)

View File

@ -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, "-")