Fluent动网格【3】:DEFINE_CG_MOTION宏
除了利用Profile进行运动指定之外,Fluent中还可以使用UDF宏来指定部件的运动。其中用于运动指定的宏主要有三个:
- DEFINE_CG_MOTION
- DEFINE_GEOM
- DEFINE_GRID_MOTION
今天主要看第一个UDF宏DEFINE_CG_MOTION。
用途
DEFINE_CG_MOTION宏主要用于描述刚体的运动。所谓“刚体”,指的是在运动过程中部件几何形状不会发生任何改变,只是其质心位置发生改变。
在定义刚体的运动时,通常以速度方式进行显式定义。
形式
DEFINE_CG_MOTION宏的结构很简单。
DEFINE_CG_MOTION(name,dt,vel,omega,time,dtime)
其中:
name:为宏的名称,可以随意定义
dt:一个指针Dynamic_Thread *dt,存储动网格属性,通常不需要用户干预。
vel:平动速度,为一个数组,其中vel[0]为x方向速度,vel[1]为y方向速度,vel[2]为z方向速度。
omega:转动速度,omega[0]为x方向角速度,omega[1]为y方向角速度,omega[2]为z方向角速度。
time:当前时间。
dtime:时间步长。
DEFINE_CG_MOTION宏实际上是要返回数据vel或omega。__
实例
实例1:利用DEFINE_CG_MOTION宏定义速度:
\]
可以写成:
#include "udf.h"
DEFINE_CG_MOTION(velocity,dt,vel,omega,time,dtime)
{
vel[0] = 2* sin(3*time);
}
很简单,对不对?
再来个复杂点的例子。
实例2:已知作用在部件上的力F,计算部件在力F作用下的运动。
可以采用牛顿第二定律:
\]
则速度可写为:
\]
可写UDF宏为:
/************************************************************
* 1-degree of freedom equation of motion (x-direction)
* compiled UDF
************************************************************/
#include "udf.h"
static real v_prev = 0.0;
static real time_prev = 0.0;
DEFINE_CG_MOTION(piston,dt,vel,omega,time,dtime)
{
Thread *t;
face_t f;
real NV_VEC(A);
real force_x, dv;
/* reset velocities */
NV_S(vel, =, 0.0);
NV_S(omega, =, 0.0);
if (!Data_Valid_P())
return;
/* get the thread pointer for which this motion is defined */
t = DT_THREAD(dt);
/* compute pressure force on body by looping through all faces */
force_x = 0.0;
begin_f_loop(f,t)
{
F_AREA(A,f,t);
force_x += F_P(f,t) * A[0];
}
end_f_loop(f,t)
/* compute change in velocity, dv = F*dt/mass */
dv = dtime * force_x / 50.0;
/* motion UDFs can be called multiple times and should not cause
false velocity updates */
if (time > (time_prev + EPSILON))
{
v_prev += dv;
time_prev = time;
}
Message("time = %f, x_vel = %f, x_force = %f\n", time, v_prev, force_x);
/* set x-component of velocity */
vel[0] = v_prev;
}
Fluent动网格【3】:DEFINE_CG_MOTION宏的更多相关文章
- Fluent动网格【8】:网格节点运动案例
Fluent动网格中的DEFINE_GRID_MOTION宏允许用户定义网格节点的运动.本案例演示采用DEFINE_GRID_MOTION宏指定边界节点的运动. 案例动网格效果如图所示. 案例描述 本 ...
- Fluent动网格【1】:概述
最近总有小伙伴向我询问Fluent中的动网格问题,因此决定做一期关于Fluent动网格技术的内容. 动网格技术在流体仿真中很特殊,应用也很广.生活中能够碰到形形色色的包含有部件运动的问题,比如说我现在 ...
- Fluent动网格【13】:网格光顺总结及实例
光顺(Smoothing)方法是最基本的网格节点更新方法.Fluent提供了三种光顺方法: Spring弹簧光顺 Diffusion扩散光顺 Linearly Elastic Solid光顺 三种方法 ...
- Fluent动网格【4】:DEFINE_CG_MOTION宏实例
DEFINE_CG_MOTION宏通常用于定义刚体部件的运动.本文以一个简单的案例描述DEFINE_CG_MOTION的使用方法. 案例描述 本次计算的案例如图所示.在计算域中有一个刚体块(图中的小正 ...
- Fluent动网格【5】:部件变形
在动网格中关于部件运动除了指定刚体运动外,有时还需要指定某些边界的变形,这种情况经常会遇到,尤其是与运动部件存在相连接边界的情况下,如下图中边界1运动导致与之相连的边界2和边界3发生变形. Fluen ...
- Fluent动网格【9】:区域运动
本文所述的区域运动并非动网格中的运动域,而是指在多参考系(MRF)或滑移网格中所涉及到的区域的运动. 在滑移网格中指定区域运动时,除了能够指定绝对运动外,还能指定某一区域与其他区域间的相对运动,如图所 ...
- Fluent动网格【7】:网格节点运动
在动网格中,对于那些既包含了运动也包含了变形的区域,可以通过UDF来指定区域中每一个节点的位置.这给了用户最大的自由度来指定网格的运动.在其他的动网格技术中(如重叠网格)则很难做到这一点.定义网格节点 ...
- Fluent动网格【2】:Profile文件
动网格中一个重要任务是部件运动方式的指定.在动网格中指定部件的运动,往往将部件的运动方式指定为其加速度.速度或位移与时间的相关关系,本文主要讲述如何在Fluent中利用瞬态Profile文件指定部件的 ...
- Fluent动网格【11】:弹簧光顺
动网格除了前面讲了很多的关于运动指定之外,另一个重要主题则为网格的更新. 在部件运动之后,不可避免的会造成网格形状的变化,如若不对网格加以控制,在持续运动的过程中,则可能造成网格极度变形.歪曲率过大, ...
随机推荐
- hdu 2191 悼念512汶川大地震遇难同胞 【多重背包】(模板题)
题目链接:https://vjudge.net/problem/HDU-2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 ...
- 002.Heartbeat部署及httpd高可用
一 前期准备 1.1 依赖准备 编译安装需要依赖的包,如gcc等: yum -y install gcc gcc-c++ make glibc kernel-devel kernel-headers ...
- Mysql学习(一)添加一个新的用户并用golang操作Mysql
Mysql添加一个新的用户并赋予权限 添加一个自己的用户到mysql 首先我们需要先用root用户登录mysql,但是刚安装完没有密码,我们先跳过密码 ailumiyana@ailumiyana:~/ ...
- i春秋 “百度杯”CTF比赛 十月场 web题 Backdoor
0x00: 打开题目,题目中告诉我们这题是文件泄露. 0x01: 通过扫描目录,发现可以扫到的有3个文件 index.php flag.php robots.txt 但是浏览flag.php它告诉我们 ...
- vue-particles粒子动画效果
1.安装vue-particles依赖包 npm install vue-particles --save-dev 2.在main.js文件中引入并使用 import Vue from 'vue' i ...
- SQL Server 限定删除一行
with t as ( )* from testtest where aa='aa' order by bb ) delete from t
- spark加载模型与gRPC与JSF与JDQ冲突
spark与JSF冲突解决方式 <dependency> <groupId>org.apache.spark</groupId> <artifactId> ...
- 2331: [SCOI2011]地板 插头DP
国际惯例的题面:十分显然的插头DP.由于R*C<=100,所以min(R,C)<=10,然后就可以愉悦地状压啦.我们用三进制状压,0表示没有插头,1表示有一个必须延伸至少一格且拐弯的插头, ...
- NullPointerExceptio异常出现的情况
NullPointerException是java.lang.NullPointerException的简称,是Java语言中的一个异常类,位于java.lang包中,父类是java.lang.Run ...
- 20172302 《Java软件结构与数据结构》实验二:树实验报告
课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月5日 必修/选修: 必修 实验内容 (1)参 ...