private void CheckYDimension(PrimaryParticle primaryParticle, ISimulationBox simulationBox)
 {
     if (primaryParticle.Position.Y > simulationBox.YDim.Upper)
     {
         primaryParticle.MoveBy(new Vector3(0, -1 * simulationBox.YDim.Width, 0));
     }
     if (primaryParticle.Position.Y < simulationBox.YDim.Lower)
     {
         primaryParticle.MoveBy(new Vector3(0, simulationBox.YDim.Width, 0));
     }
 }
 private void CheckXDimension(PrimaryParticle primaryParticle, ISimulationBox simulationBox)
 {
     if (primaryParticle.Position.X > simulationBox.XDim.Upper)
     {
         primaryParticle.MoveBy(new Vector3(-1 * simulationBox.XDim.Width, 0, 0));
     }
     if (primaryParticle.Position.X < simulationBox.XDim.Lower)
     {
         primaryParticle.MoveBy(new Vector3(simulationBox.XDim.Width, 0, 0));
     }
 }
        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);
            }
        }
 public void CheckPrimaryParticle(IEnumerable <PrimaryParticle> primaryParticles, ISimulationBox simulationBox)
 {
     foreach (var primaryParticle in primaryParticles)
     {
         CheckPrimaryParticle(primaryParticle, simulationBox);
     }
 }
 public void CheckPrimaryParticle(PrimaryParticle primaryParticle, ISimulationBox simulationBox)
 {
     CheckXDimension(primaryParticle, simulationBox);
     CheckYDimension(primaryParticle, simulationBox);
 }
 /// <summary>
 /// <inheritdoc cref="CheckPrimaryParticle(PrimaryParticle, ISimulationBox)"/>
 /// </summary>
 /// <param name="enumerable"></param>
 /// <param name="simulationBox"></param>
 public void CheckPrimaryParticle(IEnumerable <PrimaryParticle> enumerable, ISimulationBox simulationBox)
 {
     return;
 }
 /// <summary>
 /// Nothing to do here, since particles can penetrate the wall and have no lateral movement.
 /// </summary>
 /// <param name="primaryParticle"></param>
 /// <param name="simulationBox"></param>
 public void CheckPrimaryParticle(PrimaryParticle primaryParticle, ISimulationBox simulationBox)
 {
     return;
 }