Fluent UDF 实现用Newmark-β方法计算圆柱绕流流固耦合时的位移振动响应

Fluent UDF 实现用Newmark-β方法计算圆柱绕流流固耦合时的位移振动响应

问题描述

拟用Fluent模拟圆柱振子在不同流速的风作用下的横向振动。采用二维模型,用UDF和动网格实现流固耦合。
一开始用的是SDOF宏,即只给圆柱一个垂直流速的平动自由度,再给圆柱加上弹簧回复力项和阻尼项,但是不知道是什么原因,位移一直算不准,而尝试自由落体运动又是能算准的,可能是Fluent软件自带的计算位移的方法不适合计算这种振动问题吧。于是编写了这个UDF载入Fluent,通过调节γ和β基本能得到结果。

代码

// cylinder.c
#include "udf.h"
static real x_prev=0;
static real x_cur=0;
static real v_prev=0;
static real v_cur=0;
static real a_prev=0;
static real a_cur=0;

DEFINE_CG_MOTION(cylinder,dt,vel,omega,time,dtime)
{
   
    real f_glob[ND_ND],m_glob[ND_ND],x_cg[ND_ND];
    real lift, m, c, k;
    NV_S(vel, =, 0.0);
    
  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
### 回答1: 编写Newmark的步骤如下: 1. 定义间步长Δt; 2. 计算新的位置和速度; 3. 计算新的加速度; 4. 计算新的力; 5. 计算新的动能; 6. 计算新的动量; 7. 根据新的动量和动能,更新位置和速度; 8. 重复步骤2-7,直到模拟结束。 ### 回答2: 在编写UDF实现Newmark,需要进行以下步骤: 1. 首先,要理解Newmark的原理和公式。Newmark是一种常用的求解动力学问题的数值计算方法,用于模拟物体的动态响应。它基于物体的加速度和速度进行迭代计算,具体公式可以在相关的力学或动力学教材中找到。 2. 确定UDF中的输入参数和输出结果。在编写UDF之前,需要确定需要的输入参数,例如间步长、质量矩阵、刚度矩阵、外力等;同也需要确定输出结果,例如位移、速度、加速度等。 3. 定义UDF函数。在Fluent中,可以使用DEFINE_CG_MOTION宏定义UDF函数。在函数中,可以使用相关的Fluent宏(例如C_NODE、C_U、C_V等)获取节点信息,以及使用相关的Fluent函数(例如CURRENT_TIME)获取当前间。 4. 实现Newmark中的迭代计算步骤。首先,读取当前间、位移、速度和加速度的值。然后使用Newmark的迭代公式进行计算。具体的迭代公式可以在相关的力学或动力学教材中找到。在每次迭代中,需要根据当前间、位移、速度和加速度的值更新它们的值。最后,将更新后的位移、速度和加速度的值写入Fluent中。 5. 完善UDF函数。在函数的其余部分,可以实现其他所需的功能,例如设置输出文件、终止条件等。 6. 编译和加载UDF。完成UDF代码编写后,需要在Fluent中编译并加载UDF。在Fluent界面中选择相应的选项,可以将UDF编译为动态链接库,并加载到Fluent中。 7. 在Fluent中设置求解。在Fluent的求解器设置中,选择使用UDF定义的Newmark进行求解。根据具体问题的要求,设置合适的间步长和求解终止条件。 需要注意的是,编写UDF需要充分了解Newmark的原理和公式,并掌握Fluent中的UDF编写技巧。此外,由于UDF的复杂性和特殊性,需要一定的编程和数学基础。建议在编写UDF之前,先阅读相关的Fluent和动力学书籍,以便更好地理解和实现Newmark。 ### 回答3: 在UDF中编写Newmark,首先需要了解Newmark的基本原理和公式。Newmark是一种常用于求解结构动力学问题的数值方法,可以用于模拟非线性、非弹性结构的动力响应。 在编写UDF,需要先确定要模拟的结构动力学问题的初始条件、边界条件和加载条件。然后,可以根据Newmark的公式来编写代码。 具体步骤如下: 1. 定义初始条件和边界条件:包括结构的初始位移、速度和加速度,以及边界条件,如支座的限制。 2. 定义加载条件:即结构受到的外部荷载或激励。 3. 初始化变量:设置间步长、间步数和其他必要的变量。 4. 循环计算每个间步的结构响应:根据Newmark的公式,计算每个间步的位移、速度和加速度。 5. 更新边界条件:如果结构的边界条件随间变化,则在每个间步更新边界条件。 6. 输出结果:可以选择在每个间步输出一些结果,如位移、速度、加速度等。 需要注意的是,编写NewmarkUDF,要根据具体的程序和软件平台进行适当的调整和修改。还应格外关注算的收敛性和稳定性,确保模拟结果的准确性和可靠性。 以上是基本的步骤,具体编写UDF的代码可能涉及到软件平台、编程语言的特定语和函数调用等,具体细节还需要根据实际情况进行调整和实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值