Example #1
0
        public SimulationStructure InitializeSimulation(IParticleMover mover, InitializationParameters parameters)
        {
            CoreGrid         cGrid;
            IParticleSection overParticleSection;

            coreSectionBuilder.CreateCoresAndSections(coreFactory, sectionFactory, out cGrid, out overParticleSection,
                                                      new Point3(parameters.XCores, parameters.YCores, parameters.ZCores), parameters.SectionSize, new Point3(parameters.XSections, parameters.YSections, parameters.ZSections));
            mover.SetBoundarySection(overParticleSection);
            parameters.ParticleGenerator.GenerateParticles(cGrid, parameters.ParticlesPerCell * parameters.CellsPerSectionSingleDim * parameters.CellsPerSectionSingleDim * parameters.CellsPerSectionSingleDim);
            return(new SimulationStructure()
            {
                CoreGrid = cGrid
            });
        }
        private void ExtractParameters(InitializationParameters parameters)
        {
            storage = parameters.CostStorage;
            var com = parameters.ComCostFactory.GetCalculator(storage,
                                                              parameters.CellsPerSectionSingleDim, parameters.ParticleReductionFactor);

            fieldCalculator       = new FieldCalculator(com, new ConstSolveCostCalculator(storage));
            simulationInitializer = new SimulationInitializer(new Random(0), parameters.CoreFactory,
                                                              parameters.SectionFactory);
            var sortingCostCalculator = new SortingCostCalculator(parameters.ParticleReductionFactor, storage);

            sorter = parameters.SorterFactory.GetSorter(sortingCostCalculator);
            mover  =
                parameters.ParticleMoverFactory.GetIParticleMover(new MovementCostCalculator(storage,
                                                                                             parameters.ParticleReductionFactor));
            stepSize  = parameters.TimeStep;
            steps     = parameters.TotalSteps;
            structure = simulationInitializer.InitializeSimulation(mover, parameters);
            var visualizationBuilder = new VisualizationBuilder(parameters.VisualizationParameters);

            stepVisualizer  = visualizationBuilder.GetStepVisualizer(storage);
            finalVisualizer = visualizationBuilder.GetFinalVisualizer(storage);
        }