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 ゼーベック係数 

Kelvinの公式でSeebeck係数

AkaiKKR(machikaneyama)で計算された状態密度から Kelvin の公式を利用して、遷移金属のゼーベック係数を計算しました。
\begin{equation}
S = - \frac{1}{|e|}\frac{\mathrm{d}\mu}{\mathrm{d}T}
\end{equation}
ここで S はゼーベック係数、 e は電気素量、 μ は化学ポテンシャル、T は絶対温度です。結果はそこそこ良く実験値を再現しました。

Kelvin.png
Fig.1: Kelvinの公式で計算されたゼーベック係数(実線)と実験から得られた文献値(丸シンボル)。パラジウム(赤)、プラチナ(青)、タングステン(緑)、モリブデン(黒)。



ゼーベック係数


ゼーベック係数(熱電能)は、以下の式で表されます。

\begin{equation}
S = \frac{1}{eT}\frac{K_1}{K_0}
\end{equation}
ここでKn
\begin{equation}
K_n = \int_{-\infty}^{\infty}\sigma(\epsilon)(\epsilon - \mu)^{n} \left( - \frac{\mathrm{d}f}{\mathrm{d}\epsilon}\right) \mathrm{d}\epsilon
\end{equation}

この式の中の σ(ε) はエネルギーに依存する電気伝導度とでも呼ぶべきもので、これを具体的に計算するには、通常のバンド計算から得られる電子の群速度に加えて、電子がどのように散乱されるかを表す散乱時間も必要になります。これは不可能ではありませんが、結構大変です。

これに対して熱電材料の物質科学―熱力学・物性物理学・ナノ科学 (物質・材料テキストシリーズ)では、とても簡単な近似式として Kelvin の公式を示しています。
\begin{equation}
S = - \frac{1}{e}\frac{\mathrm{d}\mu}{\mathrm{d}T}
\end{equation}
Scilabで金属の化学ポテンシャルに書いたとおり、金属の状態密度さえ分かっていれば化学ポテンシャルは計算できるので、バンド計算的には、とても簡単な手法です。(というか、これで精度よくゼーベック係数が計算できるのなら、群速度とか散乱時間とか一体なんだったのという感じ)

計算手順


まずAkaiKKRで状態密度を計算しました。2500 K 程度なら化学ポテンシャルの大きさもたいしたこと無いはずなので ewidth を小さくして計算すべきですが、雑な計算ということで価電子を全て含むエネルギーとしました。

c------------------------------------------------------------
go data/Pt
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
fcc 7.41 , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 0.9 sra mjw nmag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 4 200 0.023
c------------------------------------------------------------
c ntyp
1
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
Pt 1 1 0.0 2
78 100
c------------------------------------------------------------
c natm
1
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 Pt
c------------------------------------------------------------

c------------------------------------------------------------
dos data/Pt
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
fcc 7.41 , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 1.2 sra mjw nmag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 20 200 0.023
c------------------------------------------------------------
c ntyp
1
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
Pt 1 1 0.0 2
78 100
c------------------------------------------------------------
c natm
1
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 Pt
c------------------------------------------------------------


Pt-DOS.png
Fig.2: プラチナの状態密度


次に計算された状態密度から、電子の数密度neを計算します。
\begin{equation}
n_e = \int_{-\infty}^{\infty}D(\epsilon)f(\epsilon, T)\mathrm{d}\epsilon
\end{equation}
ここでフェルミ分布関数は以下のようになります。
\begin{equation}
f(\epsilon, T) = \frac{1}{\exp \left(\frac{\epsilon - \mu(T)}{k_B T} \right) + 1}
\end{equation}

電子の数密度neは温度に関わらず一定なので、絶対零度 T = 0 (K) のときの電子数密度 ne0 をまず計算します。フェルミ分布関数はこのとき ε < εF で f(ε, 0) = 1, ε > εF で f(ε, 0) = 0 なので
\begin{equation}
n_{e0} = \int_{-\infty}^{0} D(\epsilon) \mathrm{d}\epsilon
\end{equation}
です。

あとは以下の条件を満たすように非線型方程式ソルバで、化学ポテンシャルμを求めます。
\begin{equation}
\int_{-\infty}^{\infty}D(\epsilon)f(\epsilon, T)\mathrm{d}\epsilon - n_{e0} = 0
\end{equation}

化学ポテンシャルが計算できたら、これを数値微分します。
\begin{equation}
\frac{\mathrm{d}\mu}{\mathrm{d}T} \sim \frac{\mu(T+\Delta T) - \mu(T - \Delta T)}{2\Delta T}
\end{equation}

clear;

// *** 物理定数 ***
// アボガドロ数 (/mol)
na = 6.0221413E23;
// 1 (Ry) = 2.179872E-18 (J)
eRy = 2.179872E-18; //(J)
// リュードベリ原子単位系でのボルツマン定数
// Boltzmann constant kB = 1.3806488E-23 (J/K)
kB = 1.3806488E-23 / eRy; // (Ry/K)
// 電気素量
chage = 1.60217662E-19;

// *** 状態密度の読み出し ***
X = fscanfMat("Kelvin-Pt-calc.txt");
Edat = X(:,1);
Ddat = 2 * X(:,2);

// *** 計算用 ***
// エネルギー
E = linspace(min(Edat), max(Edat), 10000);
// 温度
tstart = 10; tstep = 10; tend = 2500;
T = [tstart:tstep:tend];
// 状態密度
D = interp1(Edat, Ddat, E, "linear");

// *** フェルミ分布関数 ***
function fermi = fermi(mu, energy, temp)
fermi = 1 ./ (exp((energy - mu) ./ (kB * temp)) + 1)
endfunction

// *** フェルミ分布関数 ***
n = intsplin(E, (D .* fermi(0, E, 0)));
function y = f1(x, temp)
y = intsplin(E, D .* fermi(x, E, temp)) - n
endfunction

// *** 化学ポテンシャル ***
Snum = ones(T);
for i = 1:length(T) do
temp = 1.01 * T(i);
mu1 = fsolve(0, f1);
temp = 0.99 * T(i);
mu2 = fsolve(0, f1);
// 数値計算による電子比熱
Snum(i) = - eRy * (mu1 - mu2) / (0.02 * T(i)) / chage;
end

// 数値計算による電子比熱
plot(T, 1E6 * Snum, "-b");
Y = fscanfMat("Kelvin-Pt-lit.txt");
plot(Y(:,1), Y(:,2), ".b");

// *** グラフの装飾 ***
xlabel("Temperature (K)");
ylabel("Seebeck coefficient (uV/K)");
xgrid(color("gray"));


Sommerfeld展開


Scilabで金属の化学ポテンシャルでは Sommerfeld 展開から得られた化学ポテンシャルが以下のように書かれるとしています。
\begin{equation}
\mu = \epsilon_F - \frac{\pi^2}{6}k_B^2 \frac{D'(\epsilon_F)}{D(\epsilon_F)}T^2
\end{equation}
したがって、その温度微分は以下のようになります。
\begin{equation}
\frac{\mathrm{d}\mu}{\mathrm{d}T} = - \frac{\pi^2}{3}k_B^2 \frac{D'(\epsilon_F)}{D(\epsilon_F)}T
\end{equation}
状態密度が鋭く変化している(D'(εF)が大きい)ほど大きなゼーベック係数を持つことが分かります。

関連エントリ




参考URL




付録


このエントリで使用したファイルを添付します。ファイル名末尾の".txt"を削除して、"_"を"."に変更すれば使えるはずです。(参考:ねがてぃぶろぐの付録)


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR KKR ゼーベック係数 状態密度 分散関係 

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シンボル軸ラベル凡例線種トラックボール

最新コメント
リンク

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