找回密码
 注册
查看: 4514|回复: 26

如何利用UDF,消除忽略Kavitation时所产生的油层负压力

[复制链接]
发表于 2011-1-25 06:02:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
如下图A的轴承油膜压力模拟中产生了负压力,有篇国外论文利用UDF的边界条件(5),即可转换为图B的效果,但是作者没有具体说明,因为我实际要结局的情况也类似,所以想请教这个应该怎么UDF中的什么define语句?最好能具体解释一下,在这里,先谢各位谢高手指教了!

[ 本帖最后由 k200 于 2011-1-26 05:29 编辑 ]
45646.png
发表于 2011-1-25 13:17:48 | 显示全部楼层
观楼主附图所说,实际这种效果是因为使用了半索末菲边界条件才出现的,于是udf就是要实现这个半索末菲边界,可不是什么udf就能转换A到B,呵呵

A图在未使用半索末菲条件时,图中的压力最低值达到了-2.5e+05,不知道楼主的环境压力是多少,显然这个值是不合理的,
至于B图,如果单纯是条件5在起作用,那就是将左图的低于一个大气压的地方置零了
如果图示是一个边界,可以考虑使用profile宏,
#include "udf.h"
DEFINE_PROFILE(Static_P,t,i)
{
        real t, sp;
        face_t f;
        begin_f_loop(f,t)
          {
if (F_P(f,t)<1e+05)                 
                  F_PROFILE(f,t,i)=0;
else
                 F_PROFILE(f,t,i)=F_P(f,t);
          }
         end_f_loop(f,t)
}
这是静态赋值,仅供参考
 楼主| 发表于 2011-1-26 02:47:20 | 显示全部楼层
谢谢楼上给出的意见。
发表于 2011-1-26 11:02:14 | 显示全部楼层
使用2楼我给出的宏啊,哪里没说清楚吗?
 楼主| 发表于 2011-2-2 08:05:39 | 显示全部楼层
编译和链接都没问题了,我该如何激活呢?
发表于 2011-2-2 10:53:52 | 显示全部楼层
我看你图中标的是journal surface
那么这个surface你定义了吗,如果定义了是边界,那就好办了,否则可能就需要另外的宏

在边界条件中选中这个边界,然后set,里面在定义栏能够选中user-defined,这里就有你编译的宏了,名字例如我给你的Static_P
 楼主| 发表于 2011-2-4 06:59:41 | 显示全部楼层
下图所示,上部分曲线我定义为moving wall,以50m每分钟的速度向右移动,左右两端分别是inlet和outlet,下面直线我定义为fix wall固定不动,中间部分均为液体,这样中间的液体会产生压力,我想用去掉负压力,用了你给我建议的宏编译了pdf,因为目前只有定义4个边界条件,我不知道如何激活这个pdf,以实现低于一个大气压的地方置零这个边界条件,我是否要用另外的宏来定义?另外一个朋友让我用DEFINE_ON_DEMAND这个宏,不知道是否可以?
34123213414.jpg
 楼主| 发表于 2011-2-4 07:19:36 | 显示全部楼层
对应上图,下面是对应在moving wall上的total pressure,红圈里即是产生的负压力,这个我必须得去掉置零,否则我后面没法进行压力大小的比较
4324234.jpg
发表于 2011-2-4 08:16:44 | 显示全部楼层
D:\Program Files\Fluent.Inc\fluent6.3.26\help\html\udf\node27.htm

兄弟,你要处理的区域属于流体域内部,不是边界,因此不能使用profile宏,profile宏只能在边界处使用,之前给出profile宏是因为不知道你的的使用范围是在哪儿,只是个示例性给出而已,

有朋友建议使用 DEFINE_ON_DEMAND ,我看了一下,这个的确可以用,参考帮助文件中的例子即可:
D:\Program Files\Fluent.Inc\fluent6.3.26\help\html\udf\node27.htm

这个帮助文件的最下方提示了如何调用这个宏,
Hooking an On-Demand UDF to FLUENT

这个例子里是输出了温度的相关信息,并没有改变流场信息,你修改的时候只需将温度的部分改成自己需要的即可,也不用求平均
C_P(c,t);   /* cell上的压力 */
 楼主| 发表于 2011-2-4 17:55:44 | 显示全部楼层
多谢指导!我再仔细研究一下了
 楼主| 发表于 2011-2-5 08:51:31 | 显示全部楼层
#include <udf.h>

DEFINE_ON_DEMAND(on_demand_calc)
{
        Domain *d; /* declare domain pointer since it is not passed as an argument to the DEFINE macro */
        real press;
        Thread *t;
        cell_t c;
        d = Get_Domain(1);  /* Get the domain using ANSYS FLUENT utility */

        /* Loop over all cell threads in the domain */
        thread_loop_c(t,d)
        {
                /* Compute max pressure */
                /* Loop over all cells*/
                begin_c_loop(c,t)
                {
                        press = C_P(c,t);  /* get cell pressure*/

                        if (press < 1e+05)
                                C_UDMI(c,t,0) = 0;
                        else
                                C_UDMI(c,t,0) = press;

                }
                end_c_loop(c,t)

        }
}

编译和load没问题,但是调用这个宏的时候总是出错,按照帮助文件,应该是 Excute on Demand 然后选中下拉菜单中的udf

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.
Error Object: #f
发表于 2011-2-5 09:04:56 | 显示全部楼层
可否传来你的cas瞧瞧呢
 楼主| 发表于 2011-2-5 09:09:58 | 显示全部楼层
ok,稍等,我马上传
 楼主| 发表于 2011-2-5 09:18:59 | 显示全部楼层
不知道这个是否就是cas文件?

FFF.1-6.cas.gz.zip

2.76 MB, 下载次数: 327

发表于 2011-2-5 12:07:02 | 显示全部楼层
cas 和udf都没有问题,

将问题初始化后,迭代几步就可以调用这个udf了,

显示的时候,udm0已经有所改变,

但是怎么发觉这绝对压力那么低呢,在你的研究范围内可以有绝对负压?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表