Пример #1
0
    void fixFZeroSign(bool sign)
    {
      rp -= (rp | nhat) * nhat;
      rp += nhat * (wallnHatPosition() + Sigma);
      double Fval = F_zeroDeriv();
      size_t loop(1);
      while (sign ? (Fval < 0) : (Fval > 0))
	{
	  rp -= nhat * ((loop++) * std::numeric_limits<double>::epsilon())
	    * Sigma;
	  Fval = F_zeroDeriv();
	}
    }
Пример #2
0
    double eval() const
    {
      switch (deriv)
	{
	case 0:
	  return (rp | nhat) - ( Sigma + wallnHatPosition());
	case 1:
	  return (vp | nhat) - velnHatWall();
	case 2:
	  return Delta * Omega * Omega * std::cos(Omega * t); 
	default:
	  M_throw() << "Invalid access";
	}
    }
Пример #3
0
 double F_zeroDeriv() const
 {
   return (rp | nhat) - ( Sigma + wallnHatPosition());
 }
Пример #4
0
 Vector wallPosition() const
 {
   return  nhat * wallnHatPosition();
 }
Пример #5
0
    virtual bool test_root() const
    {
      return (((vp | nhat) - velnHatWall()) 
	      * ((rp | nhat) - wallnHatPosition())) > 0;
    }