Ejemplo n.º 1
0
  LocalEvent 
  LRoughWall::getEvent(const Particle& part) const
  {
#ifdef ISSS_DEBUG
    if (!Sim->dynamics->isUpToDate(part))
      M_throw() << "Particle is not up to date";
#endif

    return LocalEvent(part, Sim->dynamics->getPlaneEvent(part, vPosition, vNorm, r), WALL, *this);
  }
Ejemplo n.º 2
0
  LocalEvent 
  CLAndersenWall::getEvent(const Particle& part) const
  {
#ifdef ISSS_DEBUG
    if (!Sim->dynamics.getLiouvillean().isUpToDate(part))
      M_throw() << "Particle is not up to date";
#endif

    return LocalEvent(part, Sim->dynamics.getLiouvillean().getWallCollision(part, vPosition, vNorm), WALL, *this);
  }
Ejemplo n.º 3
0
  LocalEvent 
  LWall::getEvent(const Particle& part) const
  {
#ifdef ISSS_DEBUG
    if (!Sim->dynamics->isUpToDate(part))
      M_throw() << "Particle is not up to date";
#endif

    double colldist = 0.5 * _diameter->getProperty(part.getID());

    return LocalEvent(part, Sim->dynamics->getPlaneEvent(part, vPosition, vNorm, colldist), WALL, *this);
  }
Ejemplo n.º 4
0
  LocalEvent 
  LOscillatingPlate::getEvent(const Particle& part) const
  {
#ifdef ISSS_DEBUG
    if (!Sim->dynamics.getLiouvillean().isUpToDate(part))
      M_throw() << "Particle is not up to date";
#endif

    //bool caution = ((part.getID() == lastID) && (lastdSysTime == Sim->dSysTime));

    double reducedt = Sim->dSysTime 
      - 2.0 * M_PI * int(Sim->dSysTime * omega0 / (2.0*M_PI)) / omega0;

    std::pair<bool, double> eventData = Sim->dynamics.getLiouvillean().getPointPlateCollision
      (part, rw0, nhat, delta, omega0, sigma, reducedt + timeshift, 
       false);

    EEventType type = (eventData.first) ? WALL : VIRTUAL ;

    if (eventData.second == HUGE_VAL)
      type = NONE;
  
    return LocalEvent(part, eventData.second, type, *this);
  }