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

智能推荐

中国剩余定理_zyang008的博客-程序员秘密

中国剩余定理”算理及其应用:  为什么这样解呢?因为70是5和7的公倍数,且除以3余1。21是3和7的公倍数,且除以5余1。15是3和5的公倍数,且除以7余1。(任何一个一次同余式组,只要根据这个规律求出那几个关键数字,那么这个一次同余式组就不难解出了。)把70、21、15这三个数分别乘以它们的余数,再把三个积加起来是233,符合题意,但不是最小,而105又是3、5、7的最小公倍数,去掉105的倍数,剩下的差就是最小的一个答案。用歌诀解题容易记忆,但有它的局限性,只能限于用3、5、7三个数去除,用其它的数去

centos系统slurm安装_centos安装slurm_ME_Seraph的博客-程序员秘密

文|MESeraph01 | 预先操作关闭Centos界面登录。(仅适用于Centos7以上版本)systemctl get-defaultsystemctl set-default multi-user.target联网(1) 首先查看网卡ls /etc/sysconfig/network-scripts(2) 编辑vi /etc/sysconfig/network-scripts/ifcfg-ensXXXX #我的是ens33修改该文件中配置:ONBOOT=yes(

ubuntu下安装codeblocks_codeblocks ubuntu下载_JUSTINE1115的博客-程序员秘密

codeblocks是一个十分优秀的C/C++开发IDE,虽然后起之秀codelite目前来看大有超越之势哦。 不过在ubuntu下安装codeblocks却比较麻烦,不像其他linux发行版,比如suse,debian和fedora等在官网上有现成的bin文件可以直接下载安装。下面简单介绍下如何在ubuntu下快速安装最新的codeblocks:1.加入官方ppa源:sudo

基于MATLAB的图像融合设计_MATLAB管家的博客-程序员秘密

基于MATLAB的图像融合设计摘 要图像融合能够将不同类型传感器获取的同一对象的图像数据进行空间配准。并且采用一定的算法将不同类型的传感器获取的同一对象的图像数据所含用的信息优势或互补性有机地结合起来产生的新的图像数据。这种新数据含有所研究对象的更多信息表征,与单一图像相对比,能够减少或抑制所研究对象可能存在的多义性、不确定性和误差,最大限度地利用同一对象的多种图像数据的信息。论文中主要内容是;...

随便推点

oracle 12c新功能_mysql-龙召的博客-程序员秘密

1 oracle multitenant optionPDB(插入式数据库) CDB(容器数据库,负责管理和运行PDB)2 resource manager resource manager现在在以在CDB和PDB级别下进行管理资源,可以创建一个CDB resource plan是分配给了整个CDB或者个体的PDB,3 full transportable exp/impf

TensorFlow cifar 卷积网络_阿豪boy的博客-程序员秘密

原文链接: TensorFlow cifar 卷积网络 ...

duplicate column name '字段名'_AinUser的博客-程序员秘密

这个问题的原因,字段重复好好查看一下你的select 字段

数学基础:高斯分布_高斯分布的后验分布_满腹的小不甘_静静的博客-程序员秘密

1. 最大似然估计(MLE) 概念:给定一堆数据,假如我们知道它是从某一种分布中随机取出来的,可是我们并不知道这个分布具体的参数,即“模型已定,参数未知”。例如,已知分布是正态分布,但是不知道均值和方差;或者已知是二项分布,但是不知道均值。 最大似然估计(MLE,Maximum Likelihood Estimation)就可以用来估计模型的参数。 MLE的目标是找出...

es对已有的索引给主键_es5.3【7】获取es索引结构、根据id获取并修改数据_weixin_39613824的博客-程序员秘密

1.根据id获取一条数据2.获取es索引结构3.修改数据package com.yb.es;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.action.update.UpdateRequestBuilder;import org.elasticsearch.client.Client;import ...

为了不当接盘侠,这位程序员做了一个识别“特殊”职业女性的系统_weixin_34375233的博客-程序员秘密

去年八月,微博上一位叫“将记忆深埋”的用户发微博称,为了帮助广大老实人程序员们免做接盘侠之苦,将开发一个系统,抓取在各个黄色网站中出现过的女性面孔,帮老实人们进行一个初筛。直到前两天,博主更新近况,称“半年时间,100多TB数据”,利用各个网站资源,“对比Facebook、Instagram、TikTok、抖音、微博等社交媒体”,已经“在全球范围内成功识别了10万多从事不可描述行业的小姐姐”。...

推荐文章

热门文章

相关标签