public void testStorage() { using (var db = new CircuitContext()) { Circuit circuit = new Circuit(); Connection con0 = new Connection(); // GND Connection con1 = new Connection(); Connection con2 = new Connection(); Component battery = new Component(con0, con1, 0, 12); Component resistor1 = new Component(con0, con2, 2, 0); Component resistor2 = new Component(con1, con2, 2, 0); Component resistor3 = new Component(con1, con2, 2, 0); circuit.AddComponent(battery); circuit.AddComponent(resistor1); circuit.AddComponent(resistor2); circuit.AddComponent(resistor3); db.Circuits.Add(circuit); } }
public void TestDifferentID() { Circuit circuit2 = new Circuit(); Connection con20 = new Connection(); // GND Connection con21 = new Connection(); Connection dummyConnection = new Connection(); Connection dummyConnection2 = new Connection(); Connection con22 = new Connection(); Component battery2 = new Component(con20, con21, 0, 12); Component resistor21 = new Component(con20, con22, 2, 0); Component dummyComponent = new Component(dummyConnection, dummyConnection2, 0, 0); Component dummyComponent2 = new Component(dummyConnection, dummyConnection2, 0, 0); Component resistor22 = new Component(con21, con22, 2, 0); Component resistor23 = new Component(con21, con22, 2, 0); circuit2.AddComponent(battery2); circuit2.AddComponent(resistor21); circuit2.AddComponent(resistor22); circuit2.AddComponent(resistor23); CircuitCalculator circuitCalculator2 = new CircuitCalculator(); circuitCalculator2.Calculate(circuit2); Assert.IsTrue(Math.Abs(con20.Volts - 0) < 0.0001); Assert.IsTrue(Math.Abs(con21.Volts - 12) < 0.0001); Assert.IsTrue(Math.Abs(con22.Volts - 8) < 0.0001); Assert.IsTrue(Math.Abs(battery2.Amps - 4) < 0.0001); Assert.IsTrue(Math.Abs(resistor21.Amps - 4) < 0.0001); Assert.IsTrue(Math.Abs(resistor22.Amps - 2) < 0.0001); Assert.IsTrue(Math.Abs(resistor23.Amps - 2) < 0.0001); }
public void CircuitModifyShouldHaveCorrectNumberOfComponentsAndConnections() { Circuit circuit = new Circuit(); Connection con0 = new Connection(); // GND Connection con1 = new Connection(); Connection con2 = new Connection(); Component battery = new Component(con0, con1, 0, 24); Component resistor1 = new Component(con1, con2, 2, 0); Component resistor2 = new Component(con2, con0, 4, 0); circuit.AddComponent(battery); circuit.AddComponent(resistor1); circuit.AddComponent(resistor2); Assert.IsTrue(circuit.ListComponents.Count == 3); Assert.IsTrue(circuit.ListConnections.Count == 3); circuit.ModifyComponent(resistor1, con2, con0); circuit.ModifyComponent(resistor1, con0, con1); Assert.IsTrue(circuit.ListComponents.Count == 3); Assert.IsTrue(circuit.ListConnections.Count == 3); }
public void TestForNoVoltageSourceConnections() { Circuit circuit = new Circuit(); Connection con0 = new Connection(); // GND Connection con1 = new Connection(); Component resistor1 = new Component(con0, con1, 2, 0); Component resistor2 = new Component(con1, con0, 2, 0); Component resistor3 = new Component(con1, con0, 2, 0); circuit.AddComponent(resistor1); circuit.AddComponent(resistor2); circuit.AddComponent(resistor3); CircuitCalculator circuitCalculator = new CircuitCalculator(); circuitCalculator.Calculate(circuit); }
public void TestCorrectCircuirs() { Circuit circuit1 = new Circuit(); Connection con10 = new Connection(); // GND Connection con11 = new Connection(); Connection con12 = new Connection(); Connection con13 = new Connection(); Connection con14 = new Connection(); Component battery1 = new Component(con10, con11, 0, 24); Component resistor11 = new Component(con10, con12, 2, 0); Component resistor12 = new Component(con10, con12, 4, 0); Component resistor13 = new Component(con11, con13, 3, 0); Component resistor14 = new Component(con11, con14, 5, 0); Component resistor15 = new Component(con13, con14, 1, 0); Component resistor16 = new Component(con12, con13, 2, 0); circuit1.AddComponent(battery1); circuit1.AddComponent(resistor11); circuit1.AddComponent(resistor12); circuit1.AddComponent(resistor13); circuit1.AddComponent(resistor14); circuit1.AddComponent(resistor15); circuit1.AddComponent(resistor16); CircuitCalculator circuitCalculator1 = new CircuitCalculator(); circuitCalculator1.Calculate(circuit1); Assert.IsTrue(Math.Abs(con10.Volts - 0) < 0.0001); Assert.IsTrue(Math.Abs(con11.Volts - 24) < 0.0001); Assert.IsTrue(Math.Abs(con12.Volts - 6) < 0.0001); Assert.IsTrue(Math.Abs(con13.Volts - 15) < 0.0001); Assert.IsTrue(Math.Abs(con14.Volts - 16.5) < 0.0001); Assert.IsTrue(Math.Abs(battery1.Amps - 4.5) < 0.0001); Assert.IsTrue(Math.Abs(resistor11.Amps - 3) < 0.0001); Assert.IsTrue(Math.Abs(resistor12.Amps - 1.5) < 0.0001); Assert.IsTrue(Math.Abs(resistor13.Amps - 3) < 0.0001); Assert.IsTrue(Math.Abs(resistor14.Amps - 1.5) < 0.0001); Assert.IsTrue(Math.Abs(resistor15.Amps - 1.5) < 0.0001); Assert.IsTrue(Math.Abs(resistor16.Amps - 4.5) < 0.0001); Circuit circuit2 = new Circuit(); Connection con20 = new Connection(); // GND Connection con21 = new Connection(); Connection con22 = new Connection(); Component battery2 = new Component(con20, con21, 0, 12); Component resistor21 = new Component(con20, con22, 2, 0); Component resistor22 = new Component(con21, con22, 2, 0); Component resistor23 = new Component(con21, con22, 2, 0); circuit2.AddComponent(battery2); circuit2.AddComponent(resistor21); circuit2.AddComponent(resistor22); circuit2.AddComponent(resistor23); CircuitCalculator circuitCalculator2 = new CircuitCalculator(); circuitCalculator2.Calculate(circuit2); Assert.IsTrue(Math.Abs(con20.Volts - 0) < 0.0001); Assert.IsTrue(Math.Abs(con21.Volts - 12) < 0.0001); Assert.IsTrue(Math.Abs(con22.Volts - 8) < 0.0001); Assert.IsTrue(Math.Abs(battery2.Amps - 4) < 0.0001); Assert.IsTrue(Math.Abs(resistor21.Amps - 4) < 0.0001); Assert.IsTrue(Math.Abs(resistor22.Amps - 2) < 0.0001); Assert.IsTrue(Math.Abs(resistor23.Amps - 2) < 0.0001); }
public void TestForNotEnoughComponents() { Circuit circuit = new Circuit(); CircuitCalculator circuitCalculator = new CircuitCalculator(); circuitCalculator.Calculate(circuit); }
public void RunTest() { Circuit circuit = new Circuit(); Connection con0 = new Connection(); Connection con1 = new Connection(); Connection con2 = new Connection(); Connection con3 = new Connection(); Component battery1 = new Component(con0, con1, 0, 5); Component battery2 = new Component(con2, con3, 0, 5); Component resistor1 = new Component(con0, con1, 10, 0); Component resistor2 = new Component(con2, con3, 10, 0); circuit.AddComponent(battery1); circuit.AddComponent(battery2); circuit.AddComponent(resistor1); circuit.AddComponent(resistor2); //Connection con0 = new Connection(); // GND //Connection con1 = new Connection(); //Connection con2 = new Connection(); //Connection con3 = new Connection(); //Connection con4 = new Connection(); //Connection con5 = new Connection(); //Component battery1 = new Component(con0, con1, 0, 24); //Component battery2 = new Component(con3, con5, 0, 12); //Component resistor1 = new Component(con0, con2, 2,0); //Component resistor2 = new Component(con0, con2, 4, 0); //Component resistor3 = new Component(con1, con3, 3, 0); //Component resistor4 = new Component(con1, con4, 5, 0); //Component resistor5 = new Component(con4, con5, 1, 0); //Component resistor6 = new Component(con2, con3, 2, 0); //circuit.AddComponent(battery1); //circuit.AddComponent(battery2); //circuit.AddComponent(resistor1); //circuit.AddComponent(resistor2); //circuit.AddComponent(resistor3); //circuit.AddComponent(resistor4); //circuit.AddComponent(resistor5); //circuit.AddComponent(resistor6); // OLD TEST CIRCUIT: //Circuit circuit = new Circuit(); //Connection con0 = new Connection(); // GND //Connection con1 = new Connection(); //Connection con2 = new Connection(); //Component battery = new Component(con0, con1, 0, 12); //Component resistor1 = new Component(con0, con2, 2, 0); //Component resistor2 = new Component(con1, con2, 2, 0); //Component resistor3 = new Component(con1, con2, 2, 0); //circuit.AddComponent(battery); //circuit.AddComponent(resistor1); //circuit.AddComponent(resistor2); //circuit.AddComponent(resistor3); CircuitCalculator circuitCalculator = new CircuitCalculator(); circuitCalculator.Calculate(circuit); Matrix matrixA = new Matrix(3,3); matrixA.elements = new double[3,3] { {1,2,3}, {4,5,6}, {7,8,0}}; Matrix matrixZ = new Matrix(3,1); matrixZ.elements = new double[3, 1] {{ 1}, { 2}, { 3}}; Matrix newMatrx = Matrix.SolveMatrix(matrixA, matrixZ); Circuit circuit2 = new Circuit(); // empty line so i can put a breakpoint here lol }
public void Calculate(Circuit circuit) { var components = circuit.ListComponents; var nodes = circuit.ListConnections; int numberOfVoltageSources = getNumberOfVoltageSources(components); int matrixDimension = numberOfVoltageSources + nodes.Count - 1; if (components.Count < 2) throw new ArgumentException("Invalid Number of Components"); if (numberOfVoltageSources < 1) throw new ArgumentException("No Voltage Sources Found"); var A = new Matrix(matrixDimension, matrixDimension); var z = new Matrix(matrixDimension, 1); List<Component> voltageSources = GetVoltageSources(components); Dictionary<int, int> ID_NodeOrder = new Dictionary<int, int>(); Connection groundNode = findGroundNode(nodes, components); if (groundNode.Id != 0) { int oldGroundId = nodes.BinarySearch(groundNode); swapNodes(nodes, 0, oldGroundId); } /* map nodeID into 0...n ordered */ for (int i = 0; i < nodes.Count; i++) { ID_NodeOrder.Add(nodes[i].Id, i); } int matrixElement = nodes.Count - 1; A = FillMatrixA(A, components, nodes, ID_NodeOrder, voltageSources); z = FillMatrixz(z, matrixElement, voltageSources); A.PrintMatrix(); z.PrintMatrix(); calculateVoltages(components, nodes, A, z, ID_NodeOrder, voltageSources); calculateCurrent(components); }