//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); }
//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; }