Exemple #1
0
    def test_RC1(self):
        """Lcapy: check RC network

        """
        a = Circuit()
        a.add('R1 1 2')
        a.add('C1 2 0')

        self.assertEqual2(a.impedance(1, 2),
                          R('R1').impedance, "Z incorrect for R1.")
        self.assertEqual2(a.impedance(2, 0),
                          C('C1').impedance, "Z incorrect for C1.")
        self.assertEqual2(a.impedance(1, 0), (R('R1') + C('C1')).impedance,
                          "Z incorrect for R1 + C1.")

        self.assertEqual2(a.admittance(1, 2), R('R1').Y, "Y incorrect for R1.")
        self.assertEqual2(a.admittance(2, 0), C('C1').Y, "Y incorrect for C1.")
        self.assertEqual2(a.admittance(1, 0), (R('R1') + C('C1')).Y,
                          "Y incorrect for R1 + C1.")
        self.assertEqual2(a.Isc(1, 0), I(0).Isc, "Isc incorrect")
        self.assertEqual(a.R1.Z, expr('R1'), "Z incorrect")
        self.assertEqual(a.R1.R, expr('R1'), "R incorrect")
        self.assertEqual(a.R1.X, 0, "X incorrect")
        self.assertEqual(a.C1.Y, expr('j * omega * C1'), "Y incorrect")
        self.assertEqual(a.C1.G, 0, "G incorrect")
        self.assertEqual(a.C1.B, expr('-omega * C1'), "B incorrect")
Exemple #2
0
    def test_IV_parallel(self):

        a = Circuit("""
        V 1 0 dc
        I 1 0 dc
        R 1 0""")

        self.assertEqual(a.R.v, expr('V'), "R voltage incorrect")
        self.assertEqual(a.R.i, expr('V / R'), "R current incorrect")
Exemple #3
0
    def test_IV_series(self):

        a = Circuit("""
        V 2 1 dc
        I 1 0 dc
        R 2 0""")

        self.assertEqual(a.R.v, expr('I * R'), "R voltage incorrect")
        self.assertEqual(a.R.i, expr('I'), "R current incorrect")
Exemple #4
0
    def test_TF(self):

        a = Circuit("""
        TF 2 0 1 0 k
        R 2 0""")

        self.assertEqual(a.impedance(1, 0), expr('R / k**2'),
                         "incorrect impedance")
Exemple #5
0
    def test_K(self):

        a = Circuit("""
        V1 1 0 ac; down
        W 1 1_1; right
        L1 1_1 0_1 L; down
        W 0 0_1; right
        W 0_1 0_2; right
        W 0_1 0_2; right
        L2 2 0_2 L; down
        W 2 2_1; right
        R1 2_1 0_3; down
        W 0_2 0_3; right
        K L1 L2 1; invisible""")

        self.assertEqual(
            a.R1.v, expr('V1 * cos(omega_0 * t) * abs(omega_0) / omega_0'),
            "coupling incorrect")
Exemple #6
0
    def test_VRC1(self):
        """Lcapy: check VRC circuit

        """
        a = Circuit("""
        V1 1 0
        R1 1 2
        C1 2 0""")

        ss = a.ss
        
        self.assertEqual2(expr(ss.x[0]), expr('vC1(t)'), "Incorrect state variable")
        self.assertEqual2(expr(ss.y[0]), expr('vn1(t)'), "Incorrect output variable1")
        self.assertEqual2(expr(ss.y[1]), expr('vn2(t)'), "Incorrect output variable2")        
        self.assertEqual2(expr(ss.A[0]), expr('-1/(R1 * C1)'), "Incorrect A matrix")
        self.assertEqual2(expr(ss.B[0]), expr('1/(R1 * C1)'), "Incorrect B matrix")
        self.assertEqual2(expr(ss.C[0]), expr(0), "Incorrect C[0] matrix")
        self.assertEqual2(expr(ss.C[1]), expr(1), "Incorrect C[1] matrix")
        self.assertEqual2(expr(ss.D[0]), expr(0), "Incorrect D[0] matrix")
        self.assertEqual2(expr(ss.D[1]), expr(0), "Incorrect D[1] matrix")
        self.assertEqual2(expr(ss.eigenvalues[0]), expr('-1/(R1 * C1)'), "Incorrect eigenvalues")
Exemple #7
0
    def test_params(self):

        a = Circuit("""
        R1 1 2;
        R2 2 0;
        R3 2 3""")

        A = a.Aparams(3, 0, 1, 0)

        # TODO, FIXME without passing matrix elements through expr
        self.assertEqual(expr(A[0, 0]), expr('(R2 + R3) / R2'), "A11")
        self.assertEqual(expr(A[0, 1]), expr('R1 + R1 * R3 / R2 + R3'), "A12")
        self.assertEqual(expr(A[1, 0]), expr('1 / R2'), "A21")
        self.assertEqual(expr(A[1, 1]), expr('(R1 + R2) / R2'), "A22")

        Z = a.Zparams(3, 0, 1, 0)

        self.assertEqual(expr(Z[0, 0]), expr('R2 + R3'), "Z11")
        self.assertEqual(expr(Z[0, 1]), expr('R2'), "Z12")
        self.assertEqual(expr(Z[1, 0]), expr('R2'), "Z21")
        self.assertEqual(expr(Z[1, 1]), expr('R1 + R2'), "Z22")
Exemple #8
0
    def test_VRL1(self):
        """Lcapy: check VRL circuit

        """
        a = Circuit("""
        V1 1 0
        R1 1 2
        L1 2 0""")

        ss = a.ss
        
        self.assertEqual2(expr(ss.x[0]), expr('i_L1(t)'), "Incorrect state variable")
        self.assertEqual2(expr(ss.y[0]), expr('v_1(t)'), "Incorrect output variable1")
        self.assertEqual2(expr(ss.y[1]), expr('v_2(t)'), "Incorrect output variable2")        
        self.assertEqual2(expr(ss.A[0]), expr('-R1 / L1'), "Incorrect A matrix")
        self.assertEqual2(expr(ss.B[0]), expr('1 / L1'), "Incorrect B matrix")
        self.assertEqual2(expr(ss.C[0]), expr(0), "Incorrect C[0] matrix element")
        self.assertEqual2(expr(ss.C[1]), expr('-R1'), "Incorrect C[1] matrix element")
        self.assertEqual2(expr(ss.D[0]), expr(1), "Incorrect D[0] matrix element")
        self.assertEqual2(expr(ss.D[1]), expr(1), "Incorrect D[1] matrix element")
        self.assertEqual2(expr(ss.eigenvalues[0]), expr('-R1 / L1'), "Incorrect eigenvalues")