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();
             */
        }
Beispiel #2
0
        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);
            }
        }