private void PopulateVMPropertiesFromChildren() { LJVScanVMCollection = new ObservableCollection <LJVScanVM>(); var LJVScansList = TheLJVScanSummary.LJVScans.ToList(); foreach (LJVScan scan in LJVScansList) { LJVScanVMCollection.Add(new LJVScanVM(scan)); } var peakEQEsArray = LJVScansList.Select(x => Convert.ToDouble(x.MaxEQE)).ToArray(); PeakEQE.PopulateStatsFromArrayAndRound(peakEQEsArray, 1); var EQEsAt1kArray = LJVScansList.Select(x => Convert.ToDouble(x.At1kNitsEQE)).ToArray(); EQEat1k.PopulateStatsFromArrayAndRound(EQEsAt1kArray, 1); var ELSpecsList = TheLJVScanSummary.ELSpectrums.ToList(); var PeakLambdasArray = ELSpecsList.Select(x => Convert.ToDouble(x.ELPeakLambda)).ToArray(); PeakLambda.PopulateStatsFromArrayAndRound(PeakLambdasArray, 1); var FWHMArray = ELSpecsList.Select(x => Convert.ToDouble(x.ELFWHM)).ToArray(); FWHM.PopulateStatsFromArrayAndRound(FWHMArray, 1); var CIExArray = ELSpecsList.Select(x => Convert.ToDouble(x.CIEx)).ToArray(); CIEx.PopulateStatsFromArrayAndRound(CIExArray, 3); var CIEyArray = ELSpecsList.Select(x => Convert.ToDouble(x.CIEy)).ToArray(); CIEy.PopulateStatsFromArrayAndRound(CIEyArray, 3); }
public void PopulatePropertiesFromQDBatch() { UpdateEntityPropsFromName(); var ELSpecs = TheQDBatch.ELSpectrums.ToList(); var PeakLambdasArray = ELSpecs.Select(x => Convert.ToDouble(x.ELPeakLambda)).ToArray(); PeakLambda.PopulateStatsFromArrayAndRound(PeakLambdasArray, 1); var FWHMArray = ELSpecs.Select(x => Convert.ToDouble(x.ELFWHM)).ToArray(); FWHM.PopulateStatsFromArrayAndRound(FWHMArray, 1); var CIExArray = ELSpecs.Select(x => Convert.ToDouble(x.CIEx)).ToArray(); CIEx.PopulateStatsFromArrayAndRound(CIExArray, 3); var CIEyArray = ELSpecs.Select(x => Convert.ToDouble(x.CIEy)).ToArray(); CIEy.PopulateStatsFromArrayAndRound(CIEyArray, 3); var DevicesWithThisQDBatch = TheQDBatch.Devices.ToList(); NumberOfDevices = DevicesWithThisQDBatch.Count; BestEQE = 0; List <double> peakEQEs = new List <double>(); foreach (Device d in DevicesWithThisQDBatch) { foreach (DeviceLJVScanSummary ss in d.DeviceLJVScanSummaries) { if (ss.MaxEQE > BestEQE) { BestEQE = ss.MaxEQE; } foreach (LJVScan scan in ss.LJVScans) { peakEQEs.Add(Convert.ToDouble(scan.MaxEQE)); } } } var peakEQEArray = peakEQEs.ToArray(); PeakEQE.PopulateStatsFromArrayAndRound(peakEQEArray, 2); }
static void Main(string[] args) { //NearField[] x_fields, y_fields; //string[] y_files = Directory.EnumerateFiles(@"d:\Documents\PhD\KNU\Tasks\Task_10_New_program\Fields_440_30x30_X\", // "*.dat", SearchOption.TopDirectoryOnly).ToArray(); //y_fields = new NearField[y_files.Length]; //for (int i = 0; i < y_fields.Length; ++i) //{ // NearField.op_Assign(ref y_fields[i], NearField.ParseMSTM(y_files[i], 0.440)); // //y_fields[i].SaveToFile(y_files[i].Replace("dat", "bin")); //} ////---------------- //x_fields = new NearField[81]; //int[] order = { -1, -2, -3, -4, 0, 1, 2, 3, 4 }; //double beam_width = 0.6328 * y_fields[0].Wavenumber; //for (int x = 0, i = 0; x < order.Length; x++) //{ // for (int y = 0; y < order.Length; y++, i++) // { // NearField.op_Assign(ref x_fields[i], // NearField.GenerateGaussianBeam(order[x] * y_fields[0].Wavelength * y_fields[0].Wavenumber, // order[y] * y_fields[0].Wavelength * y_fields[0].Wavenumber, beam_width, y_fields[0].NodesX, // y_fields[0].NodesY, y_fields[0].StepX, y_fields[0].StepY, y_fields[0].MinX, // y_fields[0].MinY, y_fields[0].Wavelength)); // x_fields[i].SaveToFile( // string.Format("d:/Documents/PhD/KNU/Tasks/Task_10_New_program/Fields_440_30x30_X/Incident/nf_sp1872_111_{0}{1}_{2}{3}_440_X.dat", // order[x] < 0 ? "m" : "p", Math.Abs(order[x]), order[y] < 0 ? "m" : "p", Math.Abs(order[y]))); // } //} //---------------- //string[] x_files = Directory.EnumerateFiles(@"d:\Documents\PhD\KNU\Tasks\Task_10_New_program\Fields\", // "*.bin", SearchOption.TopDirectoryOnly).ToArray(); //x_fields = new NearField[x_files.Length]; //for (int i = 0; i < x_fields.Length; ++i) //{ // NearField.op_Assign(ref x_fields[i], new NearField(x_files[i])); //} //Basis basis = new Basis(x_fields, y_fields); //basis.Save(@"d:\Documents\PhD\KNU\Tasks\Task_10_New_program\Basis_81f_440X\basis_81f.basbin"); //------------------- Basis basis = new Basis(@"d:\Documents\PhD\KNU\Tasks\Task_10_New_program\Basis_81f_440X\basis_81f.basbin"); basis.UsedFields = 81; System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); int x_max, y_max; List <OptResult> results = new List <OptResult>((240 - 20) / 10); // (161 - 4) / 9 for 0.6328 20x20 for (int x1 = 20; x1 <= 220; x1 += 10) // 4, 148, 9 { NearField nf = null; stopwatch.Start(); // 76 for 0.6328 NearField.op_Assign(ref nf, WavefrontShaping.Focus(basis, new System.Drawing.Rectangle(x1, 120, 9, 9), 1000, 10000, 1E-8)); stopwatch.Stop(); Console.WriteLine(stopwatch.Elapsed.ToString()); nf.SaveToFile(string.Format(@"d:\Documents\PhD\KNU\Tasks\Task_10_New_program\Fields_440_30x30_X\Focus_AxisX\{0}.bin", x1.ToString("D3"))); stopwatch.Reset(); double average_energy = 0.0; OptResult temp_res = new OptResult(); temp_res.PeakIntensity = nf.GetMaxIntensity(out x_max, out y_max); temp_res.PeakX = x_max; temp_res.PeakY = y_max; for (int y = 0; y < nf.NodesY; ++y) { for (int x = 0; x < nf.NodesX; ++x) { average_energy += (nf[0, x, y] * Complex.Conjugate(nf[0, x, y]) + nf[1, x, y] * Complex.Conjugate(nf[1, x, y]) + nf[2, x, y] * Complex.Conjugate(nf[2, x, y])).Real; } } average_energy /= nf.NodesX * nf.NodesY; temp_res.AverageEnergySingle = average_energy; temp_res.EnhancementSingle = temp_res.PeakIntensity / temp_res.AverageEnergySingle; //double fwhm_x_min = 0.0, fwhm_x_max = 0.0, fwhm_y_min = 0.0, fwhm_y_max = 0.0, fwhm_area = 0.0; FWHM fwhm = nf.CalculateFWHM(); //nf.CalculateFWHM(out fwhm_x_min, out fwhm_x_max, out fwhm_y_min, out fwhm_y_max, out fwhm_area); temp_res.XminFWHM = fwhm.Box.Width; temp_res.YminFWHM = fwhm.Box.Height; temp_res.AreaFWHM = fwhm.Area; temp_res.Energy = nf.GetElectricFieldEnergy(); results.Add(temp_res); nf.Dispose(); } int i = 20; foreach (OptResult res in results) { Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}", i, res.PeakX.ToString(), res.PeakY.ToString(), res.PeakIntensity.ToString("E4"), res.AverageEnergySingle.ToString("E4"), res.XminFWHM.ToString("F2"), res.YminFWHM.ToString("F2"), res.AreaFWHM.ToString(), res.Energy); i += 10; } basis.Dispose(); Console.ReadKey(); //------------------- //NearField nf = null; ////System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); ////stopwatch.Start(); //NearField.op_Assign(ref nf, NearField.Focus(basis, new System.Drawing.Rectangle(76, 76, 9, 9))); ////stopwatch.Stop(); //nf.Export("d:/foc_temp.csv"); //nf.Dispose(); //Console.WriteLine("Focusing time: {0}", stopwatch.Elapsed.ToString()); }