参考之前Yin的那一篇博客
https://www.cnblogs.com/Jay-CFD/p/10621274.html
输出一下颗粒传热量
使用的算例是fluid_bed_dem_2d
1. 打开des scalar tracking
前面都和Yin那篇一样,打开enable user scalar tracking
输入2
因为第一个用来测试Y加速度了
第二个输出传热量
然后在output vtk中勾选好
2. 更改源代码
源代码为des_thermo_newvalues.f
在mfix-GUI自带的editor里搜索
然后copy到自己的文件夹中
添加如下代码
先在导入模块处导入des_usr_var变量
然后在Q_source(: ) 也就是颗粒传热量清零之前复制到des_usr_var中
这里可以看出来,这个变量是每个时间步都清零的,所以必须在这里输出,要不然只能得到零。
3. 编译运行
结果如下,可以看到传热过程了
2020-8-24补充1:存储反应热的数组
反应热的变量是RXNS_Qs,同样由moduel des_thermo声明。Q_source应该是所有热源项的总和,包括反应热。
2020-8-24补充2:MFiX-PIC中使用des_usr_var
经过调试发现MFiX-PIC其实也可以用des_usr_var这个变量,只不过目前GUI不支持。
要点就在于:
必须手动在.mfx中给定关键字
注意:一定不要在更改完.mfx之后在GUI中点击保存!!!否则将会把添加的代码自动删掉!(试了一个上午才发现是这里的问题)
步骤如下:
在你的.mfx 中“### UDF control”的后边添加如下行
des_usr_var_size = 2
vtk_part_usr_var(1,1) = .True.
vtk_part_usr_var(1,2) = .True.
然后和前面一样,在des_thermo_newvalues.f添加如下代码
编译运行即可
补充3 输出对流传热和化学反应传热的方法 2020-9-4
注意:与上面不同,这里编号1的数组给了q_source
des_usr_var(2,:)给对流传热
3给反应热
在calc_thermo_des.f中添加
IMPLICIT NONE之前添加
!#########
USE discretelement, only:des_usr_var`
END SUBROUTINE CALC_THERMO_DES之前添加
!########
des_usr_var(2,:)=CONV_Qs
des_usr_var(3,:)=RXNS_Qs
在.mfx文件中添加
在### UDF control之后添加
des_usr_var_size = 3
vtk_part_usr_var(1,1) = .True.
vtk_part_usr_var(1,2) = .True.
vtk_part_usr_var(1,3) = .True.
补充
2020-11-27
补充1: des_usr_var后处理的调用位置
write_des_data.f 156行
和vtp_mod.f 657行
补充2 更改des_usr_var的变量名(在paraview中的显示)
通常来说,des_usr_var变量的命名为User_Defined_Var_数字
这样看来很不直观。
可以在vtp_mod.f中给它们起个新名字
首先看看原名字在哪来的?
通过查找User_Defined_Var这个关键词发现
vtp_mod.f 657行
我们测试一下更改这里是否会显示新名字:
在原有基础上增加一个my
编译运行后,后处理中可以看到
看来确实是在这里改的名字
于是就在它的下面增加一行
这里再重新输出一次des_usr_var(1,:), 并把它命名为p_HT_all
意思是颗粒上的全部传热量
编译运行后处理看到
同时原有的User_Defined_Var_my1也还在,这里只是改了个名字重复输出了一下
我们比较一下数值
可以看到完全一致