FLASH 简介
!!! 这个不是大家熟知的动画flash哈~~
FLASH是一个芝加哥大学开发的高性能辐射流体模拟程序,用来模拟等离子体中发生的物理过程。可以在FLASH的主页去申请。申请时需要填写下自己的研究背景,以获得代码的许可。这个程序是用Fortran语言开发的,但是具有良好的数据结构,进行大型的模拟计算还是非常容易入手的。使用FLASH请致谢:
The software used in this work was in part developed by the DOE NNSA-ASC OASCR Flash Center at the University of Chicago.
FLASH提供了非常详细的说明文档,以及许多例子程序:
- 说明文档: ihsbabc@126.com
- HEDP模拟
- 流体/磁流体模拟
FLASH的计算能力包括(从FLASH主页上翻译过来的):
物理求解器:
- 流体力学
- 磁流体力学
- 状态方程
- 辐射转移
- 扩散和热传导
- 激光能量沉积
- 不透明度
- 粒子处理
- 核烧蚀
- 引力
- 宇宙学
- 磁阻/电阻
- 原初化学
基本结构:
- Driver:
– Split
– Unsplit - Grid:
– Uniform Grid(均匀网格)
– AMR(自适应网格,PARAMESH)
– AMR(Chombo) - GridParticles:
– 拉格朗日框架 - GridSolvers:
– MultiGrid
– Multipole
– Barnes-Hut Tree
– PFFT
– Direct Solvers for Uniform Grid - IO:
– HDF5
– PnetCDF - MultiSpecies
- RuntimeParameters
- Monitor:
– Hooks for TAU
– MPI定时器
- Driver:
FLASH的安装
安装系统要求:
最基本的当然需要一个linux计算机(具有多核的服务器最好啦):
- F90(Fortran 90)编译器(如GNU的gfortran)
- C编译器 (如GNU的gcc,Intel的icc等)
- MPI库(openmpi或者MPICH)
- HDF5(如果要使用FLASH并行IO的能力)
- NetCDF库(并行IO需要)
- chombo库(AMR网格计算需要,安装可参考网址)
- HYPRE库(扩散求解器需要,安装可参考网址)
- IDL语言(ITT Visual Information Solutions,可选,分析结果时可以用FLASH提供的IDL工具fidlr3.0)
- GNU make编译工具gmake
- Python语言(方便进行结果分析)
安装及测试:
FLASH在所有需要的库装上后,就可以直接编译运行。具体步骤如下:
- 从FLASH官网获得程序(FLASHX.Y.tar,X.Y为版本号,如4.2)
tar -xvf FLASHX.Y.tar
- 安装上述需要的库(最好都装上)
- 进入解压的文件夹FLASHX.Y,设置安装的库的路径,位置如下:
cd sites/Prototypes/Linux
vim Makefile.h
修改MPI_PATH, HYPRE_PATH, ZLIB_PATH, NCMPI_PATH等。
如果操作系统为其他,则选择相应的sites下的操作系统的Makefile.h。也可以定制自己的系统的配置文件,参考用户说明手册
- 返回FLASH程序的主目录,运行(python脚本setup所在的目录):
./setup Sedov -auto
如果没有安装HDF5库,可以使用下列命令,无输出测试:
./setup Sedov -auto +noio
- 此命令会生成一个object文件夹,进入次文件夹,编译:
cd object
make (如果有多核,为加快编译速度,可以使用make -j 10)
- 正常情况下,程序应该能够正常执行了, 使用如下命令执行:
mpirun -np 8 flashX
X代表版本号X.Y中的X,如版本号为4.2,则X为4.
有的并行计算机如集群采用一些集群管理软件,如pbs,可以按相应的方法进行提交。对于一些集群,执行命令可能类似于下列命令:
mpiexec.hydra -n 8 -f nodesfile flashX
正常情况下,可能输出下列结果:
- sedov.log: log文件,记录运行时参数,如运行时间,编译时间等
- sedov.dat: 积分物理量随时间的值,如总质量、总能量、总角动量等
- sedov_hdf5_chk_000*:每隔一定时间记录一次的断点文件,可以用来进行重新计算。
- sedov_hdf5_plt_000*:一些关键物理量如温度、密度、压强等的信息,用来进行可视化分析
到此,如果这些输出都正常了,说明FLASH基本就装成功了。