ナノチューブ座標生成プログラムwrapping

Updated: '06/02/27

ナノチューブのデカルト座標の自動生成プログラムです。
生成時に様々なオプションを指定することができるので、任意のナノチューブ座標を簡単に生成することができます。
また、座標生成過程でのグラファイトシートを巻いていくアニメーションも作ることができます。

目次:
  1. とりあえずの使い方とサンプルグラフィック
  2. ダウンロードとコンパイル
  3. wrappingプログラムの実行
  4. プログラムのオプション
  5. wrappingプログラムの周辺プログラム
  6. プログラムの応用サンプル


1. とりあえずの使い方とサンプルグラフィック

ここではwrappingプログラムの使用法として、wrappingプログラムのコマンドライン命令と
その結果のデータやグラフィックをいくつか示します。
ダウンロードや詳細な使い方の説明は次章以降を参考にしてください。


wrapping 10 10

(10,10)単層カーボンナノチューブ(SWNT)の座標が生成されます。
その出力ファイルswnt-pos.datdat形式で、以下のようになっています。

0 340 1
20.000000  55.003948  55.003948
0.0  0.0
    -10.000000        0.000000       -6.875494  
    -10.000000        1.429495       -6.725248  
…

はじめ3行がヘッダ部分、4行目以降が各原子の(x,y,z)座標です。


wrapping 10 10 -pv
次にPV形式で出力します。出力ファイルはswnt-pos.datです。
PV形式は丸山研作成の可視化プログラムpvwinを使用することで、簡単にグラフィック表示させることが可能です。
左がそのグラフィックになります。
なお、その他-xmolオプションでXmol XYZ形式、-tinkerオプションでTinker XYZ形式のファイルを書き出すことができます。
wrapping 10 10 -pv -wrap
-wrapオプションを指定することで、アニメーションを作成できます。
アニメーションのコマ数は0〜20コマの合計21コマになります。
オプションのパラメタとして-wrap 30等とすると、コマ数を変化させることができます。(デフォルトは-wrap 20です。)
左がそのグラフィックになります。
wrapping 10 10 -pv -unit 50
-unitオプションはSWNTの長さをユニットセル長の倍数で指定できるので、周期境界条件を考慮した座標生成に適しています。
ここではユニットセル50個分の(10,10)SWNTが出力されます。
-lengthオプションを用いて長さをオングストローム指定することも可能です。
デフォルトは-length 20.0なので、-unit-lengthオプションを共に指定しない場合は20.0オングストロームの長さのSWNTが出力されます。
wrapping 10 10 -brenner -display

-brennerオプションによりBrennerポテンシャル(D. W. Brenner, Phys. Rev. B, 42 (1990), 9458.)で
構造最適化した座標を読み込むことができます。
(座標テーブルoptbre.datが必要になります。)
そのほか、-tbで環境依存tight-binding近似(M. S. Tang et al., Phys. Rev. B, 53 (1996), 979.)の最適化座標、
-c [length]で最適化前のシリンダー構造(ボンド長[length]のグラフェンをそのまま巻いた構造)、
-geometry [file]で任意のデータテーブルから読み込んだ座標を使用できます。
デフォルトは-c 1.44です。

また-displayオプションではSWNTの構造パラメタを表示させることができます。
上記命令を実行したときに表示される構造パラメタは、

Structural parameters of (10, 10) SWNT
Basic parameters of SWNT
 -- diameter:     13.581430[AA]
 -- chiral angle: 29.967355[deg]
 -- number of atoms in SWNT unit cell: 40
Primitive lattice vectors of graphene
 -- va1[AA] = (2.133491, 1.230152)
 -- va2[AA] = (2.133241, -1.230152)
 -- vab[AA] = (1.423713, -0.000029)
Primitive lattice vectors of SWNT on 2D graphene
 -- Ch[AA] = 10 va1 +10 va2 = (42.667320, 0.000000)
 -- T[AA]  = 1 va1 -1 va2 = (0.000251, 2.460303)

となります。



2. ダウンロードとコンパイル

2.1. プログラムのダウンロード

以下のリンク「ソースプログラム一式」からソースファイルをダウンロードしてください。
ここでの「一式」には後述の周辺プログラム cpv.c, cxmol.c, ctinker.c, attachdat.c が含まれています。
Windowsのコンパイル済みファイルも置いておきます (Borland C++ Compiler 5.5でコンパイルしました)。
以下の「Windows バイナリファイル一式」からダウンロードしてください。

 ソースプログラム一式(17KB)
 Windows バイナリファイル一式(195KB)

また、プログラムで使用する最適化座標のデータテーブルを以下からダウンロードしてください。
Brennerポテンシャル(D. W. Brenner, Phys. Rev. B, 42 (1990), 9458.)で最適化した構造と、
環境依存tight-bindingポテンシャル(M. S. Tang et al., Phys. Rev. B, 53 (1996), 979.)で最適化した構造です。

なお、ご使用のときは、リファレンス
  M. Oba, S. Okada, S. Maruyama,
  "Structural change of single-walled carbon nanotubes caused by curvature",
  The 29th Fullerene Nanotubes General Symposium (2005).
を明記してください。

 Bernner最適化座標テーブル(54KB)
 Tight-binding最適化座標テーブル(52KB)

2.2. wrapping プログラムのコンパイル

wrapping.c はC言語で作成されていますので、お手持ちのCコンパイラでコンパイルしてお使いください。
Visual C++ 6.6、Borland C++ Compiler 5.5、gcc 3.3.4でコンパイルできることを確認済みです。
コンパイルにはwrapping.cのほか、change.hが必要になります。
change.hはwrapping.cと同じフォルダに置いてコンパイルしてください。


3. wrappingプログラムの実行

プログラムの実行は以下の2通りの書式で行うことができます。

1. wrapping cn cm [options]
2. wrapping file

1.はコマンドラインにてナノチューブのカイラリティとオプションを直接指定する方法です。
最低限指定しなければいけないパラメタはカイラリティのみで、他のオプションは全てデフォルト値を持っています。
すなわち、カイラリティのみを指定するだけで座標を生成することができますが、
詳細にオプションを指定して出力を制御することも可能です。

以下は"wrapping 10 5 -u 4 -wrap -pv"コマンドで出力したSWNTアニメーションです。


2.は入力ファイルを指定する方法です。
入力ファイルにはプログラムのオプションを記述するだけです。
すなわち、最初の2つにカイラリティを指定し、そのあとはプログラムのオプションを任意の順番で指定します。
入力ファイル中にはコメントを記述することもできます。
# 記号をファイル中に記述すると、そこから行末までがコメントになり、読み込みがスキップされます。
プログラム引数をファイルにまとめておけば、任意の構造を簡単に再現することができます。
またWindowsでは入力ファイルのドラッグ&ドロップで座標を生成することもできます。

上記アニメーションと同じものを生成するための入力ファイルは

10        # chirality n
5         # chirality m
-pv       # output pv-format file
-unit 4   # number of unit cells
-wrap     # make animation

となります。


4. プログラムのオプション

4.1. オプションの概略

本プログラムは多彩なオプションを指定することができます。
全てのオプションを以下に示します。
optionは各オプションの正式名称、option(abbreviated form)はその短縮形です。どちらの形で指定しても構いません。
parameterはそれぞれのオプションに続くパラメタを表し、[n]が整数、[r]が小数、[file]がファイルを表します。

option            parameter    option(abbreviated form)
-axis:x              -           -ax
-axis:y              -           -ay
-axis:z              -           -az
-brenner             -           -b
-cylinder           [r]          -c
-display             -           -d
-file              [file]        -f
-geometry          [file]        -g
-length             [r]          -l
-origin:middle       -           -om
-origin:corner       -           -oc
-pv                  -           -p
-ratio:axis         [r]          -ra
-ratio:diam         [r]          -rd
-shift:x            [r]          -sx
-shift:y            [r]          -sy
-shift:z            [r]          -sz
-tb                  -           -t
-unit              [n/r]         -u
-wrap               [n]          -w
-xyz:xmol            -           -xx
-xyz:tinker          -           -xt

オプション指定を全て省略するとデフォルト値が設定されますが、その設定は

-ax -c 1.44 -f swnt_pos.dat -l 20, -om -rd 1.0 -ra 1.0 -sx 0.0 -sy 0.0 -sz 0.0 -w 1

になります。
なお、重複するオプションを指定した場合、最後に指定したオプションの設定が優先します。

4.2. 各オプションの詳細説明

-brenner (-b)
-cylinder (-c) [r]
-geometry (-g) [file]
-tb (-t)

ナノチューブ構造のもととなる、グラフェンの構造を指定します。
-brennerはBrennerポテンシャルで最適化した構造(see; D. W. Brenner, Phys. Rev. B, 42 (1990), 9458.)、
-tbは環境依存tight-binding近似で最適化した構造(see; M. S. Tang et al., Phys. Rev. B, 53 (1996), 979.)、
-cylinderは最適化していない、グラフェンの正六角形をもとにした構造、
-geometryは任意の構造です。

-geometryの引数にはパラメタが格納されたテーブルファイルを指定します。
パラメタテーブルは以下のようなテーブルとなります。

# n  m   diam   angle  mod  va1x    va1y     va2x    va2y    vabx    vaby
  3  3   4.125  30.000  0   2.176   1.244    2.176  -1.244   1.471  -0.000
  4  2   4.201  19.107  2   2.198   1.241    2.158  -1.241   1.467   0.006
  4  3   4.829  25.285  1   2.171   1.239    2.157  -1.239   1.456   0.002

テーブルファイルは1行目がコメント行で、2行目以降がデータテーブル本体になります。
最初の5カラムは順に(カイラリティn)、(m)、(直径)、(カイラル角)、(mod)で、
その後に(グラフェンの基本格子ベクトル1のx,y成分)、(基本格子ベクトル2のx,y成分)、
(グラフェンのA原子からB原子へのベクトルのx,y成分)が続きます。
なお、直径、カイラル角、modは入力値として使用しません。

-brenner、-tbはパラメタはありません。
それぞれoptbre.dat、opttb.datという名前のパラメタテーブルファイルを
プログラムと同じフォルダ内から探して使用します。
-cylinderの引数にはグラフェンのボンド長[r]をオングストロームで指定します。

デフォルト値は"-cylinder 1.44"です。


-pv (-p)
-xyz:xmol (-xx)
-xyz:tinker (-xt)

ファイルの出力形式を指定します。
-pvはPV形式で出力します。PV形式は丸山研の可視化プログラムpvwin.exeにてグラフィック表示させることができます。
-xyz:xmol はXmol XYZフォーマットで出力します。-xyz:tinker はTinker XYZフォーマットで出力します。
両者は一般の可視化ソフトを使用するときに用います。
デフォルトはdat形式になります。dat形式の詳細は次節を参照してください。


-file (-f) [file]

出力ファイル名を指定します。
デフォルトでは、swnt_pos.(出力形式の拡張子)になります。


-length (-l) [r]
-unit (-u) [r/n]

ナノチューブの軸方向長さを指定します。
-lengthでは長さをオングストロームで指定します。
また-unitではナノチューブの1次元ユニットセルの長さの何倍かで指定します。
-unitを整数で指定すると周期境界条件を考慮した座標が作成できます。
ユニットセルの長さは-displayオプションで確認してください。
デフォルト値は"-length 20"です。


-display (-d)

ナノチューブの構造パラメタを出力します。デフォルトではパラメタは出力されません。

-wrap (-w) [n]

座標生成過程でのグラファイトシートを巻いていくアニメーションを作成するときに指定します。
PV形式で出力すればアニメーショングラフィックスを作成できます。
XYZ形式で出力する場合はシーンごとのファイルが別々に生成されます。
デフォルトのdat形式では1つのファイルにアニメーションの全てのステップが出力されます。
パラメタとして、アニメーションのシーン数を指定します。
大きな数を指定するほどなめらかなアニメーションになりますが、その分ファイルサイズが大きくなります。
デフォルトは"-wrap 1"(アニメーションなし)です。
またパラメタなしで"-wrap"と指定すると"-wrap 20"と同じ意味になります。


-axis:x (-ax)
-axis:y (-ay)
-axis:z (-az)

ナノチューブの軸をそれぞれx,y,z軸に設定します。
デフォルト値は"-axis:x"です。


-origin:middle (-om)
-origin:corner (-oc)

ナノチューブの原点を指定します。
middleはセル中央が原点、cornerはセル端が原点になります。
デフォルト値は"-origin:middle"です。


-ratio:diam (-rd) [r]
-ratio:axis (-ra) [r]

出力されるナノチューブの拡大率を指定します。
diamはナノチューブ直径の拡大率、axisはナノチューブ軸方向の拡大率を指定します。
マイナスの値を指定することも可能です("-ratio:axis -1.0"とすれば右巻きと左巻きを変更できます)。
デフォルト値は"-ratio:diam 1.0 -ratio:axis 1.0"です。


-shift:x (-sx) [r]
-shift:y (-sy) [r]
-shift:z (-sz) [r]

出力されるナノチューブの変位をオングストロームで指定します。
デフォルトは"-shift:x 0.0 -shift:y 0.0 -shift:z 0.0"です。

4.3. dat形式について

本プログラムのデフォルトの出力形式はdatという拡張子のファイルです。
dat形式は、丸山研の可視化プログラムpvwin.exeの入力ファイル(PV形式)を
作成するためのアスキーファイルになります。

dat形式のヘッダ部分は3行から構成され、以下の通りです。(分子タイプは通常1とします。)

1行目(整数x3): 分子タイプ 分子数 シーン数
2行目(実数x3): 表示領域のx方法寸法、y方向の寸法、z方向の寸法
3行目(実数x2): 1シーン目の時間、シーンごとの時間ステップ

またメイン部分は、シーン1から順に各分子のx, y, z座標を書き出します。

1行目(実数x3):シーン1、1番目の原子のx, y, z座標
2行目(実数x3):シーン1、2番目の原子のx, y, z座標
3行目(実数x3):シーン1、3番目の原子のx, y, z座標
...
nmol行目(実数x3):シーン1、nmol番目の原子のx, y, z座標
nmol+1行目(実数x3):シーン2、1番目の原子のx, y, z座標
nmol+2行目(実数x3):シーン2、2番目の原子のx, y, z座標
nmol+3行目(実数x3):シーン2、3番目の原子のx, y, z座標
...
...
nmol*nscene行目(実数x3):シーンnscene、nmol番目の原子のx, y, z座標

pvwin.exeと共に丸山研HPに置いてある"pvutility.exe"を用いれば簡単にPV形式に変換できます。
また本プログラムに同梱のcpv.c、ctinker.c、cxmol.cを用いれば
それぞれPV形式、Xmol XYZ形式、Tinker XYZ形式に変換することができます。


5. wrappingプログラムの周辺プログラム

本プログラムには周辺プログラムがいくつか付属しています。
周辺プログラムは"cpv.c"、"cxmol.c"、"ctinker.c"、"attachdat.c"の4つです。
概要を以下に説明します。

5.1. cpv.c

dat形式をPV形式に変換するプログラムです。
change.hと同じフォルダにソースファイルを置いて、Cコンパイラでコンパイルします。

実行の書式は以下の通りです。

cpv file1.dat file2.pv [-m/-c]

第1引数と第2引数はそれぞれ入力、出力ファイルになります。
また3つ目の引数は入力ファイルの原点位置の指定で、-m,-c は
wrappingプログラムでの-origin:middle -origin:corner にそれぞれ相当します。
第3引数は省略可能で、その場合"-m"オプションが自動的に指定されます。

5.2. cxmol.c, ctinker.c

dat形式をXmol XYZ形式、Tinker XYZ形式にそれぞれ変換するプログラムです。
change.hと同じフォルダにソースファイルを置いて、Cコンパイラでコンパイルします。

実行の書式は

cxmol file1.dat file2.xyz
ctinker file1.dat file2.xyz

です。第1引数と第2引数はそれぞれ入力、出力ファイルになります。

5.3. attachdat.c

dat形式のファイル複数を結合します。
wrappingではSWNT1本のみの出力になりますが、
それをまとめてbundleにしたりMWNTにしたりするときに使用します。
全てのファイルはシーン数が等しくなければなりません。

実行の書式は

attachdat file1.dat file2.dat [file3.dat ....]

です。本プログラムの実行により複数のdatファイルがfile1.datに結合されます。


6. プログラムの応用サンプル

6.1. Bundle SWNT

以下の命令を実行することで、(10,10)SWNTのbundleを生成できます。
7本のSWNTをwrappingで生成し、attachdatで結合、cpvでdat形式をPV形式に変換します。
wrappingではshiftオプションを用いてbundle状に配置しています。

wrapping 10 10 -u 20 -f 10-10bundle.dat
wrapping 10 10 -u 20 -f pos2.dat -sy 17.3
wrapping 10 10 -u 20 -f pos3.dat -sy -17.3
wrapping 10 10 -u 20 -f pos4.dat -sy 8.65  -sz 14.96
wrapping 10 10 -u 20 -f pos5.dat -sy 8.65  -sz -14.96
wrapping 10 10 -u 20 -f pos6.dat -sy -8.65 -sz 14.96
wrapping 10 10 -u 20 -f pos7.dat -sy -8.65 -sz -14.96
attachdat 10-10bundle.dat pos2.dat pos3.dat pos4.dat pos5.dat pos6.dat pos7.dat
cpv 10-10bundle.dat 10-10bundle.pv

上記シェルで生成されるpvファイルは以下の画像を出力できます。


6.2. MWNT

以下の命令を実行することで、(5,5)〜(20,20)SWNTのMWNTの、
グラフェンから巻かれる様子のアニメーションを生成できます。

wrapping  5  5 -c 1.44 -u 20 -f multi.dat -wrap
wrapping 10 10 -c 1.44 -u 20 -f pos2.dat -wrap
wrapping 15 15 -c 1.44 -u 20 -f pos3.dat -wrap
wrapping 20 20 -c 1.44 -u 20 -f pos4.dat -wrap
attachdat multi.dat pos2.dat pos3.dat pos4.dat
cpv multi.dat multi.pv

上記シェルで生成されるpvファイルは左下の画像を出力できます。
またグラフェンから巻かれる様子のアニメーションは右下のようになります。





連絡先: maruyama@photon.t.u-tokyo.ac.jp