Corrected non-orthogonal check for single-precision.

This commit is contained in:
henry
2009-03-27 23:43:24 +00:00
parent ac3e708e17
commit fda71c46a0

View File

@ -45,37 +45,20 @@ void Foam::coordinateRotation::calcTransform
const axisOrder& order
)
{
const scalar orthogonalityError = 1.0e-8;
vector a = axis1 / mag(axis1);
vector b = axis2;
// Absorb minor nonorthogonality into axis2
b = b - (b & a)*a;
if (mag(b) < orthogonalityError)
if (mag(b) < SMALL)
{
FatalErrorIn
(
"coordinateRotation::calcTransform()"
)
FatalErrorIn("coordinateRotation::calcTransform()")
<< "axis1, axis2 appear co-linear: "
<< axis1 << ", " << axis2 << endl
<< abort(FatalError);
}
// this error check is probably no longer required
if (mag(a & b)/(mag(a)*mag(b)) >= orthogonalityError)
{
FatalErrorIn
(
"coordinateRotation::calcTransform()"
)
<< "coordinate system nonorthogonality " << nl
<< "mag(axis1 & axis2) = " << mag(a & b)
<< abort(FatalError);
}
b = b / mag(b);
vector c = a ^ b;
@ -102,10 +85,7 @@ void Foam::coordinateRotation::calcTransform
break;
default:
FatalErrorIn
(
"coordinateRotation::calcTransform()"
)
FatalErrorIn("coordinateRotation::calcTransform()")
<< "programmer error" << endl
<< abort(FatalError);
break;
@ -241,4 +221,5 @@ void Foam::coordinateRotation::operator=(const dictionary& rhs)
calcTransform(axis1, axis2, order);
}
// ************************************************************************* //