private void Run_Click(object sender, EventArgs e) { nAtoms = (int)AtomsUP.Value; nSteps = (int)StepsUP.Value; if (nAtoms * nAtoms != MatrixS.Length) { MatrixReuse.Checked = false; } T = double.Parse(TempTB.Text.Replace(",", "."), Info); J = double.Parse(ChangeTB.Text.Replace(",", "."), Info); Run.Enabled = false; CancelBT.Enabled = true; Zoom = ZoomBar.Value / 100.0f; int size = nAtoms * (AtomSize + AtomSpace) + 2 * Border; Engine.Width = (int)(size * Zoom); Engine.Height = Engine.Width; MainContainer_Resize(sender, e); Progress.Value = 0; T0 = DateTime.Now; SimTimer.Enabled = true; if (UseGPU.Checked) { CancelBT.Enabled = false; Progress.Style = ProgressBarStyle.Continuous; SimulatorGPU.RunWorkerAsync(); } else { Simulator.RunWorkerAsync(); } Done = false; }
public void SetRunAndSave(int Atoms, int Steps, double J, double T, bool UseGPU, String FinalImageFile, String InitialImage, String FinalMatrix, String InitialMatrix) { nAtoms = Atoms; nSteps = Steps; MatrixReuse.Checked = false; this.T = T; this.J = J; Run.Enabled = false; CancelBT.Enabled = true; IsOffLine = true; Zoom = ZoomBar.Value / 100.0f; int size = nAtoms * (AtomSize + AtomSpace) + 2 * Border; Engine.Width = (int)(size * Zoom); Engine.Height = Engine.Width; MainContainer_Resize(null, null); Progress.Value = 0; T0 = DateTime.Now; Done = false; if (UseGPU) { CancelBT.Enabled = false; Progress.Style = ProgressBarStyle.Continuous; SimulatorGPU.RunWorkerAsync(); } else { Simulator.RunWorkerAsync(); } while (!Done) { if (UseGPU) { System.Threading.Thread.Sleep(100); } else { System.Threading.Thread.Sleep(1000); } Console.Out.Write("."); } Console.Out.WriteLine(" [DONE]"); if (!String.IsNullOrEmpty(FinalImageFile)) { Console.Out.WriteLine("Final Image [SAVED]"); MatrixR = MatrixS; Engine.Refresh(); using (Bitmap bmp = new Bitmap(Engine.Width, Engine.Height)) { Engine.DrawToBitmap(bmp, new Rectangle(0, 0, Engine.Width, Engine.Height)); bmp.Save(FinalImageFile); } } if (!String.IsNullOrEmpty(FinalMatrix)) { Console.Out.WriteLine("Final Matrix [SAVED]"); MatrixR = MatrixS; using (StreamWriter writer = new StreamWriter(FinalMatrix)) { for (int i = 0; i < nAtoms; i++) { String Line = ""; for (int j = 0; j < nAtoms; j++) { int p = i * nAtoms + j; Line += String.Format("{0};", MatrixR[p]); } Line = Line.Remove(Line.Length - 1); writer.WriteLine(Line); } } } if (!String.IsNullOrEmpty(InitialMatrix)) { Console.Out.WriteLine("Initial Matrix [SAVED]"); MatrixR = Matrix0; using (StreamWriter writer = new StreamWriter(InitialMatrix)) { for (int i = 0; i < nAtoms; i++) { String Line = ""; for (int j = 0; j < nAtoms; j++) { int p = i * nAtoms + j; Line += String.Format("{0};", MatrixR[p]); } Line = Line.Remove(Line.Length - 1); writer.WriteLine(Line); } } } if (!String.IsNullOrEmpty(InitialImage)) { Console.Out.WriteLine("Initial Image [SAVED]"); MatrixR = Matrix0; Engine.Refresh(); using (Bitmap bmp = new Bitmap(Engine.Width, Engine.Height)) { Engine.DrawToBitmap(bmp, new Rectangle(0, 0, Engine.Width, Engine.Height)); bmp.Save(InitialImage); } } MatrixR = MatrixS; }