Example #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);
            }
Example #2
0
        //NETLIB_CONSTRUCTOR(buffered_param_setter)
        protected nld_buffered_param_setter(object owner, string name)
            : base(owner, name)
        {
            m_sample_time  = netlist_time.zero();
            m_feedback     = new logic_input_t(this, "FB", feedback); // clock part
            m_Q            = new logic_output_t(this, "Q");
            m_pos          = 0;
            m_samples      = 0;
            m_param_name   = new param_str_t(this, "CHAN", "");
            m_param_mult   = new param_fp_t(this, "MULT", 1.0);
            m_param_offset = new param_fp_t(this, "OFFSET", 0.0);
            m_param        = null;
            m_id           = new param_num_t <size_t, param_num_t_operators_size_t>(this, "ID", 0);


            connect("FB", "Q");
            m_buffer = default;
        }