Exemple #1
0
        /// \brief resolve parameter names to pointers
        ///
        /// This function must be called after all device were constructed but
        /// before reset is called.
        public void resolve_params(netlist_time sample_time)
        {
            m_pos         = 0;
            m_sample_time = sample_time;

            if (m_param_name.op() != "")
            {
                param_t p = state().setup().find_param(m_param_name.op()).param();
                m_param = p;
                if (p is param_fp_t)                         //if (dynamic_cast<param_fp_t *>(p) != nullptr)
                {
                    m_param_setter = setter <param_fp_t>;    //m_param_setter = setter_t(&NETLIB_NAME(buffered_param_setter)::setter<param_fp_t>, this);
                }
                else if (p is param_logic_t)                 //else if (dynamic_cast<param_logic_t *>(p) != nullptr)
                {
                    m_param_setter = setter <param_logic_t>; //m_param_setter = setter_t(&NETLIB_NAME(buffered_param_setter)::setter<param_logic_t>, this);
                }
            }
        }
Exemple #2
0
            // NETLIB_UPDATE_PARAMI();


            //template <typename FT, int SIZE>
            //matrix_solver_t * create_solver(std::size_t size, const pstring &solvername);
            matrix_solver_t create_solver(int SIZE, UInt32 size, string solvername)
            {
                if (m_method.op() == "SOR_MAT")
                {
                    throw new emu_unimplemented();
                }
                else if (m_method.op() == "MAT_CR")
                {
                    if (size > 0)                                                                   // GCR always outperforms MAT solver
                    {
                        return(new matrix_solver_GCR_t(SIZE, state(), solvername, m_params, size)); //return create_it<matrix_solver_SOR_mat_t<FT, SIZE>>(state(), solvername, m_params, size);
                    }
                    else
                    {
                        throw new emu_unimplemented();
                    }
                }
                else if (m_method.op() == "MAT")
                {
                    throw new emu_unimplemented();
                }
                else if (m_method.op() == "SM")
                {
                    throw new emu_unimplemented();
                }
                else if (m_method.op() == "W")
                {
                    throw new emu_unimplemented();
                }
                else if (m_method.op() == "SOR")
                {
                    throw new emu_unimplemented();
                }
                else if (m_method.op() == "GMRES")
                {
                    throw new emu_unimplemented();
                }
                else
                {
                    log().fatal.op(nl_errstr_global.MF_1_UNKNOWN_SOLVER_TYPE, m_method.op());
                    return(null);
                }
            }