概述
该文件定义了一个模块MODULE CALC_THERMO_DES_MOD
这个模块的内部只有一个子程序
SUBROUTINE CALC_THERMO_DES
先看下注释
! Module name: CALC_THERMO_DES !
! !
! Purpose: This subroutine is called from DES routines. It calls !
! functions that calculate heat and mass transfer.
- 这个子程序是被DES程序所调用的
- 用来计算传热传质
主体内容(36-66行)
INTEGER :: NP
这是唯一定义的局部变量
不用说,肯定是颗粒的编号
往下,从40行-66行是主要部分
! This is a quick work-around to keep the thermo routines from causes
! issues while the "check_data" routines are rewritten. Moving forward
! this routine should be split apart to avoid the particle loops for
! cold-flow, non-reacting cases.
IF(.NOT.ENERGY_EQ .AND. .NOT.ANY_SPECIES_EQ) RETURN
! Calculate time dependent physical properties
FORALL(NP=1:MAX_PIP, PARTICLE_STATE(NP)==NORMAL_PARTICLE) &
DES_C_PS(NP) = CALC_CP_DES(NP)
IF(DES_EXPLICITLY_COUPLED) THEN
! Apply the convective heat transfer calculated by the gas phase.
IF(CALC_CONV_DES) THEN
WHERE(PARTICLE_STATE == NORMAL_PARTICLE) &
Q_Source = Q_Source + CONV_Qs
ENDIF
IF(ANY_SPECIES_EQ) THEN
WHERE(PARTICLE_STATE == NORMAL_PARTICLE) &
Q_Source = Q_Source + RXNS_Qs
ENDIF
ELSE
IF(CALC_CONV_DES)CALL CONV_GS_DES1
IF(any(CALC_RADT_DES)) CALL DES_RADIATION
IF(ANY_SPECIES_EQ) CALL RXNS_GS_DES1
ENDIF
END SUBROUTINE CALC_THERMO_DES
又可以分为三部分,是这个程序的主体
- 第一个IF语句:如果即没有打开能量方程,又没有使用组分输运方程,直接结束程序
- 第二个FORALL语句:对所有颗粒计算Cp,并赋给DES_C_PS(NP)这个变量
- 一个稍微复杂一点的IF ELSE语句
第三部分那个IF ELSE再展开地说一下
首先看一下DES_EXPLICITLY_COUPLED这个布尔变量的含义
大致就是用于减少流固耦合时的计算量的。目前只能用于冷态流动。所以忽略。必然是FALSE
跳到ELSE语句处
IF(CALC_CONV_DES)CALL CONV_GS_DES1
IF(any(CALC_RADT_DES)) CALL DES_RADIATION
IF(ANY_SPECIES_EQ) CALL RXNS_GS_DES1
实际起作用的就这三句
第一句是如果计算对流传热,就计算对流传热
第二句是如果任何颗粒计算辐射,就计算颗粒辐射
第三句是如果计算组分输运,就计算传质(还有传热)
再深入一点看model\des\rxns_gs_des1.f下的
SUBROUTINE RXNS_GS_DES1
会发现它不止计算传质,还计算对流传热,反应吸放热等等
比如会计算DES_HOR_G这个变量,它代表反应吸放热造成的生成焓(_g则代表是气相的)猜测全称是Heat of Reaction_gas
总结
改文件主要用于计算颗粒传热传质
40-66行是该文件的主体
最核心的部分是
- 先计算DES_C_PS(NP),就是该颗粒在当前时刻的Cp
- 再用三条调用子程序的语句,分别计算对流传热,颗粒辐射,反应相关的传热传质
结束
补充2020-9-4
很疑惑为什么没有导热,明明源代码和Musser的论文里面都写了 颗粒颗粒导热,但是实际上却没有调用des_conduction
待解决