【读MFiX源代码】番外:calc_thermo_des.f

概述

该文件定义了一个模块MODULE CALC_THERMO_DES_MOD
这个模块的内部只有一个子程序
SUBROUTINE CALC_THERMO_DES

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.
  1. 这个子程序是被DES程序所调用的
  2. 用来计算传热传质

主体内容(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

又可以分为三部分,是这个程序的主体

  1. 第一个IF语句:如果即没有打开能量方程,又没有使用组分输运方程,直接结束程序
  2. 第二个FORALL语句:对所有颗粒计算Cp,并赋给DES_C_PS(NP)这个变量
  3. 一个稍微复杂一点的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行是该文件的主体

最核心的部分是

  1. 先计算DES_C_PS(NP),就是该颗粒在当前时刻的Cp
  2. 再用三条调用子程序的语句,分别计算对流传热,颗粒辐射,反应相关的传热传质

结束

posted @ 2020-04-20 17:18  北斗123  阅读(258)  评论(0编辑  收藏  举报