《FLUENT-UDF实例应用.ppt》由会员分享,可在线阅读,更多相关《FLUENT-UDF实例应用.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1、为什么要使用UDF 一般来说,任何一种软件都不可能满足每一个人的要求,FLUENT也一样,其标准界面及功能并不能满足每个用户的需要。UDF正是为解决这种问题而来,使用它我们可以编写代码满足不同用户的特殊需要。2、UDF的功能 定义边界条件,定义材料属性,定义表面和体积反应率,定义FLUENT输运方程中的源项,用户自定义标量输运方程(UDS)中的源项扩散函数等等。 在每次迭代的基础上调节计算值 方案的初始化 (需要时)UDF的异步执行 后处理的改善 FLUENT模型的改进(例如离散相模型,多项混合物,离散发射辐射模型)3、举一反三DEFINE_PROFILE#include udf.h“ D
2、EFINE_PROFILE(pressure_profile,t,i) real xND_ND; real y; face_t f; begin_f_loop(f,t) F_CENTROID(x,f,t); y = x1; F_PROFILE(f,t,i) = 1.1e5 - y*y/(.0745*.0745)*0.1e5; end_f_loop(f,t) #include “udf.h”#define pi 4.*atan(1.)DEFINE_PROFILE (x_velocity,thread,position) face_t f; begin_f_loop(f,thread) real
3、t=RP_Get_Real(“flow-time”); F_PROFILE(f,thread,position)=1+sin(pi*t); end_f_loop(f,t)#include “udf.h”DEFINE_PROFILE(heatflux,t,i) face_t f; real x; real a=0.01; real gND_ND; begin_f_loop(f,t) F_CENTROID(g,f,t); x=g0; F_PROFILE(f,t,i)=a*x; end_f_loop(f,t)根据距离原点远近定义热流率#include udf.hDEFINE_PROFILE(heat
4、flux,t,i) face_t f; real r; real a=0.01; real xND_ND,yND_ND,zND_ND; begin_f_loop(f,t) F_CENTROID(x,f,t); y0=0.0; y1=0.0; y2=0.0; NV_VV(z,=,x,-,y); r=NV_MAG(z); F_PROFILE(f,t,i)=a*r; end_f_loop(f,t)4、综合编程:出口平均温度赋值给进口#include udf.hreal NV_VEC(A);real avg_temp;real sum_T_A=0.0;real sum_A=0.0;Thread *th
5、read_out;face_t f;Domain *domain;DEFINE_ADJUST(adjust,d) domain=Get_Domain(1); thread_out=Lookup_Thread(domain,4); begin_f_loop(f,thread_out) F_AREA(A,f,thread_out); sum_A+=NV_MAG(A); sum_T_A+=NV_MAG(A)*F_T(f, thread_out); end_f_loop(f,thread_out) avg_temp=sum_T_A/sum_A;DEFINE_PROFILE(inlet_T, t, i) begin_f_loop(f,t) F_PROFILE(f,t,i) = avg_temp; end_f_loop(f,t) 对并行编程的展望 大部分单核可以运行的UDF在并行下可以完美运行,不过在一些情况下就不行了,前面的综合编程就是一个很好的例子(Reading and Writing Files,Global Sums,Certain Loops over cells and faces等情况)。然而现在大部分PC机或者工作站都是多核,如何写好并行下的UDF是深入模拟领域的关键。谢谢!
限制150内