借助localPoints实现网格运动控制的问题



  • 各位foamer大家好,最近在做一个翼型的运动控制的算例,想实现一个翼型柔性运动与俯仰运动的耦合。现在在编写俯仰运动时遇到了问题。首先我用localPoints函数分别读取了翼型的x,y坐标,命令如下:

    scalarField x = patch().localPoints().component(vector::X);
    scalarField y = patch().localPoints().component(vector::Y);
    

    然后在operator里面乘以旋转矩阵,这里减去x,y是因为要求位移增量:

      amplitudex_*((x)*cos(theta)-(y)*sin(theta)-x)
    + amplitudey_*((x)*sin(theta)+(y)*cos(theta)-y)
    

    这个theta是一个时间变化的角度,例如:

    scalar theta = 20*sin(20*t.value());
    

    现在出现的问题是翼型在旋转过程中会边转边向旋转中心缩短,这个是什么原因?我个人感觉是我对localPoints函数读取点坐标理解有问题,不知道有没有人试过。



  • 看起来只是简单的方程bug,你试试简单的正方形运动,对比一下精确解


Log in to reply
 

CFD中文网 2016 - 2020 | 京ICP备15017992号-2