最終目標設定
既存の結晶構造から,多原子イオンを1つの点に置換した新しい結晶構造を作成する.
準備
以下,2つのファイルを用意する.
- POSCAR: POSCARファイル形式の結晶構造を記したテキストファイル
- POSCAR.nnlist: POSCARファイルから,原子ごとに隣接原子をリストアップしたテキストファイル
作成したプログラム
- mk_clusterd_poscar.py
入力:POSCAR, POSCAR.nnlist
出力:POSCAR
今回行ったことの流れ
次の流れに沿って,距離が近い原子団を1つの原子に置き換え,新たな結晶構造を作成した.
0.POSCARとPOSCAR.nnlistをPandasのデータフレームとして読み込む.
1.結晶構造の各原子ごとに2Å以内の原子をピックアップする.
※ これは,準備の段階でPOSCAR.nnlistとして作成済み
2.ピックアップされた数が最大の原子をリストアップする.
3.2.でリストアップされた原子と、ともにピックアップされた原子のxyz座標の相加平均をとる.
4.リストアップされた原子の元素種と3.で得た座標を新たな1点とする.
5.2~4で選択されていない原子をリストアップする.
6.4.と5.を組み合わせて,新しい構造を作る.
今回行ったことの詳細説明
例として,COD (Crystallography Open Database) から得たBaCO3 (1000033.cif) を用いる.
※https://www.crystallography.net/cod/1000033.cif
POSCARをDataFrameとして読み込んだもの:
central atom | x | y | z | Species | |
---|---|---|---|---|---|
0 | 1 | 0.250000000000000 | 0.757000000000000 | 0.919000000000000 | C |
1 | 2 | 0.250000000000000 | 0.743000000000000 | 0.419000000000000 | C |
2 | 3 | 0.750000000000000 | 0.243000000000000 | 0.081000000000000 | C |
3 | 4 | 0.750000000000000 | 0.257000000000000 | 0.581000000000000 | C |
4 | 5 | 0.250000000000000 | 0.901100000000000 | 0.912200000000000 | O |
5 | 6 | 0.250000000000000 | 0.598900000000000 | 0.412200000000000 | O |
6 | 7 | 0.750000000000000 | 0.098900000000000 | 0.087800000000000 | O |
7 | 8 | 0.750000000000000 | 0.401100000000000 | 0.587800000000000 | O |
8 | 9 | 0.459500000000000 | 0.683900000000000 | 0.921000000000000 | O |
9 | 10 | 0.040500000000000 | 0.816100000000000 | 0.421000000000000 | O |
10 | 11 | 0.540500000000000 | 0.316100000000000 | 0.079000000000000 | O |
11 | 12 | 0.040500000000000 | 0.683900000000000 | 0.921000000000000 | O |
12 | 13 | 0.459500000000000 | 0.816100000000000 | 0.421000000000000 | O |
13 | 14 | 0.959500000000000 | 0.183900000000000 | 0.579000000000000 | O |
14 | 15 | 0.959500000000000 | 0.316100000000000 | 0.079000000000000 | O |
15 | 16 | 0.540500000000000 | 0.183900000000000 | 0.579000000000000 | O |
16 | 17 | 0.250000000000000 | 0.416310000000000 | 0.754900000000000 | Ba |
17 | 18 | 0.250000000000000 | 0.083690000000000 | 0.254900000000000 | Ba |
18 | 19 | 0.750000000000000 | 0.583690000000000 | 0.245100000000000 | Ba |
19 | 20 | 0.750000000000000 | 0.916310000000000 | 0.745100000000000 | Ba |
POSCAR.nnlistをDataFrameとして読み込んだもの:
central atom | neighboring atom | distance | X | Y | Z | unitcell_x | unitcell_y | unitcell_z | central species | neighboring species | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | C | C |
1 | 1 | 5 | 1.282630 | 0.000000 | 1.281885 | -0.043713 | 0 | 0 | 0 | C | O |
2 | 1 | 9 | 1.289100 | 1.112990 | -0.650283 | 0.012857 | 0 | 0 | 0 | C | O |
3 | 1 | 12 | 1.289100 | -1.112990 | -0.650283 | 0.012857 | 0 | 0 | 0 | C | O |
4 | 2 | 2 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | C | C |
5 | 2 | 6 | 1.282630 | 0.000000 | -1.281885 | -0.043713 | 0 | 0 | 0 | C | O |
6 | 2 | 10 | 1.289100 | -1.112990 | 0.650283 | 0.012857 | 0 | 0 | 0 | C | O |
7 | 2 | 13 | 1.289100 | 1.112990 | 0.650283 | 0.012857 | 0 | 0 | 0 | C | O |
8 | 3 | 3 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | C | C |
9 | 3 | 7 | 1.282630 | 0.000000 | -1.281885 | 0.043713 | 0 | 0 | 0 | C | O |
10 | 3 | 11 | 1.289100 | -1.112990 | 0.650283 | -0.012857 | 0 | 0 | 0 | C | O |
11 | 3 | 15 | 1.289100 | 1.112990 | 0.650283 | -0.012857 | 0 | 0 | 0 | C | O |
12 | 4 | 4 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | C | C |
13 | 4 | 8 | 1.282630 | 0.000000 | 1.281885 | 0.043713 | 0 | 0 | 0 | C | O |
14 | 4 | 14 | 1.289100 | 1.112990 | -0.650283 | -0.012857 | 0 | 0 | 0 | C | O |
15 | 4 | 16 | 1.289100 | -1.112990 | -0.650283 | -0.012857 | 0 | 0 | 0 | C | O |
16 | 5 | 1 | 1.282630 | 0.000000 | -1.281885 | 0.043713 | 0 | 0 | 0 | O | C |
17 | 5 | 5 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
18 | 6 | 2 | 1.282630 | 0.000000 | 1.281885 | 0.043713 | 0 | 0 | 0 | O | C |
19 | 6 | 6 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
20 | 7 | 3 | 1.282630 | 0.000000 | 1.281885 | -0.043713 | 0 | 0 | 0 | O | C |
21 | 7 | 7 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
22 | 8 | 4 | 1.282630 | 0.000000 | -1.281885 | -0.043713 | 0 | 0 | 0 | O | C |
23 | 8 | 8 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
24 | 9 | 1 | 1.289100 | -1.112990 | 0.650283 | -0.012857 | 0 | 0 | 0 | O | C |
25 | 9 | 9 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
26 | 10 | 2 | 1.289100 | 1.112990 | -0.650283 | -0.012857 | 0 | 0 | 0 | O | C |
27 | 10 | 10 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
28 | 11 | 3 | 1.289100 | 1.112990 | -0.650283 | 0.012857 | 0 | 0 | 0 | O | C |
29 | 11 | 11 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
30 | 12 | 1 | 1.289100 | 1.112990 | 0.650283 | -0.012857 | 0 | 0 | 0 | O | C |
31 | 12 | 12 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
32 | 13 | 2 | 1.289100 | -1.112990 | -0.650283 | -0.012857 | 0 | 0 | 0 | O | C |
33 | 13 | 13 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
34 | 14 | 4 | 1.289100 | -1.112990 | 0.650283 | 0.012857 | 0 | 0 | 0 | O | C |
35 | 14 | 14 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
36 | 15 | 3 | 1.289100 | -1.112990 | -0.650283 | 0.012857 | 0 | 0 | 0 | O | C |
37 | 15 | 15 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
38 | 16 | 4 | 1.289100 | 1.112990 | 0.650283 | 0.012857 | 0 | 0 | 0 | O | C |
39 | 16 | 16 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | O | O |
40 | 17 | 17 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | Ba | Ba |
41 | 18 | 18 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | Ba | Ba |
42 | 19 | 19 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | Ba | Ba |
43 | 20 | 20 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0 | 0 | 0 | Ba | Ba |
クラスタ後の絶対中心座標のみをフィルターで抽出したもの:
補足:クラスタの中心原子と,クラスタに選ばれなかった原子
central atom | x | y | z | Species | |
---|---|---|---|---|---|
0 | 1 | 0.250000 | 0.757000 | 0.919000 | C |
1 | 2 | 0.250000 | 0.743000 | 0.419000 | C |
2 | 3 | 0.750000 | 0.243000 | 0.081000 | C |
3 | 4 | 0.750000 | 0.257000 | 0.581000 | C |
16 | 17 | 0.250000 | 0.416310 | 0.754900 | Ba |
17 | 18 | 0.250000 | 0.083690 | 0.254900 | Ba |
18 | 19 | 0.750000 | 0.583690 | 0.245100 | Ba |
19 | 20 | 0.750000 | 0.916310 | 0.745100 | Ba |
相対中心座標をDataFrame化したもの:
補足:df_nnlistの原子団の相対中心座標
central atom | X | Y | Z | |
---|---|---|---|---|
0 | 1 | 0.000000 | -0.004670 | -0.004500 |
1 | 2 | 0.000000 | 0.004670 | -0.004500 |
2 | 3 | 0.000000 | 0.004670 | 0.004500 |
3 | 4 | 0.000000 | -0.004670 | 0.004500 |
16 | 17 | 0.000000 | 0.000000 | 0.000000 |
17 | 18 | 0.000000 | 0.000000 | 0.000000 |
18 | 19 | 0.000000 | 0.000000 | 0.000000 |
19 | 20 | 0.000000 | 0.000000 | 0.000000 |
絶対座標 + 相対座標をDataFrame化したもの:
補足:最近傍の原子団を1つの点に置換した結晶構造
X | Y | Z | Species | |
---|---|---|---|---|
0 | 0.250000 | 0.752330 | 0.914500 | C |
1 | 0.250000 | 0.747670 | 0.414500 | C |
2 | 0.750000 | 0.247670 | 0.085500 | C |
3 | 0.750000 | 0.252330 | 0.585500 | C |
16 | 0.250000 | 0.416310 | 0.754900 | Ba |
17 | 0.250000 | 0.083690 | 0.254900 | Ba |
18 | 0.750000 | 0.583690 | 0.245100 | Ba |
19 | 0.750000 | 0.916310 | 0.745100 | Ba |