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); }