【MFiX】MFiX中采用命令行(Batch solver)编译运行方式(并行)

超算或者没有配备显卡的远程服务器一般只能用命令行(MFiX中成为Batch solver)。

所有含有UDF(化学反应必须用UDF)的MFiX算例必须先编译后运行。

采用命令行的运行方式有两种

  • 从源代码运行
  • 从anaconda环境运行

适用于命令行的编译方式有三种

  • 从源代码编译
  • 从anaconda环境编译
  • 从GUI编译

原理都是一样的,只是操作方式不同罢了。这几种可以相互交叉。

工具:
这里采用的版本是MFiX-20.1.2
系统是Ubuntu18

参考:
参考MFiX user guide P158-P163 5.2节

算例:
8核心DMP并行

从anaconda编译

  1. 激活anaconda mfix环境
conda activate mfix-20.1.2
  1. 编译
build_mfixsolver --batch -j 8 --dmp FC=mpifort -FCFLAGS="-Wall"

解释:

  •  build_mfixsolver
    是主要的命令,后面是它的参数
    
  • --batch
    表示采用batch solver,即命令行
    
  • j 8
     表示用8个核心编译(注意是编译不是运行,只是节省一两分钟,可去掉)
    
  • --dmp
    表示采用DMP并行,在编译的时候不需要指定并行的核心数
    
  • FC=mpifort
    指定编译器为mpifort,这个编译器才能做并行,gfortran是不行的。
    
  • -FCFLAGS="-Wall"
    是编译器的参数。这里表示显示出编译器所有的警告。其他参数的见User guide
    

从anaconda运行

已经激活了环境的情况下

mpirun -np 8 ./mfixsolver -f 算例名称.mfx NODESI=2 NODESJ=4 NODESK=1

解释:

  •  mpirun
    是主要的命令,后面是它的参数
    
  • -np 8
     表示用8个核心运行
    
  • ./mfixsolver
    是要运行的可执行文件
    
  • -f 算例名称.mfx
    是./mfixsolver的参数,指定算例名称
    
  • NODESI=2 NODESJ=4 NODESK=1
    指定并行分割方式,I方向上两个块,J方向上切成4块,K方向上一块。
    

编译运行命令存储成alias

打开bashrc

sudo gedit ~/.bashrc

给命令以别名。在末尾添加这几行(请更改算例名字)

# This is a 8 cores DMP with Batch solver
alias buildmfix='build_mfixsolver --batch -j 8 --dmp FC=mpifort -FCFLAGS="-Wall"'
alias runmfix='mpirun -np 8 ./mfixsolver -f 算例的名字.mfx NODESI=2 NODESJ=4 NODESK=1'

此后就用buildmfix和runmfix代替编译运行命令

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值