From 866ca15d2f4fff92abc1084b40fd5694d0be677a Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Mon, 7 Jul 2014 11:43:08 +0100
Subject: [PATCH] ENH: tensor: stabilise eigenvectors

---
 src/OpenFOAM/primitives/Tensor/tensor/tensor.C | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/OpenFOAM/primitives/Tensor/tensor/tensor.C b/src/OpenFOAM/primitives/Tensor/tensor/tensor.C
index 1b9dcb3a95d..7ec9702310a 100644
--- a/src/OpenFOAM/primitives/Tensor/tensor/tensor.C
+++ b/src/OpenFOAM/primitives/Tensor/tensor/tensor.C
@@ -150,7 +150,7 @@ Foam::vector Foam::eigenValues(const tensor& t)
             if (R2 < Q3)
             {
                 scalar sqrtQ = sqrt(Q);
-                scalar theta = acos(R/(Q*sqrtQ));
+                scalar theta = acos(min(1.0, max(-1.0, R/(Q*sqrtQ))));
 
                 scalar m2SqrtQ = -2*sqrtQ;
                 scalar aBy3 = a/3;
@@ -345,7 +345,7 @@ Foam::vector Foam::eigenValues(const symmTensor& t)
             if (R2 < Q3)
             {
                 scalar sqrtQ = sqrt(Q);
-                scalar theta = acos(R/(Q*sqrtQ));
+                scalar theta = acos(min(1.0, max(-1.0, R/(Q*sqrtQ))));
 
                 scalar m2SqrtQ = -2*sqrtQ;
                 scalar aBy3 = a/3;
-- 
GitLab