24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2158  |  回复: 21

opporoppor

新虫 (初入文坛)

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

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

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的回帖

liukan12

银虫 (小有名气)

如果只要对面遍历的话 把上程序的C改成F  Cell 改成Face
ANSYSFluent流体仿真研究人员。
3楼2015-05-18 18:00:18
已阅   回复此楼   关注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的回帖

opporoppor

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by liukan12 at 2015-05-18 20:09:53
fluent udf 是采用c++编写的
如果是一个整数的话 那么他的绝对是 abs() 长整型式 labs() 双精度数是fabs()
正弦函数是 sin()
所以你的可以是labs(sin(f(x))) f(x)就是你的表达式
自己多试试吧
y>0.5 就 ...

感谢老师的帮助,这个“real x[ND_ND];    /* 存放2D或者3D位置参数 */”,我是3D模型,这个应该怎么写呢?我的模型很简单,就是一个直管,请问这个“模型中y的坐标值”怎么写呢。。。老师,我其实懂的真的不多,我也不好意思一会儿问您一个问题,真的希望您能帮我写一个详细的orz,感激不尽!
6楼2015-05-18 20:40:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liukan12

银虫 (小有名气)

ND 就是No dimension 就是说如果你是2维 你申明的就是一个二维数组 x[0]放的是x坐标 x[1]是y坐标 如果你是3维 那么就是一个三维数组 x[0]放的是x坐标 x[1]是y坐标 x[2]是z坐标
ANSYSFluent流体仿真研究人员。
7楼2015-05-18 21:01:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

opporoppor

新虫 (初入文坛)

老师,帮帮忙吧,给我写一个orz

[ 发自手机版 http://muchong.com/3g ]
8楼2015-05-18 23:42:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

moons2

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★
感谢参与,应助指数 +1
opporoppor: 金币+4, ★★★很有帮助 2015-05-19 18:53:02
#include "udf.h"
#include "math.h"
#define pi 3.14159
DEFINE_PROFILE(inlet_x_velocity, thread, position)
{
   real x[ND_ND];                /* this will hold the position vector */
   real y;
   face_t f;
   begin_f_loop(f, thread)
     {
       F_CENTROID(x,f,thread);
       y = x[0];
       F_PROFILE(f, thread, position) =80.*abs(sin(pi*y/.6));
     }
  end_f_loop(f, thread)
}

不保证对,自己多想多试。
9楼2015-05-19 09:44:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

opporoppor

新虫 (初入文坛)

引用回帖:
9楼: Originally posted by moons2 at 2015-05-19 09:44:46
#include "udf.h"
#include "math.h"
#define pi 3.14159
DEFINE_PROFILE(inlet_x_velocity, thread, position)
{
   real x;                /* this will hold the position vector */ ...

非常感谢老师!请问这个程序对应的我的模型,是不是管道轴向必须是X向呢

[ 发自手机版 http://muchong.com/3g ]
10楼2015-05-19 10:37:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 opporoppor 的主题更新
信息提示
请填处理意见