首页 > 其他 > 详细

mfix中DEM模型添加颗粒变量并输出1

时间:2021-04-01 00:57:16      阅读:16      评论:0      收藏:0      [点我收藏+]

本内容采用直接修改源码而非使用给定接口usr.f的方式进行,基于mfxi-20.3.1

省略了许多的调用关系,展示直接修改的部分

这里示例的输出数据为颗粒流化过程中受到的碰撞力、曳力、压力梯度力等,(如果想添加标量数据,可以参照des_radius)

 

首先了解颗粒变量相关文件:

颗粒很多全局变量的定义声明文件:discretelement_mod.f

颗粒相关数组分配内存: des_allocate_mod.f

颗粒数据初始化文件:des_init_arrays.f

包含DEM各种功能函数的文件:des_functions.f

流体和颗粒两相的相关数据分配和销毁内存:allocate_arrays.f

颗粒数据输出文件:vtp_mod.f

 DEM模型的主要时间驱动程序为des_time_march.f,这里关注其子程序DES_TIME_STEP,单个时间步长内的颗粒数据计算

 

1.在discretelement_mod.f中定义保存颗粒数据的全局变量,可以仿照颗粒总受力FC的形式(如果想添加标量数据,可以参照des_radius)

技术分享图片

 

 2.在des_allocate_mod.f中为其分配和调整内存,同样是仿照颗粒总受力FC的形式(如果想添加标量数据,可以参照des_radius)

技术分享图片

增大分配的内存

 技术分享图片

 这里需要注意real_grow对应一维数组增长为new_size长度,real_grow2_reverse为二维数组的第一维度增长为new_size长度,real_grow2为二维数组的第二维度增长为new_size长度

 

3.des_init_arrays.f初始化为零

 技术分享图片

 

 4.考虑之后的销毁,allocate_arrays.f,同样是仿照颗粒总受力FC的形式

技术分享图片

 

 

5.由DES_TIME_STEP,计算颗粒受力FC,颗粒受力中先计算碰撞力,调用程序为calc_force_dem.f中的CALC_FORCE_DEM

紧跟cohesive force的初始化为0,添加碰撞力初始为0

技术分享图片

 

 将计算的碰撞力保存到数组中

技术分享图片

 

 这里需要将颗粒LL及其neighbor颗粒I的碰撞力都保存,否则会漏掉输出,因为一对neighbor不会重复计算,也就是两个颗粒的碰撞只计算一次,参考https://www.cnblogs.com/Jay-CFD/p/11934451.html

6. 计算颗粒间的碰撞力后是颗粒受到的曳力,DES_TIME_STEP调用calc_drag_des.f 文件子程序 CALC_DRAG_DES,该子程序可以计算气固曳力和固固曳力

气固曳力默认情况调用drag_gs_des1.f,该文件调用drag_gp_des.f 文件的des_drag_gp子程序,该子程序调用drag_gs.f中的子程序,求得设定曳力模型的该颗粒曳力系数F_GP。再计算曳力D_FORCE,同时也求得压力梯度力,将曳力和压力梯度力加入FC,得到新的FC;而在非默认的插值情况下(非默认只有DES_INTERP_GARG插值方式),也是调用des_gs_des0.f文件,求得曳力系数F_GP。

这里调用drag_gs_des1.f中的DRAG_GS_DES1进行曳力计算,且des_explicitly_coupled = False

在程序开头初始化

技术分享图片

 

 

这里保存计算的颗粒曳力,同时保存A类模型下的压力梯度力

技术分享图片

 

 7. 将颗粒的受力输出  vtp_mod.f,输出为vtk格式文件,可有paraview打开

先在开头添加

技术分享图片

 

 使添加的数据可被找到

而后将这些数据绑定到Orientation进行输出,这样在用户输入文件中指定颗粒的Orientation输出,就会一起输出当然也可以不与Orientation绑定在一起

技术分享图片

 

 

这样就可以输出一些比较基础的颗粒数据

 

 

 

mfix中DEM模型添加颗粒变量并输出1

原文:https://www.cnblogs.com/clwang/p/14603835.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!