• 【读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
    

    实际起作用的就这三句

    第一句是如果计算对流传热,就计算对流传热
    第二句是如果任何颗粒计算辐射,就计算颗粒辐射
    第三句是如果计算组分输运,就计算传质(还有传热)

    再深入一点看modeldes xns_gs_des1.f下的
    SUBROUTINE RXNS_GS_DES1
    会发现它不止计算传质,还计算对流传热,反应吸放热等等
    比如会计算DES_HOR_G这个变量,它代表反应吸放热造成的生成焓(_g则代表是气相的)猜测全称是Heat of Reaction_gas

    总结

    改文件主要用于计算颗粒传热传质
    40-66行是该文件的主体

    最核心的部分是

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

    结束

  • 相关阅读:
    第12组 Beta冲刺(2/5)
    第12组 Beta冲刺(1/5)
    第12组 Alpha事后诸葛亮
    第12组 Alpha冲刺(6/6)
    第12组 Alpha冲刺(5/6)
    期末大作业(第十七小组)
    补交:第2次&第5次实践作业
    第6次实践作业 (第17小组)
    第4次实践作业
    第3次实践作业
  • 原文地址:https://www.cnblogs.com/chunleili/p/12758187.html
Copyright © 2020-2023  润新知