地域密着型エリア広告配信リクルートの地域密着型広告ドコイク?アドネットワーク Ads by ドコイク?[無料でホームページを作成] [通報・削除依頼]
[無料でホームページを作成] [通報・削除依頼]

OpenMX

 ここではOpenMXの情報について記述する。
------------------------------------------------------------------------------
■ 特徴-1-
・ オーダーN法であり、大規模系の計算に適している
 第一原理動力学であれば通常数百原子が取り扱えるが、オーダーN法であれば数千レベルになる。
・ ノルム保存型擬ポテンシャルを用いている
 ヴァンデルビートタイプのものをノルム保存型にしている。基底関数に平面波ではなく擬原子軌道(PAO)を用いているのでノルム保存型(硬いポテンシャル)で良い
・ ノンコリニア(+ SOC) の計算が可能
 トポロジカルや磁壁のある系などの計算に用いられる
・ベリー位相の計算が可能
 分極率を計算したい系に用いる。強誘電体など
・ GGAは実空間での一次有限差分法を用いて実装
 LDAだとBCCのFeを上手く再現できないが、GGAでは上手く再現できる
・ GGAの特徴
 平均誤差:凝集エネルギー 0.3 eV, 結合長 1%程度の過大評価、Bulk modulus 5%程度の過小評価、エネルギーバリア 30%程度の過小評価
 高精度な水素結合、磁気秩序の記述などが可能
 欠点:バンドギャップ 40%程度の過小評価、vdW相互作用が上手く再現できない、強相関系で軌道分極が記述できない(d-, f-states)

■ 特徴-2-
・ コンパイルでは副作用のある-O3が使われているが、サブルーチン毎に例外処理を施して対処している。
・ mpirun でのコマンドで -nt は OpenMX独自のものとなっている。
・ メッシュの荒さ = 平面波の波長に対応
・ DNP = 2つの価電子基底(2sや2p) + 1つの分極関数基底(dやf)
 GaussianやGAMESSで用いる基底の分類の仕方に似ている
・ 軌道の重なりの大きいバルクなどでは基底関数の精度を上げると、格子定数をかなり大きくしたり小さくしたりすると、数値計算において発散が生じ、極端に負の値の全エネルギーが生じたりする。これは Overcompleteness と呼ばれる。この対処方法の一部がOpenMXにはある(scf.ProExpn.VNA off とする)。

■ 特徴-3-
・ 3つのクーロンエネルギーの和を再配分することで計算精度と効率を高めている
通常の計算では下記のようになる
 全エネルギー = 運動エネルギー + 外場とのクーロン相互作用 + Hartree  + 交換相関 + 核間クーロン
これを3つのクーロンエネルギーの和を再配分して下記のようにする
 外場とのクーロン相互作用(ローカル部分) + Hartree + 核間クーロン = 中性原子 + 差電子Hartree + 遮蔽核間反発
下記のように分類して計算精度と効率を高めている
 フーリエ変換を用いてq空間で積分:運動エネルギー、中性原子エネルギー、外場とのクーロン相互作用(非ローカル部分)
 等間隔グリッド(FFTグリッド)を用いて実空間で積分:差電子Hartreeエネルギー、交換相関エネルギー
 細グリッドを用いて実空間で積分:遮蔽核間反発エネルギー
・ FFTはポアソン方程式を解く(電荷密度ρからポテンシャルを求める)と基底関数の動径分布を求めるのに用いられる
2中心積分の計算にて、3次元積分 → FFT → 1次元積分(※ 角度方向は解析的に求められる)にすることで計算速度を向上させている。
・ 力の計算
 数値グリッドを用いているにも関わらず、任意のグリッド幅において、解析的に力の計算が実行できる

■ 特徴-4- (LCPAO法)
・ 原子様基底を用いているため、計算結果の物理的・化学的解釈が容易
・ 基底関数系は厳密には完全系ではないため、完全な収束解を得ることは難しい。しかし、物理的起源に基づく基底のため、注意深く構成された場合には比較的少ない基底関数で実質的に収束解を得ることが可能
・ 基底が局在しているため、硬い擬ポテンシャルの使用が可能。高精度な擬ポテンシャルを作成することが可能
・ 基底の局在性のため、ハミルトニアン行列の計算量と保存メモリ量がオーダーNとなる
・ 様々なオーダーN法のアイディアと整合性が良い

■ 特徴 -5-
・ 電荷密度混合法(SCF計算):Simple,  GRPulay, Kerker, RMM-DIIS, RMM-DIISK
 RMM-DIIS: 密度行列(のフーリエ変換?)に対してPulay混合する
 RMM-DIISK: 電子密度のフーリエ変換に対してPulay混合する
 RMM-DIIS, RMM-DIISKが早く収束する。多くの系でRMM-DIISKがベスト
 Kerkerは非常に収束が難しい系でbetterな選択となる
 LDA+Uの場合には、RMM-DIISの方が RMM-DIISKより収束性に優れることが時折ある
 ※ RMM-DIIS はVASPで採用されている。
・ 準ニュートン法による構造最適化: DIIS, BFGS, RF, EF
 RFとEF法の性能が良い
 ※ BFGSはAbinitで採用されている

※ q空間 = 逆格子空間である。
※ ∂E / ∂a にて微分でない形にして計算している。
※ アルカリ金属:電子が広がっている
------------------------------------------------------------------------------
■ 理論的背景(大まかな概念)
◇ コーン・シャム(KS)方程式
 3次元連立非線形微分方程式を自己無撞着に解く。
1. H = -(1/2) ∇2 + Veff 
2. H φi = εiφi
3. ρ(r) = Σφ*iφi
4. ∇2Vhartree(r) = -4πρ(r) ←ポアソン方程式
5. Veff = vext(r) + Vhartree(r) + δExc/δρ(r)
ここで、vext(r) は外場(電場や磁場など)、δExc/δρ(r) は交換相関ポテンシャル。
 1 -> 5 まで進み、得られた値を用いて1から繰り返す。この間に前回のρ(r)と今回のρ(r)を混ぜ合わせる(この電荷密度の混合法には上で記したように多くの種類がある)。1 -> 5 のサイクルを繰り返し、ρ(r)の変化がほとんどなくなれば計算終了が終了となる。
※ OpenMXでは、φにLCPAO法(擬原子軌道の線形結合で構成される波動関数)を用いている。
------------------------------------------------------------------------------
■ 重要な情報
・ マニュアル  (日本語)
http://www.openmx-square.org/openmx_man3.7jp/node1.html
http://www.openmx-square.org/openmx_man3.7jp/node149.html
※ 他のコードではありえないほどに日本語で丁寧に書かれている。下記では第一の関門であるインストールの方法について詳述した。この後は、マニュアルを見ていけばよいだろう。マニュアルの記述で難しい部分は調べて解説していく予定である。
※ このマニュアルを参考に、書いてあるように実行すれば計算できるようになっている{独習も可能}。
https://sites.google.com/site/mtoyodacmp/openmx-memo (日本語)

・ Manual (English)
http://www.openmx-square.org/openmx_man3.7/node149.html  

・ OpenMX Forum (English)
http://www.openmx-square.org/forum/patio.cgi
------------------------------------------------------------------------------
■ Install
http://www.openmx-square.org/openmx_man3.7jp/node15.html  (日本語)
http://www.openmx-square.org/openmx_man3.7/node15.html  (English)
http://www-fps.nifs.ac.jp/ito/memo/  (日本語)
http://www-fps.nifs.ac.jp/ito/memo/openmx04.html (日本語)

■ ACML 4.4.0 (gfortran , gcc) (http://www.softek.co.jp/SPG/Pgi/TIPS/acml.html)
1) mkdir acml4.4.0
2) cd acml4.4.0
3) tar zxvf acml-4-4-0-gfortran-64bit1.tgz
4) su
5) ./install-acml-4-4-0-gfortran-64bit.sh
6) gedit .bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/acml4.4.0/gfortran64_mp/lib:/usr/local/openmpi/lib

■ ACML 5.3.1 (ifort, icc) (http://www.softek.co.jp/SPG/Pgi/TIPS/acml.html)
1) mkdir acml5.3.1
2) cd acml5.3.1
3) tar zxvf acml-5-3-1-ifort-64bit.tgz
4) su
5) ./install-acml-5-3-1-ifort-64bit.sh
6) gedit .bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/acml5.3.1/ifort64_mp/lib:/usr/local/openmpi/lib

■ OpenMPI
1) http://www.open-mpi.org/
2) tar zxvf openmpi-1.4.5.tar.gz
3) cd openmpi-1.4.5
4) コンパイラにより下記のように設定
#----- Intel Compiler -----
./configure -prefix=/usr/local/openmpi CXX=icpc CC=icc FC=ifort F90=ifort F77=ifort
#
#----- gfortran, gcc, g++ -----
./configure -prefix=/usr/local/openmpi CXX=g++ CC=gcc FC=gfortran F90=gfortran F77=gfortran
#
5) make
6) su
7) make all install
□ 環境設定 ( .bashrc in home and root directory )
# OpenMPI environmental setting
export MPIROOT=/usr/local/openmpi
export PATH=$MPIROOT/bin:$PATH
export LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH
export MANPATH=$MPIROOT/share/man:$MANPATH

■ OpenMX : http://www.openmx-square.org/ (Test: 64bit, CentOS6.4, Intel Core i7-2600K)
1) tar zxvf openmx3.7.tar.gz
2) cp ./patch3.7.8.tar.gz openmx3.7/source
3) cd openmx3.7/source
4) tar zxvf patch3.7.8.tar.gz
5) gedit makefile
see manual (openmx3.7.pdf, p.13)
-----
・ GNU C and FORTRAN compilers (gcc, g++, gfortran) and the Netlib library for LAPACK and BLAS ( success, reference [2], Total Computational Time = 18.692 {Max_Time}, -np 4 & -nt 1:10.700  )
CC=mpicc -O3 -ffast-math -fopenmp -I/usr/local/openmpi/include
FC=mpif90 -O3 -ffast-math -fopenmp -I/usr/local/openmpi/include
LIB= -L/usr/local/lib -lfftw3 -llapack -lblas -lmpi_f77 -lmpi_f90
-----
・ GNU C and FORTRAN compilers (gcc, g++, gfortran) and the ACML library for LAPACK and BLAS (reference [3], success, Total Computational Time = 18.453 {Max_Time}, -np 4 & -nt 1:10.580  )
CC=mpicc -O3 -ffast-math -fopenmp -m64 -mavx -I/usr/local/openmpi/include -I/opt/acml4.4.0/gfortran64_mp/include
FC=mpif90 -O3 -ffast-math -fopenmp -m64 -mavx -I/usr/local/openmpi/include -I/opt/acml4.4.0/gfortran64_mp/include
LIB= -L/usr/local/lib -lfftw3 -lgfortran -lmpi_f77 -lmpi_f90 -L/opt/acml4.4.0/gfortran64_mp/lib -lacml_mp
-----
・ GNU C and FORTRAN compilers (gcc, g++, gfortran) and the ACML library for LAPACK and BLAS (reference [3], success, Total Computational Time = 8.796 {Max_Time}, -np 4 & -nt 1:5.374  )
CC=mpicc -O3 -ffast-math -Dxt3 -mavx -fsignaling-nans -funroll-all-loops -fopenmp -m64 -I/usr/local/openmpi/lnclude -I/opt/acml4.4.0/gfortran64_mp/include
FC=mpif90 -O3 -ffast-math -Dxt3 -mavx -fsignaling-nans -funroll-all-loops -fopenmp -m64 -I/usr/local/openmpi/lnclude -I/opt/acml4.4.0/gfortran64_mp/include
LIB= -L/usr/local/lib -lfftw3 -lgfortran -lmpi_f77 -lmpi_f90 -L/opt/acml4.4.0/gfortran64_mp/lib -lacml_mp -Wl,-rpath=/opt/acml4.4.0/gfortran64_mp/lib -Wl,-rpath=/opt/acml4.4.0/gfortran64_mp/lib
-----
・ Intel C and FORTRAN compilers (icc, ifort) and the MKL library for LAPACK and BLAS ( success, Total Computational Time = 10.842 {Max_Time}, -np 4 & -nt 1: 6.333 )
MKLROOT=/opt/intel/mkl
CC = mpicc -O3 -xHOST -openmp -I/$MKLROOT/include
FC = mpif90 -O3 -xHOST -openmp -I/$MKLROOT/include
LIB = -L/usr/local/lib -lfftw3 -L/$MKLROOT/lib/intel64/ -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lpthread -lifcore -lmpi_f77 -lmpi_f90
-----
・ Intel C and FORTRAN compilers (icc, ifort) and the MKL library for LAPACK, BLAS and FFTW3 ( success, Total Computational Time = 10.671 {Max_Time}, -np 4 & -nt 1: 6.278 )
MKLROOT=/opt/intel/mkl
CC = mpicc -O3 -xHOST -openmp -I/$MKLROOT/include
FC = mpif90 -O3 -xHOST -openmp -I/$MKLROOT/include
LIB = -L/opt/intel/composer_xe_2013/mkl/interfaces/fftw3xf -lfftw3xf_intel -L/$MKLROOT/lib/intel64/ -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lpthread -lifcore -lmpi_f77 -lmpi_f90
-----
・ Intel C and FORTRAN compilers (icc, ifort) and the ACML library for LAPACK (success, Total Computational Time = 10.613 {Max_Time}, -np 4 & -nt 1: 6.273 )
CC=mpicc -O3 -xHOST -openmp -I/usr/local/openmpi/lnclude -I/opt/acml5.3.1/ifort64_mp/include
FC=mpif90 -O3 -xHOST -openmp -I/usr/local/openmpi/lnclude -I/opt/acml5.3.1/ifort64_mp/include
LIB= -L/usr/local/lib -lfftw3 -lmpi_f77 -lmpi_f90 -L/opt/acml5.3.1/ifort64_mp/lib -lacml_mp
-----
・ Intel C and FORTRAN compilers (icc, ifort) and the ACML library for LAPACK (unsuccess for CO calculation, Total Computational Time = 9.960 {Max_Time}, -np 4 & -nt 1: 5.852 )
CC=/usr/local/openmpi/bin/mpicc -O3 -xHOST -ip -no-prec-div -openmp -I/usr/local/openmpi/include -I/opt/acml5.3.1/ifort64_mp/include
FC=/usr/local/openmpi/bin/mpif90 -O3 -xHOST -ip -no-prec-div -openmp -I/usr/local/openmpi/include -I/opt/acml5.3.1/ifort64_mp/include
LIB= -L/usr/local/lib -lfftw3 -L/usr/local/openmpi/lib -lmpi_f77 -lmpi_f90 -L/opt/acml5.3.1/ifort64_mp/lib -lacml_mp -Wl,-rpath=/opt/acml5.3.1/ifort64_mp/lib -Wl,-rpath=/opt/acml5.3.1/ifort64_mp/lib
-----
・ Intel C and FORTRAN compilers (icc, ifort) and the ACML library for LAPACK (unsuccess)
CC=mpicc -O3 -xHOST -openmp -I/usr/local/openmpi/lnclude -I/opt/acml5.3.1/ifort64_mp/include
FC=mpif90 -O3 -xHOST -openmp -I/usr/local/openmpi/lnclude -I/opt/acml5.3.1/ifort64_mp/include
LIB= -L/opt/intel/composer_xe_2013/mkl/interfaces/fftw3xf -lfftw3xf_intel -lmpi_f77 -lmpi_f90 -L/opt/acml5.3.1/ifort64_mp/lib -lacml_mp
-----
・  Intel C and FORTRAN compilers (icc, ifort) and the ACML library for LAPACK (nocheck)
DIR = /home/openmx
CC = mpicc -O3 -xHOST -ip -no-prec-div -openmp -I$(DIR)/fftw-3.3.4/include -I$(DIR)/acml-5-3-1-ifort-64bit/ifort64_mp/include
FC = mpif90 -O3 -xHOST -ip -no-prec-div -openmp
LIB = $(DIR)/fftw-3.3.4/lib/libfftw3.a -L$(DIR)/acml5.3.0/ifort64_mp/lib -acml_mp -lmpifort -Wl, -rpath=$(DIR)/acml5.3.0/ifort64_mp/lib -rpath=$(DIR)/acml5.3.0/ifort64_mp/lib
-----
6) make install
7) test (Reference: 2.6 GHz Xeron, almostly 12s)
  cd ../work
  mpirun -np 1 openmx Methane.dat -nt 1 > met.std &
8) test
  mpirun -np 4 openmx -runtest -nt 1
「runtest.result」絶対差分(diff Utot)が小数点以下7桁以内であればインストールは正常に行われたと判断できます。
9) cd ../source
  make DosMain
  make OpticalConductivityMain
  make TranMain
  make polB
  make jx
  gcc bandgnu13.c -lm -o bandgnu13
  cp bandgnu13 ../work/bandgnu13


・ before retry
make clean

[1] libg2c: http://www.softek.co.jp/SPG/Pgi/TIPS/link.html
libg2c (CentOS): yum install compat-gcc-34-g77
gfortran: yum install gfortran
libgfortran: yum install libgfortran
[2] http://www.openmx-square.org/forum/patio.cgi?mode=view&no=1710
[3] http://d.hatena.ne.jp/msr_humpy/20120421/1335025888
------------------------------------------------------------------------------
■ Run
・ OpenMPI ( 4 core )
mpirun -np 4 openmx Methane.dat -nt 1 > met.std &
or
mpirun -np 4 openmx Methane.dat -nt 1

・ OpenMPI ( 2 core ) + OpenMP (2 threads)
mpirun -np 2 openmx Methane.dat -nt 2 > met.std &
or
mpirun -np 2 openmx Methane.dat -nt 2

・ OpenMPI ( 1 core ) + OpenMP (4 threads)
mpirun -np 1 openmx Methane.dat -nt 4 > met.std &
or
mpirun -np 1 openmx Methane.dat -nt 4
------------------------------------------------------------------------------
■ JAIST及びCMSI
[1] http://www.openmx-square.org/SS09.html 
[2] http://www.openmx-square.org/workshop/meeting11/index.html 
  コードと共に詳細な記述がなされているPDF が理解を助けてくれる。
[3] http://www.openmx-square.org/workshop/SS13/
[4] http://www.cms-initiative.jp/ja/events/2014-haishin 
[5] http://www.openmx-square.org/workshop/Hands-ON14.html
------------------------------------------------------------------------------
■ 重要な情報
・ PAO = 擬原子基底軌道, VPS = 擬ポテンシャル
・ 擬ポテンシャルに含まれている荷電子数は擬ポテンシャルファイル「*.vps」の中から見つけることができます。
  valence.electron up+down
・ カットオフエネルギーは平面波法の場合のように基底系に対するものではなく、数値積分に対するものであることから、 全エネルギーは平面波基底系の場合のようにカットオフエネルギーに応じて高エネルギー領域から収束していくわけではありません。
・ 格子定数の関数としてバルク系のエネルギー曲線を計算する際には、エネルギー曲線に不連続性が現れる場合があります。 一般に、この不連続性は格子定数の変化に伴い積分に用いら エネルギー曲線上の不連続性を避けるために、キーワード「scf.Ngrid」を使うことができます。
・ 「Kerker」および「RMM-DIISK」は金属系のSCF収束を達成するための有効な方法です。
・ 「scf.Mixing.EveryPulay」は「RMM-DIISK」に対してのみ使用でき、デフォルト値は「1」であることに注意して下さい。最も推奨されるのは以下の方法です。「scf.Mixing.History」を増やす。 30から50の比較的大きな値によって収束しやすくなります。
さらに「scf.Mixing.EveryPulay」は1に設定しなければなりません。
------------------------------------------------------------------------------
■ dat (Input file)

DFT_DATA13 -> PAO(擬原子基底軌道) and VPS(擬ポテンシャル)

<Definition.of.Atomic.Species
  原子種の名前   擬原子基底軌道+プリミティブ軌道の数および縮約された軌道の数  擬ポテンシャル
Definition.of.Atomic.Species>

<Atoms.SpeciesAndCoordinates           
 1   原子種の名前  y    x    z     up down
Atoms.SpeciesAndCoordinates>

up + down = valence.electron (VPS)

以上が入力ファイルで重要な部分である。上記の部分を、workで似た計算をしているものをコピー&ペーストして用いればよい。

PAO(擬原子基底軌道) and VPS(擬ポテンシャル) : http://www.jaist.ac.jp/~t-ozaki/vps_pao2013/
Delta factor: http://www.jaist.ac.jp/~t-ozaki/vps_pao2013/Delta_Factor/index.html
------------------------------------------------------------------------------
■ 擬ポテンシャル
・擬ポテンシャルや結果のページ
 google 検索 → OpenMX → Database of VPS and PAO → Ver. 2013 ( http://www.jaist.ac.jp/~t-ozaki/vps_pao2013/ )
 上記に記載されている周期表から原子を選べば、幾つかの結果が示されている。それを参考に「 原子種の名前 」や「 擬原子基底軌道+プリミティブ軌道の数および縮約された軌道の数」を設定すればよい。

・ Soft と Hard の違い
 電子数の数が少ない方が Soft になっている。Ver. 2013 にWIEN2kと比較した結果が示されているので、気に入らなければ Hard を選択したりする。(Screened とあるものは Core Hole のタイプのものである)

・ カットオフ半径
ノルム保存でのカットオフ半径は、「元素名 + カットオフ半径.pao」として記述されている。

・ DNP = 2つの価電子基底(2sや2p) + 1つの分極関数基底(dやf)

・より適切な基底の選び方
1. 計算に用いるpao ファイルを開く
2. paoファイルには、l (lの軌道) mu(多重度) エネルギーが記載されている
3. 計算に用いる全てのpaoファイルを見比べて、エネルギーの低いものから順番に番号を付ける
4. 各原子でのpaoにおいて、番号を付けたものからlを探し、基底として選択する
5. 各原子に存在する軌道を少し上回る程度までを基底とする(精度を上げたい場合は多く入れる。3sなどになったりする。また分極関数軌道{dやf}を設定したりする)
------------------------------------------------------------------------------
■ SCF計算 + DOS

fe2val.dat
-----
#
# File Name
#

System.CurrrentDirectory         ./    # default=./
System.Name                      fe2val
level.of.stdout                   1    # default=1 (1-3)
level.of.fileout                  0    # default=1 (1-3)

#
# Definition of Atomic Species
#

Species.Number       3
<Definition.of.Atomic.Species
  Fe   Fe6.0S-s2p2d1  Fe_PBE13S
  V    V6.0-s2p2d1  V_PBE13
  Al   Al7.0-s2p2  Al_PBE13
Definition.of.Atomic.Species>

#
# Atoms
#

Atoms.Number         4
Atoms.SpeciesAndCoordinates.Unit   FRAC  # Ang|AU
<Atoms.SpeciesAndCoordinates           
 1  Fe  0.2500    0.2500    0.2500     8.0 6.0
 2  Fe  0.7500    0.7500    0.7500     8.0 6.0
 3  V   0.0000    0.0000    0.0000     8.0 5.0
 4  Al  0.5000    0.5000    0.5000     1.5 1.5
Atoms.SpeciesAndCoordinates>

Atoms.UnitVectors.Unit             Ang # Ang|AU
<Atoms.UnitVectors                     
   0.0000  2.8825   2.8825
   2.8825  0.0000   2.8825
   2.8825  2.8825   0.0000
Atoms.UnitVectors>

#
# SCF or Electronic System
#

scf.XcType                 GGA-PBE     # LDA|LSDA-CA|LSDA-PW|GGA-PBE
scf.SpinPolarization        on         # On|Off
scf.ElectronicTemperature  300.0       # default=300 (K)
#scf.energycutoff           290.0       # default=150 (Ry)
scf.Ngrid                 32 32 32   
scf.maxIter                 100        # default=40
scf.EigenvalueSolver      band         # Recursion|Cluster|Band
scf.Kgrid                 11 11 11     # means n1 x n2 x n3
scf.Mixing.Type            rmm-diisk   # Simple|Rmm-Diis|Gr-Pulay
scf.Init.Mixing.Weight     0.020       # default=0.30
scf.Min.Mixing.Weight      0.001       # default=0.001
scf.Max.Mixing.Weight      0.400       # default=0.40
scf.Mixing.History         30          # default=5
scf.Mixing.StartPulay      10          # default=6
scf.criterion             1.0e-9       # default=1.0e-6 (Hartree)
#scf.restart                 on         # On|Off

#
# MD or Geometry Optimization
#

MD.Type                     nomd       # Nomd|Opt|DIIS|NVE|NVT_VS|NVT_NH
MD.maxIter                    1        # default=1
MD.TimeStep                   1        # default=0.5 (fs)
MD.Opt.criterion         1.0e-5        # default=1.0e-4 (Hartree/bohr)

#
# DOS and PDOS
#

Dos.fileout                  on       # on|off, default=off
Dos.Erange              -20.0  20.0    # default = -20 20
Dos.Kgrid                12 12 12      # default = Kgrid1 Kgrid2 Kgrid3
-----

mpirun -np 4 openmx fe2val.dat -nt 1

DosMain fe2val.Dos.val fe2val.Dos.vec
1
1

gnuplot
set xrange [-10:6]
set xlabel "Energy / eV"
set ylabel "Density of State / eV"
plot "fe2val.DOS.Tetrahedron" w l t "Fe2VAl OpenMX3.7"



Refrences: http://www.openmx-square.org/openmx_man3.7jp/node60.html 
------------------------------------------------------------------------------
■ SCF計算 + Band dispersion

fe2val.dat
-----
#
# File Name
#

System.CurrrentDirectory         ./    # default=./
System.Name                      fe2val
level.of.stdout                   1    # default=1 (1-3)
level.of.fileout                  0    # default=1 (1-3)

#
# Definition of Atomic Species
#

Species.Number       3
<Definition.of.Atomic.Species
  Fe   Fe6.0S-s2p2d1  Fe_PBE13S
  V    V6.0-s2p2d1  V_PBE13
  Al   Al7.0-s2p2  Al_PBE13
Definition.of.Atomic.Species>

#
# Atoms
#

Atoms.Number         4
Atoms.SpeciesAndCoordinates.Unit   FRAC  # Ang|AU
<Atoms.SpeciesAndCoordinates           
 1  Fe  0.2500    0.2500    0.2500     8.0 6.0
 2  Fe  0.7500    0.7500    0.7500     8.0 6.0
 3  V   0.0000    0.0000    0.0000     8.0 5.0
 4  Al  0.5000    0.5000    0.5000     1.5 1.5
Atoms.SpeciesAndCoordinates>

Atoms.UnitVectors.Unit             Ang # Ang|AU
<Atoms.UnitVectors                     
   0.0000  2.8825   2.8825
   2.8825  0.0000   2.8825
   2.8825  2.8825   0.0000
Atoms.UnitVectors>

#
# SCF or Electronic System
#

scf.XcType                 GGA-PBE     # LDA|LSDA-CA|LSDA-PW|GGA-PBE
scf.SpinPolarization        on         # On|Off
scf.ElectronicTemperature  300.0       # default=300 (K)
#scf.energycutoff           290.0       # default=150 (Ry)
scf.Ngrid                 32 32 32   
scf.maxIter                 100        # default=40
scf.EigenvalueSolver      band         # Recursion|Cluster|Band
scf.Kgrid                 11 11 11     # means n1 x n2 x n3
scf.Mixing.Type            rmm-diisk   # Simple|Rmm-Diis|Gr-Pulay
scf.Init.Mixing.Weight     0.020       # default=0.30
scf.Min.Mixing.Weight      0.001       # default=0.001
scf.Max.Mixing.Weight      0.400       # default=0.40
scf.Mixing.History         30          # default=5
scf.Mixing.StartPulay      10          # default=6
scf.criterion             1.0e-9       # default=1.0e-6 (Hartree)
#scf.restart                 on         # On|Off

#
# MD or Geometry Optimization
#

MD.Type                     nomd       # Nomd|Opt|DIIS|NVE|NVT_VS|NVT_NH
MD.maxIter                    1        # default=1
MD.TimeStep                   1        # default=0.5 (fs)
MD.Opt.criterion         1.0e-5        # default=1.0e-4 (Hartree/bohr)

#
# Band dispersion
#

Band.dispersion              on        # on|off, default=off
<Band.KPath.UnitCell
 5.76  0.00  0.00
 0.00  5.76  0.00
 0.00  0.00  5.76
Band.KPath.UnitCell>
# if <Band.KPath.UnitCell does not exist,
#     the reciprical lattice vector is employed.
Band.Nkpath                5
<Band.kpath                
   25  0.0 0.0 0.0   1.0 0.0 0.0   g X
   25  1.0 0.0 0.0   1.0 0.5 0.0   X W
   25  1.0 0.5 0.0   0.5 0.5 0.5   W L
   25  0.5 0.5 0.5   0.0 0.0 0.0   L g
   25  0.0 0.0 0.0   1.0 0.0 0.0   g X
Band.kpath>
-----

mpirun -np 4 openmx fe2val.dat -nt 1

bandgnu13 fe2val.Band

gedit fe2val.GNUBAND
set yra [-85.175921:160.376155] -> set yra [-10:10]
gnuplot fe2val.GNUBAND


------------------------------------------------------------------------------
■ 構造最適化

fe2val.dat
-----
#
# File Name
#

System.CurrrentDirectory         ./    # default=./
System.Name                      fe2val
level.of.stdout                   1    # default=1 (1-3)
level.of.fileout                  0    # default=1 (1-3)

#
# Definition of Atomic Species
#

Species.Number       3
<Definition.of.Atomic.Species
  Fe   Fe6.0S-s2p2d1  Fe_PBE13S
  V    V6.0-s2p2d1  V_PBE13
  Al   Al7.0-s2p2  Al_PBE13
Definition.of.Atomic.Species>

#
# Atoms
#

Atoms.Number         4
Atoms.SpeciesAndCoordinates.Unit   FRAC  # Ang|AU
<Atoms.SpeciesAndCoordinates           
 1  Fe  0.2500    0.2500    0.2500     8.0 6.0
 2  Fe  0.7500    0.7500    0.7500     8.0 6.0
 3  V   0.0000    0.0000    0.0000     8.0 5.0
 4  Al  0.5000    0.5000    0.5000     1.5 1.5
Atoms.SpeciesAndCoordinates>

Atoms.UnitVectors.Unit             Ang # Ang|AU
<Atoms.UnitVectors                     
   0.0000  2.8825   2.8825
   2.8825  0.0000   2.8825
   2.8825  2.8825   0.0000
Atoms.UnitVectors>

#
# SCF or Electronic System
#

scf.XcType                 GGA-PBE     # LDA|LSDA-CA|LSDA-PW
scf.SpinPolarization        on         # On|Off
scf.ElectronicTemperature  300.0       # default=300 (K)
#scf.energycutoff           290.0       # default=150 (Ry)
scf.Ngrid                 32 32 32   
scf.maxIter                 100        # default=40
scf.EigenvalueSolver      band         # Recursion|Cluster|Band
scf.Kgrid                 11 11 11     # means n1 x n2 x n3
scf.Mixing.Type            rmm-diisk   # Simple|Rmm-Diis|Gr-Pulay
scf.Init.Mixing.Weight     0.020       # default=0.30
scf.Min.Mixing.Weight      0.001       # default=0.001
scf.Max.Mixing.Weight      0.400       # default=0.40
scf.Mixing.History         30          # default=5
scf.Mixing.StartPulay      10          # default=6
scf.criterion             1.0e-9       # default=1.0e-6 (Hartree)
#scf.restart                 on         # On|Off

#
# MD or Geometry Optimization
#

MD.Type                      opt       # Nomd|Opt|DIIS|NVE|NVT_VS|NVT_NH
MD.maxIter                    1        # default=1
MD.TimeStep                   1        # default=0.5 (fs)
MD.Opt.criterion         1.0e-5        # default=1.0e-4 (Hartree/bohr)


#
# DOS and PDOS
#

Dos.fileout                  on       # on|off, default=off
Dos.Erange              -20.0  20.0    # default = -20 20
Dos.Kgrid                12 12 12      # default = Kgrid1 Kgrid2 Kgrid3
-----

mpirun -np 4 openmx fe2val.dat -nt 1
------------------------------------------------------------------------------
■ LDA+U

fe2val.dat
-----
#
# File Name
#

System.CurrrentDirectory         ./    # default=./
System.Name                      fe2val
level.of.stdout                   1    # default=1 (1-3)
level.of.fileout                  0    # default=1 (1-3)

#
# Definition of Atomic Species
#

Species.Number       3
<Definition.of.Atomic.Species
  Fe   Fe6.0S-s2p2d1  Fe_CA13S
  V    V6.0-s2p2d1  V_CA13
  Al   Al7.0-s2p2  Al_CA13
Definition.of.Atomic.Species>

<Hubbard.U.values                 #  eV
 Fe  1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 1.80
 V   1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 1.34
 Al  1s 0.0 2s 0.0 1p 0.0 2p 0.0
Hubbard.U.values>

#
# Atoms
#

Atoms.Number         4
Atoms.SpeciesAndCoordinates.Unit   FRAC  # Ang|AU
<Atoms.SpeciesAndCoordinates           
 1  Fe  0.2500    0.2500    0.2500     8.0 6.0 on
 2  Fe  0.7500    0.7500    0.7500     8.0 6.0 on
 3  V   0.0000    0.0000    0.0000     8.0 5.0 on
 4  Al  0.5000    0.5000    0.5000     1.5 1.5 on
Atoms.SpeciesAndCoordinates>

Atoms.UnitVectors.Unit             Ang # Ang|AU
<Atoms.UnitVectors                     
   0.0000  2.8825   2.8825
   2.8825  0.0000   2.8825
   2.8825  2.8825   0.0000
Atoms.UnitVectors>

#
# SCF or Electronic System
#

scf.XcType                 LSDA-CA     # LDA|LSDA-CA|LSDA-PW|GGA-PBE
scf.Hubbard.U              On          # On|Off , default=off
scf.Hubbard.Occupation     dual        # onsite|full|dual, default=dual
scf.SpinPolarization        on         # On|Off
scf.ElectronicTemperature  300.0       # default=300 (K)
#scf.energycutoff           290.0       # default=150 (Ry)
scf.Ngrid                 32 32 32   
scf.maxIter                 300        # default=40
scf.EigenvalueSolver      band         # Recursion|Cluster|Band
scf.Kgrid                 11 11 11     # means n1 x n2 x n3
scf.Mixing.Type            rmm-diisk   # Simple|Rmm-Diis|Gr-Pulay
scf.Init.Mixing.Weight     0.020       # default=0.30
scf.Min.Mixing.Weight      0.001       # default=0.001
scf.Max.Mixing.Weight      0.400       # default=0.40
scf.Mixing.History         30          # default=5
scf.Mixing.StartPulay      10          # default=6
scf.criterion             1.0e-9       # default=1.0e-6 (Hartree)
#scf.restart                 on         # On|Off

#
# MD or Geometry Optimization
#

MD.Type                     nomd       # Nomd|Opt|DIIS|NVE|NVT_VS|NVT_NH
MD.maxIter                    1        # default=1
MD.TimeStep                   1        # default=0.5 (fs)
MD.Opt.criterion         1.0e-5        # default=1.0e-4 (Hartree/bohr)


#
# DOS and PDOS
#

Dos.fileout                  on       # on|off, default=off
Dos.Erange              -20.0  20.0    # default = -20 20
Dos.Kgrid                12 12 12      # default = Kgrid1 Kgrid2 Kgrid3
-----

mpirun -np 4 openmx fe2val.dat -nt 1

DosMain fe2val.Dos.val fe2val.Dos.vec
1
1

gnuplot
set xrange [-10:6]
set xlabel "Energy / eV"
set ylabel "Density of State / eV"
plot "fe2val.DOS.Tetrahedron" w l t "Fe2VAl OpenMX3.7"


<Hubbard.U.values                 #  eV
 Fe  1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 1.80
 V   1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 1.34
 Al  1s 0.0 2s 0.0 1p 0.0 2p 0.0
Hubbard.U.values>



<Hubbard.U.values                 #  eV
 Fe  1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 1.20
 V   1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 0.96
 Al  1s 0.0 2s 0.0 1p 0.0 2p 0.0
Hubbard.U.values>



<Hubbard.U.values                 #  eV
 Fe  1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 1.10
 V   1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 0.88
 Al  1s 0.0 2s 0.0 1p 0.0 2p 0.0
Hubbard.U.values>



<Hubbard.U.values                 #  eV
 Fe  1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 1.05
 V   1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 0.84
 Al  1s 0.0 2s 0.0 1p 0.0 2p 0.0
Hubbard.U.values>
※ もし、0.2 eV程度のギャップが空いているのならば、このUの設定が近い。


<Hubbard.U.values                 #  eV
 Fe  1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 1.05
 V   1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 0.84
 Al  1s 0.0 2s 0.0 1p 0.0 2p 0.0
Hubbard.U.values>
scf.XcType                 GGA-PBE     # LDA|LSDA-CA|LSDA-PW|GGA-PBE



<Hubbard.U.values                 #  eV
 Fe  1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 1.00
 V   1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 0.80
 Al  1s 0.0 2s 0.0 1p 0.0 2p 0.0
Hubbard.U.values>



<Hubbard.U.values                 #  eV
 Fe  1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 0.95
 V   1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 0.73
 Al  1s 0.0 2s 0.0 1p 0.0 2p 0.0
Hubbard.U.values>



<Hubbard.U.values                 #  eV
 Fe  1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 0.90
 V   1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 0.67
 Al  1s 0.0 2s 0.0 1p 0.0 2p 0.0
Hubbard.U.values>


References: http://www.openmx-square.org/openmx_man3.7jp/node90.html 
------------------------------------------------------------------------------
■ 分子動力学
※ xcrysden → xyz → .md を選択する。(構造最適化でも同様のファイルがある)
------------------------------------------------------------------------------
■ 光学伝導度
------------------------------------------------------------------------------
■ 電気伝導度

◇ Step1 電極部分
 電極部分を計算する。通常のSCF計算用の入力ファイル(dat ファイル)に下記を追加。
NEGF.output_hks on
NEGF.filename.hks lead-chain.hks

 3次元の周期系でゼロバイアス電圧下の場合には下記を追加し、Step2での計算を飛ばして、Step3 へと進む。
NEGF.Output.for.TranMain    on

openmx Lead-Chain.dat | tee lead-chain.std
ファイル「negf-chain.hks」が生成
(NEGF.Output.for.TranMain    on の場合、ステップ 3の計算に利用可能なファイル「*.tranb」を生成)

◇ Step2 <左電極|デバイス領域|右電極> -> a軸方向

 Atoms.SpeciesAndCoordinates.Unit   Ang # Ang|AU

左電極
LeftLeadAtoms.Number 3
<LeftLeadAtoms.SpeciesAndCoordinates
1 C -1.500 0.000 0.000 2.0 2.0
2 C 0.000 0.000 0.000 2.0 2.0
3 C 1.500 0.000 0.000 2.0 2.0
LeftLeadAtoms.SpeciesAndCoordinates>

デバイス領域
Atoms.Number 18
<Atoms.SpeciesAndCoordinates
1 C 3.000 0.000 0.000 2.0 2.0
.....
18 C 28.500 0.000 0.000 2.0 2.0
Atoms.SpeciesAndCoordinates>


右電極
RightLeadAtoms.Number 3
<RightLeadAtoms.SpeciesAndCoordinates
1 C 30.000 0.000 0.000 2.0 2.0
2 C 31.500 0.000 0.000 2.0 2.0
3 C 33.000 0.000 0.000 2.0 2.0
RightLeadAtoms.SpeciesAndCoordinates>

scf.EigenvalueSolver NEGF

NEGF.filename.hks.l lead-chain.hks
NEGF.filename.hks.r lead-chain.hks

NEGF.Num.Poles             100       # defalut=150
NEGF.scf.Kgrid             1 1       # defalut=1 1

NEGF.bias.voltage 0.0 # default=0.0 (eV)
NEGF.bias.neq.im.energy 0.01 # default=0.01 (eV)
NEGF.bias.neq.energy.step 0.02 # default=0.02 (eV)

openmx NEGF-Chain.dat | tee negf-chain.std
ファイル「negf-chain.tranb」が生成

◇ Step3 透過率と電流の計算
 Step2での入力ファイルに下記を加える。
NEGF.tran.energyrange -10 10 1.0e-3 # default=-10.0 10.0 1.0e-3 (eV)
NEGF.tran.energydiv 200 # default=200
NEGF.tran.Kgrid 1 1 # default= 1 1

 バイアス電圧の効果を補間法で計算する場合、下記を追加する。
NEGF.tran.interpolate         on               # default=off, on|off
NEGF.tran.interpolate.file1  c1-negf-0.5.tranb
NEGF.tran.interpolate.file2  c1-negf-1.0.tranb
NEGF.tran.interpolate.coes    0.7 0.3          # default=1.0 0.0

TranMain NEGF-Chain.dat
「negf-chain.tran0_0」、「negf-chain.current」、「negf-chain.conductance」が生成

量子化コンダクタンス [ e2/ h ] = 1 / 電気抵抗
電気抵抗 [ h / e2 ] = 4108.2316 [Ω] = 4.1 [kΩ]

References
[1] http://sstxp.ee.ous.ac.jp/dokuwiki/doku.php?id=seminar:%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%8D%98%E4%BD%8D
------------------------------------------------------------------------------
■ NEB法
------------------------------------------------------------------------------
■ ゼーベック係数の計算方法
 フェルミディラック分布の温度を変えてSCF計算し、出力される化学ポテンシャルからゼーベック係数を計算する。
※ scf.ElectronicTemperature にて温度(K)を設定する。Chemical potential の記述が出力ファイルにある。

■ ゼーベック係数の計算方法(ランダウアー理論を利用)
・ゼーベック係数の計算が可能(OpenMX + QTWARE)
1. 各k点の透過率T(ε)の計算
2. 全てのk点の透過率の平均を取ることで、バルクのバンド分散の寄与を透過率に繰り込む
3. 電子輸送計算(QTWAREにより、ゼーベック係数をランダウアー理論によって求める)
------------------------------------------------------------------------------
■ 格子定数とエネルギー曲線
------------------------------------------------------------------------------
■ STM
------------------------------------------------------------------------------
■ Fermi Surface
------------------------------------------------------------------------------
■ 電子密度分布(VESTAで描写)
https://sites.google.com/site/mtoyodacmp/openmx-memo
------------------------------------------------------------------------------
■ オーダーN法
http://www.cms-initiative.jp/ja/events/2014-haishin
------------------------------------------------------------------------------
■ クリロフ部分空間法
http://www.cms-initiative.jp/ja/events/0620yamamoto.pdf
http://suchix.kek.jp/bridge/A04/Docs/Seminar/sakurai_101008.pdf
http://202.253.248.12/gijutu/mathematics/nasoft/chap09.pdf
http://www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/1288-6.pdf
http://na-inet.jp/tutorial/chap10.pdf
------------------------------------------------------------------------------

The Matrix Eigenvalue Problem: GR and Krylov Subspace Methods
http://web.cs.ucdavis.edu/~bai/ET/contents.html
------------------------------------------------------------------------------


アクセス数
ページビュー数