#author("2023-09-05T12:04:14+09:00","default:StatE","StatE") *SLABGEN [#id15fd51] スラブの構造を作成しSTATEフォーマットで出力するフォートランプログラム群。 限られた対称性の高い結晶の表面にしか対応していないため、 必要に応じてプログラムを追加する必要があります。 複雑な表面の作成にはより一般的な結晶構造作成ソフトや結晶構造可視化ソフト(Materials studio、Avogadro、VESTAなど)を用いるのが良いでしょう。 **ソースの入手 [#iba27ba4] STATEのユーティリティは以下に置くものとします。 ${HOME}/STATE/tools 最新版のソースはGitLabのリポジトリから以下のようにクローンします。 git clone https://gitlab.com/ikutaro/slabgen.git SLABGEN クローンするのが困難、あるいは無理だった場合、このページに添付してあるslabgen-20190129.tgzをダウンロードし、ユーティリティのディレクトリで以下のようにファイルを展開することで、SLABGENというディレクトリが得られます。 gzip -c slabgen-20190129.tgz | tar xvf - あるいは tar zxvf slabgen-20190129.tgz を実行して展開します。 ** ビルド [#f7b23cec] SLABGEN以下のディレクトリ構造は以下のようになっています。 README example/ src/ work/ - README - example: 計算方法(README)と計算方法 - src: ソースファイル - work: 計算実行用のディレクトリ(計算例を多数含む) srcに移動しmakefileを環境に合わせて編集する。例えばgfortranを使用する場合 FC=gfortran FFLAGS=-O2 LD=gfortran LDFLAGS= を指定する。 make を実行することでプログラムのビルドが完了します。 ** 実行方法 [#o42d3dff] プログラムのパスが通っていることを前提とします。パスが設定されていない場合、$HOME/.bashrcで export PATH=${PATH}:${HOME}/STATE/tools/SLABGEN/src を追加し source ~/.bashrc を実行します。なおホームディレクトリにbash_profileが存在しない場合は上記が機能しない。その場合、 ~/.bash_profileを作成し、以下を記入します。 if [ -f ~/.bashrc ]; then . ~/.bashrc fi *** 実行例: Cu(111) [#w95421a1] 以下では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 [#md444edc] グラフェンの構造を作成する場合は以下の入力ファイルと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) [#ye5c4928] アームチェアグラフェンナノリボンを作成する場合、genagnrを使用します。 入力ファイル: gnr.in C 4.6553909370d0 18.897261246257703 1 5 1行目: 元素名~ 2行目: グラフェンの格子定数, 真空の幅(リボンの表面と垂直方向で共通)~ 3行目:ナノリボンの(スーパセルの)次元 この例では5原子炭素幅のナノリボンが生成されます。これまでの例と同様に genagnr あるいは genagnr -pw を実行します。さらに端を水素で終端する場合 genagnr -h-term と"-h-term"をオプションとして追加し実行します。現在のところ端の炭素原子あたり一つの水素原子で終端することのみを想定しています。 **その他の情報 [#m343e9cd] 以下のサイトにはVESTAを使ったスラブの作り方の例が記載されています。 -[[Creating a surface slab model using VESTA>https://ma.issp.u-tokyo.ac.jp/app-post/1668]] -[[Building slab geometries for catalysis with VESTA>http://hjkgrp.mit.edu/content/building-slab-geometries-catalysis-vesta]]