XtalEdit

From Ecal

Revision as of 12:33, 22 September 2010 by Tkotani2 (Talk | contribs)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)
Jump to: navigation, search

コンセプトとしては、結晶構造を単純な言語で表現すること。 XtalEditには空間群のすべての情報が入っている。 XtalEditにはTSPACEで書き出させた、すべての空間群におけるワイコフ位置の代数的データが格納されている。これをプログラムに読み込ませて、結晶データからモデルが作れる。また、原子位置から空間群の生成元をもとめたり、生成元から原子位置を生成したりなどができる。まてりあに載せた紹介記事

ただ、「新言語」の構築は非常に大変で(とくにデバッグのためのトレースバックなどをきちんと作るのがたいへん)、 それは放棄していくべきで、再構築していくことを考えている。これは大きな反省点である。

結局のところ、計算のための結晶モデリングというのは『そのモデルを作るためのプログラムを作ること。そのモデルを作るための手続きを記述すること』である。そして、それが正しく対称性を満たしてるかなどをきちんと確認する作業でもある。試行錯誤の履歴やテストの履歴も有用と思われるものは、混乱を招かない形で残しておくべきである。そういうものをすべてまとめて「結晶モデル構造データ」と呼ぶべきである。単に原子座標が並んだだけのものでは、役に立たない/再利用できない。

それで、将来的には

  1. 「結晶モデル構造データ」は、ある特定の処方箋でかかれた「pythonプログラム」そのものである。
  2. その「結晶モデル構造データ(プログラム)」の作成のためのライブラリや空間群データなどを用意する。これがXtalEditの実態のメイン部分である。「結晶モデル構造データ(プログラム)」はある特定形式に結晶原子位置ファイルを出力する。それを読み書きするツールがライブラリには含まれる。
  3. ライブラリには、また、「結晶モデル構造データ(プログラム)」を、さまざまな計算エンジンへのファイルI/O(変換)するツール、描画ツールをドライブするツールなどが含まれる。
  4. このライブラリ(XtalEdit)を利用して結晶モデルデータを書こうとすると、記述者は必然的にある特定のやりかたで記述することを制約される。このために、「結晶モデル構造データ(プログラム)」は可読性が高まる。

こういう処理には、数値計算と同時に文字処理なども簡便に行えるプログラムを利用する必要がある。その点においてpythonが有利であると考えている。 ただ、互換性などの問題があり、当面はpython2.6系列でいくことを考えている。




Contents

pre comment(将来的な開発方向;反省点)

「結晶構造をpython言語で定義する」というのが将来的な開発指針になる。

現バージョンの、XtalEditの開発方針は、「結晶モデリングのための新言語」だった。 電子状態計算のコードなどは、エンジンがものすごく巨大になるからプリプロセスなどの 軽い(しかし煩雑な)部分はpythonにまかせたらいいと思える。これ自身は自然で いいアイデアであるが、現在のバージョンにおいては、 「新言語」にこだわりすぎて、エラー処理などが非常に大変になってしまった。 (相当になれないとなかなかちゃんとつかえない)。 とにかくこれは大きな反省点。それで次には、 多少のsyntax sugerなどの自由度は犠牲にしてもpythonのひとつの モジュールとして開発していく必要があると考えいる(小谷、奥野)。

「結晶構造をpython言語で定義する」ということであれば、 pythonの文法に乗っ取って、いくつかの変数を与えていくということになる。 python文法からはみ出ている部分、たとえば、 SITEやTYPEはもっと素直に、辞書などで、

SITE(TYPE='ZnFe', POS='1/3. *PV1 + 2/3. *PV2 +  PV3')
SITE(TYPE='S',    POS='1/3. *PV1 + 2/3. *PV2 + u *PV3')

のような書式を考えていくべきでしょう。(これでいいのかどうかわからない)。 とにかくpython文法の一部になっているようなもので結晶を定義すること。 そうしておくと、通常の手法で自由に書くことができる。また、 描画ルーチン、スーパーセル生成ルーチン、対称性のチェックルーチンも pythonのライブラリとして用意する。vpythonやmatplotlibを呼ぶのがいいだろう。 rasmolでもいい。

結局のところ、いかに既存のものを組み合わせて効率よくツールを作っていくか? ということが重要。できるだけ(多少は不満足であろうが)使っていかないと開発が膨大になり手に負えない.



INTRODUCTION

(株)日本総合研究所 空剛史, 後藤隆一,奥野幸洋,大阪大学理学研究科 小谷岳生

XtalEditは結晶のモデリングツールです。インストールに関してはinstall XtalEdit。 まず、金属学会誌まてりあに書いたXtalEditの紹介記事をみてください。

  • 基本的にはCUI的なツールなのですがGUIをかぶせてあります。GUIは単純で左側の「EditWindow」と右側の「ResultWindow」と「下側のボタン」(or「起動メニュー」)からなります。EditWindowに何かを書いて、それでボタンを押すとその内容が(そのボタンに関連づけられた)外部コマンドにおくられ、その結果が、EditWindowとResultWindowに返されます(EditWindowの内容が更新されえます)。そのとき同時にそのコマンドが、外部ビューワーを起動したりします(fortranコマンドを内部的に呼んでたりします)。
  • EditWindowには「結晶構造のモデル」を数式的に記述したものを書きます(cym1 フォーマット).たとえば例として、
au=0.529177
a =  3.82/au   #  a is in a.u.
c =  6.26/au   #  c  is in a.u.
CV1 = 1/2.* a * EX - 1/2. *sqrt(3) * a * EY
CV2 = 1/2.* a * EX + 1/2. *sqrt(3) * a * EY
CV3 = c * EZ

PV1 =  CV1
PV2 =  CV2
PV3 =  CV3

SITE TYPE=    ZnFe, POS=  1/3. *PV1 + 2/3. *PV2 +  PV3
SITE TYPE=    ZnFe, POS=  2/3. *PV1 + 1/3. *PV2 + 1/2.   *PV3
u= 3./8
SITE TYPE=    S, POS=  1/3. *PV1 + 2/3. *PV2 +   u  *PV3
SITE TYPE=    S, POS=  2/3. *PV1 + 1/3. *PV2 + ( u +1/2. ) *PV3

TYPE ZnFe  LMX=3, ATOM = (Zn:0.9)(Fe:0.1)
TYPE S     LMX=3, ATOM = (S:1.0)

という感じです.ここで、キーワード(予約語)は、

EX,EY,EZ: Cartesian orthnormal basis
CV1,CV2,CV3: Conventional cell vectors
PV1,PV2,PV3: Primitive cell vectors
SITE foo1, TYPE=foo2 ,POS=foo3: atomic site.
TYPE foo1 LMX=foo2, ATOM=foo3 : atomic type (equivalent sites)

です。現状で何ができるかというと

(1)空間群の対称性の生成元をつくる
(2)空間群の対称性があたえられた場合に足りない原子をおぎなう
(3)スーパーセルベクトルを指定してスーパーセルをつくる
(4)Rasmolによる可視化
(5)AkaiKKR,lmf,ABinit などの結晶構造のI/O

たとえば、this picture is just after you push the button この図 は、上の例の場合に、"Generator-mode0"のボタンをおしたあとどうなるかをしめしたものです。 ーーー> ResultWindowに対称性などの結晶構造の情報が表示されます。 また、 同時にEditWindowに生成元を含んだ<GEN> sectionが追加され、たりないSITEは 追加されたりします。

また、カスタマイズや自分用のボタンをつけるのも簡単です.TSPACEからとった230種の空間群の テンプレートが用意されています(全てのワイコフ位置があたれられてる)。 See http://sham.phys.sci.osaka-u.ac.jp/~kkr/XtalEdit/indexuse.htm for detail.

いまのバージョン (ver 0.91d 6/29/2009->7/2修正しましたが同じ名前です)

7/7/2009 奥野さん作のVasp_export.pyの修正版を加えました(インストールスクリプトの最後のほうにあるようにwgetでとれます。) 基本的にhttp://sham.phys.sci.osaka-u.ac.jp/~kkr/XtalEdit/ においてある0.91bとそんなに変わっていませんが,python-2.5.4,numpy-1.3.0と適合するように直しました.OpenMX,Vaspへの入力ファイルの読み書きできるようにしようとしてます(ある程度できますが、まだいいかげんです)。 numpyになったので、

from numpy import *
from numpy.linalg import *

にして、

matrixmultiply ->dot
determinant ->det
inverse ->inv

のおきかえが必要でした.

install XtalEdit

tutorial for XtalEdit

サンプルのcsy1ファイル

ここ にあります。いまのパッケージにはもうすこし(でたらめですが)多めに入ってますが、整理されてません。

使いかた

http://sham.phys.sci.osaka-u.ac.jp/~kkr/XtalEdit/indexuse.htm

TSPACEサンプル

には柳瀬先生の空間群TSPACEを動かして抽出したワイコフ位置のフルデータが入っています. (いまのパッケージにもはいってます)。 で、これらのどれかを選んで、適当にエディットしたら、「空間群番号とワイコフ位置があたえられて いる場合」に関してモデルを簡単につくれます。だいたいXtalEditの表現は http://cst-www.nrl.navy.mil/lattice/ のページとほとんどいっしょなので、これをお手本にしながらつくっていけます。 たとえば、 http://sham.phys.sci.osaka-u.ac.jp/~kkr/XtalEdit/samples_included/TSPACE/TSpg221Ch1.csy1 を見てください.

  • PVがprimitive な並進vectorでCVがconventional な並進vectorです。
  • XtalEditはこれを読み込んでlmfやその他のためのinput形式になおせます。

だいたいは、 http://cst-www.nrl.navy.mil/lattice/ といっしょの形式にそろえてあります。

本来なら空間群の生成元をあらかじめこの表にも加えておくべきですがさぼってます。 現状では適当に数字をいれたあと、generator-mode0で作ってやってください. (一個二個ならつくれますが自動で作るにはちょっとコード書いてやらないといかんので)。

カスタマイズのしかた

http://sham.phys.sci.osaka-u.ac.jp/~kkr/XtalEdit/indexuse.htm#customize

XtalEditの基本的な仕組み

ToDo list

  • 基本的な、構文チェックのアナライザーが必要?エラーメッセージがきちんとでないといけない。

pythonが出すエラーをかえしてもユーザーからは理解不能。 むしろpythonの枠内でやったほうがいい?モジュールとして導入すべき? たとえ小さくても「言語を作っていく」のはなかなか難しい。特にエラーのトレースバックができない。

  • generatorのルーチン(fortran code in UserModule/Generator/)をOSによって見分けれるように。
(いまはcsym (linux)とcsym.exe (windows)が入ってる)。
  • そもそもEditorの機能が低い。
  • いい可視化ツールとの結合。また、可視化ツールとの通信も必要になる.
  • まずは、CUIとしてきちんとつくること。そのうえでそれらを便利に実行できるようなGUIをつける。

とにかく実はGUIは、GNOMEなどに置き換えれるはず(外部コマンドを呼ぶことができるし)。 可視化ツールとの通信にしても、いったん起動されたpythonが「標準入出力」と「可視化ツール」 との通信を受け持つ。gnuplotとかと似ているが、可視化ツールからの入力(割り込み)も受け取れないと いけない。

  • ファイルにセーブすべき結果、コンソール出力(ログ)、エラー出力、を分別すべき。
  • Sくんの書いた部分ーー>「クラス化」に問題がある.修正必要.

ACKNOWLEDGEMENT

XtalEdit is mainly developed based on

* python + numpy
* csymtool
  A fortran routine as for spece-group symmetry.
  It is constructed from subroutine packages originally from:
  " The STUTTGART TB-LMTO-ASA program.
    http://www.mpi-stuttgart.mpg.de/andersen/docs/lmto_program.html
    http://www.mpi-stuttgart.mpg.de/andersen/LMTODOC/LMTODOC.html
    For the symmetry part of the program, 
    mostly written by Georges Krier MPI-FKF."
  We thank Prof.Dr.O.K.Andesen to allow us to use them in XtalEdit.
* TSPACE(Dr.Yanase. We generated space-group templates from it), 
* Rasmol (molecule viewer).
* XBAND (H.Ebert,Munich) We learned so much from this.(not directly used).

We thank to them so much. Further, we also leaned so much from stuffs on Web and so.

In addition, we really appreciate strong support from the Japan Research Institute, Limited, through the General Manager Mr. Shinji T Shibano.

Personal tools