悲催的科学匠人 - 冷水'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

 

cfl3d的重叠网格处理程序maggie的特点

阅读全文

采用Python编写Tecplot ADDON [01] GUI的问题

采用python写teccplot addon时,GUI是一个问题。tecplot自己带的python是2.5版(据说最新的tec360 13已经是基于python 2.7了),因此内含的GUI库只有Tkinter。Tkinter控件太少了,连下拉式选单都没有。Pmw实现了更多控件,于是打算手动安装Pmw到tecplot的python中。

 

方法很简单,找到一个Pmw(我直接用了系统的python2.7自带的Pmw),直接拷贝到tec360安装目录下的 

sudo cp -r /usr/lib/python2.7/dist-packages/Pmw/ /opt/tec360/lib/python2.5.1/lib/python2.5

然后需要设置一下chown和chmod

 

试试这个pmw程序

from Tkinter import *
import Pmw
root = Tk()
root.option_readfile('optionDB')
root.title('ComboBox 2')
Pmw.initialise()

choice = None

def choseEntry(entry):
    print 'You chose "%s"' % entry
    choice.configure(text=entry)

asply = ("The Mating of the Wersh", "Two Netlemeng of Verona", "Twelfth Thing", "The Chamrent of Venice", "Thamle", "Ring Kichard the Thrid")

choice = Label(root, text='Choose play', relief=SUNKEN, padx=20, pady=20)
choice.pack(expand=1, fill=BOTH, padx=8, pady=8)

combobox = Pmw.ComboBox(root, label_text='Play:', labelpos='wn',
                        listbox_width=24, dropdown=1,
                        selectioncommand=choseEntry,
                        scrolledlist_items=asply)
combobox.pack(fill=BOTH, expand=1, padx=8, pady=8)

combobox.selectitem(asply[0])

root.mainloop()

执行的结果如图

 

经过初步测试,Python and Tkinter Programming 上第四章的Pmw测试代码大都可以直接在tec360中运行,只有notebooks和notebookr因为是过时的控件已经在目前的Pmw库中删除。此外, notebook的setnaturalpagesize函数变更为setnaturalsize。

 

 

这样,我们就可以直接采用更炫的Pmw控件库和Tkinter一起编写tecplot python addon的界面了。

 
 
 
但是还有一个问题,目前看来没有合适的基于Tkinter/Pmw的可视化GUI设计工具。网上找了几个,ptkbg、visual python tkinter IDE之类,似乎都很烂。
 
此外,tecplot自带的tkinter里面连ttk也没有。尝试手工拷贝ttk,但是不能用,可能没那么简单。ttk里面有类似treeview的控件,是tkinter和pmw没有的。
 
总之,这个阉割版的python 2.5写GUI还是有些费劲。
 

Exstream R167 测试版放出

修改:

  1. 实现了基于二叉树的壁面距离快速计算方法,比老的粗暴方法快50倍左右。计算壁面距离再也不用等待数小时了。
  2. 对于CHIMERA网格,加入了chimera.dat文件中可选的面积修正数据读取,以实现更加精确的气动力系数积分。 run列表的ichimr_sfix(取值1或者0)开关控制是否读取面积修正数据。注意只有新版的IHC3D能够输出带有面积修正数据的chimera.dat文件。
  3. 剔除了一些bug,确保在天河的intel fortran环境下也可以计算

 

TO DO:

  1. GMRES+ILU方法的测试
  2. 高精度时间离散格式的实现
  3. non-match interface的实现




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