FLUENTUDF实例应用.ppt
UDF的应用,User-Defined Function,1、为什么要使用UDF,一般来说,任何一种软件都不可能满足每一个人的要求,FLUENT也一样,其标准界面及功能并不能满足每个用户的需要。UDF正是为解决这种问题而来,使用它我们可以编写代码满足不同用户的特殊需要。,2、UDF的功能,定义边界条件,定义材料属性,定义表面和体积反应率,定义FLUENT输运方程中的源项,用户自定义标量输运方程(UDS)中的源项扩散函数等等。在每次迭代的基础上调节计算值方案的初始化(需要时)UDF的异步执行后处理的改善FLUENT模型的改进(例如离散相模型,多项混合物,离散发射辐射模型),3、举一反三,DEFINE_PROFILE#include udf.h“DEFINE_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 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(heatflux,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*thread_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是深入模拟领域的关键。,谢谢!,