コード例 #1
0
ファイル: custom_ac.py プロジェクト: gnucap/gnucap-python
    def solve(self):
        acx =  gnucap.cvar.CKT_BASE_acx ## Static attributes must be accessed through cvar
        acx.zero()
        card_list = gnucap.cvar.CARD_LIST_card_list
        
        ## Total number of states
        n = gnucap.cvar.status.total_nodes

#        gnucap.set_complex_array(gnucap.cvar.SIM_ac, np.zeros(n, dtype=np.complex))
        
        card_list.do_ac()
        card_list.ac_load()

        print "Loaded AC-matrix", gnucap.get_complex_array(gnucap.cvar.SIM_ac, n)

        print gnucap.bsmatrix_to_array_c(acx)

        ## Solve
        acx.lu_decomp()
        acx.fbsub(gnucap.cvar.SIM_ac)
   
        print "rhs after", gnucap.get_complex_array(gnucap.cvar.SIM_ac, n)
コード例 #2
0
ファイル: custom_ac.py プロジェクト: henjo/gnucap-python
    def solve(self):
        acx =  gnucap.cvar.CKT_BASE_acx ## Static attributes must be accessed through cvar
        acx.zero()
        card_list = gnucap.cvar.CARD_LIST_card_list
        
        ## Total number of states
        n = gnucap.cvar.status.total_nodes

#        gnucap.set_complex_array(gnucap.cvar.SIM_ac, np.zeros(n, dtype=np.complex))
        
        card_list.do_ac()
        card_list.ac_load()

        print "Loaded AC-matrix", gnucap.get_complex_array(gnucap.cvar.SIM_ac, n)

        print gnucap.bsmatrix_to_array_c(acx)

        ## Solve
        acx.lu_decomp()
        acx.fbsub(gnucap.cvar.SIM_ac)
   
        print "rhs after", gnucap.get_complex_array(gnucap.cvar.SIM_ac, n)
コード例 #3
0
ファイル: shooting.py プロジェクト: henjo/gnucap-python
    def accept(self):
        gnucap.TRANSIENT.accept(self)
        
        t = gnucap.cvar.SIM_time0
        if True:
            print "Accept at ", gnucap.cvar.SIM_time0
            n = gnucap.cvar.status.total_nodes
            aa = gnucap.bsmatrix_to_array_d(gnucap.cvar.CKT_BASE_aa)
            i = gnucap.to_double_array(gnucap.cvar.SIM_i, n)
            v0 = gnucap.to_double_array(gnucap.cvar.SIM_v0, n)
            print v0
            if self.first:
                self.v0_0 = v0.copy()
                self.first = False
            else:
                self.v0_n = v0.copy()

            ## Solve system ourself and compare with v0
            if self.lastC != None:
                myv0 = np.zeros(aa.shape)
                h = gnucap.cvar.SIM_time0 - gnucap.cvar.SIM_time1

                gnucap.bsmatrix_fbsub_array_double(gnucap.cvar.CKT_BASE_lu, 
                                                   np.dot(self.Jshoot, self.lastC) / h, 
                                                   self.Jshoot)

            ## Get C matrix from ac-analysis
            ## FIXME, there must be a better way
            acx =  gnucap.cvar.CKT_BASE_acx ## Static attributes must be accessed through cvar
            acx.zero()
            card_list = gnucap.cvar.CARD_LIST_card_list
    #        card_list.do_ac()
#            card_list.ac_load()
            C_bs = gnucap.bsmatrix_to_array_c(acx)
            self.lastC = np.imag(C_bs)
            self.lastC = np.array([[1e-6, 0],
                                    [0, 0]])
コード例 #4
0
ファイル: shooting.py プロジェクト: gnucap/gnucap-python
    def accept(self):
        gnucap.TRANSIENT.accept(self)

        t = gnucap.cvar.SIM_time0
        if True:
            print "Accept at ", gnucap.cvar.SIM_time0
            n = gnucap.cvar.status.total_nodes
            aa = gnucap.bsmatrix_to_array_d(gnucap.cvar.CKT_BASE_aa)
            i = gnucap.to_double_array(gnucap.cvar.SIM_i, n)
            v0 = gnucap.to_double_array(gnucap.cvar.SIM_v0, n)
            print v0
            if self.first:
                self.v0_0 = v0.copy()
                self.first = False
            else:
                self.v0_n = v0.copy()

            ## Solve system ourself and compare with v0
            if self.lastC != None:
                myv0 = np.zeros(aa.shape)
                h = gnucap.cvar.SIM_time0 - gnucap.cvar.SIM_time1

                gnucap.bsmatrix_fbsub_array_double(
                    gnucap.cvar.CKT_BASE_lu,
                    np.dot(self.Jshoot, self.lastC) / h, self.Jshoot)

            ## Get C matrix from ac-analysis
            ## FIXME, there must be a better way
            acx = gnucap.cvar.CKT_BASE_acx  ## Static attributes must be accessed through cvar
            acx.zero()
            card_list = gnucap.cvar.CARD_LIST_card_list
            #        card_list.do_ac()
            #            card_list.ac_load()
            C_bs = gnucap.bsmatrix_to_array_c(acx)
            self.lastC = np.imag(C_bs)
            self.lastC = np.array([[1e-6, 0], [0, 0]])