From 56059e7fb9d36f728713c450fe3e565acec61f53 Mon Sep 17 00:00:00 2001 From: Henry Weller <http://cfd.direct> Date: Thu, 21 Apr 2016 21:07:39 +0100 Subject: [PATCH] Tensor, SymmTensor: Simplified invariantII Now the calculation of the 2nd-invariant is more efficient and accumulates less round-off error. --- src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H | 9 ++------- src/OpenFOAM/primitives/Tensor/TensorI.H | 9 ++------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H b/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H index b40f40859f..be703817a5 100644 --- a/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H +++ b/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H @@ -404,13 +404,8 @@ inline Cmpt invariantII(const SymmTensor<Cmpt>& st) { return ( - 0.5*sqr(tr(st)) - - 0.5* - ( - st.xx()*st.xx() + st.xy()*st.xy() + st.xz()*st.xz() - + st.xy()*st.xy() + st.yy()*st.yy() + st.yz()*st.yz() - + st.xz()*st.xz() + st.yz()*st.yz() + st.zz()*st.zz() - ) + st.xx()*st.yy() + st.yy()*st.zz() + st.xx()*st.zz() + - sqr(st.xy()) - sqr(st.yz()) - sqr(st.xz()) ); } diff --git a/src/OpenFOAM/primitives/Tensor/TensorI.H b/src/OpenFOAM/primitives/Tensor/TensorI.H index b9e68a3b0d..a20ba8773e 100644 --- a/src/OpenFOAM/primitives/Tensor/TensorI.H +++ b/src/OpenFOAM/primitives/Tensor/TensorI.H @@ -659,13 +659,8 @@ inline Cmpt invariantII(const Tensor<Cmpt>& t) { return ( - 0.5*sqr(tr(t)) - - 0.5* - ( - t.xx()*t.xx() + t.xy()*t.xy() + t.xz()*t.xz() - + t.yx()*t.yx() + t.yy()*t.yy() + t.yz()*t.yz() - + t.zx()*t.zx() + t.zy()*t.zy() + t.zz()*t.zz() - ) + t.xx()*t.yy() + t.yy()*t.zz() + t.xx()*t.zz() + - t.xy()*t.yx() - t.yz()*t.zy() - t.xz()*t.zx() ); } -- GitLab