24小时热门版块排行榜    

CyRhmU.jpeg
查看: 485  |  回复: 1
【悬赏金币】回答本帖问题,作者dwademvp将赠送您 20 个金币

dwademvp

捐助贵宾 (初入文坛)

[求助] 求大佬帮我看看这个udf

计算壁面条件的,这个udf是仿照帮助文档写的,能加载,但碰撞的粒子都abort了,无反弹的粒子,想知道哪里出问题了。

#include "udf.h"
DEFINE_DPM_BC(my_dpm_bc,p,t,f,f_nomal,dim)
{
        real vn=0.;
        real alpha;
        real vc;
        real vn1;
        real nor_coeff=0.8;
        real tan_coeff=0.3;
        real nomal[3];
        real diam;
        real NV_VEC(x);
        diam=P_DIAM(p);
        int i,idim=dim;
        for(i=0;i<idim;i++)
                nomal=f_nomal;
        for(i=0;i<idim;i++)
            vn+=p->state.V*nomal;
                vn1=fabs(vn);
                vc=pow((2*0.00000018/diam/45.3/45.3*pow((45.3+pow(vn1,0.718)),2)),1.43);
        if(vn1<vc)
        {
        return PATH_ABORT;
        }
        else
        if(p->type==DPM_TYPE_INERT)
        {
                alpha=M_PI/2.-acos(MAX(-1.,MIN(1.,NV_DOT(nomal,p->state.V)/
                             MAX(NV_MAG(p->state.V),DPM_SMALL))));
        if((NNULLP(t))&&(THREAD_TYPE(t)==THREAD_F_WALL))
        F_CENTROID(x,f,t);
        for(i=0;i<idim;i++)
           p->state.V-=vn*nomal;
        for(i=0;i<idim;i++)
           p->state.V*=tan_coeff;
        for(i=0;i<idim;i++)
           p->state.V-=nor_coeff*vn*nomal;
        for(i=0;i<idim;i++)
           p->state0.V= p->state.V;
        return PATH_ACTIVE;
        }
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dwademvp

捐助贵宾 (初入文坛)

帮助里为什么要求这个Alpha夹角,一直搞不懂为啥要求,有什么用
2楼2022-06-09 15:04:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dwademvp 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见