FLASH 模拟程序学习笔记(2)

FLASH 的基本组织结构

FLASH主要部分是用Fortran编写的,但是利用不同的文件夹层次,使得该程序具有类似C++的继承特性。了解FLASH的代码组织结构是非常有益的。FLASH利用文件夹将具有相似功能的代码聚集起来,构成一个单元。利用FLASH提供的这些单元的公共接口(API函数),用户构建自己的应用程序来解决特定的科学问题。

FLASH的文件结构

FLASH主目录下的文件夹如下图所示。

source文件夹

图中的source文件夹是FLASH的核心部分,该目录下的每个文件夹代表一个单元。其中用户的应用程序在Simulation单元下构建,构建方法后面再介绍。每个单元下还包含一系列文件夹,其中每个子文件夹均继承了父文件夹提供的函数的功能,并且子文件夹里的函数在构建的应用程序中具有更高的优先级。在下图中右下角的结构展示了Simulation单元的目录结构。每个单元下具有一个以单元名Main命名的目录,来实现该单元的主要功能,同级的其他目录用来进行单元需要的私有功能的实现。Main目录下可以有其他子文件夹(代表一个子单元),不同的字单元必须实现不同的API接口,即不能有相同的函数。每个子单元下可以有不同的目录结构,字单元下的同级文件夹表示对同一个函数功能接口的不同实现。

用户的应用程序文件夹里的函数一般属于目录层次的最里层,因而在编译时具有最高的调用优先级。FLASH为每个API接口函数实现了一个默认的功能,放在父文件夹的函数里,如果用户要修改该API函数的实现,只需要在应用程序文件夹下写一个相同的名字的函数就可以了。

不同的单元之间的调用只能通过FLASH提供的API来进行。同一个单元可能具有不同的实现,但是这些实现具有相同的接口。因此对其他单元来说,实现的细节就可以被隐藏了。

FLASH的文件夹组织层次

bin文件夹

程序的构建采用python脚本自动提取和生成可执行程序所需的代码和资源,使得极大的简化了用户根据自己的科学问题进行建模的流程,脚本放在bin目录下。

tools文件夹

对运行的结果可以采用IDL程序或者python进行分析,放在tools目录下。这些分析软件可能并不是很好用,但是用户可以很方便的调用成熟的软件如VisIt,Paraview等进行可视化分析,或者编写自己的python工具进行分析。

sites文件夹

这个文件夹主要设置服务器相关的一些配置文件,用户可以针对不同的计算服务器进行不同的配置,提高程序的运行效率和正确性。

lib文件夹

这里可以将FLASH要求的库安装在这里,但是并不是必须的,这个文件夹可以忽略。

FLASH的功能结构:

FLASH从功能上主要分为5类,如下图所示。五个部分的功能分别为:

  • Infrastructure:
    • 主要提供一个服务性功能,如运行时参数的管理、IO的处理、 网格的管理等
    • 文件夹: ./FLASHX.Y/source/[RuntimeParameters | IO | Grid | numericalTools]
  • Physics:
    • 主要是针对特定物理问题的偏微分方程的求解算法
    • 物理问题包括:Hydra(流体力学)、EOS(物态方程)和Gravity(引力)
    • 文件夹:./FLASHX.Y/source/[Particles | physics]
  • Driver:
    • 主要是时间推进算法以及不同的单元之间的相互通信
  • Simulation:
    • 使用FLASH最主要的部分,用来构建和执行特定的科学问题的模拟。
  • Monitor:
    • 检测程序的运行状态,如运行时间、日志文件等

FLASH的功能结构

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值