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を準備
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のみ残しておけば良い(ムダファイルが大量にできているのは消して良い).
ctrlgenM1.py mp-2534
cp ctrlgenM1.ctrl.mp-2534 ctrl.mp-2534
- ctrlでセットされるいくつかの変数
- nk1,nk2,nk3
- xcfun
- ssig
- pwemax
- gmax
- so
- socaxis ctrlに書き込めるインプットの表.
3. LDA計算
lmfa,lmfの順で行う。lmfaは瞬時に終わる。初期条件のための球対称原子の計算。lmfaの出力をgrep confすると、原子の電子配置が見て取れる。lmfaは繰り返しても副作用なし。PlatQlat.chk, SiteInfo, estatpot.dat,ECOREなどのファイルができる。grep gap llmfでバンドギャップ確認。
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:
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
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
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
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ができる。