Fluent动网格【3】:DEFINE_CG_MOTION宏_Charles_Li2014的博客-程序员秘密

除了利用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宏定义速度:
\[ u_x = 2 sin(3t) \]
可以写成:

#include "udf.h"
DEFINE_CG_MOTION(velocity,dt,vel,omega,time,dtime)
{
  vel[0] = 2* sin(3*time); 
}

很简单,对不对?

再来个复杂点的例子。

实例2:已知作用在部件上的力F,计算部件在力F作用下的运动。

可以采用牛顿第二定律:
\[ \int_{t_0}^{t}{dv}=\int_{t_0}^{t}{(F/m)}dt \]

则速度可写为:
\[ v_t = v_{t-\Delta t}+(F/m)\Delta t \]

可写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;
}

转载于:https://www.cnblogs.com/LSCAX/p/7011242.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Charles_Li2014/article/details/101204923

智能推荐

K-Means:隐变量、聚类、EM_anarion的博客-程序员秘密

K-Means:从隐变量到聚类本文「最终」介绍著名的KMeans算法,在此之前,先作一系列铺垫。只知道KMeans算法本身远远不够,且算法十分简单,并不值得花一整篇博客讲解。知其然且知其所以然,非常重要。故本文从含有隐变量的概率模型开始讲起,介绍清楚最一般的情况。最后KMeans算法的出现就显得十分简单,几乎不值一提。阅读本文,你不但将知道KMeans算法的来龙去脉,还将对贝叶斯统计和隐变量模型有更深的理解。如果你只想了解KMeans算法,一点数学推理都不想看,可以直接跳到文章的最后一个h1标题下的第

正则表达式入门_l4kangaxx的博客-程序员秘密

本文转载自:点击打开链接

小刘总——王者荣耀抽荣耀水晶玄学_Zain Lau的博客-程序员秘密

转眼间打王者四年多了,也上了三赛季王者,各种模式都打烂了,但惟有一个领域没有触及,就是荣耀水晶,我向来不屑于抽奖,虽然贵族等级马上v7了,但是基本从来没有用点券买积分去抽水晶,只是靠着那些充值赠送和战令赠送的抽奖劵和积分,把荣耀水晶幸运值抽到了180,现在唯一的缺憾就是嬴政和武则天了,下次嬴政上架水晶商店之日,就是我抽武则天之时。研究抽奖的技巧也很长一段时间了,之前也看过很多淘宝、pdd的秘籍,大部分都是收智商税,淘宝代抽又没有亲身体验的刺激感,一直看虎牙逸轩抽奖的直播,慢慢发现他也开始搞一些花里胡哨的,

Google Chrome can not be run as root 解决办法_panbin0054的博客-程序员秘密

系统环境:Fedora13问题描述:原本在panbin这个用户登录的情况下安装的chrome,在panbin这个用户登录的时候可以正常使用。当使用root用户登录,打开chrome时提示以下错误:Google Chrome can not be run as root.Please start Google Chrome as a normal user. To run a

Android 依赖报错Version 28 (intended for Android Pie and below) is the last version of the legacy_xk_一步一步来的博客-程序员秘密

Version 28 (intended for Android Pie and below) is the last version of the legacy support library, so we recommend that you migrate to AndroidX libraries when using Android Q and moving forward. The I...

关于Android最佳性能实践——分析内存的使用情况学习笔记_tanghua0809的博客-程序员秘密

本文主要是针对看郭神的关于最佳性能实践——分析内存的使用情况方面的知识做的笔记,今后编程时可以借鉴。参考文章:http://blog.csdn.net/guolin_blog/article/details/422386331.查手机的堆大小是多少,可以调用如下代码:ActivityManager manager = (ActivityManager)getSystemSe

随便推点

如何有效的编写软件测试用例_windows下软件测试用例怎么写_ningmengban的博客-程序员秘密

一、编写测试用例的原则测试用例编写应该遵循的原则:1、测试用例要达到最大覆盖软件系统的功能点。测试工程师应该测试计划编写完成之后,在开发阶段编写测试用例,参考需求规格说明书和软件功能点对每个功能点进行操作上的细化,尽可能趋向最大需求覆盖率。2、测试用例对测试功能点、测试条件、测试步骤、输入值和预期结果应该有准确的定义。3、 测试用例的设计应包括各种类型的测试用例。在设计测试...

LeetCode 171. Excel 表列序号__almost__的博客-程序员秘密

难度:简单。标签:数学,字符串。正确解法:class Solution {public: int titleToNumber(string columnTitle) { int n = columnTitle.length(); int ans = 0; int last = 1; for(int i = n - 1; i >= 0; --i){ ans += last * (int)(column

iOS 大文件下载、断点续传、后台下载 —— HERO博客_nixs_0702的博客-程序员秘密

本篇简述一下实现文件下载功能,包含大文件下载,后台下载,杀死进程,重新启动时继续下载,设置下载并发数,监听网络改变等,并在最后附有Demo。下载功能的实现:使用的网络连接的类为NSURLSession。该类用以替代NSURLConnection,在iOS7时推出,至此iOS系统才有了后台传输。在初始化NSURLSession前,需要先创建NSURLSessionConfiguration,可以理解为是NSURLSession需要的一个配置。NSURLSessionConfiguration有三.

反应式编程见解_心飞扬向何方的博客-程序员秘密

多线程正常来说,由一个线程串行执行的程序,可以通过多线程的方式进行拆解其中单线程程序可以分为两种:IO密集型计算密集型我们使用多线程编程,主要是为了充分发挥当前多核PCU的计算能力,使并发变为并行。在程序间没有相互依赖关系的情况下,会极大提高程序的执行效率。并且会随着CPU核心的提升,理论上效率会越来越高。但现实情况并非理想,很多程序中的步骤都是相互依赖的,即A依赖B,B依赖C,C依赖D。需要考虑 一致性成本的话,并发执行的效率会大大折扣,会随着CPU核数的提升而降低。反应式编程反应式

uc browser mini java_迷你UC:UC Browser Mini_weixin_39543652的博客-程序员秘密

权限信息· 与蓝牙设备配对· 访问蓝牙设置· 修改系统设置· 大致位置(基于网络)· 精确位置(基于GPS和网络)· 完全的网络访问权限· 查看网络连接· 读取手机状态和身份· 拍摄照片和视频· 读取您的USB存储设备中的内容· 修改或删除您的USB存储设备中的内容· 控制振动· 防止手机休眠· 让应用始终运行· 查看WLAN连接· 连接WLAN网络和断开连接· 查阅敏感日志数据· com.and...

esp8266学习笔记(5)——连接wifi、AP、UDP通信_wifi_station_connect_chenjiawei8的博客-程序员秘密

终于开始接触网络了,基础不行,这个摸索了有点久,还好网上资料多,有些细节还是没有怎么吃透。哈哈,开始联网了。ESP8266有三种模式:station模式:0x01soft-AP模式:0x02soft-AP&station模式:0x03简单的介绍一下这三个模式:station模式只能连接其他的路由器,不能被其他设备连接(自己可以连别人,别人不能连自己,简称‘攻’)sof...

推荐文章

热门文章

相关标签