悲催的科学匠人 - 冷水's blog

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

 




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee