private async Task<PlotModel> ComparePdfElectron(Double step) { //var sp = new PerformanceComputing.SpeedParticle(0, 1100000, Environment.ProcessorCount); //await sp.DecompositionSpeedAsync(); //var t = sp.Electrons; //List<double> tempList = new List<double>(970303); //foreach (Particle particle in t) //{ // var speed = particle.Vx + particle.Vy + particle.Vz; // tempList.Add(speed); //} //tempList.Sort(); var maxwell = new MaxwellParticleDistribution(0, 1100000, Environment.ProcessorCount); await maxwell.DistributionParticleAsync(); var distributionElectrons = maxwell.ElectronsPdf(); var plotModel = new PlotModel { Title = "Распределение электронов" }; var linearBarSeries = new LinearBarSeries { FillColor = OxyColor.FromArgb(69, 76, 175, 80), StrokeThickness = 1, StrokeColor = OxyColor.FromArgb(255, 76, 175, 80), Title = "ElectronPDF" }; var categoryAxis = new CategoryAxis { TickStyle = TickStyle.Outside, MajorStep = step, Title = "Скорость частиц", Unit = "м/с", TitleFontSize = 15 }; var k = 0; for (var i = 0; i < 1100000; i += 11000) { linearBarSeries.Points.Add(new DataPoint(k++, distributionElectrons[i])); categoryAxis.ActualLabels.Add(i.ToString()); } plotModel.Axes.Add(categoryAxis); plotModel.Series.Add(linearBarSeries); return plotModel; }
private async void Compare(List<Particle> speed) { var fullSpeed = new List<double>(); speed.ForEach(p => fullSpeed.Add(p.Vx * p.Vx + p.Vy * p.Vy + p.Vz * p.Vz)); fullSpeed.Sort(); var h = (fullSpeed[fullSpeed.Count - 1] - fullSpeed[0]) / 100; var _sp = new List<Double>(); for (int i = 0; i < 100; i++) { var Ai = fullSpeed[0] + ((i + 1) - 1) * h; var Bi = fullSpeed[0] + ((i + 2) - 1) * h; _sp.Add(fullSpeed.FindAll(x => x > Ai && x < Bi).Count); } MaxwellParticleDistribution maxwell = new MaxwellParticleDistribution(0, 1100000, 4); await maxwell.DistributionCarbonsAsync(); var maxwellSpeed = new List<int>(maxwell.Carbons); var n = new List<double>(); for (int i = 0; i < 100; i++) { var sp = Math.Pow(_sp[i] - 100 * maxwellSpeed[i], 2) / 100 * maxwellSpeed[i] * (1 - maxwellSpeed[i]); n.Add(sp); } double sum = 0; n.ForEach(p => sum += p); }
private PlotModel ComparePdfHelium(Double step) { var maxwell = new MaxwellParticleDistribution(0, 7000, Environment.ProcessorCount); var distributionElectrons = maxwell.HeliumsPdf(); var plotModel = new PlotModel { Title = "Распределение частиц гелия" }; var linearBarSeries = new LinearBarSeries { FillColor = OxyColor.FromArgb(69, 76, 175, 80), StrokeThickness = 1, StrokeColor = OxyColor.FromArgb(255, 76, 175, 80), Title = "HeliumPDF" }; var categoryAxis = new CategoryAxis { TickStyle = TickStyle.Outside, MajorStep = step, Title = "Скорость частиц", Unit = "м/с", TitleFontSize = 15 }; var k = 0; for (int i = 0; i < 7000; i += 100) { linearBarSeries.Points.Add(new DataPoint(k++, distributionElectrons[i])); categoryAxis.ActualLabels.Add(i.ToString()); } plotModel.Axes.Add(categoryAxis); plotModel.Series.Add(linearBarSeries); return plotModel; }