
最新实例应用1PPT课件.ppt
18页实例应用实例应用11、为什么要使用UDF 一般来说,任何一种软件都不可能满足每一个人的要求,FLUENT也一样,其标准界面及功能并不能满足每个用户的需要UDF正是为解决这种问题而来,使用它我们可以编写代码满足不同用户的特殊需要#include “udf.h”DEFINE_PROFILE(heatflux,t,i){ face_t f; real x; real a=0.01; real g[ND_ND]; begin_f_loop(f,t) { F_CENTROID(g,f,t); x=g[0]; F_PROFILE(f,t,i)=a*x; } end_f_loop(f,t)}根据距离原点远近定义热流率#include "udf.h"DEFINE_PROFILE(heatflux,t,i){ face_t f; real r; real a=0.01; real x[ND_ND],y[ND_ND],z[ND_ND]; begin_f_loop(f,t) { F_CENTROID(x,f,t); y[0]=0.0; y[1]=0.0; y[2]=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.h"real 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是深入模拟领域的关键谢谢!。












