コード例 #1
0
ファイル: SimulatorTests.cs プロジェクト: MorSofer/ECS
        public void Test3()
        {
            var head = new Node {
                Name = "Head?"
            };
            var node1 = new Node {
                Name = "N1"
            };
            var refnode = new Node {
                IsReferenceNode = true, Name = "Reference"
            };
            var node2 = new Node {
                Name = "N2"
            };
            var nodes = new List <INode> {
                head, node1, refnode, node2
            };

            var vs = new VoltageSource(12)
            {
                Name = "Vin", Node1 = head, Node2 = refnode
            };
            var r1 = new Resistor(100)
            {
                Name = "R1", Node1 = head, Node2 = refnode
            };
            var r2 = new Resistor(100)
            {
                Name = "R2", Node1 = node1, Node2 = refnode
            };
            var r3 = new Resistor(220)
            {
                Name = "R3", Node1 = head, Node2 = node2
            };
            var r4 = new Resistor(1000)
            {
                Name = "R4", Node1 = node1, Node2 = refnode
            };
            var sw = new Switch {
                IsClosed = true, Name = "LOL I'm a switch", Node1 = node1, Node2 = node2
            };
            var components = new List <IComponent> {
                vs, r1, r2, r3, r4, sw
            };

            Simulator.AnalyzeAndUpdate(nodes, components);

            Assert.Equal(12, head.Voltage, 3);
            Assert.Equal(3.509, node1.Voltage, 3);
            Assert.Equal(0.159, vs.Current, 3);
            Assert.Equal(12, r1.Voltage, 3);
            Assert.Equal(0.12, r1.Current, 3);
            Assert.Equal(3.509, r2.Voltage, 3);
            Assert.Equal(0.035, r2.Current, 3);
            Assert.Equal(8.491, r3.Voltage, 3);
            Assert.Equal(0.039, r3.Current, 3);
            Assert.Equal(3.509, r4.Voltage, 3);
            Assert.Equal(0.004, r4.Current, 3);
        }
コード例 #2
0
ファイル: SimulatorTests.cs プロジェクト: MorSofer/ECS
        public void Test5()
        {
            var head = new Node {
                Name = "Head"
            };
            var node1 = new Node {
                Name = "N1"
            };
            var refnode = new Node {
                IsReferenceNode = true, Name = "Ref"
            };
            var nodes = new List <INode> {
                head, node1, refnode
            };

            var vs = new VoltageSource(12)
            {
                Node1 = head, Node2 = refnode, Name = "Vin1"
            };
            var r1 = new Resistor(100)
            {
                Node1 = head, Node2 = refnode, Name = "R1"
            };
            var r2 = new Resistor {
                Current = 0.035087719298245612, Node1 = node1, Node2 = refnode, Name = "R2"
            };
            var r3 = new Resistor(220)
            {
                Node1 = head, Node2 = node1, Name = "R3"
            };
            var r4 = new Resistor(1000)
            {
                Node1 = node1, Node2 = refnode, Name = "R4"
            };
            var components = new List <IComponent> {
                vs, r1, r2, r3, r4
            };

            Simulator.AnalyzeAndUpdate(nodes, components);

            Assert.Equal(100, r2.Resistance, 0);

            Assert.Equal(12, head.Voltage, 3);
            Assert.Equal(3.509, node1.Voltage, 3);
            Assert.Equal(0.159, vs.Current, 3);
            Assert.Equal(12, r1.Voltage, 3);
            Assert.Equal(0.12, r1.Current, 3);
            Assert.Equal(3.509, r2.Voltage, 3);
            //Assert.Equal(0.035, r2.Current, 3);
            Assert.Equal(8.491, r3.Voltage, 3);
            Assert.Equal(0.039, r3.Current, 3);
            Assert.Equal(3.509, r4.Voltage, 3);
            Assert.Equal(0.004, r4.Current, 3);
        }
コード例 #3
0
ファイル: SimulatorTests.cs プロジェクト: MorSofer/ECS
        public void Test7()
        {
            var n1 = new Node {
                Name = "Center"
            };
            var n2 = new Node {
                Name = "Out"
            };
            var n3 = new Node {
                Name = "Gnd", IsReferenceNode = true
            };
            var nodes = new List <INode> {
                n1, n2, n3
            };

            var vs1 = new VoltageSource(12)
            {
                Name = "Vin1", Node1 = n2, Node2 = n1
            };
            var vs2 = new VoltageSource(5)
            {
                Name = "Vin2", Node1 = n1, Node2 = n3
            };
            var r1 = new Resistor(20)
            {
                Name = "R1", Node1 = n2, Node2 = n3
            };
            var components = new List <IComponent> {
                vs1, vs2, r1
            };

            Simulator.AnalyzeAndUpdate(nodes, components);

            Assert.Equal(n1.Voltage, 5, 3);
            Assert.Equal(n2.Voltage, 17, 3);
            Assert.Equal(vs1.Current, 0.85, 3);
            Assert.Equal(vs2.Current, 0.85, 3);
            Assert.Equal(r1.Current, 0.85, 3);
            Assert.Equal(r1.Voltage, 17, 3);
        }
コード例 #4
0
ファイル: SimulatorTests.cs プロジェクト: MorSofer/ECS
        public void Test2()
        {
            var head = new Node {
                Name = "Head"
            };
            var negativeHead = new Node {
                Name = "I'm Negative"
            };
            var node1 = new Node {
                Name = "N1"
            };
            var node2 = new Node {
                Name = "N2"
            };
            var node3 = new Node {
                Name = "N3"
            };
            var node4 = new Node {
                Name = "N4"
            };
            var node5 = new Node {
                Name = "N5"
            };
            var refnode = new Node {
                IsReferenceNode = true
            };
            var nodes = new List <INode> {
                head, negativeHead, node1, node2, node3, node4, node5, refnode
            };

            var vs1 = new VoltageSource(15)
            {
                Name = "Vin1", Node1 = head, Node2 = refnode
            };
            var vs2 = new VoltageSource(25)
            {
                Name = "Vin2", Node1 = node5, Node2 = negativeHead
            };
            var r1 = new Resistor(120)
            {
                Name = "R1", Node1 = head, Node2 = node1
            };
            var r2 = new Resistor(170)
            {
                Name = "R2", Node1 = node1, Node2 = node2
            };
            var r3 = new Resistor(150)
            {
                Name = "R3", Node1 = node2, Node2 = refnode
            };
            var r4 = new Resistor(70)
            {
                Name = "R4", Node1 = node1, Node2 = node3
            };
            var r5 = new Resistor(100)
            {
                Name = "R5", Node1 = node3, Node2 = node4
            };
            var r6 = new Resistor(1000)
            {
                Name = "R6", Node1 = node4, Node2 = node2
            };
            var r7 = new Resistor(300)
            {
                Name = "R7", Node1 = node4, Node2 = node2
            };
            var r8 = new Resistor(1700)
            {
                Name = "R8", Node1 = node3, Node2 = negativeHead
            };
            var r9 = new Resistor(1500)
            {
                Name = "R9", Node1 = negativeHead, Node2 = node5
            };
            var r10 = new Resistor(100)
            {
                Name = "R10", Node1 = node5, Node2 = node4
            };
            var r11 = new Resistor(400)
            {
                Name = "R11", Node1 = node5, Node2 = node4
            };
            var components = new List <IComponent> {
                vs1, vs2, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11
            };

            Simulator.AnalyzeAndUpdate(nodes, components);

            Assert.Equal(15, head.Voltage, 3);
            Assert.Equal(10.25, node1.Voltage, 2);
            Assert.Equal(5.94, node2.Voltage, 2);
            Assert.Equal(9.25, node3.Voltage, 2);
            Assert.Equal(9.23, node4.Voltage, 2);
            Assert.Equal(10.35, node5.Voltage, 2);
            Assert.Equal(-14.65, negativeHead.Voltage, 2);

            Assert.Equal(0.0396, vs1.Current, 4);
            Assert.Equal(0.03072, vs2.Current, 5);

            Assert.Equal(120, r1.Resistance, 0);
            Assert.Equal(4.75, r1.Voltage, 2);
            Assert.Equal(0.0396, r1.Current, 4);

            Assert.Equal(170, r2.Resistance, 0);
            Assert.Equal(4.31, r2.Voltage, 2);
            Assert.Equal(0.02534, r2.Current, 5);

            Assert.Equal(150, r3.Resistance, 0);
            Assert.Equal(5.94, r3.Voltage, 2);
            Assert.Equal(0.0396, r3.Current, 4);

            Assert.Equal(70, r4.Resistance, 0);
            Assert.Equal(0.998, r4.Voltage, 3);
            Assert.Equal(0.01426, r4.Current, 5);

            Assert.Equal(100, r5.Resistance, 0);
            Assert.Equal(0.02009, r5.Voltage, 5);
            Assert.Equal(0.00020086, r5.Current, 8);

            Assert.Equal(1000, r6.Resistance, 0);
            Assert.Equal(3.29, r6.Voltage, 2);
            Assert.Equal(0.00329, r6.Current, 5);

            Assert.Equal(300, r7.Resistance, 0);
            Assert.Equal(3.29, r7.Voltage, 2);
            Assert.Equal(0.01097, r7.Current, 5);

            Assert.Equal(1700, r8.Resistance, 0);
            Assert.Equal(23.9, r8.Voltage, 1);
            Assert.Equal(0.01406, r8.Current, 5);

            Assert.Equal(1500, r9.Resistance, 0);
            Assert.Equal(-25, r9.Voltage, 0);
            Assert.Equal(-0.01667, r9.Current, 5);

            Assert.Equal(100, r10.Resistance, 0);
            Assert.Equal(1.12, r10.Voltage, 2);
            Assert.Equal(0.01124, r10.Current, 5);

            Assert.Equal(400, r11.Resistance, 0);
            Assert.Equal(1.12, r11.Voltage, 2);
            Assert.Equal(0.00281, r11.Current, 5);
        }