From 19f9f9b5e47189e69dc97c4d9ebb529e3c86801c Mon Sep 17 00:00:00 2001 From: graham Date: Wed, 28 Apr 2010 10:35:13 +0100 Subject: [PATCH] BUG: sixDoFRigidBodyMotionRestraint. Stabilisation of divisions. --- .../linearAxialAngularSpring/linearAxialAngularSpring.C | 4 ++-- .../linearSpring/linearSpring.C | 2 +- .../tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C index 704d48fe3e..7116fbf7c8 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C +++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C @@ -101,10 +101,10 @@ Foam::sixDoFRigidBodyMotionRestraints::linearAxialAngularSpring::restrain // Removing any axis component from oldDir and newDir and normalising oldDir -= (axis_ & oldDir)*axis_; - oldDir /= mag(oldDir); + oldDir /= (mag(oldDir) + VSMALL); newDir -= (axis_ & newDir)*axis_; - newDir /= mag(newDir); + newDir /= (mag(newDir) + VSMALL); scalar theta = mag(acos(min(oldDir & newDir, 1.0))); diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C index 2a1edc1c55..2983a4d862 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C +++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C @@ -86,7 +86,7 @@ void Foam::sixDoFRigidBodyMotionRestraints::linearSpring::restrain scalar magR = mag(r); // r is now the r unit vector - r /= magR; + r /= (magR + VSMALL); vector v = motion.currentVelocity(restraintPosition); diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C index d24ac8d366..7151a8671b 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C +++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C @@ -103,10 +103,10 @@ Foam::sixDoFRigidBodyMotionRestraints::tabulatedAxialAngularSpring::restrain // Removing any axis component from oldDir and newDir and normalising oldDir -= (axis_ & oldDir)*axis_; - oldDir /= mag(oldDir); + oldDir /= (mag(oldDir) + VSMALL); newDir -= (axis_ & newDir)*axis_; - newDir /= mag(newDir); + newDir /= (mag(newDir) + VSMALL); scalar theta = mag(acos(min(oldDir & newDir, 1.0)));