ExStream/Exchimera - 悲催的科学匠人 - 冷水's blog
终于完成一个完整ExChimera测试
与CFL3D+maggie对比,简直是完美。心里有底了。
CFL3D网格编号的特殊性
CFL3D一个比较独特的是采用了jkl编号。
read(1) ngrid read(1) (itest(ll),jtest(ll),ktest(ll),ll=1,ngrid) !veryfy jtest(igrid) == jdim ! ktest(igrid) == kdim ! itest(igrid) == idim !for each grid call rp3d(w(lx),w(ly),w(lz),jdim,kdim,idim,igrid,ialph, . igeom_img,irr) !in which read(1,end=999,err=999) . (((x(j,k,i),i=1,idim),j=1,jdim),k=1,kdim), . (((y(j,k,i),i=1,idim),j=1,jdim),k=1,kdim), . (((z(j,k,i),i=1,idim),j=1,jdim),k=1,kdim)
可见,网格在文件中存储是ijk顺序,但是读入内存中的存储顺序是jki
在三维中jkl实际对应我们一般的JKI,因此我们在组装网格时,不必特别处理,只是在输出cfl3d的ovrlp.bin时,要按照ovrlp.bin的格式以jki的顺序输出每个编号三元组。
但是二维情况下,CFL3D默认i是第三维,jk是真正的网格平面。而ExStream/ExChimera中默认网格的K编号对应第三维,IJ是真实网格平面。要利用ExChimera切割,只有
1 先将原始网格的ijk指标转换为jki指标存储,同时将xml文件也以jki描述。即在Exhimera中,IJK=jki。
i->K
j->I
k->J
2 为了不另外修改ovrlap.bin而直接使用CFL3D计算,则需要在ExChimera中输出时
- IJK三组元写成jki,即不换顺序IJK。
- 自然坐标按照eta zeta xi顺序输出,即XI ETA ZETA
- 此外其中iblank的输出顺序要按照jki输出,仍然是IJK。
3 如果要使用ExChimera导出的网格作为CFL3D计算,则需要将网格的IJK转成KIJ(即最初的ijk)
K->i
I->j
J->k
cfl3d的重叠网格处理程序maggie的特点
Exstream R167 测试版放出
修改:
- 实现了基于二叉树的壁面距离快速计算方法,比老的粗暴方法快50倍左右。计算壁面距离再也不用等待数小时了。
- 对于CHIMERA网格,加入了chimera.dat文件中可选的面积修正数据读取,以实现更加精确的气动力系数积分。 run列表的ichimr_sfix(取值1或者0)开关控制是否读取面积修正数据。注意只有新版的IHC3D能够输出带有面积修正数据的chimera.dat文件。
- 剔除了一些bug,确保在天河的intel fortran环境下也可以计算
TO DO:
- GMRES+ILU方法的测试
- 高精度时间离散格式的实现
- non-match interface的实现