{
version 2.0;
format ascii;
class labelList;
location"constant";
object decompDict;
}
// * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
(
0
0
...
1
);
圆括号内的是由编号从小到大排列的N个网格,数字代表该网格的processor数,比如如上0、1号网格就是processor0中的,N-1号网格则是processor1内的,我们需要令圆括号内的数字满足我们的分区。但是貌似没有一个直接的划分区域就能得到类似的一个文件的方法,我就用了一个比较笨的办法。
step2:首先使用topoSet分区,需要在system文件夹下放一个topoDict文件,具体文件内容可以find -name topoSet 或者topoDict 查看使用方法。
我们这里主要用到了cellSet里的boxToCell和rotatedBoxToCell两种,toposet还有很多其他的操作可能会更加快捷。
主要流程如下:
1. ) 用new新建一个能够包含1/8圆柱的平行六面体形,比如这里的计算域半径为30m,机翼弦中点为(0.5 0 0),使用rotatedboxtocell那么则取
origin (0.5 0-1);
i (35 0 0);
j (35 35 0);
k (0 0 2);
如图,rotatedBoxToCell.c中提到,平行六面体的八个顶点即为o, o+i,o+j, o+i+j, o+k, o+i+k, o+i+j+k;(o代表origin),但是值得注意的是,i为o点右侧的边,j为o点左侧的边,即从i到j需要逆时针旋转,我试过在四个顶点中随意取o点、i、j,但是得出来的结果不合理。
step 3:在终端执行topoSet命令会在constand/set文件夹内生成各单元的文件,内容就是其包含的单元编号,将每个文件的单元编号复制到excel内,并在其后加上0-7的数字,然后再将单元编号升序排列,然后将随之变化后的0-7的那列复制到constant/decompDict文件中,再将system/decomposeParDict中的分区数改为8,method改为manual,manualcoeffs中双引号内需要写调用的文件名,即constant内的decompDict。也可以简单的编个小程序解决。