Пример #1
0
            //NETLIB_CONSTRUCTOR(solver)
            //detail.family_setter_t m_famsetter;
            //template <class CLASS>
            public nld_solver(object owner, string name)
                : base(owner, name)
            {
                m_fb_step = new logic_input_t(this, "FB_step");
                m_Q_step  = new logic_output_t(this, "Q_step");
                m_freq    = new param_double_t(this, "FREQ", 48000.0);

                /* iteration parameters */
                m_gs_sor   = new param_double_t(this, "SOR_FACTOR", 1.059);
                m_method   = new param_str_t(this, "METHOD", "MAT_CR");
                m_accuracy = new param_double_t(this, "ACCURACY", 1e-7);
                m_gs_loops = new param_int_t(this, "GS_LOOPS", 9);              // Gauss-Seidel loops

                /* general parameters */
                m_gmin            = new param_double_t(this, "GMIN", nl_config_global.NETLIST_GMIN_DEFAULT);
                m_pivot           = new param_logic_t(this, "PIVOT", false /*0*/);                                            // use pivoting - on supported solvers
                m_nr_loops        = new param_int_t(this, "NR_LOOPS", 250);                                                   // Newton-Raphson loops
                m_nr_recalc_delay = new param_double_t(this, "NR_RECALC_DELAY", netlist_time.NLTIME_FROM_NS(10).as_double()); // Delay to next solve attempt if nr loops exceeded
                m_parallel        = new param_int_t(this, "PARALLEL", 0);

                /* automatic time step */
                m_dynamic_ts     = new param_logic_t(this, "DYNAMIC_TS", false /*0*/);
                m_dynamic_lte    = new param_double_t(this, "DYNAMIC_LTE", 1e-5);          // diff/timestep
                m_dynamic_min_ts = new param_double_t(this, "DYNAMIC_MIN_TIMESTEP", 1e-6); // nl_double timestep resolution

                m_log_stats = new param_logic_t(this, "LOG_STATS", true);                  // log statistics on shutdown
                m_params    = new solver_parameters_t();


                // internal staff

                connect(m_fb_step, m_Q_step);
            }
Пример #2
0
            //NETLIB_CONSTRUCTOR(mainclock)
            //detail.family_setter_t m_famsetter;
            //template <class CLASS>
            nld_mainclock(object owner, string name)
                : base(owner, name)
            {
                m_Q    = new logic_output_t(this, "Q");
                m_freq = new param_double_t(this, "FREQ", 7159000.0 * 5);


                m_inc = netlist_time.from_double(1.0 / (m_freq.op() * 2.0));
            }
Пример #3
0
            //NETLIB_CONSTRUCTOR_DERIVED(C, twoterm)
            //detail.family_setter_t m_famsetter;
            //template <class CLASS>
            public nld_C(netlist_state_t owner, string name)
                : base(owner, name)
            {
                m_C         = new param_double_t(this, "C", 1e-6);
                m_GParallel = 0.0;


                //register_term("1", m_P);
                //register_term("2", m_N);
            }
Пример #4
0
            //NETLIB_CONSTRUCTOR(POT)
            //detail.family_setter_t m_famsetter;
            //template <class CLASS>
            public nld_POT(object owner, string name)
                : base(owner, name)
            {
                m_R1        = new nld_R_base(this, "_R1");
                m_R2        = new nld_R_base(this, "_R2");
                m_R         = new param_double_t(this, "R", 10000);
                m_Dial      = new param_double_t(this, "DIAL", 0.5);
                m_DialIsLog = new param_logic_t(this, "DIALLOG", false /*0*/);


                register_subalias("1", m_R1.P);
                register_subalias("2", m_R1.N);
                register_subalias("3", m_R2.N);

                connect(m_R2.P, m_R1.N);
            }
Пример #5
0
 //NETLIB_CONSTRUCTOR(analog_input)
 //detail.family_setter_t m_famsetter;
 //template <class CLASS>
 public nld_analog_input(object owner, string name)
     : base(owner, name)
 {
     m_Q  = new analog_output_t(this, "Q");
     m_IN = new param_double_t(this, "IN", 0.0);
 }
Пример #6
0
 //NETLIB_CONSTRUCTOR_DERIVED(R, R_base)
 //detail.family_setter_t m_famsetter;
 //template <class CLASS>
 public nld_R(object owner, string name)
     : base(owner, name)
 {
     m_R = new param_double_t(this, "R", 1e9);
 }