Package org.openpixi.pixi.physics.particles

Examples of org.openpixi.pixi.physics.particles.Particle


  /**
   * Used for debugging purposes when there is a need of a specific particle(s).
   */
  public static void createParticles(Settings settings) {
    Particle p1 = new ParticleFull();
    p1.setX(75);
    p1.setY(35);
    p1.setVx(2);
    p1.setVy(0);
    p1.setRadius(1);
    p1.setMass(1);
    p1.setCharge(0.1);
    settings.addParticle(p1);
  }
View Full Code Here


  }
 
  public void collide(ArrayList<Pair<Particle, Particle>> pairs, Force f, Solver s, double step) {
   
    for(int i = 0; i < pairs.size(); i++) {
      Particle p1 = (Particle) pairs.get(i).getFirst();
      Particle p2 = (Particle) pairs.get(i).getSecond();
   
      double distanceSquare = ((p1.getX() - p2.getX()) * (p1.getX() - p2.getX()) + (p1.getY() - p2.getY()) * (p1.getY() - p2.getY()));
      if(distanceSquare <= ((p1.getRadius() + p2.getRadius()) * (p1.getRadius() + p2.getRadius()))) {
        s.complete(p1, f, step);
        s.complete(p2, f, step);
        doCollision(p1, p2);
        s.prepare(p1, f, step);
        s.prepare(p2, f, step);
View Full Code Here

  }
 
  public void collide(ArrayList<Pair<Particle, Particle>> pairs, Force f, Solver s, double step) {
   
    for(int i = 0; i < pairs.size(); i++) {
      Particle p1 = (Particle) pairs.get(i).getFirst();
      Particle p2 = (Particle) pairs.get(i).getSecond();
   
      double distanceSquare = ((p1.getX() - p2.getX()) * (p1.getX() - p2.getX()) + (p1.getY() - p2.getY()) * (p1.getY() - p2.getY()));
      if(distanceSquare <= ((p1.getRadius() + p2.getRadius()) * (p1.getRadius() + p2.getRadius()))) {
        s.complete(p1, f, step);
        s.complete(p2, f, step);
        doCollision(p1, p2);
        s.prepare(p1, f, step);
        s.prepare(p2, f, step);
View Full Code Here

  }
 
  public void collide(ArrayList<Pair<Particle, Particle>> pairs, Force f, Solver s, double step) {
   
    for(int i = 0; i < pairs.size(); i++) {
      Particle p1 = (Particle) pairs.get(i).getFirst();
      Particle p2 = (Particle) pairs.get(i).getSecond();
   
      double distanceSquare = ((p1.getX() - p2.getX()) * (p1.getX() - p2.getX()) + (p1.getY() - p2.getY()) * (p1.getY() - p2.getY()));
      if(distanceSquare <= ((p1.getRadius() + p2.getRadius()) * (p1.getRadius() + p2.getRadius()))) {
        s.complete(p1, f, step);
        s.complete(p2, f, step);
        doCollision(p1, p2);
        s.prepare(p1, f, step);
        s.prepare(p2, f, step);
View Full Code Here

 
  public AllParticles(ArrayList<Particle> parlist) {
    particlelist.clear();
   
    for(int i = 0; i < parlist.size(); i++) {
      Particle par = (Particle) parlist.get(i);
      this.particlelist.add(par);
    }
   
  }
View Full Code Here

  }
 
  public void run() {
    for(int i = 0; i < (particlelist.size() - 1); i++)
    {
      Particle p1 = (Particle) particlelist.get(i);
     
      for(int k = (i + 1); k < particlelist.size(); k++)
      {
        Particle p2 = (Particle) particlelist.get(k);
        //double distance = Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
       
        if(Math.abs(p1.getX() - p2.getX()) <= (p1.getRadius() + p2.getRadius())) {
         
          if(Math.abs(p1.getY() - p2.getY()) <= (p1.getRadius() + p2.getRadius())) {
           
            Pair<Particle, Particle> pair = new Pair<Particle, Particle>(p1, p2);
            overlappedPairs.add(pair);
          }         
        }
View Full Code Here

    overlaps.clear();
    overlappedPairs.clear();
    overlapCounter.clear();
   
    for(int i = 0; i < parlist.size(); i++) {
      Particle par = (Particle) parlist.get(i);
      BoundingBox box = new BoundingBox(par);
   
      if(!boxlist.contains(box)) {
        boxlist.add(box);
       
View Full Code Here

  /**
   * Test if solver solves similar to Euler
   */
  public void testCompareWithEuler() {
    Particle p = new ParticleFull();
    ConstantForce f = new ConstantForce();
    double step = 0.00001d;
    Solver solver2 = new Euler();

    f.ex = 1.234;
    f.ey = 3.456;
    f.bz = 7.890;
    f.gx = 2.468;
    f.gy = 3.579;
    f.drag = 5.432;

    p.setX(23.456);
    p.setY(35.689);
    p.setRadius(13.579);
    p.setVx(12.345);
    p.setVy(76.543);
    p.setMass(7.654);
    p.setCharge(5.432);

    Particle pcopy = p.copy();
    Particle p2 = p.copy();

    solver.prepare(p, f, step);
    solver2.prepare(p2, f, step);

    for (int i=0; i<100; i++)
    {
      solver.step(p, f, step);
      solver2.step(p2, f, step);
    }

    solver.complete(p, f, step);
    solver2.complete(p2, f, step);

    if (VERBOSE) {
      System.out.println("" + this.getClass().getSimpleName());
      System.out.println("x: " + pcopy.getX() + " -> " + p2.getX() + " vs. " + p.getX());
      System.out.println("y: " + pcopy.getY() + " -> " + p2.getY() + " vs. " + p.getY());
    }

    double accuracy = 0.001d;
    assertAlmostEquals("x", p2.getX(), p.getX(), accuracy);
    assertAlmostEquals("y", p2.getY(), p.getY(), accuracy);
    assertAlmostEquals("vx", p2.getVx(), p.getVx(), accuracy);
    assertAlmostEquals("vy", p2.getVy(), p.getVy(), accuracy);
  }
View Full Code Here

  stt.setBoundary(GeneralBoundaryType.Periodic);
            stt.setGridSolver(new SimpleSolver());

  for (int k = 0; k < 2; k++) {
    Particle par = new ParticleFull();
    par.setX(stt.getSimulationWidth() * 1/9.0*(k+4));
    par.setY(stt.getSimulationHeight() * 1/2);
    par.setRadius(radius);
    par.setVx(0);
    par.setVy(0);
    par.setMass(1);
    par.setCharge(charge*(1-2*k));
    stt.addParticle(par);
  }
           
            stt.setPoissonSolver(new PoissonSolverFFTPeriodic());
            stt.useGrid(true);
View Full Code Here

    Settings stt = GridTestCommon.getCommonSettings();
    stt.setGridSolver(new SimpleSolver());
    stt.setInterpolator(new ChargeConservingCIC());

    // Add single particle
    Particle p = new ParticleFull();
    p.setX(x1);
    p.setY(y1);
    p.setVx((x2 - x1) / stt.getTimeStep());
    p.setVy((y2 - y1) / stt.getTimeStep());
    p.setMass(1);
    p.setCharge(charge);
    stt.addParticle(p);

    Simulation s = new Simulation(stt);
    s.prepareAllParticles();

    // Advance particle
    s.particlePush();

    // The simulation always creates its own copy of particles
    // (in fact the setting class does so)
    // and we would like to obtain the reference to our initial particle p.
    p = s.particles.get(0);

    //Remember old values after boundary check
    double sx = p.getPrevX();
    double sy = p.getPrevY();

    // Calculate current
    s.getInterpolation().interpolateToGrid(s.particles, s.grid, s.tstep);

    double jx = GridTestCommon.getJxSum(s.grid);
    double jy = GridTestCommon.getJySum(s.grid);

    if (VERBOSE) System.out.println("Total current " + text + ": jx = " + jx + ", jy = " + jy
        + " (from " + sx + ", " + sy + " to " + p.getX() + ", " + p.getY() + ")");

//    GridTestCommon.checkSignJx(s.grid);
//    GridTestCommon.checkSignJy(s.grid);

//    assertAlmostEquals(text + ", jx", charge * (p.getX() - sx) / s.tstep, jx, ACCURACY_LIMIT);
View Full Code Here

TOP

Related Classes of org.openpixi.pixi.physics.particles.Particle

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.