其他分享
首页 > 其他分享> > OpenFOAM 张量运算

OpenFOAM 张量运算

作者:互联网

1. 霍奇对偶算子,Hodge Dual operator (tensor -> vector)

符号:*(单目运算符)
使用:*t
返回:矢量

[
t.yz(), -t.xz(), t.xy()
]

2. 霍奇对偶算子,Hodge Dual operator (vector -> tensor)

符号:*(单目运算符)
使用:*v
返回:张量

[
     0,      -v.z(),   v.y(),
     v.z(),      0,   -v.x(),
     -v.y(),  v.x(),       0
]

3. 张量间内积,Inner-product between two tensors

符号:&(双目运算符)
使用:t1&t2
返回:张量

[
        t1.xx()*t2.xx() + t1.xy()*t2.yx() + t1.xz()*t2.zx(),
        t1.xx()*t2.xy() + t1.xy()*t2.yy() + t1.xz()*t2.zy(),
        t1.xx()*t2.xz() + t1.xy()*t2.yz() + t1.xz()*t2.zz(),

        t1.yx()*t2.xx() + t1.yy()*t2.yx() + t1.yz()*t2.zx(),
        t1.yx()*t2.xy() + t1.yy()*t2.yy() + t1.yz()*t2.zy(),
        t1.yx()*t2.xz() + t1.yy()*t2.yz() + t1.yz()*t2.zz(),

        t1.zx()*t2.xx() + t1.zy()*t2.yx() + t1.zz()*t2.zx(),
        t1.zx()*t2.xy() + t1.zy()*t2.yy() + t1.zz()*t2.zy(),
        t1.zx()*t2.xz() + t1.zy()*t2.yz() + t1.zz()*t2.zz()
]

4. 张量与矢量内积,Inner-product between a tensor and a vector

符号:&(双目运算符)
使用:t&v
返回:矢量

[
        t.xx()*v.x() + t.xy()*v.y() + t.xz()*v.z(),
        t.yx()*v.x() + t.yy()*v.y() + t.yz()*v.z(),
        t.zx()*v.x() + t.zy()*v.y() + t.zz()*v.z()
]

 5. 矢量与张量内积,Inner-product between a vector and a tensor

符号:&(双目运算符)
使用:v&t
返回:矢量

[
        v.x()*t.xx() + v.y()*t.yx() + v.z()*t.zx(),
        v.x()*t.xy() + v.y()*t.yy() + v.z()*t.zy(),
        v.x()*t.xz() + v.y()*t.yz() + v.z()*t.zz()
]

  6. 矢量间外积,Outer-product between two vectors

符号:*(双目运算符)
使用:v1*v2
返回:张量

[
        v1.x()*v2.x(), v1.x()*v2.y(), v1.x()*v2.z(),
        v1.y()*v2.x(), v1.y()*v2.y(), v1.y()*v2.z(),
        v1.z()*v2.x(), v1.z()*v2.y(), v1.z()*v2.z()
]

   7. 矢量除以张量,Division of a vector by a tensor, i.e. dot-product with the tensor inverse

符号:/(双目运算符)
使用:v/t
返回:矢量

[
inv(t) & v
]

   8. 张量的迹,the trace of a tensor

符号:tr
使用:tr(t)
返回:标量

[
t.xx() + t.yy() + t.zz()
]

    9. 张量的球部分,spherical part of a tensor

符号:sph
使用:sph(t)
返回:标量

[
(1.0/3.0)*tr(t)
]

     10. 张量的对称部分,symmetric part of a tensor

符号:symm
使用:symm(t)
返回:对称张量

[
        t.xx(), 0.5*(t.xy() + t.yx()), 0.5*(t.xz() + t.zx()),
                t.yy(),                0.5*(t.yz() + t.zy()),
                                       t.zz()
]

      11. 张量对称部分的两倍,twice the symmetric part of a tensor

符号:twoSymm
使用:symm(t)
返回:对称张量

[
        2*t.xx(), (t.xy() + t.yx()), (t.xz() + t.zx()),
                  2*t.yy(),          (t.yz() + t.zy()),
                                     2*t.zz()
]

       12. 张量的反对称部分,the anti-symmetric part of a tensor

符号:skew
使用:skew(t)
返回:张量

[
        0.0, 0.5*(t.xy() - t.yx()), 0.5*(t.xz() - t.zx()),
        0.5*(t.yx() - t.xy()), 0.0, 0.5*(t.yz() - t.zy()),
        0.5*(t.zx() - t.xz()), 0.5*(t.zy() - t.yz()), 0.0
]

        13. 对称张量的偏斜-对称部分,the skew-symmetric part of a tensor

符号:skew
使用:skew(st)
返回:零张量

[
        0.0,  0.0,  0.0,
        0.0,  0.0,  0.0,
        0.0,  0.0,  0.0,
]

         14. 张量的偏斜部分,deviatoric part of a tensor

符号:dev
使用:dev(t)
返回:张量

[
      t-1/3*tr(t)
]

          15. 张量的行列式,deviatoric part of a tensor

符号:det
使用:det(t)
返回:标量

[
        t.xx()*t.yy()*t.zz() + t.xy()*t.yz()*t.zx()
      + t.xz()*t.yx()*t.zy() - t.xx()*t.yz()*t.zy()
      - t.xy()*t.yx()*t.zz() - t.xz()*t.yy()*t.zx()
]

           16. 张量的余子式,cofactor tensor of a tensor

符号:cof
使用:cof(t)
返回:张量

[
        t.yy()*t.zz() - t.zy()*t.yz(),
        t.zx()*t.yz() - t.yx()*t.zz(),
        t.yx()*t.zy() - t.yy()*t.zx(),

        t.xz()*t.zy() - t.xy()*t.zz(),
        t.xx()*t.zz() - t.xz()*t.zx(),
        t.xy()*t.zx() - t.xx()*t.zy(),

        t.xy()*t.yz() - t.xz()*t.yy(),
        t.yx()*t.xz() - t.xx()*t.yz(),
        t.xx()*t.yy() - t.yx()*t.xy()
]

     17. 给定行列式时求张量的逆,inverse of a tensor give the determinant

符号:inv
使用:inv(t,dett)
返回:张量

[    
        t.yy()*t.zz() - t.zy()*t.yz(),
        t.xz()*t.zy() - t.xy()*t.zz(),
        t.xy()*t.yz() - t.xz()*t.yy(),

        t.zx()*t.yz() - t.yx()*t.zz(),
        t.xx()*t.zz() - t.xz()*t.zx(),
        t.yx()*t.xz() - t.xx()*t.yz(),

        t.yx()*t.zy() - t.yy()*t.zx(),
        t.xy()*t.zx() - t.xx()*t.zy(),
        t.xx()*t.yy() - t.yx()*t.xy()
  
] /dett

      18.张量的一阶不变量,1st invariant of a tensor

符号:invariantI
使用:invariantI(t)
返回:标量

[    
    tr(t)
] 

       19.张量的二阶不变量,2nd invariant of a tensor

符号:invariantII
使用:invariantII(t)
返回:标量

[    
        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()
        )
] 

       18.张量的三阶不变量,3rd invariant of a tensor

符号:invariantIII
使用:invariantIII(t)
返回:标量

[    
    det(t)
] 

参考:

OpenFOAM-XX/src/OpenFOAM/primitives/Tensor/TensorI.H

标签:运算,t2,张量,t1,xz,yx,yz,xy,OpenFOAM
来源: https://blog.csdn.net/weixin_36942960/article/details/120152638