FLUENT计算变量的梯度:VOF的梯度-pancard.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1 FLUENT变量梯度宏 C_R_G C_P_G C_U_G C_V_G C_W_G C_T_G C_H_G C_YI_G C_R_RG C_P_RG C_U_RG C_V_RG C_W_RG C_T_RG C_H_RG C_YI_RG FLUENT计算中单元变量有两种梯度:非限制梯度(后缀_G)和重建梯度(后缀_RG),帮助文档建议如果需要通过单元变量重建计算单元面上的变量则使用重建梯度计算更精确。 说明: 只有当求解器正在求解某一变量时才能读取该变量的梯度。例如,定义一个能量源项时,可以读取温度梯度(C_T_G),但是不能读取速度梯度(如C_U_G)。这是因为求解器不断释放它不需要的变量存储。如果你要保留这些变量梯度,可以使用TUI命令: solve/set/expert 设置“Keep temporary solver memory from being freed?” [Yes]。当然这样做,计算需要更多内存。 C_R_G 只有density-based solver中才能使用; C_P_G只有pressure-based solver中才能使用。 C_YI_G 只有density-based solver中可用,如果pressure-based solver要使用C_YI_G,则需要设置 species/save-gradients? #t. 变量的梯度是否存在与求解器、模型、离散方式以及是否设置保留这些变量梯度有关。 C_VOF_G是否存在?质量源项中是否可以读取?设置保留对其无效?上述问题未知 UDS变量的梯度可以通过C_UDSI_G(C,0)访问,求解中始终存储,即使设置“Keep temporary solver memory from being freed?” [No],UDS的梯度仍存在;而且在方程求解控制中设置不求解UDS,仍可以读取UDS梯度。 2 FLUENT不计算和保存VOF的梯度 一般情况下,FLUENT计算过程中会计算VOF及其梯度(因为表面张力的计算需要用到VOF梯度),会保存VOF值,但是不保存VOF梯度。因此,如果UDF中利用宏C_VOF_G读取VOF梯度则会报读取错误,如下例: UDF定义一个与VOF梯度成正比的动量源项: DEFINE_SOURCE(xmomentum,c,t,dS,eqn) { Thread *w; real vof_gx, source; w=THREAD_SUB_THREAD(t,1); vof_gx=C_VOF_G(c,w)[0]; source=-200*C_R(c,t)*vof_gx; dS[eqn]=0; return source; } 运行后报错: Error:? FLUENT received fatal signal (ACCESS_VIOLATION) 1. Note exact events leading to error. 2. Save case/data under new name. 3. Exit program and restart to continue. 4. Report error to your distributor. 有些人修改读取VOF梯度的语句后,运行成功,但是实际上未读取到梯度值。 if(NNULLP(THREAD_STORAGE(t, SV_VOF_G))) vof_gx=C_VOF_G(c,w)[0]; else vof_gx=0; 由于FLUENT未存储VOF梯度,THREAD_STORAGE(t, SV_VOF_G)返回的都是NULL。 还有些人利用TUI打开中间量的保存: Solve-set-expert keep?temporary?solver?memory?from?being?freed? [yes] 保存求解临时存储而不释放?[yes] 这一设置对C_T_G,C_P_G等梯度是有效的,但是对VOF的梯度似乎无效。 3 读取VOF梯度方法1 #include udf.h #include sg.h #include sg_mphase.h #include flow.h #include mem.h #include metric.h DEFINE_ADJUST(store_VOF_gradient, domain) { Thread *t; Thread *ppt; Thread **pt; cell_t c; int phase_domain_index=1; Domain *pDomain = DOMAIN_SUB_DOMAIN(domain,phase

文档评论(0)

151****9996 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档