2022-03-12 19:23:12 +09:00
2022-03-12 18:23:22 +09:00
2022-03-12 18:23:22 +09:00
2022-03-12 18:23:22 +09:00
2022-03-12 18:23:22 +09:00
2022-03-12 18:23:22 +09:00
2022-03-12 18:23:22 +09:00
2022-03-12 18:23:22 +09:00
2022-03-12 18:23:22 +09:00
2022-03-12 18:23:22 +09:00
2022-03-12 19:23:12 +09:00
2022-03-12 18:23:22 +09:00

dump2sq

\\

はじめに

複数の時間ステップからなる時間ステップの構造データから、動径分布関数 $g(r)$ 、積算配位数 $CN(r)$ 、構造因子 $S(Q)$ を計算するプログラムです。 Triclinicなセルでも計算できます。原子ペア毎の$S(Q)$ を計算した後、原子 散乱因子または中性子散乱長を使って、X-rayと中性子回折実験的で観測され る $S(Q)$ を計算します。$g(r)$ は、セルサイズ $L/2$ を超えても計算でき ます。$L/2\sqrt{3}$ まで確保しても良さそうです。産総研の土田さんにアド バイスいただきました。

https://www.cmu.edu/biolphys/deserno/pdf/gr_periodic.pdf

1ステップ毎に$g(r)$ と$S(Q)$ を計算して最後に時間平均しています。よっ て、NPT計算でセルサイズが変わったとしても問題なく計算できます。計算コ ストのほとんどは、原子間距離の計算です。この計算はopenmpで並列化してい ます。

入力ファイル

拡張子で入力ファイルのformatを判断しています。

LAMMPS

dumpコマンドで生成したファイルで、拡張子は.trajectryです。1ス テップ目で原子のならび決めて、2ステップ目以降は、同じ原子の並びとし て計算しています。時間ステップで原子の並びが変わると、正しい結果に ならないので注意してください。データの並びを決め打ちしています。そ のため、以下のようにdumpとdump_modifyで元素記号の出力し、idでsortし ておく必要があります。

dump              1 all custom 10 hoge.lammpstrj id type element x y z
dump_modify       1 element Si O sort id

XYZ

xyz形式で、拡張子は.xyzまたは.10です。す。1行目に原子数、2行目に Step数と、格子定数を記述しておきます。alpha, beta, gammaがない場合 は、90, 90, 90とします。3行目以降にデータがならびます。2ステップ目 以降も同じ形式でデータを並べます。

420
Step      225837   18.4116484 18.4116484 18.4116484 90 90 90
Si    10.560073  17.438902  6.614775
O     17.812448   0.110128  0.3462461
.
.
.

出力ファイル

4つのファイルに拡張子を追加して出力します。basenameは、指定しなけれ ば、インプットファイルと同じになります。

積算配位数

拡張子はcnです。原子ペア毎の $CN(r)$ が保存されています。

動径分布関数

拡張子はgrです。原子ペア毎の $g(r)$ と全原子 $G(r)$ が保存されています。

構造因子

拡張子はsqです。原子ペア毎の $S(Q)$ とX線と中性子で観測される $S(Q)$ が保存されています。

原子散乱因子と中性子散乱長

拡張子はcoeffです。中性子散乱長と原子散乱因子を出力します。原子散乱 因子は、xcoeff.fから抽出しています。中性子散乱長は、NISTのデータを 参照しています。

インストール

プログラムはCで作成しています。Cのコンパイラを準備してmakeしてください。 ダウンロードして単にmakeしてください。

dump2sq-1.0.tar.gz

make

icc用のMakefileも準備しています。

make -f Makefile.icc

これで、dump2sqが生成されます。

使い方

並列計算のために、環境変数をセットしてスレッド数を指定しておく。

export OMP_NUM_THREADS=4

example以下のglass.lammpstrjを引数で渡して実行してみます。

dump2sq example/glass.lammpstrj

デフォルトで、$g(r)$ を計算する$r$ の最大値は、もっとも小さいセル長 さの半分としています。プログラムが実行されると、次のように出力されて、 4つのファイルが出力されます。

basename: example/glass
Maximum cell length = 17.284100
Rmax = 8.642050
Start Gr and Sq calculation...
Calculation 0 steps...
Calculation 10 steps...
Calculation 20 steps...
Calculation 30 steps...
Calculation 40 steps...
Calculation 50 steps...
Calculation 60 steps...
Calculation 70 steps...
Calculation 80 steps...
Calculation 90 steps...
Total: 99 steps

example/glass.coeff was generated.
example/glass.cn was generated.
example/glass.gr was generated.
example/glass.sq was generated.

$g(r)$ の$r$ ステップや最大値、$Q$ の範囲をコマンドラインで指定できます。詳細 は、ヘルプを参照してください。ヘルプで表示される[ ]の値はデフォルト 値です。GRmaxは、セルサイズを超えても計算できますが、物理的な意味は ないでしょう。

./dump2sq -h
usage: dump2sq [options] inputfile
inputfile format
 LAMMPS:  *.lammpstrj
 FEMTECK: *.10

options:
 -h  --help          show this help message
     --SQmin=%f      Q minimum [0.2]
     --SQmax=%f      Q maximum [30]
     --SQdel=%d      Q delta [0.02]
     --GRmin=%f      r minimum [0.025]
 -r  --GRmax=%f      r maximum [L(minium cell length)*0.5]
 -s  --GRdel=%d      r delta [0.05]
 -o  --output=%s     Output basename [basename]
S
Description
No description provided
Readme 1.3 MiB
Languages
Python 54.1%
C 45.8%
Makefile 0.1%