package org.openpixi.pixi.physics.movement.boundary;
import org.openpixi.pixi.physics.force.Force;
import org.openpixi.pixi.physics.particles.Particle;
import org.openpixi.pixi.physics.solver.Solver;
/**
* Determines how the particle behaves when it leaves the simulation area.
*/
public abstract class ParticleBoundary {
/**
* Distance of the boundary region xmin from simulation's xmin.
* Can have three values:
* -simulation_width: signalizes that the particle is left of the simulation area
* 0: signalizes that the particle's x coordinate is within the simulation area
* +simulation_width: signalizes that the particle is right of the simulation area
* */
protected double xoffset;
/**
* Distance of the boundary region ymin from simulation's ymin.
* Can have three values (-simulation_height,0,+simulation_height) similarly as xoffset.
* */
protected double yoffset;
public ParticleBoundary(double xoffset, double yoffset) {
this.xoffset = xoffset;
this.yoffset = yoffset;
}
public abstract void apply(Solver solver, Force force, Particle particle, double timeStep);
}