欢迎来到天天文库
浏览记录
ID:35319001
大小:32.50 KB
页数:3页
时间:2019-03-23
《udf-使用经验总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、我接触UDF的时间不算长,2007年7月份开始看UDF的中文帮助,花了一周时间大体看完后,第一感觉:不难啊,至少不像以前别人给我讲的很高深的样子。然后就是UDF编程,直到10月底吧。然后用的时间就不多了。然后就是这两周,我马上就要研究生毕业了,可能这周结束后用UDF编程的可能性会很小了,所以想写点东西,给刚刚学UDF编程的人,希望对大家有用。对于UDF高手,估计是不用向下看了。UDF框架光看书,感觉UDF不难。看例子,有些看个四五遍之后才能差不多看懂。原来,得靠UDF帮助。我主要用的是fluentv
2、6.3自带的html格式的帮助,里面东西很全,当然也包括UDFManual。里面自带的search功能相当好,只是要注意用好+或-号(逻辑符号),另外,这个功能似乎有些浏览器支持不太好,不过基本上用IE不太容易出问题。对于从零开始学习UDF,建议还是先看一下UDF中文帮助,我估计大家知道的都是马世虎翻译的那本吧,感觉挺好。(没想到马世虎跟我是校友,去年给安世亚太投过一份简历,他给我打过电话,当时一阵兴奋,呵呵。)1.对于只涉及到边界条件或物性等的UDF,一般用interpret就可以的,这些我觉得只
3、需要根据例子改一下就是了。$$对于要添加UDS方程的,相对难一点。我编程用的是三到五个UDS,几十个UDM。一开始编程时,没有头绪,后来看别人编的,才慢慢发现了一些基本思路。比如,可以用枚举定义UDS或UDM,这样用起来方便。enum{ NP, RHOH2O_Y_UP_X, RHOH2O_Y_UP_Y, RHOH2O_Y_UP_Z, N_REQUIRED_UDS};//枚举UDS变量名对于UDM,则用N_REQUIRED_UDM代表个数。2.然后在INIT与ADJUST函数中,
4、检查变量个数时则比较方便,如:DEFINE_INIT(init_parameter,domain){if(n_uds< N_REQUIRED_UDS) Error("Notenoughuserdefinedscalars!(init)");if(n_udm5、e,domain){if(n_uds< N_REQUIRED_UDS) Error("Notenoughuserdefinedscalars!(adjust)");if(n_udm6、if(NNULLP(THREAD_STORAGE(t,SV_UDS_I(NP)))&&NNULLP(THREAD_STORAGE(t,SV_UDS_I(NP_R))))//为各UDS提供存储空间 { begin_c_loop(c,t) { for(i=0;i7、 } if(NNULLP(THREAD_STORAGE(t,SV_UDM_I))) { begin_c_loop(c,t) { for(i=0;i8、0;//用之前对变量进行初始化...//UDM相关运行C_UDMI(c,t,UDM_V)=udm_v;//把值输入给UDM,当然之前要对UDM_V进行定义用UDM有个好处,一是可以在后处理中显示,二是传递变量相当方便,比如在ADJUST中计算的量用于源项或对流项等,用UDM可以直接调用。2.对于invalidnumber错误,很多时候是因为分母为零,如果习惯UDM初始化为零,则要注意避免零作分母,可以令其初始化不为零或为零时不运算(第二种方法比较好)。方程与计算我编程
5、e,domain){if(n_uds< N_REQUIRED_UDS) Error("Notenoughuserdefinedscalars!(adjust)");if(n_udm6、if(NNULLP(THREAD_STORAGE(t,SV_UDS_I(NP)))&&NNULLP(THREAD_STORAGE(t,SV_UDS_I(NP_R))))//为各UDS提供存储空间 { begin_c_loop(c,t) { for(i=0;i7、 } if(NNULLP(THREAD_STORAGE(t,SV_UDM_I))) { begin_c_loop(c,t) { for(i=0;i8、0;//用之前对变量进行初始化...//UDM相关运行C_UDMI(c,t,UDM_V)=udm_v;//把值输入给UDM,当然之前要对UDM_V进行定义用UDM有个好处,一是可以在后处理中显示,二是传递变量相当方便,比如在ADJUST中计算的量用于源项或对流项等,用UDM可以直接调用。2.对于invalidnumber错误,很多时候是因为分母为零,如果习惯UDM初始化为零,则要注意避免零作分母,可以令其初始化不为零或为零时不运算(第二种方法比较好)。方程与计算我编程
6、if(NNULLP(THREAD_STORAGE(t,SV_UDS_I(NP)))&&NNULLP(THREAD_STORAGE(t,SV_UDS_I(NP_R))))//为各UDS提供存储空间 { begin_c_loop(c,t) { for(i=0;i7、 } if(NNULLP(THREAD_STORAGE(t,SV_UDM_I))) { begin_c_loop(c,t) { for(i=0;i8、0;//用之前对变量进行初始化...//UDM相关运行C_UDMI(c,t,UDM_V)=udm_v;//把值输入给UDM,当然之前要对UDM_V进行定义用UDM有个好处,一是可以在后处理中显示,二是传递变量相当方便,比如在ADJUST中计算的量用于源项或对流项等,用UDM可以直接调用。2.对于invalidnumber错误,很多时候是因为分母为零,如果习惯UDM初始化为零,则要注意避免零作分母,可以令其初始化不为零或为零时不运算(第二种方法比较好)。方程与计算我编程
7、 } if(NNULLP(THREAD_STORAGE(t,SV_UDM_I))) { begin_c_loop(c,t) { for(i=0;i8、0;//用之前对变量进行初始化...//UDM相关运行C_UDMI(c,t,UDM_V)=udm_v;//把值输入给UDM,当然之前要对UDM_V进行定义用UDM有个好处,一是可以在后处理中显示,二是传递变量相当方便,比如在ADJUST中计算的量用于源项或对流项等,用UDM可以直接调用。2.对于invalidnumber错误,很多时候是因为分母为零,如果习惯UDM初始化为零,则要注意避免零作分母,可以令其初始化不为零或为零时不运算(第二种方法比较好)。方程与计算我编程
8、0;//用之前对变量进行初始化...//UDM相关运行C_UDMI(c,t,UDM_V)=udm_v;//把值输入给UDM,当然之前要对UDM_V进行定义用UDM有个好处,一是可以在后处理中显示,二是传递变量相当方便,比如在ADJUST中计算的量用于源项或对流项等,用UDM可以直接调用。2.对于invalidnumber错误,很多时候是因为分母为零,如果习惯UDM初始化为零,则要注意避免零作分母,可以令其初始化不为零或为零时不运算(第二种方法比较好)。方程与计算我编程
此文档下载收益归作者所有