public (List <Simplex>, List <SimplexComplex>) RandomSamples()
        {
            var riemannianSpace = Geometries.GetSpace(CurvatureType, Dim);
            var randomSimplices = Simplex.RandomSamples(NbSamples, Dim, riemannianSpace, ZeroAmongEdges, MaxNorm);
            var randomComplexes = new List <SimplexComplex>();
            var counter         = 0;

            foreach (var randomSimplex in randomSimplices)
            {
                var stopWatch = new Stopwatch();
                stopWatch.Start();

                var simplexComplex = new SimplexComplex(randomSimplex);
                simplexComplex.Propagate();

                if (Integrate)
                {
                    simplexComplex.Integrate(MeshSteps, null, ComputeAnalytical);
                }

                if (ComputeAngles)
                {
                    simplexComplex.ComputeAngles();
                }

                counter++;

                stopWatch.Stop();
                var sampleCreationEventArgs = new SampleCreationEventArgs(counter, NbSamples, stopWatch.Elapsed.TotalSeconds);
                OnSampleCreationEvent(sampleCreationEventArgs);
                randomComplexes.Add(simplexComplex);
            }

            return(randomSimplices, randomComplexes);
        }
        protected virtual void OnSampleCreationEvent(SampleCreationEventArgs e)
        {
            EventHandler <SampleCreationEventArgs> handler = RaiseSampleCreatorEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }