public void GenerateDatas() { try { Collection.Clear(); Circuit cir = new Circuit(); cir.ReadCircuit("Circuits/RCcharge.net"); Circuit cir2 = (Circuit)cir.Clone(); cir2.Setup.RemoveAt(0); ACAnalysis ac = new ACAnalysis(); cir2.Setup.Add(ac); ACSweepSolver.Optimize(cir2); cir2.Solve(); ACSweepSolver sol = (ACSweepSolver)ac.Solver; foreach (var res in sol.Voltages) { //Console.Write(res.Key.ToString() + "rad/seg"); foreach (var nodo in res.Value) { if (nodo.Key == "$N_0001") //Console.Write(nodo.Key + " " + nodo.Value.ToString() + "V\r\n"); this.Collection.Add(new Point(res.Key, nodo.Value.Real)); } } } catch (Exception ex) { throw; } }
public void Simulate(string circuitname) { TxtStatus.Text = circuitname; cir = new Circuit(); //cir.ReadCircuit("Circuits/RCL.net"); cir.ReadCircuit(circuitname); cir2 = (Circuit)cir.Clone(); cir2.Setup.RemoveAt(0); ACAnalysis ac = new ACAnalysis(); cir2.Setup.Add(ac); ACSweepSolver.Optimize(cir2); Refresh(); }
private void Button_Click(object sender, RoutedEventArgs e) { model = new ComplexPlainViewModel(); model.ColorCoding = ColorCoding.ByLights; Circuit cir = new Circuit(); cir.ReadCircuit("Circuits/RCL.net"); cir2 = (Circuit)cir.Clone(); cir2.Setup.RemoveAt(0); ComplexPlainAnalysis ac1 = new ComplexPlainAnalysis(); cir2.Setup.Add(ac1); ACSweepSolver.Optimize(cir2); cir2.Solve(); sol1 = (ComplexPlainSolver)ac1.Solver; int scalefactor = 5000; model.MinX = ac1.SigmaMin / scalefactor; model.MaxX = ac1.SigmaMax / scalefactor; model.MaxY = ac1.WMax / scalefactor; model.MinY = ac1.WMin / scalefactor; model.Columns = ac1.Points; model.Rows = ac1.Points; var data = new Point3D[model.Rows, model.Columns]; //public Tuple<Complex32, Complex32>[,] Results { get; set; } MathNet.Numerics.Complex32 W; for (int i = 0; i < model.Rows; i++) for (int j = 0; j < model.Columns; j++) { W = sol1.WfromIndexes[new Tuple<int, int>(i, j)]; foreach (var node in sol1.Voltages[W]) { if (node.Key == "out") data[i, j] = new Point3D(W.Real /scalefactor, W.Imaginary /scalefactor, //node.Value.Magnitude); 2 * Math.Log10(node.Value.Magnitude)); } } model.Data = data; model.UpdateModel(false); //model.CreateDataArray(ModuleInDB); DataContext = model; }
public void Simulate(string circuitname) { propgrid.SelectedObject = null; cir = new Circuit(); cir.ReadCircuit(circuitname); cir2 = (Circuit)cir.Clone(); cir2.Setup.RemoveAt(0); if (ac5 == null || cir2.Setup.Count == 0) { ac5 = new TransientAnalysis(); ac5.Step = "50n"; ac5.FinalTime = "50u"; cir2.Setup.Add(ac5); } TransientSolver sol5 = (TransientSolver)ac5.Solver; TransientSolver.Optimize(cir2); Refresh(); lbComponents.ItemsSource = cir.Components; lbNodes.ItemsSource = cir.Nodes.Values; }
private void LoadField() { Circuit cir = new Circuit(); cir.ReadCircuit("Circuits/RCL.net"); cir2 = (Circuit)cir.Clone(); cir2.Setup.RemoveAt(0); ComplexPlainAnalysis ac1 = new ComplexPlainAnalysis(); cir2.Setup.Add(ac1); ACSweepSolver.Optimize(cir2); cir2.Solve(); sol1 = (ComplexPlainSolver)ac1.Solver; int Rows = ac1.Points; int Columns = ac1.Points; double[,] data = new double[Rows, Columns]; Point[,] gridData = new Point[Rows, Columns]; MathNet.Numerics.Complex32 W; for (int i = 0; i < Rows; i++) for (int j = 0; j < Columns; j++) { W = sol1.WfromIndexes[new Tuple<int, int>(i, j)]; foreach (var node in sol1.Voltages[W]) { if (node.Key == "out") { data[i, j] = 20 * Math.Log10(node.Value.Magnitude); //data[i, j] = 180 * node.Value.Phase / Math.PI; gridData[i, j] = new Point(W.Real, W.Imaginary); } } } WarpedDataSource2D<double> dataSource = new WarpedDataSource2D<double>(data, gridData); isolineGraph.DataSource = dataSource; trackingGraph.DataSource = dataSource; }
private void Simulate(string FileName) { cir = new Circuit(); cir.ReadCircuit(FileName); cir2 = (Circuit)cir.Clone(); cir2.Setup.RemoveAt(0); ac1 = new ComplexPlainAnalysis(); cir2.Setup.Add(ac1); ACSweepSolver.Optimize(cir2); Update(); lbComponents.ItemsSource = cir.Components; lbNodes.ItemsSource = cir.Nodes.Values; //lbComponents.SelectedItem DataContext = model; }