24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2026级博士研究生招生报考通知(长期有效)
查看: 778  |  回复: 2
【悬赏金币】回答本帖问题,作者cure727将赠送您 5 个金币

cure727

铜虫 (初入文坛)

[求助] DPM颗粒采样UDF已有1人参与

大家好,我想请教一下DPM里的有关UDF的一个小问题:
编写DPM采样对应的UDF的时候,结尾会涉及到如何保证不在重复追踪颗粒,我看大多数人最后的代码都写的是如下这种:
#if REMOVE_PARCELS   
        p->stream_index=-1;   
        #endif   
但我也查阅了相关的UDF的help文档(2020版),里面的两个案例均采用的是如下这种结束语句
#if REMOVE_PARTICLES
          MARK_TP(tp, P_FL_REMOVED);
    #endif
我想问一下这两个结束语句有何区别呢?希望各位大佬不吝赐教
回复此楼
每天挣扎在fluent海洋里的科研小白,抑郁ing
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cure727

铜虫 (初入文坛)

完整的UDF如下所示:
#define REMOVE_PARTICLES FALSE   
   
DEFINE_DPM_OUTPUT(Discrete_phase_sample,header,fp,p,t,plane)   
{   
   
        real flow_time = solver_par.flow_time;   
        real r, x, y, z;   
   
        if(header)   
        par_fprintf_head(fp," #Time[s] R [m] x-velocity[m/s] y-velocity[m/s] z-velocity[m/s] Drop Diameter[m] Number of Drops Temperature [K] Initial Diam [m] Injection Time [s] \n";   
   
        if(NULLP(p))   
        return;   
   
        x = p->state.pos[0];   
        y = p->state.pos[1];
        z = p->state.pos[2];
        r = sqrt(SQR(x) + SQR(y));   
   
        par_fprintf(fp,"%e %f %f %f %f %f %f %e %e %f %e %f \n",   
        P_TIME(p), x, y, z, p->state.V[0],p->state.V[1],p->state.V[2],P_DIAM(p),p->number_in_parcel,P_T(p), P_INIT_DIAM(p), p->time_of_birth);   
   
     
        #if REMOVE_PARTICLES
          MARK_TP(tp, P_FL_REMOVED);
    #endif
}
每天挣扎在fluent海洋里的科研小白,抑郁ing
2楼2022-04-25 16:31:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Marma_lade

银虫 (小有名气)

【答案】应助回帖

我两种语句都用过,都能实现使颗粒消失,之前不知道在哪里看到 p->stream_index=-1这个语句尽可能不要用了,可能会因为版本更新导致没有用了,所以用MARK_TP(tp, P_FL_REMOVED)这个就好
3楼2022-05-04 20:37:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cure727 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见