public IParticleFactory <Aggregate> Build(ISizeDistribution <double> psd, INeighborslistFactory neighborslistFactory, IAggregateFormationConfig config, ILogger logger)
 {
     switch (config.AggregateFormationType)
     {
     case AggregateFormationType.ClusterClusterAggregation:
     default:
         return(new ClusterClusterAggregationFactory(psd, config, logger, neighborslistFactory, config.RandomGeneratorSeed));
     }
 }
Пример #2
0
 public ClusterClusterAggregationFactory(
     ISizeDistribution <double> primaryParticleSizeDistribution,
     IAggregateFormationConfig config,
     ILogger logger,
     INeighborslistFactory neighborslistFactory,
     int seed = -1)
 {
     _psd    = primaryParticleSizeDistribution;
     _config = config;
     _logger = logger;
     _seed   = seed;
     _neighborslistFactory = neighborslistFactory;
 }
Пример #3
0
 public ParticleClusterAggregationFactory(
     ISizeDistribution <double> psd,
     Random rndGen,
     IAggregateFormationConfig config,
     INeighborslistFactory neighborslistFactory,
     ILogger logger)
 {
     _psd    = psd;
     _rndGen = rndGen;
     _config = config;
     _logger = logger;
     _neighborslistFactory = neighborslistFactory;
 }
 public AggregateFormationSimulationRunner(
     IAggregateSizeDistributionFactory aggregateSizeDistributionFactory,
     IPrimaryParticleSizeDistributionFactory primaryParticleSizeDistributionFactory,
     IAggregateFormationFactory aggregateFormationFactory,
     INeighborslistFactory neighborslistFactory,
     IAggregateFormationConfig aggregateFormationConfig,
     ILogger logger)
 {
     _aggregateFormationConfig = aggregateFormationConfig ?? throw new ArgumentException(nameof(aggregateFormationConfig));
     _logger = logger ?? throw new ArgumentException(nameof(logger));
     _aggregateFormationService = new AggregateFormationService(aggregateSizeDistributionFactory, primaryParticleSizeDistributionFactory, aggregateFormationFactory, neighborslistFactory, _aggregateFormationConfig, logger);
     Progress = new Progress <ProgressReportModel>();
     _cts     = new CancellationTokenSource();
 }
        public FilmFormationService(
            IFilmFormationConfig filmFormationConfig,
            int seed
            )
        {
            _filmFormationConfig        = filmFormationConfig ?? throw new ArgumentException(nameof(filmFormationConfig));
            _simulationBox              = filmFormationConfig.SimulationBoxFactory.Build(_filmFormationConfig);
            _aggregateDepositionHandler = filmFormationConfig.AggregateDepositionHandler;
            _wallCollisionHandler       = filmFormationConfig.WallCollisionHandler;
            _neighborslistFactory       = filmFormationConfig.NeighborslistFactory;

            _rndGen = new Random();
            if (seed > 0)
            {
                _rndGen = new Random(seed);
            }
        }
Пример #6
0
        public AggregateFormationService(
            IAggregateSizeDistributionFactory aggregateSizeDistributionFactory,
            IPrimaryParticleSizeDistributionFactory primaryParticleSizeDistributionFactory,
            IAggregateFormationFactory aggregateFormationFactory,
            INeighborslistFactory neighborslistFactory,
            IAggregateFormationConfig config,
            ILogger logger)
        {
            _aggregateSizeDistributionFactory       = aggregateSizeDistributionFactory ?? throw new ArgumentException(nameof(aggregateSizeDistributionFactory));
            _primaryParticleSizeDistributionFactory = primaryParticleSizeDistributionFactory ?? throw new ArgumentException(nameof(primaryParticleSizeDistributionFactory));
            _aggregateFormationFactory = aggregateFormationFactory ?? throw new ArgumentException(nameof(aggregateFormationFactory));
            _neighborslistFactory      = neighborslistFactory ?? throw new ArgumentException(nameof(neighborslistFactory));
            _config = config ?? throw new ArgumentException(nameof(config));
            _logger = logger ?? throw new ArgumentException(nameof(logger));

            var rndGen = new Random();

            _aggregateSizeDistribution       = aggregateSizeDistributionFactory.Build(rndGen, config);
            _primaryParticleSizeDistribution = primaryParticleSizeDistributionFactory.Build(rndGen, config);
            _particleFactory = _aggregateFormationFactory.Build(_primaryParticleSizeDistribution, _neighborslistFactory, _config, _logger);
        }
Пример #7
0
 public FullSimulationRunner(
     IAggregateFormationConfig aggregateFormationConfig,
     SimulationMonitor simulationMonitor,
     IAggregateSizeDistributionFactory aggregateSizeDistributionFactory,
     IPrimaryParticleSizeDistributionFactory primaryParticleSizeDistributionFactory,
     IAggregateFormationFactory aggregateFormationFactory,
     INeighborslistFactory neighborslistFactory,
     IFilmFormationConfig filmFormationConfig,
     ILogger logger)
 {
     _filmFormationConfig  = filmFormationConfig;
     _progress             = new Progress <ProgressReportModel>();
     _filmFormationService = new FilmFormationService(filmFormationConfig);
     _cts = new CancellationTokenSource();
     _aggregateFormationConfig               = aggregateFormationConfig ?? throw new ArgumentException(nameof(aggregateFormationConfig));
     _aggregateSizeDistributionFactory       = aggregateSizeDistributionFactory;
     _primaryParticleSizeDistributionFactory = primaryParticleSizeDistributionFactory;
     _aggregateFormationFactory              = aggregateFormationFactory;
     _neighborslistFactory = neighborslistFactory;
     _logger = logger ?? throw new ArgumentException(nameof(logger));
     _aggregateFormationService = new AggregateFormationService(_aggregateSizeDistributionFactory, _primaryParticleSizeDistributionFactory, _aggregateFormationFactory, _neighborslistFactory, _aggregateFormationConfig, logger);
 }
 public BallisticPorosityAnalyser()
 {
     _rndGen = new Random();
     _neighborslistFactory = new AccordNeighborslistFactory();
 }
Пример #9
0
 public ANPaXLammpsDumpSerializer(INeighborslistFactory neighborslistFactory)
 {
     _neighborslistFactory = neighborslistFactory;
 }
Пример #10
0
 public T DeserializeFile <T>(string filename, INeighborslistFactory neighborslistFactory)
 {
     return((T)LammpsDumpDeserializer.DeserializeParticleFilm(filename, neighborslistFactory));
 }
        public static IParticleFilm <Aggregate> DeserializeParticleFilm(string filename, INeighborslistFactory neighborslistFactory)
        {
            var fileContent   = File.ReadAllLines(filename);
            var boxWidth      = GetBoxWidth(fileContent);
            var simulationBox = new AbsoluteTetragonalSimulationBox(boxWidth);
            var particleFilm  = new TetragonalAggregatedParticleFilm(simulationBox, neighborslistFactory)
            {
                Particles = GetAggregates(fileContent)
            };

            return(particleFilm);
        }