24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2160  |  回复: 21
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

opporoppor

新虫 (初入文坛)

[求助] 一个入口速度函数的UDF编程,新手实在无力,望大神不吝赐教!已有2人参与

入口速度是V=80*丨sin((pi*x)/0.6)丨,       “丨”表示绝对值,“pi”表示圆周率。
fluent新手,对宏命令知之甚少,希望大神能帮我编写一个函数。深表感激!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liukan12

银虫 (小有名气)

如果只要对面遍历的话 把上程序的C改成F  Cell 改成Face
ANSYSFluent流体仿真研究人员。
3楼2015-05-18 18:00:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 22 个回答

liukan12

银虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
#include "udf.h"
DEFINE_PROFILE(velocity1,t,i)  /* 定义属性宏 三个参数 第一是名称 第二个是线程指针 第三个是变量标号 */
{
    real x[ND_ND];    /* 存放2D或者3D位置参数 */
    real y;          /* y值为模型中的y坐标值 */
    cell_t f;        /* 创建网格体指针 */
    begin_c_loop(f,t)  /* 体线程t中所有网格体指针f的遍历循环 */
      {
       C_CENTROID(x,f,t);  /* 把体线程t中所有指针f中的网格体的中心点的坐标值赋给数组x[ND_ND] */
       y = x[1];          /* 把x[ND_ND]中的第二个元素集合赋给变量y */
       if ( y > 0.5 )      /* 条件判断,当y值大于0.5时,执行下列语句 */
           {
                   C_PROFILE(f, t, i) = y^2;   /* y^2是表示入口速度等于y坐标值的平方,这里可以改成你要的关系式 */
       }
       else                              /* 条件判断 */
           {
                   C_PROFILE(f, t, i) = 1;      /* 条件判断,当y值小于0.5时,执行语句 */
       }
          
      }
    end_c_loop(f,t)          /* 遍历循环结束 */
}
最后要解释方法导入到fluent里 再在速度入口条件下导入
ANSYSFluent流体仿真研究人员。
2楼2015-05-18 17:59:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

opporoppor

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by liukan12 at 2015-05-18 18:00:18
如果只要对面遍历的话 把上程序的C改成F  Cell 改成Face

老师您好,我这个是3D建模分析,您发的程序里面的解释语句,我只能理解一小部分,比如“/* 条件判断,当y值大于0.5时,执行下列语句 */”我就理解不了,另外一个,这个程序涉及绝对值和sin()函数,我不会呀。恳请老师能辛苦一下,帮我编一个不需要改的函数,需要什么参数,您说。
我的金币都可以给您!orz
4楼2015-05-18 19:28:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liukan12

银虫 (小有名气)

【答案】应助回帖

fluent udf 是采用c++编写的
如果是一个整数的话 那么他的绝对是 abs() 长整型式 labs() 双精度数是fabs()
正弦函数是 sin()
所以你的可以是labs(sin(f(x))) f(x)就是你的表达式
自己多试试吧
y>0.5 就是当y轴坐标大于0.5时 让你的速度等于那个等式
y<0.5 执行另外一个表达式 就是分段函数 你这里是单一区间 不用这个条件判断 直接写就行了
ANSYSFluent流体仿真研究人员。
5楼2015-05-18 20:09:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见