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

    下期再谈

  • 相关阅读:
    游标和视图
    sql server 变量与集合运算
    sql server 流程控制
    sql server 基础查询和子查询
    数据库范式快速理解
    创建数据库与数据表
    SQL server 使用
    Android studio 下载依赖jar包慢
    java根据list数据通过接口姓名并填充
    【翻译】Promises/A+规范
  • 原文地址:https://www.cnblogs.com/chunleili/p/12758194.html
Copyright © 2020-2023  润新知