Logo 折叠
全网首发仿真工程师项目实训
下载app
返回旧版
首页 成长助手 小邻学院 社区 发现
职业认证 企业服务 行业会议

登录解锁更多功能

还没有账号?立即注册

技术邻
技术引领职场价值
电话
0571-86682823
商务合作
service@jishulink.com

Fluent 串行UDF改并行UDF?

浏览: 4315 回答: 3

串行可以计算,但是按照网上和帮助上改成并行的,结果并行计算和串行结果不一样(可以肯定并行计算错了),实在没搞明白host和node该怎么设,有没有大神指导一下改怎么改啊?UDF是求取特定体积的,涉及了循环,初步猜测是不同node的值没有汇总,导致结果中时间列是对的,变量列是错的....

#include "udf.h"

DEFINE_EXECUTE_AT_END(execute_at_end)

{

FILE *fp;

fp = fopen("vf.txt", "a");

real volume = 0.0;

real mass_fraction = 0.0;

real v = 0.0;

real vf = 0.0;

real flow_time = RP_Get_Real("flow-time");

int cold_index = 0;


#if !RP_HOST

Domain * d;

Thread * tc;

cell_t c;

d = Get_Domain(1);

#endif


#if !RP_HOST

thread_loop_c(tc, d)

{

begin_c_loop_int(c, tc)

{

mass_fraction = C_YI(c, tc, cold_index);

if (mass_fraction>0.13253545)

{

volume = C_VOLUME(c, tc);

v += volume;

}

}

vf = v * 100 / 0.01720534;

end_c_loop_int(c, tc)

}

#endif


#if !RP_HOST

fprintf(fp, "%f, %f \n", flow_time, vf);

fclose(fp);

#endif

}


全部回答 (3)

默认 最新
NANK 2017年7月27日
fluent在并行计算时,整个计算网格会由主节点(host)分为若干个计算量相当的子区域,分配至各个计算结点(computer node)上。 host只存储网格的分区信息,因而不能进行涉及单元循环的计算,而可以进行从computer node上返回值的相关计算以及其它C语言允许的计算; computer node则可以进行本节点上分配的区域内网格循环的相关计算。在将串行udf修改为并行的时,确定好哪些程序段是需要在host上编译执行,哪些是需要在computer node上编译执行,协调好两者之间的数据传递即可, 具体参考Udf manual中的parallel considerations
2017年7月27日
已采纳 评论 点赞
技术邻问答 2017年7月27日
@EAC @NANK
2017年7月27日
评论 点赞
Samenov 2017年7月26日
在末尾加入v = PRF_GRSUM1(v)后,可以计算了,但是为什么并行和串行的结果,在小数数值上还有不同,UDF是不是还有问题?对于begin_c_loop_int 宏,在求取单元体积上时,只需要单元内部循环就可以了吗?不需要把外部单元一起循环吧?
2017年7月26日
评论 点赞

相似问题

查看全部
  • 求助:Fluent中导入UDF 2个回答

    #include "udf.h" #include "math.h" FILE *result; DEFINE_EXECUTE_AT_END(pressure_end) { result=fopen("Pressure_GET.txt","a"); Domain *d d=Get_Domain(1); Thread *t; cell_t c; real pressure; real A[ND_ND

  • Fluent编写UDF出现一些问题? 1个回答

    我需要编写的是一个温度随时间变化的边界条件。温度随时间变化的公式如图片所示。下面是我自己编写的udf: #include "udf.h" #define K1 6.2831852/8760 #define K2 2.6/438000 DEFINE_PROFILE(boundary_temperature,t,i) { real x[ND_ND]; /* this will hold the pos

  • fluent 如何udf控制多入口逐个进气? 3个回答

    有2个进气口,如何控制入口1进气1s然后关闭,入口2进气1s然后关闭,然后循环作用。尝试学udf控制,但失败了(从效果图看还是两个口同时进气)。请教大神们如何编写udf或有什么招。 我的udf如下: #include "udf.h" DEFINE_PROFILE(inlet1_pressure, thread, position) { real t; face_t f; begin_f_loop(

推荐阅读

手把手教你ABAQUS耗能钢节点建模与分析

手把手教你ABAQUS耗能钢节点建模与分析

1点 1点
¥169
Apex For Aerospace Applications Introduction

Apex For Aerospace Applications Introduction

MSC Apex
免费
公路钢筋混凝土及预应力混凝土桥涵设计规范解决方案

公路钢筋混凝土及预应力混凝土桥涵设计规范解决方案

敦樸DUNPU 敦樸DUNPU
免费
慧加新规范解决方案详解之大跨连续弯梁桥精细化分析(7DOF)

慧加新规范解决方案详解之大跨连续弯梁桥精细化分析(7DOF)

敦樸DUNPU 敦樸DUNPU
免费
混合弯头的流体流动与传热

混合弯头的流体流动与传热

CFD流 CFD流
免费
Abaqus子程序安装教程 Abaqus6.14.2+VS2013+IVF2013(附带安装包)

Abaqus子程序安装教程 Abaqus6.14.2+VS2013+IVF2013(附带安装包)

二十 二十
免费
介观尺度的新一代核心LBM算法案例实操讲解突破传统CFD算法最大障碍网格划分

介观尺度的新一代核心LBM算法案例实操讲解突破传统CFD算法最大障碍网格划分

北京华盛扬科技 北京华盛扬科技
¥9.9
Msc Apex For Aerospace Applications Idealization a

Msc Apex For Aerospace Applications Idealization a

MSC Apex
免费