Skip to content

ecalj tutorial

(不親切です。)Qiitaでの解説も参考にしてください。

基礎知識check

  • LDA計算の流れ。基底関数。MTOやAPW(MT division of space, Augmentation, radial function).
  • バンド計算法として PMT=LMTO+LAPWを基本にしている. 3-component formalism. 優位性
  • 独立粒子近似とは。
  • Hartree-Fock とLDA、ハイブリッド法
  • GW近似。分極媒質中を走る粒子のイメージ

ecalj 何ができるか?

  • LDA計算 VWN,GGA,LDA+U, 構造緩和(格子変化は手動)、Colinear, SOC(軸を選べる), AFの対称性を入れることができる。 ESM法でのスラブ計算. 最適化しきれてないので現状では構造緩和などでは優位性がない

  • QSGW計算: self-consistent GW法。特殊な交換相関項を作る計算であるといえる。 インパクトイオン化率(オージェによる寿命)。 自己エネルギースペクトルプロット。 GPU化、自動化セッテイング GW法でのバンドプロットが可能 QSGWでは現状全エネルギー計算ができない。バンド構造(固有値、波動関数)のみ。

  • 線形応答などの計算。 RPAでの誘電率計算、スピンゆらぎ計算 (改良の余地。金属でもできる。ドルーデウエイト(q→0) MaxlocWannier(内蔵している)、MLO(新しいモデル化法:まだ余地あり)。 自動化が弱い

  • 自動計算が可能。QSGW方ではMaterial Projectから1500個の構造ファイルを持ってきて自動化でQSGW計算しているが ほぼ問題なく計算できている。手動で個別にセッティングをいじらなくても良い(4f,5fについては自動化がまだ設定できてないが基本的に可能) バンドプロットも対称ラインも含め自動化してある。データはgnuplotなどでプロットするので読みやすい。結晶構造についてはPOSCARとの相互コンバータあり。 複数のPOSCARを一括計算するecalj_autoも梱包してある(整備中)。

実際の計算のながれ

1. POSCARからctrlsファイル生成。

ctrls.foobarはecaljの構造ファイル。vasp2ctrlで生成する。サンプルがあるのでたとえば以下の手順でPOSCARを準備

bash
cd ecalj
mkdir TEST
cd TEST
mkdir test1
mkdir test2
cat ecalj_auto/INPUT/testSGA/joblist.bk
cp ../ecalj_auto/INPUT/testSGA/POSCARALL/POSCAR.mp-2534 test1
cp ../ecalj_auto/INPUT/testSGA/POSCARALL/POSCAR.mp-8062 test2

これらのPOSCARをvasp2ctrlで変換する。cifのときは一度POSCARに直してからvasp2ctrlを行う。

vasp2ctrl POSCAR.mp-2534 
mv ctrls.POSCAR.mp-2534.vasp2ctrl ctrls.POSCAR.mp-2534
cat ctrls.mp-2534

ctrls.mp-2534 contains crystal structure equivalent to POSCAR:

cat ctrls.mp-2534 
STRUC
     ALAT=1.8897268777743552
     PLAT=       3.52125300000       0.00000000000       2.03299700000  
                 1.17375100000       3.31986900000       2.03299700000 
                 0.00000000000       0.00000000000       4.06599300000 
  NBAS=2
SITE
     ATOM=Ga POS=     0.00000000000       0.00000000000       0.00000000000 
     ATOM=As POS=     1.17375100000       0.82996725000       2.03299675000
  • MEMO:
    • ctrl2vasp ctrl.mp-2534 can convert back to VASP file. Check this by VESTA. We can use viewvesta (convert and invoke VESTA).
    • many unused files are generated (forget them).

2. ctrlsからctrl

ctrlはecaljの基本入力ファイル。ctrlgenM1.pyで生成する。 生成されたctrlに説明が埋め込まれている。k点、pwemax, nspin, soなどが注目点.

lmf起動時に-vnspin=2などでconst foobar=1 などと書かれている変数{foobar}がoverrideできる。 対称性、AF対称性を課した計算が可能(QSGWでも)。ctrlgenM1.pyの内部ではlmfa,lmchk(原子球サイズ決定)などを呼んでいる。 これ以後の計算にはctrl.foobarのみ残しておけば良い(ムダファイルが大量にできているのは消して良い).

bash
ctrlgenM1.py mp-2534
cp ctrlgenM1.ctrl.mp-2534 ctrl.mp-2534
  • ctrlでセットされるいくつかの変数

3. LDA計算

lmfa,lmfの順で行う。lmfaは瞬時に終わる。初期条件のための球対称原子の計算。lmfaの出力をgrep confすると、原子の電子配置が見て取れる。lmfaは繰り返しても副作用なし。PlatQlat.chk, SiteInfo, estatpot.dat,ECOREなどのファイルができる。grep gap llmfでバンドギャップ確認。

bash
lmfa ctrl.mp-2534

gives spherical atom calculation for initialization. No side effects to repeat.

lmfa ctrl.mp-2534 |grep conf show atomic configuration (not necessary).

Files:

save.* : computational history. DFT total energy is shown at each iteration (See lmf next). atmpnu* : ratial derivative file. Used at lmf atm.* : atom potential Used at lmf (only init) ves* : obsolate log* : just for debug log

Main part calculation:

bash
mpirun -np 8 lmf mp-2534 |tee llmf
  • mp-2534 gives 5.75 \AA for GaAs, while the experimental value is 5.65\AA
  • llmf contains iteration log. band eigenvalue, and so on. Check band gap.
  • rst.mp-2534 is generated. Self-consistent charge included.
  • You can change lattice constant as ALAT=1.8897268777743552*5.65/5.75 in ctrl file. simple math can be possible in ctrl
  • Note: ctrlp is intermediate file generated by python from ctrl. Fortran calls a python code internally.
  • check save.mp-2534. Show history of lmfa and lmf. one line per iteration. Show your console options. c,x,i,h LDA energy shown two values need to be the same (but slight difference). Repeat lmf stops with two iteration.
  • SiteInfo.lmchk
  • PlatQlat.chk
  • estaticpot.dat

4. job_pdos,job_tdos, job_fermisurface,job_band などでバンドプロットなどをおこなう

job_band実行前にバンドプロットの対称ラインsyml.foobarが必要。これはgetsyml foobarとして取得できる。

getsyml mp-2534

これでsyml.mp-2534ができる。BZ.htmlにはBZ図とシンメトリラインが描かれる。 bandplotを行うには

job_band mp-2534 -np 8 [options]

とする。job_bandの最後にoptionとして vso=1 -vnspin=2とすればSOCを摂動として加えたバンドがプロットできる。 結果はgnuplotファイルに書かれる bandplot.isp1.glt。

5. QSGW計算

QSGW計算を行うには、mkGWinput foobarでGWinputを作っておくこと。

mkGWinput ctrl.mp-2534

生成されたGWinput.tmpをあ編集してGWinputとする。 n1n2n3のk点数は小さめに取らざるをえない。Siで6x6x6が目安。 それ以外はあまりいじらない。gwscで実行できる。半導体で数回回すと良い。QPUファイルにGW計算の対角項の成分が書かれる。Mixed Produce basisのコンセプトがこのGW計算のキーになる。

QSGW計算の流れ

gwsc -np NP [--phispinsym] [--gpu] [--mp] nloop extension

(--phispinsym is for magnetic materials to keep the same basis for up and down) を実行すると、

### START gwsc: ITERADD= 1, MPI size=  4, 4 TARGET= si
===== Ititial band structure ====== 
---> No sigm. LDA caculation for eigenfunctions 
0:00:00.226245   mpirun -np 1 /home/takao/ecalj/SRC/TestInstall/bin/lmfa si     >llmfa
0:00:00.807062   mpirun -np 4 /home/takao/ecalj/SRC/TestInstall/bin/lmf  si     >llmf_lda
===== QSGW iteration start iter 1 ===
0:00:03.071054   mpirun -np 1 /home/takao/ecalj/SRC/TestInstall/bin/lmf si     --jobgw=0 >llmfgw00
0:00:03.904403   mpirun -np 1 /home/takao/ecalj/SRC/TestInstall/bin/qg4gw    --job=1 > lqg4gw
0:00:04.431022   mpirun -np 4 /home/takao/ecalj/SRC/TestInstall/bin/lmf si     --jobgw=1 >llmfgw01
0:00:05.918216   mpirun -np 1 /home/takao/ecalj/SRC/TestInstall/bin/heftet --job=1    > leftet
0:00:06.444439   mpirun -np 1 /home/takao/ecalj/SRC/TestInstall/bin/hbasfp0 --job=3    >lbasC
0:00:07.064558   mpirun -np 4 /home/takao/ecalj/SRC/TestInstall/bin/hvccfp0 --job=3    > lvccC
0:00:07.812283   mpirun -np 4 /home/takao/ecalj/SRC/TestInstall/bin/hsfp0_sc --job=3    >lsxC
0:00:08.545956   mpirun -np 1 /home/takao/ecalj/SRC/TestInstall/bin/hbasfp0 --job=0    > lbas
0:00:09.156775   mpirun -np 4 /home/takao/ecalj/SRC/TestInstall/bin/hvccfp0 --job=0    > lvcc
0:00:09.884064   mpirun -np 4 /home/takao/ecalj/SRC/TestInstall/bin/hsfp0_sc --job=1    >lsx
0:00:10.644292   mpirun -np 4 /home/takao/ecalj/SRC/TestInstall/bin/hrcxq   > lrcxq
0:00:11.482931   mpirun -np 4 /home/takao/ecalj/SRC/TestInstall/bin/hsfp0_sc --job=2    > lsc
0:00:12.460776   mpirun -np 1 /home/takao/ecalj/SRC/TestInstall/bin/hqpe_sc    > lqpe
0:00:13.019735   mpirun -np 4 /home/takao/ecalj/SRC/TestInstall/bin/lmf si     >llmf
===== QSGW iteration end   iter 1 ===
OK! ==== All calclation finished for  gwsc ====
 Comparison OK! max(abs(QPU-QPU))= 0.005000000000002558  <etol= 0.011 for QPU
 Comparison OK!  MaxDiff= 0.00019999999999997797 < tol= 0.003  for  log.si
=== EndOf si_gwsc  at  /home/takao/ecalj/SRC/TestInstall/work/si_gwsc

という感じで進行する。Cが末尾につくのはコア。lsxCでコアからの交換項への寄与が計算できる。 lsxは交換項の計算、lscが相関項の計算。lvccはクーロン行列の計算。この計算ではgwsc -np 8 1 siとしてまわしている。1はQSGWイテレーションの回数。

gwscを追加で行うと、イテレーションの回数が追加される。

計算やり直しには?

Start over Remove mix* rst* (mix* is mixing files) If MT changes, start over from lmfa (remove atm* files)

  • As long as converged, no problem.
  • If you have 3d spagetti bands at Ef, need caution.

6. 誘電関数、,ESM法、スピンゆらぎ、準粒子寿命(QSGW)、ワニエ法など(要相談)

7.lmchk

lmchk mp-2534 で結晶対称性、MT半径、重なり具合などがチェックできる。通常-3%の重なり具合になるようにしている。

  • symmetry
  • MT overlap たとえば磁性が結晶の格子の対称性より低い場合、これの表示する対称性をみて、空間群の生成子をSYMGRPのあとに加えてやる必要がある。そうするとfindで おこなったよりも低対称な計算ができる。SOCをいれて磁気モーメントを見たいときなども注意する必要あり。

memo

スピン軌道相互作用を入れたバンドプロット

method 1: only band plot

bash
job_band mp-2534 -np 8 -vso=1 -vnspin=2: band plot only

Caution: when you set nspin=2, rst is twiced. No way to move it back to rst for nspin=1.

method 2. single iteration and SO=1

bash
mpirun -np 8 lmf -vso=1 -vnspin=2 -vnit=1

job_band mp-2534 -np 8 : band plot only

method 3. full iteration SO=1

bash
mpirun -np 8 lmf -vso=1 -vnspin=2 -vnit=1

job_band mp-2534 -np 8 : band plot only

Caution: when you set nspin=2, rst is twiced. No way to move it back to rst for nspin=1.

ecalj/Samples/MgO_PROCAR

ファットバンドのサンプル.job_procarを実行する。epsができる。