宏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_UPDATE(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);

}

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





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





绕流振动UDF【转载】的更多相关文章

  1. ICEM-extrude功能画圆柱绕流网格【转载】

    转载自:http://blog.csdn.net/lgw19910426/article/details/26401517 首先画网格大体顺序为点-->线-->面-->单元体. 第一 ...

  2. OpenFOAM——绕流振动

    流体的物性参数为: 密度:1kg/m3 粘度系数:0.01N·s/m2           首先进行建模操作,任何建模软件均可,本算例在ICEM建模和进行网格划分,生成的网格如下: 接下来转入Open ...

  3. 15第十五章UDF用户自定义函数(转载)

    15第十五章UDF用户自定义函数 待补上 原文链接 本文由豆约翰博客备份专家远程一键发布

  4. 沸腾换热UDF【转载】

    #include "udf.h"    //包括常规宏 #include "sg_mphase.h"    // 包括体积分数宏 CVOF(C,T) #defi ...

  5. 膜态沸腾UDF【转载】

    膜态沸腾的UDF,添加注释.其中获取VOF梯度的方法详见前面的日志,其中很多宏无法通过UDF手册查阅, 蒸汽相中的质量源项的一般形式为: 式中: 通过一阶近似,热流之差可表达为: 式中: 通过此近似, ...

  6. 将HTML5封装成android应用APK文件的几种方法(转载)

    越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...

  7. C#路径/文件/目录/I/O常见操作汇总<转载>

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...

  8. Hive学习笔记【转载】

    本文转载自:http://blog.csdn.net/haojun186/article/details/7977565 1.  HIVE结构 Hive 是建立在 Hadoop 上的数据仓库基础构架. ...

  9. Hive的UDF实现及注意事项

    Hive自身查询语言HQL能完毕大部分的功能,但遇到特殊需求时,须要自己写UDF实现.下面是一个完整的案例. 1.eclipse中编写UDF ①项目中增加hive的lib下的全部jar包和Hadoop ...

随机推荐

  1. python3基础之“函数(1)”

    1.type:查看当前字符串的类型 c=' print(type(c),c) b= int(c) print(type(b),b) num=" a=int(num,base=16) prin ...

  2. oracle rpad()和lpad()函数

    函数参数:rpad( string1, padded_length, [ pad_string ] ) rpad函数从右边对字符串使用指定的字符进行填充 string 表示:被填充的字符串 padde ...

  3. p5.BTC-网络

    Bitcoin工作在应用层,网络层是P2P . Bitcoin网络通信的设计原则是 simple  robust ,but not efficient. 每个节点维护一个邻居节点的集合,消息传播采取 ...

  4. Mysql5.7降级到5.6遇到的坑

    任何版本的升级或降级都存在兼容的问题,DB更为明显,废话不多说,直接进入主题,问题描述如下: Specified key was too long; max key length is 767 byt ...

  5. [nginx] nginx源码分析--SNI性能分析

    概念 我们已经知道什么是SNI,以及如何为用户配置SNI. [nginx] nginx使用SNI功能的方法 问题 通过观察配置文件,可以发现,针对每一个SSL/TLS链接, nginx都会动态的查找( ...

  6. Python_列表操作1

    1.列表相关操作:声明,添加,删除,修改,获取len colors=['红','橙','黄','绿'] #声明一个列表 def colors_getall(): #获取列表中所有元素 return c ...

  7. Pandas进阶笔记 (0)为什么写这个系列

    使用Pandas数年之久了,从最早的0.17版本开始接触Pandas,到现在0.25版本,踩过不少坑,面对各种稀奇古怪的bug抓耳挠腮.每每想要解决bug,或者想要实现一个特定的数据操作需求,首先想到 ...

  8. DNS BIND配置 配置基本缓存服务器 DNS正向解析 DNS反向解析

    一. 缓存服务器配置 1.DNS:BIND    Berkeley Internet Name Domain    版本bind97: RPM服务器端包的名字  安装bind-libs    bind ...

  9. K8S集群证书已过期且etcd和apiserver已不能正常使用下的恢复方案

    在这种比较极端的情况下,要小心翼翼的规划和操作,才不会让集群彻底死翘翘.首先,几个ca根证书是10年期,应该还没有过期.我们可以基于这几个根证书,来重新生成一套可用的各组件认证证书. 前期,先制定以下 ...

  10. linux系统编程之进程(四)

    今天继续研究进程相关的东东,话不多说,进入正题: SIGCHLD: 关于它,之前章节的学习中已经用到了,具体可以参考博文:http://www.cnblogs.com/webor2006/p/3500 ...