/
spice.py
102 lines (81 loc) · 1.89 KB
/
spice.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# written by Hao Yu
# 03.08.2016
import re
import sys
import os
import numpy as np
import scipy as sp
from scipy import sparse
from scipy.linalg import solve
import string
import math
import copy
import matplotlib.pyplot as plt
import string
import math
import time
import cStringIO
from var import Var
class NetlistParseError(Exception):
"""Netlist parsing exception."""
pass
def parse(netlist):
var = Var()
var.string2file(netlist)
var.analysis_text()
# for Martix and dict
var.initMartix()
var.makeDict()
var.initStamp() # stamp for the element like R
# var.printMartix()
# var.printGBCDUI()
var.backMartix()
if var.ToSolveDC:
var.solveDC(plotFlag=1)
if var.ToSolveTran:
var.solveTran()
if var.ToSolveAC:
var.solveAC()
# var.printMartix()
# var.printGBCDUI()
# var.printX()
var.closeFile()
result = {}
if hasattr(var, 'voltage_tag'):
result['voltage'] = var.voltage_tag
if hasattr(var, 'current_tag'):
result['current'] = var.current_tag
if hasattr(var, 'phase_tag'):
result['phase'] = var.phase_tag
return result
# print var.Node_list
# print var.Node_list_bak
def main(fileName):
start = time.clock()
var = Var()
var.openFile(fileName)
var.output_something()
var.analysis_text()
# for Martix and dict
var.initMartix()
var.makeDict()
var.initStamp() # stamp for the element like R
# var.printMartix()
# var.printGBCDUI()
var.backMartix()
if var.ToSolveDC:
var.solveDC(plotFlag=1)
if var.ToSolveTran:
var.solveTran()
if var.ToSolveAC:
var.solveAC()
# var.printMartix()
# var.printGBCDUI()
# var.printX()
var.closeFile()
end = time.clock()
print end - start
# print var.Node_list
# print var.Node_list_bak
if __name__ == '__main__':
main()