def do_it(self, cmd, scope): self._scope = scope self.sim_().set_command_ac() self.sim_().init() self.sim_().alloc_vectors() acx = self.sim_()._acx acx.reallocate() freq = 20e3 self.sim_()._jomega = 2j * np.pi * freq # self.head(freq, freq, "Freq") card_list = gnucap.CARD_LIST().card_list_() card_list.ac_begin() print("begun") self.solve() print("solved") self.outdata(freq) acx.unallocate(); self.unalloc_vectors()
def mysolve(self): acx = self._sim._acx acx.zero() card_list = gnucap.CARD_LIST().card_list_() n = self._sim._total_nodes print("numnodes: " + str(n)) # gnucap.set_complex_array(gnucap.cvar.SIM_ac, np.zeros(n, dtype=np.complex)) for a in range(3): for b in range(3): assert (self._sim._acx[a][b] == 0.) card_list.do_ac() card_list.ac_load() print(self._sim._acx) # print("M", self._sim._acx[0][0], self._sim._acx[0][1], self._sim._acx[0][2]) # print("M", self._sim._acx[1][0], self._sim._acx[1][1], self._sim._acx[1][2]) # print("M", self._sim._acx[2][0], self._sim._acx[2][1], self._sim._acx[2][2]) print("Loaded AC-matrix" ) # , gnucap.get_complex_array(gnucap.cvar.SIM_ac, n) # print gnucap.bsmatrix_to_array_c(acx) ## Solve acx.lu_decomp() print("decomp") acx.fbsub_(self._sim._ac) print("fbsubt")
def do_it(self, cmd, scope): self._scope = scope self._sim.set_command_ac() self._sim.init() self._sim.alloc_vectors() acx = self._sim._acx acx.reallocate() freq = 20e3 self._sim._jomega = 2j * np.pi * freq self.head(freq, freq, "Freq") card_list = gnucap.CARD_LIST().card_list_() card_list.ac_begin() self.mysolve() self.outdata(freq, 2) acx.unallocate() self._sim.unalloc_vectors()
""" Copyright: 2009-2011 Henrik Johansson Author: Henrik Johansson Create a new ac-analysis that always runs at a single frequency """ import os import numpy as np import pylab import gnucap cl=gnucap.CARD_LIST().card_list_() print("MYAC") A=file("/tmp/HELLO","w+") gnucap.command("set trace") gnucap.command("set lang=acs") ## Set gnucap run mode runmode = gnucap.SET_RUN_MODE(gnucap.rBATCH) gnucap.command("get example.ckt") class MyAC(gnucap.SIM): def do_it(self, cmd, scope): self._scope = scope self.sim_().set_command_ac() self.sim_().init()
def do_it(self, cmd, scope): self._scope = scope self._sim.set_command_ac() self._sim.init() self._sim.alloc_vectors() acx = self._sim._acx acx.reallocate() freq = 20e3 self._sim._jomega = 2j * np.pi * freq self.head(freq, freq, "Freq") card_list = gnucap.CARD_LIST().card_list_() card_list.ac_begin() acx = self._sim._acx acx.zero() card_list = gnucap.CARD_LIST().card_list_() n = self._sim._total_nodes card_list.do_ac() card_list.ac_load() M = acx for a in range(1 + n): for b in range(1 + n): printn(' {:.1g}'.format(M[a][b])) print() print(M) print(M[0][0]) print("incomplete", M[0]) print("incomplete", M[0][0:2]) print(M.data_()) N = np.array(M) print("np", N) raw = acx._space() print("with gnd", ['{:.2f}'.format(xx) for xx in raw[:5]]) raw = acx._space(False) print("without", raw[:5]) coo = acx._coord(False) print("coo", coo[:5], np.shape(coo)) assert (np.shape(coo) == (19, 2)) coo_all = acx._coord(True) raw_all = acx._space(True) coo_allt = coo_all.transpose() m_all = coo_matrix((raw_all, coo_allt)) print(coo_allt[0]) print(coo_allt[1]) print(m_all.todense()[0:3]) if sys.version_info[0] < 3: print("too old") return a = zip(*coo) i = next(a) j = next(a) print("trying coo 1", i[:3], j[:3]) a = coo_matrix((raw[:3], (i[:3], j[:3])), shape=(4, 4)) print(a.todense()) print("trying coo 2", i[:3], j[:3]) print("trying coo 2", len(i), len(j), len(raw)) coo = acx._coord(False) a = zip(*coo) i = next(a) assert (len(i) == 19) j = next(a) f = coo_matrix((raw, (i, j))) print("shape1", f.get_shape()) coot = acx._coord(False) coo = np.transpose(coot) print(coo) f = coo_matrix((raw, coo)) g = coo_matrix((raw, zip(*coot))) print("shape2", f.get_shape()) b = f.todense() print(b[0, 0]) print(b[1, 1]) print(b[:3, :3]) acx.unallocate() # invalidates M self._sim.unalloc_vectors()