Beispiel #1
0
    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()
Beispiel #2
0
    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")
Beispiel #3
0
    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()
Beispiel #4
0
"""
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()
Beispiel #5
0
    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()