SLABGEN

スラブの構造を作成しSTATEフォーマットで出力するフォートランプログラム群。 限られた対称性の高い結晶の表面にしか対応していないため、 必要に応じてプログラムを追加する必要があります。 複雑な表面の作成にはより一般的な結晶構造作成ソフトや結晶構造可視化ソフト(Materials studio、Avogadro、VESTAなど)を用いるのが良いでしょう。

ソースの入手

STATEのユーティリティは以下に置くものとします。

${HOME}/STATE/tools

最新版のソースはGitLabのリポジトリから以下のようにクローンします。

git clone https://gitlab.com/ikutaro/slabgen.git SLABGEN

クローンするのが困難、あるいは無理だった場合、リポジトリからソースファイルをダウンロードしてユーティリティのディレクトリで以下のようにファイルを展開することで、SLABGENというディレクトリが得られます。

gzip -c slabgen-master.tar.gz | tar xvf - ;mv slabgen-master SLABGEN

あるいは

tar zxvf slabgen-master.tgz; mv slabgen-master SLABGEN

を実行して展開します。

ビルド

SLABGEN以下のディレクトリ構造は以下のようになっています。

README   example/ src/     work/
  • README
  • example: 計算方法(README)と計算方法
  • src: ソースファイル
  • work: 計算実行用のディレクトリ(計算例を多数含む)

srcに移動しmakefileを環境に合わせて編集する。例えばgfortranを使用する場合

FC=gfortran
FFLAGS=-O2
LD=gfortran
LDFLAGS=

を指定する。

make

を実行することでプログラムのビルドが完了します。

実行方法

プログラムのパスが通っていることを前提とします。パスが設定されていない場合、$HOME/.bashrcで

export PATH=${PATH}:${HOME}/STATE/tools/SLABGEN/src

を追加し

source ~/.bashrc

を実行します。なおホームディレクトリにbash_profileが存在しない場合は上記が機能しない。その場合、

/.bash_profileを作成し、以下を記入します。

if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

実行例: Cu(111)

以下ではexample/以下の例を用いてプログラムの使い方を記述します。
入力ファイル: example/cu.in:

Cu
6.83119688
23
14
1 1

1行目:元素名
2行目:バルク結晶の格子定数
3行目:スラブの原子層数
4行目:真空の原子層数(真空層の厚みを等価な原子層数の数で表現)
5行目:表面ユニットセルの次元:プリミティブセルの場合は1 1を、p(2x2)セルの場合は2 2などと入力
格子定数はBohr半径単位で指定します。
fcc(111)スラブを作成する場合、以下を実行

genslab_fcc111

入出力ファイル名を聞かれるので、入力ファイル名にはcu.inを出力ファイル名にはcu.outを指定します。 cu.outに格子ベクトル(Supercell Lattice vectors)や表面をz=0、あるいはスラブの中心をz=0にした原子位置がSTATEフォーマットで出力されるので、必要に応じてコピーして使用します。
幾つかのプログラムではQuantum-ESPRESSO用フォーマットでも原子位置が出力可能となっています。その場合

genslab_fcc111 -pw

と-pwというオプションを追加することでatpsというファイルが生成されます。 atpsには格子ベクトルのデータ(ibrav, celldm)、および原子位置が記述されている。 またスラブの構造を確認するために元素名に応じたxyz (およびxsf)ファイルも生成されます。今の例ではCu23.xyzとCu23.xsfが生成されるのでXCrySDenやVESTAで可視化し確認を行う。

実行例: Graphene

グラフェンの構造を作成する場合は以下の入力ファイルとgenslab_grを使用します。 入力ファイル: gr.in

C
  4.658169680044d0 37.794522492515405
5 5  

1行目:元素名
2行目:面内格子定数、面外格子点数(真空の厚み)
3行目:スーパセルの次元
格子定数はBohr半径単位で指定します。 Cu(111)の例と同様、以下を実行すれば良いでしょう。

genslab_gr

QEフォーマットの構造を生成したい場合、

genslab_gr -pw

を実行します。

実行例: Armchair graphene nanoribbon

アームチェアグラフェンナノリボンを作成する場合、genagnrを使用します。 入力ファイル: gnr.in

C
  4.6553909370d0   18.897261246257703
 1 5

1行目: 元素名
2行目: グラフェンの格子定数, 真空の幅(リボンの表面と垂直方向で共通)
3行目:ナノリボンの(スーパセルの)次元 この例では5原子炭素幅のナノリボンが生成されます。これまでの例と同様に

genagnr

あるいは

genagnr -pw

を実行します。さらに端を水素で終端する場合

genagnr -h-term

と"-h-term"をオプションとして追加し実行します。現在のところ端の炭素原子あたり一つの水素原子で終端することのみを想定しています。

実行例: RuO2(110)

Rutile(110)表面を作成する場合、genslab_rutile110を使用します。 入力ファイル

RuO2
8.486574435396852D0
5.870247573118257D0
0.30478D0
3
6
1 1

1行目: 化合物名(実際にはRutile構造の化学式はMO2と仮定してMを認識して構造のファイルを作成します)
2行目: 格子定数 a (Bohr)
3行目: 格子手数 c (Bohr)
4行目: 内部パラメータ u (dimensionless)
5行目: 層数 (MO2 trilayerを1層と考える)
6行目: 真空に対応する層数 (MO2 trilayerを1層と考える)
7行目: 表面スーパーセルの次元
他のコマンドと同様

genslab_rutile110

を実行します。Quantum-ESPRESSOフォーマットの構造を作成するには

genslab_rutile110 -pw

を実行します。
以上のコマンドを実行すると化学量論的(MO2)な構造、いわゆるO_bri構造が出力されます。入力ファイルの8行目に

M_cus

というキーワードを追加するとOが不足した、いわゆるM_cus構造が、

O_cus

というキーワードを追加するとOが過剰の、いわゆるO_cus構造が出力されます。

その他の情報

以下のサイトにはVESTAを使ったスラブの作り方の例が記載されています。

以下のサイトではpymatgenを利用した表面と界面の作り方が記述されています。

Buraiを使うことでスラブを作成することもできます。スラブはユニットセルの中心に作成されているようなので、ESM計算の際には注意が必要だと思います。


添付ファイル: fileslabgen-20190129.tgz 222件 [詳細]
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-12-05 (火) 11:19:50 (145d)