| 9 | 
  | 
 | 
| 10 | 
  | 
 | 
| 11 | 
  | 
 | 
| 12 | 
< | 
GhostBend::GhostBend( Atom &a, Atom &b ){ | 
| 12 | 
> | 
GhostBend::GhostBend( Atom &a, Atom &b, Atom &c ){ | 
| 13 | 
  | 
 | 
| 14 | 
< | 
  c_p_a = &a; | 
| 14 | 
> | 
  set_atoms(a, b, c); | 
| 15 | 
  | 
   | 
| 16 | 
  | 
  if( !b.isDirectional() ){ | 
| 17 | 
  | 
     | 
| 48 | 
  | 
  double daxi, dayi, dazi, daxk, dayk, dazk, daxj, dayj, dazj; | 
| 49 | 
  | 
  double u[3]; | 
| 50 | 
  | 
   | 
| 51 | 
< | 
  dx = c_p_a->getX() - atomB->getX(); | 
| 52 | 
< | 
  dy = c_p_a->getY() - atomB->getY(); | 
| 53 | 
< | 
  dz = c_p_a->getZ() - atomB->getZ(); | 
| 54 | 
< | 
  | 
| 51 | 
> | 
  double aR[3], bR[3]; | 
| 52 | 
> | 
  double aF[3], bF[3], bTrq[3]; | 
| 53 | 
> | 
 | 
| 54 | 
> | 
  c_p_a->getPos( aR ); | 
| 55 | 
> | 
  c_p_b->getPos( bR ); | 
| 56 | 
> | 
   | 
| 57 | 
> | 
 | 
| 58 | 
> | 
  dx = aR[0] - bR[0]; | 
| 59 | 
> | 
  dy = aR[1] - bR[1]; | 
| 60 | 
> | 
  dz = aR[2] - bR[2]; | 
| 61 | 
> | 
 | 
| 62 | 
  | 
  atomB->getU(u); | 
| 63 | 
  | 
 | 
| 64 | 
  | 
  gx = u[0]; | 
| 133 | 
  | 
  dayj = -dayi - dayk; | 
| 134 | 
  | 
  dazj = -dazi - dazk; | 
| 135 | 
  | 
 | 
| 136 | 
< | 
  c_p_a->addFx(daxi); | 
| 137 | 
< | 
  c_p_a->addFy(dayi); | 
| 138 | 
< | 
  c_p_a->addFz(dazi); | 
| 136 | 
> | 
  aF[0] = daxi; | 
| 137 | 
> | 
  aF[1] = dayi; | 
| 138 | 
> | 
  aF[2] = dazi; | 
| 139 | 
  | 
 | 
| 140 | 
< | 
  atomB->addFx(daxj + daxk); | 
| 141 | 
< | 
  atomB->addFy(dayj + dayk); | 
| 142 | 
< | 
  atomB->addFz(dazj + dazk); | 
| 140 | 
> | 
  bF[0] = daxj + daxk; | 
| 141 | 
> | 
  bF[1] = dayj + dayk; | 
| 142 | 
> | 
  bF[2] = dazj + dazk; | 
| 143 | 
  | 
 | 
| 144 | 
< | 
  atomB->addTx(gy*dazk - gz*dayk); | 
| 145 | 
< | 
  atomB->addTy(gz*daxk - gx*dazk); | 
| 146 | 
< | 
  atomB->addTz(gx*dayk - gy*daxk); | 
| 147 | 
< | 
 | 
| 144 | 
> | 
  bTrq[0] = gy*dazk - gz*dayk; | 
| 145 | 
> | 
  bTrq[1] = gz*daxk - gx*dazk; | 
| 146 | 
> | 
  bTrq[2] = gx*dayk - gy*daxk; | 
| 147 | 
> | 
   | 
| 148 | 
> | 
   | 
| 149 | 
> | 
  c_p_a->addFrc( aF ); | 
| 150 | 
> | 
  atomB->addFrc( bF ); | 
| 151 | 
> | 
  atomB->addTrq( bTrq ); | 
| 152 | 
> | 
   | 
| 153 | 
  | 
  return; | 
| 154 | 
  | 
} | 
| 155 | 
  | 
 |