步骤
网格画好后
1、将文件名为decomposeParDict的文件放入算例的system文件夹中
2、写一个分区的Allrun脚本放入算例中运行即可
文件如下:
decomposeParDict
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 9
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
location "system";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 8;//总分区核心数
method scotch;//分区方法,基础的有simple hierarchical scotch manual四种
//method ptscotch;
// method hierarchical;
//底下设置不同方法的划分层数以及对应的写法,括号内为x,y,z方向层数。scotch方法只需要设置numberOfSubdomains
simpleCoeffs
{
n (4 2 1);
}
hierarchicalCoeffs
{
n (2 2 2);
order xyz;
}
manualCoeffs
{
dataFile "";
}
distributed no;//数据是否写入不同的硬盘
roots ( );
// ************************************************************************* //
Allrun
decomposePar
mpirun -np 8 pisoFoam -parallel | tee log
reconstructPar
decomposePar表示进行分区
mpirun -np 8 对应求解器 -parallel为分区计算的写法,8为decomposeParDict文件中的总核心数
| tee log表示生成一个log文件储存终端的内容
reconstruction表示将计算得到的结果组集在一起
注意事项
1、分区文件processor0等比较占内存,在组集后,可用指令删除
rm -rf proc*
2、分区计算的前提是网格已经画好了,当然网格也可以分区画,再建立一个mesh的脚本放入算例运行即可:
blockMesh
surfaceFeatureExtract
decomposePar
mpirun -np 8 snappyHexMesh -parallel -overwrite | tee log.snappy
reconstructParMesh -constant -mergeTol 1E-06 -noZero
checkMesh | tee log.check
rm -rf processor*
其中-overwrite表示细化网格后覆盖,是必要的指令
值得注意的是:进行分区计算前一定要确保画网格的processor已经删除了,不然两个分区步骤会报错。