


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
我接触UDF的时间不算长,2007年7月份开始看UDF的中文帮助,花了一周时间大体看完后,第一感觉:不难啊,至少不像以前别人给我讲的很高深的样子。然后就是UDF编程,直到10月底吧。然后用的时间就不多了。然后就是这两周,我马上就要研究生毕业了,可能这周结束后用UDF编程的可能性会很小了,所以想写点东西,给刚刚学UDF编程的人,希望对大家有用。对于UDF高手,估计是不用向下看了。UDF框架光看书,感觉UDF不难。看例子,有些看个四五遍之后才能差不多看懂。原来,得靠UDF帮助。我主要用的是fluent v6.3自带的html格式的帮助,里面东西很全,当然也包括UDF Manual。里面自带的search功能相当好,只是要注意用好+或-号(逻辑符号),另外,这个功能似乎有些浏览器支持不太好,不过基本上用IE不太容易出问题。对于从零开始学习UDF,建议还是先看一下UDF中文帮助,我估计大家知道的都是马世虎翻译的那本吧,感觉挺好。(没想到马世虎跟我是校友,去年给安世亚太投过一份简历,他给我打过电话,当时一阵兴奋,呵呵。)1. 对于只涉及到边界条件或物性等的UDF,一般用interpret就可以的,这些我觉得只需要根据例子改一下就是了。$ 对于要添加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函数中,检查变量个数时则比较方便,如:DEFINE_INIT(init_parameter,domain)if (n_uds N_REQUIRED_UDS) Error(Not enough user defined scalars!(init)n);if (n_udmN_REQUIRED_UDM) Error(Not enough user defined memories(init)!n);initialise(domain);/代表初始化DEFINE_ADJUST(adjust_compute,domain)if (n_uds N_REQUIRED_UDS) Error(Not enough user defined scalars!(adjust)n);if (n_udmN_REQUIRED_UDM) Error(Not enough user defined memories(adjust)!n);update_parameter(domain);/代表主函数3. 初始化时,则可:cell_t c;Thread *t;int i;thread_loop_c(t,d) 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; iN_REQUIRED_UDS; i+) C_UDSI(c,t,i) = 0.0; end_c_loop(c, t); if(NNULLP(THREAD_STORAGE(t,SV_UDM_I) begin_c_loop(c, t) for (i=0; iN_REQUIRED_UDM; i+) C_UDMI(c,t,i) = 0.0; end_c_loop(c, t); 4. 对于各UDM量,则可:real udm_v;udm_v=0;/用之前对变量进行初始化./UDM相关运行C_UDMI(c,t,UDM_V)=udm_v;/把值输入给UDM,当然之前要对UDM_V进行定义用UDM有个好处,一是可以在后处理中显示,二是传递变量相当方便,比如在ADJUST中计算的量用于源项或对流项等,用UDM可以直接调用。5. 对于invalid number错误,很多时候是因为分母为零,如果习惯UDM初始化为零,则要注意避免零作分母,可以令其初始化不为零或为零时不运算(第二种方法比较好)。方程与计算我编程计算的是两相流中一相凝结成核,需要用UDS方程来模拟其成核有关变量(不要来问我程序代码,呵呵)。我觉得对UDS变量控制方程搞清楚之后,这块一点儿也不难。一般变量的控制方程(Fluent能认识的),就是含有瞬态项(时间项),对流项,扩散项与源项。(方程如何处理fluent会自己弄的)对第一项,都有相应的宏来处理。1. 对于对流项,比如关于phi的方程中的:rho*U*phi的散度,其中U为速度矢量,则fluent中需要知道的对流项则为rho*U.A,其中U.A代表U与A的点积,A代表单元格的面积向量。对流是对面而言(2D的话则对线而言),对于边界,只有一边有单元格,而对于内部surface,则两边都有单元格,这时单元格编号从0到1。比如,对于内部边界,代码可以与下面类似:real NV_VEC(psi),NV_VEC(A),flux1;/声明向量操作c0=F_C0(f,t);t0=F_C0_THREAD(f,t);F_AREA(A,f,t);/A的获得c1=F_C1(f,t);t1=F_C1_THREAD(f,t);NV_D(psi,=,C_UDMI(c0,t0,UPX),C_UDMI(c0,t0,UPY),C_UDMI(c0,t0,UPZ);NV_D(psi,+=,C_UDMI(c1,t1,UPX),C_UDMI(c1,t1,UPY),C_UDMI(c1,t1,UPZ);flux1=NV_DOT(psi,A)/2.0;对于边界上,则可以只用单元格c0,t0处的值或用f,t处的值(代表直接在边界面上取值,前提是边界上有存储值)。2. 对于扩散项,一般比较简单,直接用宏DEFINE_DIFFUSIVITY定义扩散系数即可。注意它在fluent软件中的加入方式,一般是在material菜单中。species中加入的扩散项与UDS扩散项的加入不在同一处。3. 对于源项,如果不容易线性化,不如索性定义dSeqn=0,这样倒简单。其它一开始学fluent时,把松弛因子设为0.1就感觉挺小了。没想到刚用UDF计算时,得从1e-5开始,慢慢调到1e-1数量级上。想想挺可怕的。另外,很多CFD或多相流的东西都是理论与经验数据结合构成的公式,不一定完全准确,再加上数值解法的多样性,使算题时容易出各种各样的问题。而且UDF有个特点,不能单独运行的,调试也必须放到fluent中,这样当要加入的宏比较多时,就会变得很麻烦,常常一天要建十几个library,然后分别选择不同的宏加载到fluent,然后就是不停的调试。记得刚开始,我跟我师姐一块,她主要负责物理理论,我主要负责编程,经常因为一个小问题,要调试上大半天,因为编程中,任何一个小问题也必须解决掉。当然,也经常烦得很,还好,男女搭配干活不太累。1. 我觉得visual assistX这个软件相当不错,它是为了方便vc环境下的编程。而用udf编程时,大家感觉不爽的是,没有提示能力,因为它的宏VC环境下是不认识的,所以一片黑颜色不好看,主要的是不利于查错与写代码。而用visual assistX(网上有破解版的),将fluent udf常用的几个头方便的目录加入visual assistX中后,就方便多了。比如,输入C_时,可能就会提示C_UDMI,C_UDSI,C_U,C_R等,因为以C开头的宏太多了,所以只提示最近用过的几个。又比如,各种枚举量,各种宏等,这时都会以不同的颜色表示,一般常见的拼写错误,一下子就能看出来,因为颜色不同,方便多了。visual assistX本身也带有spell check功能,不过最好关掉,因为我们定义变量时常常不是以完整的单词命名,而这时常常很多代码下面都有浅浅的红色的波浪线,很是不爽。又如,visual assistX提供查询功能,比如,某个宏或某个系统自带的变量名等,会自动显示该名称的出处,点一下go即可查得源文件。这样可以很方便地查询自己不认识的宏或变量等。2. 一开始编程时常犯一个错误,就是这样写:powl(C_U(c,t),1/3),实际应该写为powl(C_U(c,t),1.0/3),因为1/3默认是int型的,所以值为0,显然不是我想要的。3. 一开始用fluent6.1编程,它对于某个UDF面板处一般只允许一个宏的存在,所以,当你改了一下代码,重新build一个library后,宏会默认地替
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度财务顾问财务顾问顾问团队能力提升服务协议
- 2025年度对外贸易合同二:国际贸易绿色包装与环保材料采购合同
- 2025版十九组太阳能路灯工程智能化管理系统开发合同
- 2025年度地产代理合同:长租公寓项目
- 2025版室内设计师墙纸师傅定制施工合作协议书
- 贵州省兴仁县2025年上半年事业单位公开遴选试题含答案分析
- 2025版沿街商铺租赁合同(含装修设计、广告投放及物业增值服务)
- 2025版企业间知识产权质押借款合同标准文本
- 2025版临时工劳务合同标准范本
- 2025年光伏发电项目电气设施安装施工合同
- 合伙开公司必签的五份协议
- 八年级地理实验室使用计划
- 公司信息安全知识培训模版课件
- 2024LNG储罐焊缝X射线数字成像检测规范
- DB5117T 22-2020 地理标志产品 米城大米
- 设计概论讲课课件(第三版杨晓琪)
- 小学数学分数四则混合运算200题带答案
- 小学音乐跨学科教学的常见问题与应对策略
- 小红书食用农产品承诺书示例
- 《新能源汽车》课件 课题四 纯电动汽车
- 二年级数学计算题专项练习1000题汇编集锦
评论
0/150
提交评论