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_VRC1(self):
        """Lcapy: check VRC circuit

        """
        a = Circuit()
        a.add('V1 1 0 {V1 / s}')
        a.add('R1 1 2')
        a.add('C1 2 0')

        # Note, V1 acts as a short-circuit for the impedance/admittance
        self.assertEqual2(a.impedance(1, 2), (R('R1') | C('C1')).Z,
                          "Z incorrect across R1")
        self.assertEqual2(a.impedance(2, 0), (R('R1') | C('C1')).Z,
                          "Z incorrect across C1")
        self.assertEqual2(a.impedance(1, 0), R(0).Z, "Z incorrect across V1")

        self.assertEqual2(a.admittance(1, 2), (R('R1') | C('C1')).Y,
                          "Y incorrect across R1")
        self.assertEqual2(a.admittance(2, 0), (R('R1') | C('C1')).Y,
                          "Y incorrect across C1")
        # This has a non-invertible A matrix.
        # self.assertEqual2(a.admittance(1, 0), R(0).Y, "Y incorrect across V1")

        self.assertEqual2(
            a.Voc(1, 0).s,
            V('V1 / s').Voc.s, "Voc incorrect across V1")
        self.assertEqual(a.is_ivp, False, "Initial value problem incorrect")
        self.assertEqual(a.is_dc, False, "DC incorrect")
        self.assertEqual(a.is_ac, False, "AC incorrect")
Exemple #3
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 #4
0
    def test_simplify(self):

        a = Circuit("""
        R1 1 2
        R2 2 3""")

        b = a.simplify()

        self.assertEqual(b.impedance(1, 3), a.impedance(1, 3),
                         "simplify series")

        a = Circuit("""
        R1 1 2
        R2 1 2""")

        b = a.simplify()

        self.assertEqual(b.impedance(1, 2), a.impedance(1, 2),
                         "simplify parallel")
Exemple #5
0
    def test_VRL1(self):
        """Lcapy: check VRL circuit

        """
        a = Circuit()
        a.add('V1 1 0 {V1 / s}')
        a.add('R1 1 2')
        a.add('L1 2 0 L1 0')

        # This currently fails due to two symbols of the same name
        # having different assumptions.

        # Note, V1 acts as a short-circuit for the impedance/admittance
        self.assertEqual2(
            a.thevenin(1, 2).Voc, a.Voc(1, 2), "incorrect thevenin voltage")
        self.assertEqual2(
            a.thevenin(1, 2).Z, a.impedance(1, 2),
            "incorrect thevenin impedance")
        self.assertEqual2(
            a.norton(1, 2).Isc, a.Isc(1, 2), "incorrect norton current")
        self.assertEqual2(
            a.norton(1, 2).Y, a.admittance(1, 2),
            "incorrect norton admittance")
        self.assertEqual2(a.impedance(1, 2), (R('R1') | L('L1')).Z,
                          "Z incorrect across R1")
        self.assertEqual2(a.impedance(2, 0), (R('R1') | L('L1')).Z,
                          "Z incorrect across L1")
        self.assertEqual2(a.impedance(1, 0), R(0).Z, "Z incorrect across V1")

        self.assertEqual2(a.admittance(1, 2), (R('R1') | L('L1')).Y,
                          "Y incorrect across R1")
        self.assertEqual2(a.admittance(2, 0), (R('R1') | L('L1')).Y,
                          "Y incorrect across L1")
        # This has a non-invertible A matrix.
        # self.assertEqual2(a.admittance(1, 0), R(0).Y, "Y incorrect across V1")

        self.assertEqual2(a.Voc(1, 0),
                          V('V1' / s).Voc, "Voc incorrect across V1")
        self.assertEqual(a.is_ivp, True, "Initial value problem incorrect")
        self.assertEqual(a.is_dc, False, "DC incorrect")
        self.assertEqual(a.is_ac, False, "AC incorrect")