CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

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

    OpenFOAM
    2
    2
    685
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 吴
      吴优 最后由 编辑

      各位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函数读取点坐标理解有问题,不知道有没有人试过。

      1 条回复 最后回复 回复 引用
      • 李东岳
        李东岳 管理员 最后由 编辑

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

        线上CFD课程开始报名:http://www.dyfluid.com/class.html

        CFD高性能服务器 http://dyfluid.com/servers.html

        1 条回复 最后回复 回复 引用
        • First post
          Last post