DEFINE_CG_MOTION宏【注释版】

线速度是通过物体上的x方向的力平衡达到的。表达形式为:

此处v为速度,F为外力,m为质量。使用显示欧拉格式表达t时刻速度为:

源代码:

#include "udf.h"

 

static real v_prev = 0.0;     

DEFINE_CG_MOTION(moving_body, dt, vel, omega, time, dtime)

{

    Thread *t;

    face_t f;

    real NV_VEC(A);        //定义一个向量变量A

    real force, dv;

 

    NV_S(vel, =, 0.0);        //对变量vel赋值为0.0

    NV_S(omega, =, 0.0);    //对变量omega赋值为0.0

    if(!Data_Valid_P())

        return;

 

    t = DT_THREAD(dt);        //DT_THREAD 就是获取网格运动所在的 thread 指针

 

    force = 0.0;

    begin_f_loop(f, t)

    {

         F_AREA(A, f, t);    //获取面上单元的面积,并且存储在向量A当中

         force = force + F_P(f, t) * A[0];        //循环累加获取x方向的力的大小

    }

    end_f_loop(f, t)

    

    dv = dtime * force / 100.0;    

    v_prev = v_prev + dv;    //原来的速度加上速度的增量,得到现在的速度

    vel[0] = v_prev;    //将现在的速度返回给动网格宏函数

}

posted @ 2016-01-12 17:47  硫酸亚铜  阅读(1634)  评论(0编辑  收藏  举报