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