| 1597 | 
  | 
 | 
| 1598 | 
  | 
    Vector3d ac, acrec, bc, bcrec; | 
| 1599 | 
  | 
    Vector3d ah, ahrec, bh, bhrec; | 
| 1600 | 
– | 
    RealType cNumerator, cDenominator; | 
| 1601 | 
– | 
    RealType hNumerator, hDenominator; | 
| 1600 | 
  | 
 | 
| 1603 | 
– | 
 | 
| 1601 | 
  | 
    bool successfulExchange = false; | 
| 1602 | 
  | 
    if ((Mh > 0.0) && (Mc > 0.0)) {//both slabs are not empty | 
| 1603 | 
  | 
      Vector3d vc = Pc / Mc; | 
| 1611 | 
  | 
      bc  = -(Ici * angularMomentumTarget_) + omegac; | 
| 1612 | 
  | 
      bcrec = bc - omegac; | 
| 1613 | 
  | 
       | 
| 1614 | 
< | 
      cNumerator = Kc - kineticTarget_; | 
| 1614 | 
> | 
      RealType cNumerator = Kc - kineticTarget_; | 
| 1615 | 
  | 
      if (doLinearPart)  | 
| 1616 | 
  | 
        cNumerator -= 0.5 * Mc * ac.lengthSquare(); | 
| 1617 | 
  | 
       | 
| 1620 | 
  | 
 | 
| 1621 | 
  | 
      if (cNumerator > 0.0) { | 
| 1622 | 
  | 
         | 
| 1623 | 
< | 
        cDenominator = Kc; | 
| 1623 | 
> | 
        RealType cDenominator = Kc; | 
| 1624 | 
  | 
 | 
| 1625 | 
  | 
        if (doLinearPart) | 
| 1626 | 
  | 
          cDenominator -= 0.5 * Mc * vc.lengthSquare(); | 
| 1643 | 
  | 
            bh  = (Ihi * angularMomentumTarget_) + omegah; | 
| 1644 | 
  | 
            bhrec = bh - omegah; | 
| 1645 | 
  | 
             | 
| 1646 | 
< | 
            hNumerator = Kh + kineticTarget_; | 
| 1646 | 
> | 
            RealType hNumerator = Kh + kineticTarget_; | 
| 1647 | 
  | 
            if (doLinearPart)  | 
| 1648 | 
  | 
              hNumerator -= 0.5 * Mh * ah.lengthSquare(); | 
| 1649 | 
  | 
             | 
| 1652 | 
  | 
               | 
| 1653 | 
  | 
            if (hNumerator > 0.0) { | 
| 1654 | 
  | 
               | 
| 1655 | 
< | 
              hDenominator = Kh; | 
| 1655 | 
> | 
              RealType hDenominator = Kh; | 
| 1656 | 
  | 
              if (doLinearPart)  | 
| 1657 | 
  | 
                hDenominator -= 0.5 * Mh * vh.lengthSquare(); | 
| 1658 | 
  | 
              if (doAngularPart) |