声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2380|回复: 2

[UDF专题] 绕流振动UDF【转载】

[复制链接]
发表于 2016-3-8 13:33 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有账号?我要加入

x
宏DEFINE_GRID_MOTION用来移动任意边界和流体区域内的网格节点。它提供了对节点和网格最大限度的操作,可以将刚体运动、变形和相对运动等结合起来。但是使用此UDF时,每一个时间步都必须执行。
DEFINE_GRID_MOTION限制:
1.  给定节点的运动是基于绝对坐标的,不可基于相对坐标的。
2.  给定节点的新位置是基于该节点上一个时间步的位置,而不是该节点的初始(t=0)位置
3.  宏DEFINE_GRID_MOTION中没有用户定义的节点位置内存记忆
4.  当使用宏DEFINE_GRID_MOTION时,节点移动的区域的连接关系不能改变。

摘自《ANSYS FLUENT技术基础与工程应用:流动传热与环境污染控制领域》,源代码有误,对原UDF进行了修正,添加注释
圆管在垂直流动方向上的振动方程如下:

式中,A表示振动圆柱的振幅,ω表示振动角频率,f表示振动频率。作为示例,在本例中,设A=4mm,f=25Hz
#include"udf.h"
#include"math.h"
#define omeg 50*3.14159265358979323846
#define A 0.004    //振幅

DEFINE_GRID_MOTION(mc,domain,dt,time,dtime)
{
    Thread* tf=DT_THREAD(dt);     //DT_THREAD 就是获取网格运动所在的 thread 指针
    face_t f;
    Node* v;    //指向网格节点的指针
    int n;
   
    SET_DEFORMING_THREAD_FLAG(THREAD_T0(tf));
   
    Message("\nprevious time=%.5f\t current time=%.5f\n",PREVIOUS_TIME,CURRENT_TIME);   
   
    Message("time=%.5f\t dtime=%.5f\t n=%d",time,dtime,N_TIME);
   
    begin_f_loop(f,tf)
    {
        
        f_node_loop(f,tf,n)
        {
            
            v=F_NODE(f,tf,n);
            
            if(NODE_POS_NEED_UPDATED(v))        //在UDF手册当中没有查询到NODE_POS_NEED_UPDATED和NODE_POS_UPDATED宏
            {
               
                NODE_POS_UPDATED(v);
      NV_D(NODE_COORD(v),=,NODE_X(v),NODE_Y(v)+A*sin(omeg*(N_TIME+1)*CURRENT_TIMESTEP)-A*sin(omeg*N_TIME*CURRENT_TIMESTEP),NODE_Z(v));   
            }
        }
    }
    end_f_loop(f,tf);
}
二维算例(点击图片查看动态图):
11.gif



三维算例(点击图片查看动态图)

22.gif


33.gif



回复
分享到:

使用道具 举报

发表于 2016-10-4 22:30 | 显示全部楼层
 楼主| 发表于 2016-10-8 08:50 | 显示全部楼层
这个帅啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 12:35 , Processed in 0.062687 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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