OpenFOAM并行输出格式的问题



  • 我在学校集群上算东西,有些算例是直接在主文件夹里面输出每个时间点的数据,有的是在processor*/文件夹里面输出的。大家知道这个设置的点是在哪儿么?



  • 补充一下,前者是processor文件夹里面没有各个时间点的数据,而process文件夹里面没有时间点的数据,如下图

    2d8695bb-f16f-4166-a683-99ce599116ae-image.png



  • 是不是reconstruct之后的数据?然后把proce删了,又decomp一下?



  • 没有没有,这个是运行的时候就开始出现各个时间点的数据的,每个保存的时间点他都自动保存在主目录了。我就觉得很奇怪,但是又觉得这是个很好的方式。有一次似乎看过输出格式有写这样子,但是后面找不到了,所以想来问问



  • 还没这么玩过啊。我Google了一下,你试试这个?

    https://www.cfd-online.com/Forums/blogs/kkk/2957-auto-reconstructpar.html



  • 你可以查看这个文件 $FOAM_TUTORIALS/IO/fileHandler/Allrun



  • 你用的是哪个版本啊,我的4.1好像没有这个东西。tutorials里面并没有IO

    744f5951-62b1-481c-a4e1-e6f5fbba0cb5-image.png



  • @东岳 但是我这个运行的目录里面没有这些代码啊。。。就是OpenFOAM 4.1 的tutorials,不然我上传一下大家分析下?还是因为这是我的cluster的设置?不过不科学啊
    Goldschmidt.zip



  • @hurricane007 啊,好吧,我用的版本是开发版v1712, 我直接给你贴出来好了

    #!/bin/sh
    cd ${0%/*} || exit 1                        # Run from this directory
    . $WM_PROJECT_DIR/bin/tools/RunFunctions    # Tutorial run functions
    
    runApplication blockMesh
    
    application=$(getApplication)
    
    #- Test writing collated format
    runApplication decomposePar -fileHandler collated
    runParallel $application -fileHandler collated
    runApplication reconstructPar -latestTime -fileHandler collated
    
    #- Delete collated files
    rm -rf processors
    
    #- Test writing uncollated format
    runApplication -s uncollated decomposePar -fileHandler uncollated
    runParallel -s uncollated $application -fileHandler uncollated
    
    #- Restart from uncollated
    runParallel -s collated $application -fileHandler collated
    runApplication -s collated reconstructPar -latestTime -fileHandler collated
    
    #- Convert the parallel format to uncollated
    runParallel foamFormatConvert -fileHandler uncollated
    
    #------------------------------------------------------------------------------
    


  • @Zephyr
    这个做法应该是运行完再reconstructPar,然后删除processers里面的文件,用的是collated格式,应该是这篇文章里面提到的OpenFOAM Parallel I/O.
    但是,我找了下我那个case,发现并没有这个设置,所以发上来看看大家有没有见过。



  • @hurricane007 你仔细看一下那些算例的Allrun怎么写的,如果用mpirun -np <nprocs> <executable> 后面必须带 -parallel参数,否则就变成算n个一模一样的串行了



  • @Zephyr @Zephyr
    你这个倒是提醒了我,我去提交个单核的算一算。查一下cluster的documentation,cluster用的是slurm, 看例子是上面设置好以后最后srun就可以了,似乎不用自己加parallel,提交的脚本大概是这样

    #!/bin/bash
    #
    # Submission script for Lemaitre3
    #SBATCH --job-name=testDPMFoam
    #SBATCH --output=DPMLog
    #SBATCH --time=24:00:00 # hh:mm:ss
    #
    #SBATCH --ntasks=1 # 多核就直接把这儿变成要的核数,提前做好blockMesh 和 decomposePar
    # SBATCH --nodes=1
    #SBATCH --mem-per-cpu=2000 # megabytes
    #
    srun DPMFoam
    
    


  • @Zephyr
    你这个倒是提醒了我,我去提交个单核的算一算。查了一下cluster的documentation,cluster用的是slurm, 看例子是上面设置好以后最后srun就可以了,似乎不用自己加parallel,提交的脚本大概是这样

    #!/bin/bash
    #
    # Submission script for Lemaitre3
    #SBATCH --job-name=testDPMFoam
    #SBATCH --output=DPMLog
    #SBATCH --time=24:00:00 # hh:mm:ss
    #
    #SBATCH --ntasks=1 # 多核就直接把这儿变成要的核数,提前做好blockMesh 和 decomposePar
    # SBATCH --nodes=1
    #SBATCH --mem-per-cpu=2000 # megabytes
    #
    srun DPMFoam
    
    


  • @Zephyr 破案了,就是没有并行所以直接输出在case 目录了,所以要用mpirun -np 6 DPMFoam -parallel 提交。不知道学校的cluster有啥问题,用srun 运行wiki上那个MPI例子就会并行,运行DPMFoam 就不会并行。已经和学校IT说了,看有啥反馈



  • 感谢分享 :xiexie:


Log in to reply