| 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) |