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

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

出现的问题

上一次的代码中,将用Newmark-β方法计算下一个时刻的位移和速度的代码放在DEFINE_CG_MOTION宏中,用单核计算时一切正常,但是多核并行计算时,每个时间步该宏被调用了不止一次,因此计算出现了紊乱。为了解决这个问题,将计算下一时刻位移速度的代码部分写到另一个宏DEFINE_EXECUTE_AT_END中,该宏会在每个时间步的最后执行,而DEFINE_CG_MOTION宏只负责将速度传给网格。

改进代码

#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;
static double a[30000];
#define d_t 0.0005

DEFINE_EXECUTE_AT_END(execute_at_end)
{
          
    real m, c, k;    
    real f_glob[ND_ND],m_glob[ND_ND],x_cg[ND_ND];    
    real time = RP_Get_Real("flow-time")
  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 27
    评论
### 回答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. 输出结果:可以选择在每个间步输出一些结果,如位移、速度、加速度等。 需要注意的是,编写Newmark-β法的UDF,要根据具体的程序和软件平台进行适当的调整和修改。还应格外关注算法的收敛性和稳定性,确保模拟结果的准确性和可靠性。 以上是基本的步骤,具体编写UDF的代码可能涉及到软件平台、编程语言的特定语法和函数调用等,具体细节还需要根据实际情况进行调整和实现

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值