netlist.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:SpicePy 作者: giaccone 项目源码 文件源码
def __str__(self):
        # create local dictionary to convert node-numbers to node-labels
        num2node_label = {num: name for name, num in self.node_label2num.items()}

        # build message to print
        msg = '------------------------\n'
        msg += '    SpicePy.Network:\n'
        msg += '------------------------\n'
        for ele, nodes, val in zip(self.names, self.nodes, self.values):
            # if val is a list --> ele is a transient source
            if isinstance(val, list):
                if self.source_type[ele] == 'pwl':
                    fmt = "{} {} {} {}(" + "{} " * (len(val[0]) - 1) + "{})\n"
                    msg += fmt.format(ele, num2node_label[nodes[0]], num2node_label[nodes[1]], self.source_type[ele], *val[0])
                else:
                    fmt = "{} {} {} {}(" + "{} " * (len(val) - 1) + "{})\n"
                    msg += fmt.format(ele, num2node_label[nodes[0]], num2node_label[nodes[1]], self.source_type[ele], *val)
            # if val is complex --> ele is a phasor
            elif np.iscomplex(val):
                msg += "{} {} {} {} {}\n".format(ele, num2node_label[nodes[0]], num2node_label[nodes[1]], np.abs(val), np.angle(val) * 180/np.pi)
            # if ele is C or L
            elif ele[0].upper() == 'C' or ele[0].upper() == 'L':
                # check if an i.c. is present and print it
                if ele in self.IC:
                    msg += "{} {} {} {} ic={}\n".format(ele, num2node_label[nodes[0]], num2node_label[nodes[1]], val, self.IC[ele])
                # otherwise...
                else:
                    msg += "{} {} {} {}\n".format(ele, num2node_label[nodes[0]], num2node_label[nodes[1]], val)
            # otherwise...general case -->  ele n+ n- val
            else:
                msg += "{} {} {} {}\n".format(ele, num2node_label[nodes[0]], num2node_label[nodes[1]], val)

        # add analysis
        msg += " ".join(self.analysis) + '\n'

        # if a plot command is present, add it
        if self.plot_cmd is not None:
            msg += self.plot_cmd + '\n'

        # add number of nodes (reference node is included) and number of branches
        msg += '------------------------\n'
        msg += '* number of nodes {}\n'.format(self.node_num + 1)
        msg += '* number of branches {}\n'.format(len(self.names))
        msg += '------------------------\n'

        return msg
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号