スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PWscfでMg2Siのゼーベック係数

UbuntuにBoltzTraPをインストールではUbuntuでPWscf(Quantum ESPRESSO)と連携することを前提にBoltzTraPをインストールしました。今回は Mg2Si を例にゼーベック係数を計算してみます。

300K.png
Fig.1: Mg2Si の 300 K でのゼーベック係数のエネルギー依存性



構造緩和計算


PWscfの入力作成補助にあるように xtl2pw.py がインストールされているという前提でMg2Si の CIF ファイルから PWscf (Quantum ESPRESSO) の入力ファイルを作成します。

最初にMg2SiのCIFファイルを入手します。今回はMaterials projectのページから Primitive Cell のモノをダウンロードしました。このCIFファイルを VESTA で開いて xtl 形式でエクスポートします(Mg2Si.xtl)。

DFT計算用のマシンに Mg2Si/ ディレクトリを作成し、そこに Mg2Si.xtl を置きます。これを xtl2pw.py に渡して入力ファイルのひな型を作ります。

xtl2pw.py Mg2Si.xtl vc-relax 1


作成された入力ファイルのひな型を基に、構造緩和計算用の入力ファイルを作成します。

mv Mg2Si.in Mg2Si.relax.in
emacs -nw Mg2Si.relax.in


擬ポテンシャルファイルやカットオフを正しく設定することに加えて system に以下を追記します。

    occupations = 'smearing' ,
degauss = 0.005 ,


私の環境では、以下のような入力ファイルになりました。

&control
calculation='vc-relax' ,
restart_mode='from_scratch' ,
prefix='Mg2Si' ,
outdir = './Mg2Si/' ,
wfcdir = './Mg2Si/' ,
pseudo_dir = './' ,
disk_io='default' ,
forc_conv_thr= 0.001 ,
verbosity = 'default' ,
nstep = 100 ,
/
&system
ibrav= 5 ,
celldm(1) = 8.50304569 ,
celldm(4) = 0.50000000 ,
nat = 3 ,
ntyp = 2 ,
ecutwfc = 50.0 ,
ecutrho = 250.0 ,
occupations = 'smearing' ,
degauss = 0.005 ,
/
&electrons
electron_maxstep = 100 ,
mixing_beta = 0.7 ,
! use smaller conv_thr for better results ,
conv_thr = 1.0d-12 ,
/
&ions
ion_dynamics='bfgs' ,
/
&CELL
cell_dynamics = 'bfgs' ,
press = 0.001,
press_conv_thr = 0.05 ,
! cell_dofree = 'xyz' ,
/
ATOMIC_SPECIES
Mg 24.305 Mg.pbe-n-kjpaw_psl.0.3.0.upf
Si 28.086 Si.pbe-n-kjpaw_psl.0.1.UPF
ATOMIC_POSITIONS crystal
Mg 0.750000 0.750000 0.750000 0 0 0
Mg 0.250000 0.250000 0.250000 0 0 0
Si 0.000000 0.000000 0.000000 0 0 0
K_POINTS automatic
4 4 4 0 0 0


これを pw.x に渡して構造緩和計算を行います。

mpirun -np 4 pw.x < Mg2Si.relax.in > Mg2Si.relax.out


nscf計算


次にnscf計算を行います。まずは構造緩和計算の入力ファイルを基にnscf計算の入力ファイルを作成します。

cp Mg2Si.relax.in Mg2Si.nscf.in
emacs -nw Mg2Si.nscf.in


変更点は以下です。
    calculation='nscf' ,
verbosity = 'high' ,
K_POINTS automatic
10 10 10 0 0 0


k点はもっと細かく採った方がいいかもしれませんが、今回は練習なのでこの程度にしておきます。

&control
calculation='nscf' ,
restart_mode='from_scratch' ,
prefix='Mg2Si' ,
outdir = './Mg2Si/' ,
wfcdir = './Mg2Si/' ,
pseudo_dir = './' ,
disk_io='default' ,
forc_conv_thr= 0.001 ,
verbosity = 'high' ,
nstep = 100 ,
/
&system
ibrav= 5 ,
celldm(1) = 8.50304569 ,
celldm(4) = 0.50000000 ,
nat = 3 ,
ntyp = 2 ,
ecutwfc = 50.0 ,
ecutrho = 250.0 ,
occupations = 'smearing' ,
degauss = 0.005 ,
/
&electrons
electron_maxstep = 100 ,
mixing_beta = 0.7 ,
! use smaller conv_thr for better results ,
conv_thr = 1.0d-12 ,
/
&ions
ion_dynamics='bfgs' ,
/
&CELL
cell_dynamics = 'bfgs' ,
press = 0.001,
press_conv_thr = 0.05 ,
! cell_dofree = 'xyz' ,
/
ATOMIC_SPECIES
Mg 24.305 Mg.pbe-n-kjpaw_psl.0.3.0.upf
Si 28.086 Si.pbe-n-kjpaw_psl.0.1.UPF
ATOMIC_POSITIONS crystal
Mg 0.750000 0.750000 0.750000 0 0 0
Mg 0.250000 0.250000 0.250000 0 0 0
Si 0.000000 0.000000 0.000000 0 0 0
K_POINTS automatic
10 10 10 0 0 0


これを実行します。

mpirun -np 4 pw.x < Mg2Si.nscf.in > Mg2Si.nscf.out


BoltzTraPの実行


BoltzTraP に渡すためのファイルを作成します。最初にnscf計算の結果からフェルミエネルギーを読み出します。

grep "Fermi" Mg2Si.nscf.out


つぎに qe2boltz.py を用いて BoltzTraP に与えるバンド構造の数値データや計算の設定ファイルを作成します。

qe2boltz.py Mg2Si pw 4.5310 0


4.5310の部分は、先ほど読みだしたフェルミエネルギーの値です。
これを走らせると Mg2Si.intrans や Mg2Si.energy が出力されます。
Mg2Si.intrans が BoltzTraP に与える計算の設定が書かれたファイルなので、適宜編集します。

emacs -nw Mg2Si.intrans


編集したら以下のように BoltzTraP を実行します。

x_trans BoltzTraP


300Kのデータのプロット


色々なファイルが出力されますが、もっとも重要なのは Mg2Si.trace です。
開いてみると1列目にエネルギー(フェルミエネルギーと書いてありますが、ただのエネルギーだと思います、状態密度の横軸とおなじ意味での)、2列目に温度、3列目以降に色々な物性が出力されており、今回の目的のゼーベック係数は5列目にあります。
今回は300Kにおけるゼーベック係数をエネルギーの関数としてプロットしてみます。そのままだとプロットしにくいので300Kのデータだけ抜き出します。

awk '{if($2 == 300){print $0}}' Mg2Si.trace > 300K.txt


こうして得られたデータをプロットするためのgnuplot用のpltファイルを下記のように準備しました。

set terminal pngcairo size 520,390
set output "300K.png"

set ylabel "Seebeck coefficient (uV/K)"
set title "Seebeck coefficient of Mg2Si at 300 K"

set xlabel "Energy (eV)"
set xrange [-2:2]
plot "300K.txt" u (($1-0.334102802189)*13.6058):($5*1E6) w l not


関連エントリ




参考URL




参考文献/使用機器




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。
スポンサーサイト

tag: PWscf QuantumESPRESSO ゼーベック係数 

PWscfでシリコンのバンド構造

3. グラフェンのバンド構造と状態密度を参考に Quantum ESPRESSO(PWscf)を用いてシリコンのバンド構造を計算してみました。

Si-band.png
Fig.1: シリコンのバンド構造



セルフコンシステント計算


以下のようにシリコンの入力ファイルを作ります。
何らかの作成補助を使うとラクかもしれません(参考: PWscfの入力作成補助)。
今回は構造緩和を行うため vc-relax を利用しました。

xtl2pw.pw Si.xtl vc-relax 1


このままだと単位胞に原子を8個含む単純立方格子なので、ブラベ格子を fcc (ibrav=2)にして ATOMIC_POSITIONS もそれに倣うように編集し、これを走らせます。

mpirun -np 4 pw.x < Si.relax.in | tee Si.relax.out


&control
calculation='vc-relax' ,
restart_mode='from_scratch' ,
prefix='Si' ,
outdir = './Si/' ,
wfcdir = './Si/' ,
pseudo_dir = './' ,
disk_io='default' ,
forc_conv_thr= 0.001 ,
verbosity = 'default' ,
nstep = 100 ,
/
&system
ibrav= 2 ,
celldm(1) = 10.26221441
nat = 2 ,
ntyp = 1 ,
ecutwfc = 50.0 ,
ecutrho = 250.0 ,
/
&electrons
electron_maxstep = 100 ,
mixing_beta = 0.7 ,
! use smaller conv_thr for better results ,
conv_thr = 1.0d-12 ,
/
&ions
ion_dynamics='bfgs' ,
/
&CELL
cell_dynamics = 'bfgs' ,
press = 0.001,
press_conv_thr = 0.05 ,
! cell_dofree = 'xyz' ,
/
ATOMIC_SPECIES
Si 28.086 Si.pbe-n-kjpaw_psl.0.1.UPF
ATOMIC_POSITIONS crystal
Si 0.000000 0.000000 0.000000 0 0 0
Si 0.250000 0.250000 0.250000 0 0 0
K_POINTS automatic
4 4 4 0 0 0


nscf計算


セルフコンシステント計算の入力ファイルをコピーして nscf 計算の入力ファイルを作成します。

cp Si.relax.in Si.nscf.in


その後、以下の点を編集します。

  • calculation='bands'
  • nbnd=12
  • K_POINTS {crystal_b}


nbnd はバンドの数です。省略すると価電子数の半分×原子の個数(Siの場合はnbnd=4)となります。そうすると、半導体の場合は、価電子帯のみが計算されることになるので、少し大きめに取っておくほうがいいと思います。今回は nbnd=12 としました。

K_POINTS {crystal_b} の後の L 20 とかは、バンド構造をプロットする特徴的なk点のパスです。
最初の数字が特徴的なk点の数(だと思う)で、文字の後の数字が分割数(だと思う)です。LはL点、gGはΓ点で、この標記で使える点の名前は Doc/brillouin_zones.pdf を参照との事です。

mpirun -np 4 pw.x < Si.nscf.in | tee Si.nscf.out


なお nscf 計算用の入力ファイルの格子定数などは、構造緩和をする前の値のままですが、実際の nscf 計算では、ちゃんと構造緩和後の値を使ってくれます。

&control
calculation='bands' ,
restart_mode='from_scratch' ,
prefix='Si' ,
outdir = './Si/' ,
wfcdir = './Si/' ,
pseudo_dir = './' ,
disk_io='default' ,
forc_conv_thr= 0.001 ,
verbosity = 'default' ,
nstep = 100 ,
/
&system
ibrav= 2 ,
celldm(1) = 10.26221441
nat = 2 ,
ntyp = 1 ,
ecutwfc = 50.0 ,
ecutrho = 250.0 ,
nbnd = 12 ,
/
&electrons
electron_maxstep = 100 ,
mixing_beta = 0.7 ,
! use smaller conv_thr for better results ,
conv_thr = 1.0d-12 ,
/
&ions
ion_dynamics='bfgs' ,
/
&CELL
cell_dynamics = 'bfgs' ,
press = 0.001,
press_conv_thr = 0.05 ,
! cell_dofree = 'xyz' ,
/
ATOMIC_SPECIES
Si 28.086 Si.pbe-n-kjpaw_psl.0.1.UPF
ATOMIC_POSITIONS crystal
Si 0.000000 0.000000 0.000000 0 0 0
Si 0.250000 0.250000 0.250000 0 0 0
K_POINTS {crystal_b}
5
L 20
gG 20
X 20
W 20
gG 20


プロット用データの出力


このまででバンド計算は完了しています。次に gnuplot でプロットしやすい形式に直します。
以下のように Si.band.in を用意します。

&bands
outdir = './Si/' ,
prefix='Si' ,
filband='Si.band' ,
lsym=.true.
/


実行ファイルは bands.x です。

mpirun -np 4 bands.x < Si.band.in | tee Si.band.out


実行後に作成された Si.band.gnu が gnuplot 用の数値データです。

プロット


gnuplot でプロットするための plt ファイルとして以下のようなものを準備しました。

set terminal pngcairo size 520,390
set output "Si-band.png"

## *** Plot range ***
x1=0.8585
x2=1.8499
x3=2.3455
xmax=3.4539
set xrange [0:xmax]
set yrange [-15:10]

ef=5.9827

set xzeroaxis
set grid x

set ylabel "Energy (eV)"
set xtics ("{L}" 0, "{/Symbol G}" x1, "{X}" x2, "{W}" x3, "{/Symbol G}" xmax)
set x2tics ("{L}" 0, "{/Symbol G}" x1, "{X}" x2, "{W}" x3, "{/Symbol G}" xmax)

plot "Si.band.gnu" u 1:($2-ef) w lp not


特徴的なk点の座標は Si.band.out の中を見ると、以下のように書かれています。

     high-symmetry point:  0.4957 0.4957 0.4957   x coordinate   0.0000
high-symmetry point: 0.0000 0.0000 0.0000 x coordinate 0.8585
high-symmetry point: 0.0000 0.9913 0.0000 x coordinate 1.8499
high-symmetry point: 0.4957 0.9913 0.0000 x coordinate 2.3455
high-symmetry point: 0.0000 0.0000 0.0000 x coordinate 3.4539


エネルギーの単位は eV のようです。

Too many bands... と言われる場合


バンド計算をすると Too many bands are not converged from nscf calculation というメッセージが出て計算が止まることがあります。Google 検索をすると対策として下記の[Pw_forum] Too many bands are not converged from nscf calculationがヒットします。

Hi,Zhiting Tian
"Too many bands are not converged" can be solved for two way:
1.increase ecutwfc
2.decrease conv_thr
or both do them.

Best
Regards
--
Yun Song,Kang
Physical Science and Technology of Inner Mongolia University.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.democritos.it/pipermail/pw_forum/attachments/20110926/8f5f3309/attachment.htm


ここに書かれている通り ecutwf を大きくするか、conv_thr を小さくすると計算できるようになります。

関連エントリ




参考URL




参考文献/使用機器




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。

tag: バンド構造 QuantumESPRESSO PWscf 分散関係 

UbuntuにBoltzTraPをインストール

Levi Lentz's blogを参考にすると PWscf(Quantum ESPRESSO) と BoltzTraP を組み合わせてゼーベック係数などの輸送系特性を第一原理計算から求めることができるようになります。このことを前提に、今回は BoltzTraP を Ubuntu にインストールします。


BoltzTraPのインストール


基本的にはLevi Lentz's blogに書かれている通りに従います。

This is not a guide on how to install BoltzTraP, as that documentation is actually pretty straight forward. You can find the software here: BoltzTrap Website. The main thing I will mention is that it will generate two executables: x_trans and BoltzTraP. You can leave x_trans anywhere in your path, but it appears to need BoltzTraP to be placed in /usr/local/bin. I could not tell you why this is, but it was the only way I could get it installed.


まずBolzTraPのウエブページへ行き、最新版のv1.2.5(2019年1月1日現在)をダウンロードします。

次に下記のコマンドで展開します。これには少し時間がかかります。

tar xf BoltzTraP.tar.bz2


boltztrap-1.2.5/src/ に存在する BoltzTraPx_trans/usr/local/bin/ にコピーします。

sudo cp boltztrap-1.2.5/src/BoltzTraP /usr/local/bin/
sudo cp boltztrap-1.2.5/src/BoltzTraP /usr/local/bin/


更に qe2bolz.py をダウンロードして実行権限を付けます。

sudo wget -O /usr/local/bin/qe2boltz.py http://levilentz.com/BoltzTraP/qe2boltz.py
sudo chmod +x /usr/local/bin/qe2boltz.py


これでインストールは完了のはずですが Ubuntu 16 以降(?)ではエラーが出るかもしれません。

BoltzTraPのコンパイル


Levi Lentz's blogを参考にチュートリアルを実行すると liblapack.so.3gf が無いというエラーが出て失敗するかもしれません。
これはecaljのインストール(Ubuntu + gfortran)の2018年4月7日追記のところに書いたのと同じ原因なので、同じ対処をすれば解決できます。自分でコンパイルをするので gfortran などがインストールされていることが前提です。

具体的には、まず src/ にある Makefile を下記のように編集します。

#LIBS = -llapack -lblas
LIBS = /usr/lib/liblapack.so.3 /usr/lib/libblas.so.3


これを make した後 /usr/local/bin/ へコピーすれば解決です。

make
sudo cp BoltzTraP /usr/local/bin/


関連エントリ




参考URL




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。

嵐の第33回CMDワークショップとAkaiKKRのYoutube動画

第33回CMDワークショップは、不幸にも上陸した台風とバッティングしたため、2日目が休講になりました。

この日のビギナーコースではAkaiKKR(machikaneyama)のチュートリアルが予定されていましたが、当然ながらそれもキャンセル。3日目の最後に行われた懇談会では、ビギナーコースの方たちからAkaiKKRの演習ができなくて残念だったという声を聴きました。

そこでYoutubeで公開されているAkaiKKRの演習動画を紹介します。



第5回CCMSハンズオン(ソフトウェア講習会): AkaiKKRチュートリアル 1. KKR法
http://www.slideshare.net/cms_initiative/cmsi-38020198
第5回CCMSハンズオン(ソフトウェア講習会): AkaiKKRチュートリアル 2. AkaiKKRの実習
http://www.slideshare.net/cms_initiative/akai-kkr-handson2

アドバンストコース相当の内容と開催場所の関連から、ビギナーコースの講義よりも難易度は高めかも知れませんが、自習も可能だと思います。

---

当ブログでCMDワークショップのAkaiKKR演習と関係ありそうなエントリは、以下のような感じ。

tag: AkaiKKR machikaneyama KKR CPA 

Scilabで二次元線形補完



tag: Scilab 補間 

FC2カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoC強磁性CPAPICOPアンプecalj状態密度常微分方程式モンテカルロ解析odeトランジスタインターフェースDOS定電流PDS5022スイッチング回路半導体分散関係シェルスクリプトレベルシフト乱数HP6632A可変抵抗I2Cトランジスタ技術温度解析R6452Aブレッドボード数値積分確率論バンド構造バンドギャップセミナー反強磁性絶縁熱設計偏微分方程式非線形方程式ソルバA/Dコンバータフォトカプラカオス三端子レギュレータISO-I2CPWscfLM358GW近似シュミットトリガLEDマフィンティン半径数値微分サーボ発振回路TL431直流動作点解析USBカレントミラー補間PC817Cアナログスイッチ74HC4053VESTAbzqlty電子負荷イジング模型アセンブラQuantumESPRESSOLDAチョッパアンプBSch開発環境単振り子量子力学2ちゃんねるFFT基本並進ベクトル標準ロジックブラべ格子パラメトリック解析位相図キュリー温度ラプラス方程式繰り返し抵抗熱伝導スイッチト・キャパシタ状態方程式MaximaSMP失敗談gfortran六方最密充填構造コバルトTLP621不規則合金スピン軌道相互作用ランダムウォーク最適化ewidth相対論FETQSGWスレーターポーリング曲線VCA仮想結晶近似GGAcygwinQuantum_ESPRESSO条件分岐詰め回路NE555LM555固有値問題最小値ガイガー管QNAPUPSダイヤモンドマントルデータロガーゼーベック係数TLP552シュレディンガー方程式ZnO最大値CIF格子比熱xcrysdenMCUハーフメタル井戸型ポテンシャル三角波ブラウン運動フェルミ面awk差し込みグラフスーパーセルFXA-7020ZR過渡解析起電力fsolveOpenMPUbuntuWriter509テスタ熱力学第一原理計算TLP521ubuntu平均場近似自動計測CK1026MAS830LトランスPIC16F785フィルタAACircuitCapSense負帰還安定性ノコギリ波ナイキスト線図EAGLE2SC1815P-10PGAOPA2277MBELMC662入出力FSMTeX結晶磁気異方性非線型方程式ソルバ固定スピンモーメント全エネルギーmultiplotgnuplotc/aL10構造fcc等高線ジバニャン方程式ヒストグラム確率論正規分布初期値面心立方構造ウィグナーザイツ胞interp1合金半金属電荷密度重積分SIC二相共存磁気モーメント不純物問題cif2cellPWgui擬ポテンシャルウルツ鉱構造BaOquantumESPRESSOフォノンデバイ模型edeltリジッドバンド模型岩塩構造ルチル構造スワップ領域マテリアルデザインspecx.fフラクタルマンデルブロ集合キーボードRealforceクーロン散乱三次元疎行列縮退化学反応関数フィッティング最小二乗法Excel直流解析PCTS-110TS-112日本語パラメータ・モデル等価回路モデル文字列状態図熱拡散方程式HiLAPW両対数グラフ陰解法Crank-Nicolson法ifort境界条件連立一次方程式片対数グラフグラフの分割円周率ヒストグラム不規則局所モーメントGimpシンボル軸ラベル凡例線種トラックボール

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。