Ejemplo n.º 1
0
        private void showDataForMouseLocation(PointF coord)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();

            CoreLossResults part  = null;
            int             iE    = -1;
            double          min_d = double.MaxValue;
            double          d     = 0;

            foreach (var clResults in resultList)
            {
                for (int i = 0; i < clResults.elements.Count; i++)
                {
                    d = Math.Pow(coord.X - clResults.elements[i].center.X, 2) + Math.Pow(coord.Y - clResults.elements[i].center.Y, 2);
                    if (d < min_d)
                    {
                        min_d = d;
                        part  = clResults;
                        iE    = i;
                    }
                }
            }

            sw.Stop();

            if (part != null && iE >= 0)
            {
                showGraphDataForElement(part, iE);
            }
        }
Ejemplo n.º 2
0
        private void showGraphDataForElement(CoreLossResults part, int index)
        {
            label_coordinate.Text = string.Format("{0}, Element {1}, coreloss = {2} (W/kg)",
                                                  part.name, index, getElementValue(part, index));

            zc.IsShowPointValues = true;
            MasterPane masterPane = zc.MasterPane;

            // clear pane
            masterPane.PaneList.Clear();

            // first pane: Bx,By
            GraphPane pane1 = new GraphPane();

            pane1.Title.Text = "Vector B";
            pane1.AddCurve("VectorB", part.Bx[index], part.By[index], Color.Blue, SymbolType.None);
            //pane1.XAxis.Scale.Max = 2;
            //pane1.XAxis.Scale.Min = -2;
            //pane1.YAxis.Scale.Max = 2;
            //pane1.YAxis.Scale.Min = -2;

            masterPane.Add(pane1);

            // second pane
            GraphPane pane2 = new GraphPane();

            pane2.Title.Text = "Bx, By by time";
            double T       = 1.0 / part.basefreq;
            int    nSample = part.Bx[index].Length;

            double[] time = Enumerable.Range(0, nSample).Select(i => T * i / nSample).ToArray();
            pane2.AddCurve("Bx", time, part.Bx[index], Color.Blue, SymbolType.None);
            pane2.AddCurve("By", time, part.By[index], Color.Red, SymbolType.None);
            pane2.YAxis.Scale.Max = 2;
            pane2.YAxis.Scale.Min = -2;

            masterPane.Add(pane2);

            // 3rd pane
            GraphPane pane3 = new GraphPane();

            pane3.Title.Text = "Fourier analysis of Bx, By";
            nSample          = part.Bfftx[index].Length / 2;
            double[] freq  = Enumerable.Range(0, nSample).Select(i => (double)i * part.basefreq).ToArray();
            double[] bfftx = Enumerable.Range(0, nSample).Select(i => part.Bfftx[index][i]).ToArray();
            double[] bffty = Enumerable.Range(0, nSample).Select(i => part.Bffty[index][i]).ToArray();

            pane3.AddBar(string.Format("FFT Bx (THD = {0:F2}%)", calcTHD(bfftx)), freq, bfftx, Color.Blue);
            pane3.AddBar(string.Format("FFT By (THD = {0:F2}%)", calcTHD(bffty)), freq, bffty, Color.Red);
            //pane3.XAxis.Scale.Max = 30 * part.basefreq;
            //pane3.XAxis.Scale.Min = 0;

            masterPane.Add(pane3);

            // layout them
            using (Graphics g = CreateGraphics())
            {
                masterPane.SetLayout(g, PaneLayout.SingleColumn);
            }

            zc.AxisChange();
            zc.Invalidate();
        }
Ejemplo n.º 3
0
 private double getElementValue(CoreLossResults part, int i)
 {
     return((part.elementEddyLosses[i] + part.elementHysLosses[i])
            / (part.elements[i].area * part.length * 1e-9) / part.ro);     //W/kg
 }