【读MFiX源代码笔记】1程序入口mfix.f文件

2020/4/11 第一天

本文以19.3.1版本为例

主要的源代码都在mfix的源代码文件夹(一般在anaconda安装位置的envs文件夹下能找到)下的model文件夹

我的mfix安装在D:AppAnaconda3envs

程序的入口是mfix.f

找到PROGRAM MFIX
这就是程序的入口
END PROGRAM就是程序的终点

在这个源代码里,定义了多个subroutine,有的与并行有关,有的与C++接口有关,其中最主要的就是run_mfix这个subroutine.

我们忽略一切并行,C++等相关的代码,只看最关键的部分

PROGRAM MFIX 做了三件事

  1. CHARACTER(LEN=1000) :: MFIX_DAT_FILENAME = “mfix.dat” 读入dat文件的名字
  2. MFIX_DAT_SIZE = FILE_SIZE(MFIX_DAT_FILENAME) 给dat文件分配了一个大小
  3. CALL RUN_MFIX(MFIX_DAT_FILENAME, MFIX_DAT_SIZE) 调用了RUN_MFIX这个子程序

现在看run_mfix

也是只看最关键的部分

它里面嵌套了三个最关键的subroutine

  1. subroutine run_fluid
  2. subroutine run_dem
  3. subroutine run_pic

都是干什么的一目了然。 假如我们运行的是带化学反应的DEM算例(以后都以这个为例)。

run_mfix 做了这么几件事

  1. 读入主程序中的MFIX_DAT_SIZE和MFIX_DAT_FILENAME
    并且 用108行的do循环 读入dat文件的每一行,真正地读入了dat文件(注释中称为deck file)。其中最重要的是CALL GET_DATA(MFIX_DAT)这一行。
  2. 初始化CALL INITIALIZE(MFIX_DAT)
  3. 时间步循环 dt_loop ! Time march loop。到这一步开始,分算例的类型,纯流体则用run_fluid,dem用run_dem, pic用run_pic。当然不论dem还是pic都需要先run_fluid。从这点看出来,每个时间步内,都是计算流体相,再计算颗粒相的
  4. 结束运行CALL FINALIZE

其中最主体的部分在第3步,也就是时间步循环这里。

需要细看run_flud和run_dem

下期再谈

原文地址:https://www.cnblogs.com/chunleili/p/12758194.html