关于张量的知识,一个二阶张量的模是怎么求的?



  • 请问一个问题,张量的双重內积我有个不解的地方。
    OF中一个二阶张量的模|T|=mag(T)=sqrt(T:T),就是张量中的相应位置的元素相乘再相加。
    而我看到书上说|T| = sqrt(2TijTij),这里多了一个2,这是为什么呢?

    谢谢大家的指点,我哪里理解错了么?



  • 那本书?如果从定义来看,就是|T|=sqrt(T:T)=sqrt(TijTij)。



  • @cfd-china 在An Introduction to Computational Fluid Dynamics-The Finite Volume Method的103页,有这样的话, S是对称张量,where |S|= sqrt(2SijSij)。

    还有一个问题,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(2SijSij),这句话可能来自LES,这只是一个定义,它不是正常意义上的magnitude.
    正常的magnitude就是|S|= sqrt(SijSij)


Log in to reply