Atomsk を Matlantis へインストールし、結晶粒界を有する多結晶体を作成する方法を紹介します。
Atomsk* は 無償かつオープンソースのコマンドラインツールで、計算材料化学の原子レベルシミュレーションのための結晶や分子構造データの作成、編集などに特化しています。
*Atomsk : https://atomsk.univ-lille.fr/
----------------------------
インストール
- プログラム(tar.gzファイル) をDownload します。Linux amd64 (64bit) バージョンを入手してください。動作確認は beta-0.13.1 バージョンで実施しました。
Download サイト:https://atomsk.univ-lille.fr/dl.php
- Matlantis 環境のAtomskをインストールしたい場所に tar.gz ファイルを移動します。今回は /home/jovyan/tools にインストールする場合について説明します。
- ファイルを展開し、ディレクトリの名前を "atomsk"に変更します。
ノートブックで実行する場合:
※ ターミナルで実行する場合は「!」は不要です。
!tar xvzf ~/tools/atomsk_b0.13.1_Linux-amd64.tar.gz
!mv ~/tools/atomsk_b0.13.1_Linux-amd64 ~/tools/atomsk - 以下のように atomsk コマンドが実行できればインストールは完了です。
%%bash
$HOME/atomsk/atomsk
出力:
___________________________________________________
| ___________ |
| o---o A T O M S K |
| o---o| Version Beta 0.13.1 |
| | |o (C) 2010 Pierre Hirel |
| o---o https://atomsk.univ-lille.fr |
|___________________________________________________|
*** Working out of office hours? You should sleep sometimes. :-)
>>> Atomsk is a free, Open Source software.
To learn more, enter 'license'.
>>> Atomsk command-line interpreter:
..> Type "help" for a summary of commands.
@atomsk:20240621_atomsk> \o/ Program terminated successfully!
Total time: 0.001 s.; CPU time: 0.000 s.
As an intput file, the small version of HEA structure is used.
多結晶の作成
ハイエントロピー合金 CoCrFeMnNi の結晶粒界を作成する方法を紹介します。
以下のチュートリアルを参考にしました。
- Tutorials > Grain Boundaries: https://atomsk.univ-lille.fr/tutorial_grainboundaries.php
- Tutorials > Polycrystals: https://atomsk.univ-lille.fr/tutorial_polycrystal.php
- Document: https://atomsk.univ-lille.fr/doc.php
-
最初に単位セルをシードとして用意します。atomsk では以下のように生成できます。 参考:ASEを用いる方法
%%bash
## create Ni(fcc)
$HOME/tools/atomsk/atomsk --create fcc 3.52 Ni Ni.xsf
## build supercell 3x3x3
$HOME/tools/atomsk/atomsk Ni.xsf -duplicate 3 3 3 Ni333.xsf
# randomly substitute 20% Ni atoms with Cr
$HOME/tools/atomsk/atomsk Ni333.xsf -select random 20% Ni -substitute Ni Cr NiCr.xsf
# randomly substitute 20% Ni atoms with Co
$HOME/tools/atomsk/atomsk NiCr.xsf -select random 20% Ni -substitute Ni Co NiCrCo.xsf
# randomly substitute 20% Ni atoms with Fe
$HOME/tools/atomsk/atomsk NiCrCo.xsf -select random 20% Ni -substitute Ni Fe NiCrCoFe.xsf
# randomly substitute 20% Ni atoms with Mn
$HOME/tools/atomsk/atomsk NiCrCoFe.xsf -select random 20% Ni -substitute Ni Mn CoCrFeMnNi.xsf -
次に作成したいセルボックスのサイズなどを指定したパラメータファイル(テキスト形式)を作成します。例として、180×180×180Å のセルボックス内に4つの結晶粒をもつ多結晶を作成するために、以下のような polycrystal_large.txt を作成しました。
box 180 180 180 # the size of cell
random 4 # the number of polycrystal
-
最後にAtomsk の --polycrystal モードで 2. で作成した設定ファイル(ここでは、polycrystal_large.txt) を使って多結晶 polycrystal_large.cfg を作成します。このとき一緒に生成される polycrystal_param.txt を使うと同じ多結晶を再現できます。
%%bash
$HOME/tools/atomsk/atomsk --polycrystal CoCrFeMnNi.xsf polycrystal_large.txt polycrystal_large.cfg -wrap
Ovito で描画すると以下のように確認できました。
(上:元素種ごとの色分け、下:テンプレートマッチング結果(緑がFCC))
Tips: ASEを用いる方法
単位セルはASEを用いても作成できます。例えば、以下のように作成します。
1. Al の fcc 構造を作成
from ase.build import bulk
atoms = bulk(crystalstructure="fcc", name="Al", a=3.584, cubic=True)
2. ランダムに元素を置換する関数を定義
import numpy as np
def random_replace(atoms, elements, replacement_rate=0.75):
# 原子オブジェクトをコピー
atoms_c = atoms.copy()
# 全体の中でランダムに選ぶべき原子の数を計算
total_atoms = len(atoms_c)
num_replacements_per_element = int(total_atoms * replacement_rate / len(elements))
for e in elements:
# ランダムなインデックスを選択
rand_indices = np.random.choice(total_atoms, num_replacements_per_element, replace=False)
# 要素を置換
atoms_c.numbers[rand_indices] = e
return atoms_c
3. 置換したい元素を指定して、ランダムに元素を置換
elements = [24, 26, 27, 28] # Cr, Fe, Co, Ni
atoms_HEA = random_replace(atoms*(3, 3, 3), elements)
4. 可視化して結果を確認
from pfcc_extras import view_ngl
view_ngl(atoms_HEA)
多結晶の作成手順2に進みます。