From 9eb0fb8215ef4220aecb831cb763113492b4cb8d Mon Sep 17 00:00:00 2001 From: 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 d0d3b30b..7e68450a 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; @@ -344,7 +344,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;