static void TestTransAnalysis() { var ckt = TransientTestCkt(); var data = new TransientAnalysisData(ckt, 1E-5, 6E-3); TransientAnalysis.Analyze(ckt, ref data); var dataVList = new List <double>(); foreach (var item in data.Result) { dataVList.Add(item[0] - item[1]); } double[] dataV = dataVList.ToArray(); /* * for (int i = 0; i < 20; i++) { * Console.Write("{0}, ", dataV[i]); * } * Console.WriteLine(); */ int pointCount = dataV.Length; double[] dataXs = ScottPlot.DataGen.Consecutive(pointCount); var plt = new ScottPlot.Plot(); plt.PlotScatter(dataXs, dataV); plt.Title("TestTransAnalysis"); plt.XLabel("Time/(10us)"); plt.YLabel("Potential/V"); plt.SaveFig("./Plots/TestTransAnalysis.png"); }
static void TestACSource() { var ckt1 = ACVSourceTestCkt(); var data1 = new TransientAnalysisData(ckt1, 1E-2, 2); TransientAnalysis.Analyze(ckt1, ref data1); var dataVList1 = new List <double>(); foreach (var item in data1.Result) { dataVList1.Add(-item[1]); } double[] dataV1 = dataVList1.ToArray(); /* * for (int i = 0; i < 20; i++) { * Console.Write("{0}, ", dataV1[i]); * } * Console.WriteLine(); */ int pointCount = dataV1.Length; double[] dataXs = ScottPlot.DataGen.Consecutive(pointCount); var plt = new ScottPlot.Plot(); plt.PlotScatter(dataXs, dataV1); plt.Title("TestACSource"); plt.XLabel("Time/(10ms)"); plt.YLabel("Result"); plt.SaveFig("./Plots/TestACSource.png"); }
static void TestACISource() { var ckt = ACISourceTestCircuit(); var data = new TransientAnalysisData(ckt, 1E-2, 2); TransientAnalysis.Analyze(ckt, ref data); var dataVList = new List <double>(); foreach (var item in data.Result) { dataVList.Add(item[0]); } double[] dataV = dataVList.ToArray(); double[] shouldDataV = { 2, 2, 2, 2, 2, 1.2928932188134525, 1.4909585842496287, 1.7210088939607708, 1.9685892409218717, 2.2181432413965423, 2.4539904997395467, 2.6613118653236514, 2.8270805742745617, 2.940880768954225, 2.99556196460308, 2.9876883405951378, 2.9177546256839815, 2.79015501237569, 2.612907053652976, 2.39714789063478, }; for (int i = 0; i < 20; i++) { Assert.True(Precision.AlmostEqual(dataV[i], shouldDataV[i], 8)); } }
static void RLTestCircuit_TransAnalysis() { var ckt = RLTestCircuit(); var data = new TransientAnalysisData(ckt, 1E-5, 6E-3); TransientAnalysis.Analyze(ckt, ref data); var dataVList = new List <double>(); foreach (var item in data.Result) { dataVList.Add(item[0] - item[1]); } double[] dataV = dataVList.ToArray(); double[] shouldDataV = { 0, 0.009900990099009901, 0.019703950593079108, 0.029409852072355552, 0.039019655517183706, 0.048534312393251185, 0.057954764745793245, 0.06728194529286459, 0.0765167775176877, 0.08566017576008682, 0.09471304530701664, 0.10367628248219468, 0.1125507747348462, 0.12133740072757047, 0.13003703042333706, 0.13865052517162083, 0.14717873779368396, 0.1556225126670138, 0.16398268580892456, 0.1722600849593312, }; for (int i = 0; i < 20; i++) { Assert.True(Precision.AlmostEqual(dataV[i], shouldDataV[i], 8)); } }