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;
        }