private static void Execute(Options options) { var path = "C:\\Users\\bergerd\\simplices.csv"; var samples = ShearTriangle2D.RandomSamples(50000); //foreach(var sample in samples) // VariousHelpers.SampleToFile(path, sample); Console.WriteLine(MessageAtStart(options)); var randomSimplices = Simplex3D.RandomSamples(options.NumberSamples); var counter = 0; var progressBar = new ProgressBar(); var nbThreads = 7; var vols = new double[nbThreads]; if (File.Exists(path)) { File.Delete(path); } var partition = VariousHelpers.GetPartition(options.NumberSamples, nbThreads); Parallel.For(0, nbThreads, ell => { for (int i = partition[ell][0]; i < partition[ell][1]; i++) { var stopWatch = new Stopwatch(); stopWatch.Start(); randomSimplices[i].Compute(3000); stopWatch.Stop(); counter += 1; Debug.WriteLine($"Successfully generated {counter} random samples."); lock (_simplexLock) { progressBar.Report(counter, options.NumberSamples, stopWatch.Elapsed.TotalSeconds); VariousHelpers.SampleToFile(path, randomSimplices[i]); } } }); /* * var sampleFactory = new SampleFactory(options.NumberSamples, options.Dimension, options.Integrate, * options.MeshSteps, options.MaxNorm, options.ZeroAmongEdges, options.ComputeAngles, options.ComputeAnalytical); * * var progressBar = new ProgressBar(); * sampleFactory.RaiseSampleCreatorEvent += progressBar.HandleSampleCreationEvent; * * Console.WriteLine(_computing); * (var randomSimplices, var hyperRandomComplexes) = sampleFactory.RandomSamples(); */ }
public static void SampleToFile(string path, ShearTriangle2D sample) { var engine = new FileHelperEngine(typeof(ShearTriangle2D)); var samples = new List <ShearTriangle2D>() { sample }; if (File.Exists(path)) { engine.AppendToFile(path, sample); } else { engine.HeaderText = engine.GetFileHeader(); engine.WriteFile("C:\\Users\\bergerd\\simplices.csv", new List <ShearTriangle2D>() { sample }); } }
public void TestTriangles() { var randomSamples = ShearTriangle2D.RandomSamples(NUMBER_SAMPLES); var counter = 0; var path = "C:\\Users\\bergerd\\simplices.csv"; foreach (var triangle in randomSamples) { var trigonometricRelations = TestFastSimplex3D.Relations(); foreach (var trigonometricRelation in trigonometricRelations) { var deviation = Math.Abs(trigonometricRelation(triangle) - .0); if (deviation >= TOLERANCE) { throw new Exception($"Deviation too high for triangle number {counter}!"); } } VariousHelpers.SampleToFile(path, triangle); } }