关于张量的知识,一个二阶张量的模是怎么求的?
-
请问一个问题,张量的双重內积我有个不解的地方。
OF中一个二阶张量的模|T|=mag(T)=sqrt(T:T)
,就是张量中的相应位置的元素相乘再相加。
而我看到书上说|T| = sqrt(2*Tij*Tij)
,这里多了一个2,这是为什么呢?谢谢大家的指点,我哪里理解错了么?
-
@cfd-china 在An Introduction to Computational Fluid Dynamics-The Finite Volume Method的103页,有这样的话, S是对称张量,where
|S|= sqrt(2*Sij*Sij)
。还有一个问题,OF中sqr(mag)和magSqr()一样吗?我看到了OF代码中写过sqr(mag),难道这两种写法有区别?
-
@Aeronastro
我不觉得是对称张量的问题,问题在于书上把S表达为了0.5(...)的形式。我觉得是一样的。magSqr()更常见。A simple test:
#include "tensor.H" using namespace Foam; int main() { tensor T(1000,2000,3000,4000,5000,6000,7000,8000,9000); vector V(1e5,2e5,3e5); Info<< magSqr(T) - sqr(mag(T))<< endl; Info<< magSqr(V) - sqr(mag(V))<< endl; return 0; }
然而,不然。magSqr(T)和sqr(mag(T))相差一可忽略的一点。所以可以认为相同吧。源代码:
complex/complexI.H-164-// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // complex/complexI.H-165- complex/complexI.H-166- complex/complexI.H:167:inline scalar magSqr(const complex& c) complex/complexI.H-168-{ complex/complexI.H-169- return (c.re*c.re + c.im*c.im); complex/complexI.H-170-} complex/complexI.H-171- complex/complexI.H-172- -- complex/complexI.H-176-} complex/complexI.H-177- complex/complexI.H-178- complex/complexI.H-179-inline scalar mag(const complex& c) complex/complexI.H-180-{ complex/complexI.H:181: return sqrt(magSqr(c)); complex/complexI.H-182-} complex/complexI.H-183- complex/complexI.H:173:inline complex sqr(const complex& c) complex/complexI.H-174-{ complex/complexI.H-175- return c * c; complex/complexI.H-176-} complex/complexI.H-177- complex/complexI.H-178-
-
@cfd-china 好的,谢谢!
-
@Aeronastro 我觉得是这样的:
where|S|= sqrt(2Sij Sij)
,这句话可能来自LES,这只是一个定义,它不是正常意义上的magnitude.
正常的magnitude就是|S|= sqrt(SijSij)