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

WIEN2k

 WIEN2kのセットアップ方法を記載します。(WIEN2k set up methods)
(WIEN2kはサイトライセンスなので、眠っているPCにWIEN2kをセットアップして、多くのモデルで計算を行ってみるとよいでしょう。高いPCを買わなくても幾つかの仕事が出来きます。構造最適化にはPWscfやABINITなどを用いるが、研究費に余裕があればVASPを選択するのもよいでしょう。VASPはWIEN2kの結果と合うように調整しているとのこと。
------------------------------------------------------------------------------
■ VASPとWIEN2kの違い
◇ WIEN2kの利点
・ほぼ最高の計算精度を誇る
・信頼性が高いので、計算結果をほぼ信頼できる
・GUI(w2web)がしっかりしているので入力ファイルからバンド分散までの計算が容易
 Youtube動画:https://www.youtube.com/watch?v=_2O38qvabZo, https://www.youtube.com/watch?v=9Us6c8CUf-E&list=PL9r3BfacS1mFU2Bc5su-fpzridiGqBOlN

◇ VASPの得意なこと
・擬ポテンシャル法を使っているので、フルポテンシャル法のWIEN2kよりも構造最適化に適している
・フォノン計算に必要なDFPTが最新版には実装されている
・他の方が作ったツールが他に比べて充実している
------------------------------------------------------------------------------
■ フォルダ名にスペース(空白)があるとエラーが出て計算が走らないので注意してください。
□ 下記は中級者及び上級者向け(初心者は飛ばしてよい)
 WIEN2kのファイルを解凍すると存在しているファイルで runsp_c_lapw などと書かれているのは、cshやtschのファイルです。それは、各Fortranプログラム(lapw0やlapw1など)、そして、オプションや関連するファイルのコピーなどを順番に実行していくように作られています。 w2webでのShow dayfile で見るよりも詳細な操作が、それらのファイルで分かりますので、何か問題があれば、それを参照してみてください。
※ hup: Command not found と表示される場合がある。これは、runsp_c_lapw などのcshファイル中に hup と記入されているためである。これが表示されていても正常に動作する。何故、cshファイル中に hup が記述されているかはいまのところ不明。
※ setenv でエラーがあった場合は、runsp_c_lapw などのファイル中で setenv の記述のある行で問題が生じている。cshやtschのファイルは他のファイルを呼び出して用いていることもあるので注意。echo "check No.1" などをcshやtschファイル中に記入してセーブし、実行して問題がある箇所を探してみるとよい。
------------------------------------------------------------------------------
■ フルポテンシャル法
 APW法やLAPW法が仮定するマフィンティンポテンシャル近似は対称性の低い系や表面・界面系では精度が低くなるばかりでなく、計算結果が仮定されるマフィンティン球の半径に大きく依存してしまう(例えば、マフィンティン球を用いたKKR法では、結晶中に存在する大きな隙間や表面や界面の何も無い空間にVacancyを入れると精度が良くなると言われている{左欄のAkai-KKRを参照})。一方、フルポテンシャル化したFLAPW法ではこの問題が解決される。
参考:笠井秀明ら著、計算機マテリアルデザイン入門、大阪大学出版会
------------------------------------------------------------------------------
■ WIEN2k version 12 で gfortran を用いた場合でのtelnes3のコンパイルエラー{読み取り長さ}の問題は解決されました。a-Mnなどでの計算はWIEN2k_v9.1以前のものを用いてください)

■ WIEN2k 12.1 を用いている皆様へ
   計算する系によっては、'LOPW' - Plane waves exhausted とエラーが表示される場合があります。対処方法は下記のメーリングリスト[EM1]にあります。下記に具体的な方法を記しますので、どうしても LOPW エラーが lopw1 で表示されてお困りの方はご検討下さい。
1. [EM1]にある  SUBROUTINE LOPW(NAT) から END までをコピーして、メモ帳などにペーストします。
2. ペーストしたファイル名を lopw.f とします。
3. WIEN2kのファイルの中の、SRC_lapw1 の中の lopw.f の名称を、元に戻したいときのために別の名称にしておいて下さい(例えば、lopw_ori.f  など)。
4. SRC_lapw1 の中に、メーリングリスト[EM1]のコードの部分をペーストして作成した lopw.f を入れます。
5. Terminal などを開いて、WIEN2kのコンパイル画面を開きます(./siteconfig と書けば思い当たる方も多いと思います)。
6. r を押して、 Compile/Reconmpile に入ります。
7. s を押して、Select program にして、 lapw1 と入力します。
8. エラーが出なければ無事にコンパイルは終了です。
※ もし、元のソースコードの方が良かった場合は、lopw.f を消して、名称を書き換えた方の lopw.f を元の名称に戻して、コンパイル( 上記5-7の作業を行う)してください。
[EM1] http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg08256.html 
------------------------------------------------------------------------------
■ segmentation fault の原因
  コンパイルに -axAVX を入れると生じることがある。その場合は、-axAVXを除く。
------------------------------------------------------------------------------
■ 直接入力ファイルを書き換える(w2webのGUIを使用しない)場合は、"_st" の無い方にしてください。変更が反映されません。
------------------------------------------------------------------------------
■ Lecture notes of the 2011 WIEN2k workshop (pdf)
http://www.wien2k.at/reg_user/textbooks/WIEN2k_lecture-notes_2011/ 
(Exercises_11.pdf と userguide を見ながら計算方法を取得すると良い)
(WIEN2kのセットアップは Blaha_WIEN2k-installation.pdf を参照すると良い)
(supercellはoctave を用いて作製しているように見える。Blaha_WIEN2k-getting_started.pdf  のP.44 を参照)
■ userguide
http://www.wien2k.at/reg_user/textbooks/usersguide.pdf
■ 理論
http://www.wien2k.at/reg_user/textbooks/DFT_and_LAPW-2_cottenier.pdf
------------------------------------------------------------------------------
■ ubnutu10.04以降ではlibstdc++.so.5がダウンロードされない。
そのため、下記のプロセスが必要となる。(ubuntu11.04 32bit, 64bit共に成功)
  1) cd /etc/apt
  2) sudo vi sources.list または sudo emacs sources.list
  3) vi の場合は、最後の行までカーソルを持っていったら o を入力
  4) deb http://ftp.nara.wide.ad.jp/debian squeeze main を入力
  5) vi の場合は、ESC を押し、その後、:wq を入力
  6) Applications を開いて、Ubuntu Software Center にて libstdc++5 を検索する
      または sudo apt-get install libstdc++5 と入力
References
[1] https://forums.ubuntulinux.jp/viewtopic.php?id=8578&action=new
[2] http://packages.debian.org/stable/base/libstdc++5
[3] http://packages.debian.org/squeeze/i386/libstdc++5/download
[4] http://tonkatsu2009.wordpress.com/category/ubuntu%E8%A8%AD%E5%AE%9A/
------------------------------------------------------------------------------
■ 必ず動くようにしたい場合( 8) の後のコンパイルでエラーが出てしまう方用 )
  1) tar -xvf WIEN2k_11.tar
  2) gunzip *.gz
  3) chmod +x ./expand_lapw
  4) ./expand_lapw
  5) ./siteconfig_lapw
  6) V gfortran + gotolib を選択
  7) gfortran, gcc を入力
  8) r を押して、-llapack_lapw -lblas_lapw -lblas -llapack
  9) ./userconfig_lapw 
  10) bash
  11) w2web
  12) tar -zxvf WIEN2k_11_executables.tar.gz
※ 12) のようにすると、WIEN2kを開発したグループがコンパイルした実行ファイルが解凍される。
※ 上手くコンパイルできない場合は、blasやlapackがインストールされているかをチェックする。
Ubuntu の場合、予めコマンドプロンプトで下記を入力することが必要。
sudo apt-get install csh
sudo apt-get install tk
sudo apt-get install gfortran
sudo apt-get install build-essential
sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev

------------------------------------------------------------------------------
■ 以下のソフトをダウンロードして下さい。( Fedora, CentOS )
Intel Fortran or C
yum install libstdc++.so.5
yum install gcc

w2web
yum install perl

XCrySDen (あると便利なソフト)
yum install Tcl
yum install Tk-Toolkit

Editer (あると便利なソフト)
yum install emacs
yum install ghostscript
yum install gnuplot
yum install pdf-reader

parallel calculation (MPIでの並列計算をしなければ、インストールしなくてもよい)
openMPI, MPICH, MPICH2, LAM or PVM and SCALAPACK and FFT

------------------------------------------------------------------------------
遠隔操作したい場合(下記の2つの方法がある)
■ RealVNC
■ Xming + putty + Firefox

------------------------------------------------------------------------------
■ 各Linux OSでのインストールのコマンド(ネットワークが利用可能な場合)
(Install command or install centre for every Linux OS.)
Linux OS : Ubuntu, Debian
sudo apt-get update or apt-get install

Linux OS : openSUSE
Software Management at Software in YaST2

Linux OS : Fedora, CentOS
yum install

------------------------------------------------------------------------------
■ 各Linux OSでのファイルのインストールコマンド(ネットワークが利用不可能な場合)
(Install command or install centre for every Linux OS.)
Linux OS : Ubuntu, Debian
  dpkg -i 
  sudo dpkg -i xxxxxx.deb

Linux OS : openSUSE 10.3
Software Management at Software in YaST2

Linux OS : Fedora, CentOS
rpm -i xxxxxx.rpm

■ Ubuntu12.04.5
http://packages.ubuntu.com/ にて、Distribution: precise とし、キーワードを入れる。
sudo dpkg -i xxxxxx.deb としてインストールする。
g++_4.6.3-1ubuntu5_amd64.deb
libstdc++6-4.6-dev_4.6.3-1ubuntu5_amd64.deb
build-essential_11.5ubuntu2_amd64.deb
dpkg-dev_1.16.1.2ubuntu7.6_all.deb
libdpkg-perl_1.16.1.2ubuntu7.6_all.deb
libtimedate-perl_1.2000-1_all.deb
csh_20110502-2ubuntu1_amd64.deb
tcsh_6.17.06-2_amd64.deb
tk_8.5.0-2_all.deb
tcl_8.5.0-2_all.deb
tk8.5_8.5.11-1_amd64.deb
tcl8.5_8.5.11-1ubuntu1_amd64.deb
libwxbase2.8-0_2.8.12.1-6ubuntu2_amd64.deb
gnuplot_4.4.3-0ubuntu3_all.deb
gnuplot-nox_4.4.3-0ubuntu3_amd64.deb
gnuplot-x11_4.4.3-0ubuntu3_amd64.deb
libxss1_1.2.1-2_amd64.deb
libwxgtk2.8-0_2.8.12.1-6ubuntu2_amd64.deb
など
---------------------------------------------------
■ セットアップ手順
tar -xvf WIEN2k_09.tar
gunzip *.gz
chmod +x ./expand_lapw
./expand_lapw
./siteconfig_lapw
./userconfig_lapw
w2web
------------------------------------------------------------------------------
■ 64 bit type OS (Standard)
Environment ( WIEN2k_14.2 )
(Fortran : ifort, C : gcc )

.bashrc
export PATH=$PATH:/opt/intel/vtune_amplifier_xe_2013
export PATH=$PATH:/opt/intel/inspector_xe_2013
source /opt/intel/bin/compilervars.sh intel64

WIEN2k
1) mkdir WIEN2k_14.2
2) cd WIEN2k_14.2
3) cp $HOME/Downloads/WIEN2k_14.2.tar .
4) tar -xvf WIEN2k_14.2.tar
5) gunzip *.gz
6) chmod +x ./expand_lapw
7) ./expand_lapw
8) continue (y/n) y
9) ./siteconfig_lapw
11) I    Linux (Intel ifort compiler (12.0 and later) + mkl )
12) specify compiler options
   1. To change an item select option.
      Compiler options=-FR -mp1 -w -prec_div -pc80 -pad -ip -DINTEL_VML -traceback -assume buffered_io -axAVX,SSE4.2,SSE4.1,SSSE3,SSE3
   2. Shared Memory Architecture? (y/n): y
   3. (like taskset -c). Enter N / your_specific_command:
   4. You need to KNOW dedtails about your installed MPI and FFTW ) n
13) ./userconfig
14) bash
15) w2web
------------------------------------------------------------------------------
■ 64 bit type OS (Advance 1)
Environment ( WIEN2k_14.2 )
(Fortran : ifort, C : gcc, FFTW: MKL)

.bashrc
export PATH=$PATH:/opt/intel/vtune_amplifier_xe_2013
export PATH=$PATH:/opt/intel/inspector_xe_2013
source /opt/intel/bin/compilervars.sh intel64

WIEN2k
1) mkdir WIEN2k_14.2
2) cd WIEN2k_14.2
3) cp $HOME/Downloads/WIEN2k_14.2.tar .
4) tar -xvf WIEN2k_14.2.tar
5) gunzip *.gz
6) chmod +x ./expand_lapw
7) ./expand_lapw
8) continue (y/n) y
9) ./siteconfig_lapw
11) I    Linux (Intel ifort compiler (12.0 and later) + mkl )
12) specify compiler options
   1. To change an item select option.
      Compiler options: -FR -mp1 -w -prec_div -pc80 -pad -ip -DINTEL_VML -traceback -assume buffered_io -axAVX,SSE4.2,SSE4.1,SSSE3,SSE3
      FFTW options: -L$(MKLROOT)/interfaces/fftw3xf -lfftw3xf_intel -I$(MKLROOT)/include
      FFTW_LIBS: -L$(MKLROOT)/interfaces/fftw3xf
   2. Shared Memory Architecture? (y/n): y
   3. (like taskset -c). Enter N / your_specific_command:
   4. You need to KNOW dedtails about your installed MPI and FFTW ) n
13) ./userconfig
14) bash
15) w2web

Error: (FFTW options: -lfftw3xf_intel -I$(MKLROOT)/include) case
------------------------------------------------------------------------------
■ 64 bit type OS (Advance 2)
Environment ( WIEN2k_14.2 )
(Fortran : ifort, C : gcc, FFTW: FFTW3)

.bashrc
export PATH=$PATH:/opt/intel/vtune_amplifier_xe_2013
export PATH=$PATH:/opt/intel/inspector_xe_2013
source /opt/intel/bin/compilervars.sh intel64

WIEN2k
1) mkdir WIEN2k_14.2
2) cd WIEN2k_14.2
3) cp $HOME/Downloads/WIEN2k_14.2.tar .
4) tar -xvf WIEN2k_14.2.tar
5) gunzip *.gz
6) chmod +x ./expand_lapw
7) ./expand_lapw
8) continue (y/n) y
9) ./siteconfig_lapw
11) I    Linux (Intel ifort compiler (12.0 and later) + mkl )
12) specify compiler options
   1. To change an item select option.
      Compiler options: -FR -mp1 -w -prec_div -pc80 -pad -ip -DINTEL_VML -traceback -assume buffered_io -axAVX,SSE4.2,SSE4.1,SSSE3,SSE3
      FFTW options: -DFFTW3 -I/usr/local/include
      FFTW_LIBS: -lfftw3_mpi -lfftw3_threads -lfftw3 -L/usr/local/lib
   2. Shared Memory Architecture? (y/n): y
   3. (like taskset -c). Enter N / your_specific_command:
   4. You need to KNOW dedtails about your installed MPI and FFTW ) n
13) ./userconfig
14) bash
15) w2web
------------------------------------------------------------------------------
■ 64 bit type OS (Expert)
Environment ( WIEN2k_14.2 )
(Fortran : ifort, C : gcc )
(FFTW: FFTW3, your installed MPI and FFTW: OpenMPI and FFTW3)

.bashrc
export PATH=$PATH:/opt/intel/vtune_amplifier_xe_2013
export PATH=$PATH:/opt/intel/inspector_xe_2013
source /opt/intel/bin/compilervars.sh intel64

WIEN2k
1) mkdir WIEN2k_14.2
2) cd WIEN2k_14.2
3) cp $HOME/Downloads/WIEN2k_14.2.tar .
4) tar -xvf WIEN2k_14.2.tar
5) gunzip *.gz
6) chmod +x ./expand_lapw
7) ./expand_lapw
8) continue (y/n) y
9) ./siteconfig_lapw
11) I    Linux (Intel ifort compiler (12.0 and later) + mkl )
12) specify compiler options
   1. To change an item select option.
      Compiler options: -FR -mp1 -w -prec_div -pc80 -pad -ip -DINTEL_VML -traceback -assume buffered_io -axAVX,SSE4.2,SSE4.1,SSSE3,SSE3
      FFTW options: -DFFTW3 -I/usr/local/include
      FFTW_LIBS: -lfftw3_mpi -lfftw3_threads -lfftw3 -L/usr/local/lib
   2. Shared Memory Architecture? (y/n): y
   3. (like taskset -c). Enter N / your_specific_command:
   4. You need to KNOW dedtails about your installed MPI and FFTW ) y
   5. Set MPI_REMOTE to 0 / 1:
   6. Your compiler: mpif90
   7. Please specify whether you want to use FFTW3 (default) or FFTW2  (FFTW3 / FFTW2)
     FFTW3
   8. Please specify the ROOT-path of your FFTW installation (like /opt/fftw3):
     /usr/local
   9. is this correct? enter Y (default) or n: y
   10. Current settings:
      RP_LIB(SCALAPACK+PBLAS): -lmkl_scalapack_lp64 -lmkl_blacs_lp64 $(R_LIBS)
      FPOPT(par.comp.options): -FR -mp1 -w -prec_div -pc80 -pad -ip -DINTEL_VML -traceback -assume buffered_io -axAVX,SSE4.2,SSE4.1,SSSE3,SSE3
13) ./userconfig
14) bash
15) w2web

Current settings:
RP_LIB(SCALAPACK+PBLAS): -lmkl_scalapack_lp64 -lmkl_blacs_lp64 $(R_LIBS)
or
RP_LIB(SCALAPACK+PBLAS): -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 $(R_LIBS)
------------------------------------------------------------------------------
■ 64 bit type CPU

Environment ( WIEN2k_09 )
Linux OS : openSUSE 11.2 (64 bit type)
CPU : intel Core2 Quad
Compiler : l_cprof_p_11.1.069_intel64
(Fortran : ifort, C : gcc )

Current settings:
O Compiler options: -FR -mp1 -w -prec_div -pc80 -pad -align -DINTEL_VML -traceback -parallel
L Linker Flags: $(FOPT) -L/opt/intel/Compiler/11.1/069/mkl/lib/em64t -pthread -i-static
P Preprocessor flags '-DParallel'
R R_LIB (LAPACK+BLAS): -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread

in /root/.bashrc,
source /opt/intel/Compiler/11.1/069/bin/ifortvars.sh intel64
source /opt/intel/Compiler/11.1/069/mkl/tools/environment/mklvarsem64t.sh
intel64

------------------------------------------------------------------------------
■ Environment ( WIEN2k_09 )
Linux OS : Debian 5.03
CPU : AMD
kernel 2.6.26-1-AMD64
Compiler :(ifort : 11.1.064, icc : 11.1.064)

O Compiler options: -FR -mp1 -msse3 -parallel -nowarn -prec-div -pad -align -DINTEL_VML -traceback -ip
L Linker Flags: $(FOPT) -L/opt/intel/Compiler/11.1/064/mkl/lib/em64t -liomp5 -lpthread
P Preprocessor flags '-DParallel'
R R_LIB (LAPACK+BLAS): -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthreads

in /root/.bashrc,
source /opt/intel/Compiler/11.1/064/bin/intel64/ifortvars_intel64.sh
source /opt/intel/Compiler/11.1/064/bin/intel64/iccvars_intel64.sh
source /opt/intel/Compiler/11.1/064/mkl/tools/environment/mklvarsem64t.sh

------------------------------------------------------------------------------
■ 32 bit type

Environment ( WIEN2k_09 )
Linux OS : CentOS 5.3 (32 bit type)
CPU : Pentium4 3.2 GHz
Compiler : l_cprof_p_11.1.069_ia32
(Fortran : ifort, C : gcc )

Current settings:
O Compiler options: -FR -mp1 -w -prec_div -pc80 -pad -align -DINTEL_VML
-traceback
L Linker Flags: $(FOPT) -L/opt/intel/Compiler/11.1/069/mkl/lib/32 -pthread
-i-static
P Preprocessor flags '-DParallel'
R R_LIB (LAPACK+BLAS): -lmkl_intel -lmkl_sequential -lmkl_core -lpthread

in /root/.bashrc,
source /opt/intel/Compiler/11.1/069/bin/ifortvars.sh ia32
source /opt/intel/Compiler/11.1/069/mkl/tools/environment/mklvars32.sh

------------------------------------------------------------------------------
■ ACMLを用いる場合(ACMLのインストール)
1) mkdir ACML_5_2_0
2) cd ACML_5_2_0
3) tar zxvf acml-5-2-0-gfortran-64bit.tgz
4) sudo ./install-acml-5-2-0-gfortran-64bit.sh
5) .bashrc にて
   export LD_LIBRARY_PATH=/opt/acml5.2.0/gfortran64/lib
   OpenMPを用いる場合は下記にする。
   export LD_LIBRARY_PATH=/opt/acml5.2.0/gfortran64_mp/lib
6) bash

□ ACMLを用いた場合のWIEN2kのセットアップ(業者様向け)
1) tar -xvf WIEN2k_11.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) Vを選択
7) gfortran, gcc を入力
8) Current settings:
    O   Compiler options: -ffree-form -O2 -m64 -ffree-line-length-none
    L   Linker Flags: $(FOPT) -L/opt/acml5.2.0/gfortran64/lib
    P   Preprocessor flags: '-DParallel'
    R   R_LIB (LAPACK+BLAS): -lacml
9) Shared Memory Architecture? (y/n): y
10) Do you have MPI and Scalapack installed and......(y/n): n
11) ./userconfig_lapw
12) bash
13) w2web
 
□ ACMLを用いた場合のWIEN2kのセットアップ(業者様向け)
OpenMP
1) tar -xvf WIEN2k_11.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) Vを選択
7) gfortran, gcc を入力
8) Current settings:
    O   Compiler options: -ffree-form -O2 -m64 -ffree-line-length-none -fopenmp
    L   Linker Flags: $(FOPT) -L/opt/acml5.2.0/gfortran64_mp/lib
    P   Preprocessor flags: '-DParallel'
    R   R_LIB (LAPACK+BLAS): -lacml_mp
9) Shared Memory Architecture? (y/n): y
10) Do you have MPI and Scalapack installed and......(y/n): n
11) ./userconfig_lapw
12) .bashrc を開いて、export OMP_NUM_THREADS= 4
13) bash
14) w2web
※ 上記だとSO(spin orbit coupling)計算のコンパイルでエラーが表示される。SOの計算が必要なければ問題は無い。
------------------------------------------------------------------------------
■ Please, reffer /opt/intel/Compiler/11.1/069/Documentation/en_US/mkl
( userguide.pdf, e.g. P49 ) and Quick-Reference Guide to Optiimization
with intel compilers version 11.

------------------------------------------------------------------------------
■ 業社様向け
1) tar -xvf WIEN2k_9.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) V gfortran + gotolib を選択
7) gfortran, gcc を入力
8) r を押して、-llapack_lapw -lblas_lapw -lblas -llapack
9) ./userconfig_lapw 
10) bash
11) w2web
参考HP : http://xinhuolin.web.officelive.com/Wien2kinUbuntu.aspx
参考文献 : http://www.ghfecher.de/Fecher_CompileIntel.pdf

□ 業社様向け (ATLAS)\
1) tar -xvf WIEN2k_11.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) V gfortran + gotolib を選択
7) gfortran, gcc を入力
8) O   specify compiler options, BLAS and LAPACK
    O   Compiler options: -ffree-form -O2 -mtune=core2 -m32
    L   Linker Flags: $(FOPT) -L/usr/local/atlas/lib
    P   Preprocessor flags '-DParallel'
    R   R_LIB (LAPACK+BLAS): -llapack_netlib_atlas -lf77blas -latlas
9) ./userconfig_lapw 
10) bash
11) w2web
※ telnes3 でエラーが出る。(これは、EELSが計算できないが、他は計算が出来る可能性があることを意味する)
TiC 収束まで 107 sec.
※  O   Compiler options:の最後に -ffree-line-length-none を追加すればtelnes3 でエラーが解決するかもしれない。

□ 業社様向け (GotoBLAS2 + OpenMP)
1) tar -xvf WIEN2k_11.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) V gfortran + gotolib を選択
7) gfortran, gcc を入力
8) O   specify compiler options, BLAS and LAPACK
    O   Compiler options: -ffree-form -O2 -mtune=core2 -m32
    L   Linker Flags: $(FOPT) -L/usr/lib -static
    P   Preprocessor flags '-DParallel'
    R   R_LIB (LAPACK+BLAS): -lgoto2 -lpthread -fopenmp
9) ./userconfig_lapw 
10) bash
11) w2web
※ telnes3 でエラーが出る。(これは、EELSが計算できないが、他は計算が出来る可能性があることを意味する)
TiC 収束まで 107 sec.
※  O   Compiler options:の最後に -ffree-line-length-none を追加すればtelnes3 でエラーが解決するかもしれない。
参考HP : http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html

------------------------------------------------------------------------------
■ BoltzTraP set up methods
(化学ポテンシャルやゼーベック係数が計算可能。緩和時間が実験的に分かれば、電気伝導度の予測も可能になる)

□ コンパイル(Compile)
1) tar xjvf BoltzTraP_1.20.tar.bz2 
2) cd boltztrap-1.2.0
3) cd src
4) 解凍されたファイルで、src と書かれたファイルを開く
5) Makefileを書き換える
  A) gfortran
    a) Netlib
      LDFLAGS = -L/usr/lib
      LIBS = -llapack -lblas
    b) ATLAS
      LDFLAGS = -L/usr/local/atlas/lib
      LIBS = -llapack_netlib_atlas -lblas_atlas -latlas
    c) GotoBLAS
      LDFLAGS = -L/usr/local/lib
      LIBS = -lgoto2 -lpthread
  B) Intel compiler (調査中)
    FC = ifort
    FOPT = -FR -mp1 -w -prec_div -pc80 -pad -ip -DINTEL_VML
    LDFLAGS =  $(FOPT) -L/home/*/intel/mkl/lib/ia32 -pthread -i-static
    LIBS = -lmkl_intel -lmkl_sequential -lmkl_core -lpthread
6) make

□ 実行方法
1) 計算させたい系の名前のファイルを作る。
2) 新しく作ったそのファイルをカレントディレクトリにする。
3) WIEN2kからのデータ(case.energy, case.struct )を入れる。
  その他に、case.intrans が必要(README.pdfに詳細がある)。
  case.intransはCoSb3のものをコピーするのもよい。その場合は下記のようにする。
  A. EFは case.dos1 または case.output2(femiで検索すると良い)で書かれている値を入力。
  B. 電子数は case.in2 での NE(Number of electron)の値を入力。
  C. NOCALC を CALC にする。
4) /home/ boltztrap-1.2.0/src/x_trans BoltzTraP と入力。
   (動作しない場合は、x_trans BoltzTraP -t と入力)
※ CoSb3, Bi2Te3, Alについてはtestsに入力ファイルの例が記してある。ReferenceにあるCoSb3.trace や Bi2Te3.trace の良い。データを Efが同じところで比較してみると良い。大体似た結果が出ていればよい。
※ Fe2VAl を計算してみると、例えばWIEN2kでは、単位胞中に価電子帯の電子はXX個の設定になる。EFは9 eVとなる。しかし、実際の試料では、アーク炉での試料作成中にAlが0.3%程蒸発して無くなる可能性もある。そこで、Alが3価だからX電子程度が無くなったと考えてEFをシフトさせてみると、ゼーベック係数の傾向は実測値と比較的よく合うようになる(更に検証中)。

□ スピントロニクスに関する研究について(編集中)
1)  他のオプションは、x_transを開けばわかる。スピントロニクスに関する研究を行うならば、-up や -dn のオプションを利用して輸送現象やゼーベック係数を検討してみるのも良いだろう。
2) 余裕があれば、他のcodeに対しても同様のプログラムを作成してみるとよい(例えば、TDDFTが利用可能なexcitingや開発中のPWscfなど)。
3) 電流 Je = J↑ + J↓ (J↑ :上向きスピンの電子の流れ。J↓:下向きのスピンのそれ)と、スピン流 Js = J↑ - J↓ を様々な物質で比較検討すればよい。
4) 「スピンホール効果:電流を流すと垂直方向にスピン流れが生じる」「逆スピンホール効果:スピン流を流すと垂直方向に電流が生じる」「スピンゼーベック効果:温度差によりスピン圧が生じる。スピン依存電気化学ポテンシャルの差『μ↑-μ↓』を計算すれば良い)。K. Uchida et al., Nature 455 (2008) 778.の論文を読んで検討してみるとよい」(磁性絶縁体でも検討してみられたい。加えて、日本物理学会誌,Vol 65, 2010. も参考にされるとよいだろう)

------------------------------------------------------------------------------
■ WIEN2PHON
1) download WIEN2kPHON :
  http://www.wien2k.at/reg_user/unsupported/WIEN2PHON.tgz
2) フォルダを作成してWIEN2PHON.tgzを入れる
3) tar zxvf WIEN2PHON.tgz
4) cd WIEN2PHON
5) cd WIEN2POSCAR
6) WIEN2POSCAR にあるMakefileでFC = ifc をFC = ifort に書き換える
7) make
8) cd ..
9) cd cellconv
10) cellconvにあるMakefileでFC = ifc をFC = ifort に書き換える
11) make
12) cd ..
13) 文献[1]を参考にperl-math-MatrixReal.pm を /usr/lib/perl5/Math/へダウンロードする(調査中)
  http://search.cpan.org/dist/Math-MatrixReal/ (Dr. G.Madsen へ交渉準備中)

□ PHON : http://www.homepages.ucl.ac.uk/~ucfbdxa/
1) mkdir PHON
2) phon.1.30.tar.Z をPHONに入れる
3) cd PHON
4) tar zxvf phon.1.30.tar.Z
5) cd blas
6) make
7) cd ../lapack
8) make
9) cd ../src
10) cp makefile.linux_ifort makefile
11) make
 
□ 実行方法(調査中)
1) WIEN2POSCAR case
  このコマンドで POSCAR が作成される
2) INPHONを作成する
  PHON のファイルにある manual.pdf を参照して作成する
3) WIEN2kで計算([run SCF] での Convergence criteria : で Force にチェック)
4) makedisp.pl case      
5) (調査中) 

------------------------------------------------------------------------------
■ Phonopy
set up methods (andLinux or Ubuntu)
1) download phonopy : https://sourceforge.net/projects/phonopy/
2) sudo apt-get install python-dev python-numpy python-matplotlib python-tk python-lxml python-yaml python-scipy
3) tar zxvf phonopy-0.9.4.3-pre8.tar.gz
4) cd phonopy*
5) sudo python setup.py install

□ scf2forces (最新のphonopyの場合は必要ない)
1) download scf2forces
2) tar zxvf SRC_scf2forces_ph0.9.4.3.tar.gz
3) cd scf2*
4) Makefile を書き換える
  FC = ifort
5) make
 
□ 実行方法(調査中)
1) ファイルを作成し、その中にcase.struct(空間群はPまたはP1であること!)を入れる
2) phonopy -d --dim="1 1 1" --wien2k=case.struct
   2x2x2のスーパーセルを作る場合: phonopy -d --dim="2 2 2" --wien2k=case.struct

◆Force constant calculation の場合(この手法は私の方では成功していない)
3) case.structSファイルが作成される
   この名称をcase-S.structなどに書き換える
4) WIEN2kでのCreate New Sessionでcase-Sを作成する
   作成されたファイルの中にcase-S.structを入れて、計算を走らせる
5) phonopyで計算する場合(調査中)
    WIEN2kで計算したファイルの中にcase-S.scfを用いて下記を実行する
    phonopy --wien2k=case.struct -f case-S.scf
6) phonopy --wien2k=case.struct 他のオプション 設定ファイル

◆Force calculation の場合
3) case.structS-001などのファイルが作成される
    これらの名称をcase-001.structなどに書き換える
4) WIEN2kでのCreate New Sessionでcase-001を作成する
   作成されたファイルの中にcase-001.structを入れて、計算を走らせる*
   (※ Dr. Evgeniya Kabliman から、[run SCF] での Convergence criteria : で Force にチェックを入れることが必要であると、丁寧に御返答を頂きました。または、-fc 0.5など)
   同様にして、002や003などがあれば計算する
5) 以下のa), b)の二通りの方法がある( 最新のphonopyを用いた場合はb)へ )
    a) scf2forcesで計算する場合
        scf2forces_ph0.9.4.3 にdisp.yaml, case-001.scf, case-001.struct などを入れる
        ./scf2forces
        case-
        case-
        FORCE_SETS が形成される。これをphonopyの計算に用いる
    b) WIEN2kで計算したファイルの中にcase-001.scfなどを用いて下記を実行する
        phonopy --wien2k=case.struct -f case-001.scf case-002.scf ......
6) phonopy --wien2k=case.struct 他のオプション 設定ファイル
    設定ファイルは下記のHPを参考に作成し、コマンドを入力すればよい
    http://phonopy.sourceforge.net/procedure.html
References : http://phonopy.sourceforge.net/index.html
http://atztogo.users.sourceforge.net/

------------------------------------------------------------------------------
■ ATA@WIEN2k (*はユーザー名です)
1) tar zxvf ATAT@WIEN2k_files_2010-08-18.tgz
2) cd ATAT@WIEN2k_files
3) ホームディレクトリの .bashrc にて下記を書き加える。
  export ATAT_DIR=/home/*/ATAT@WIEN2k_files
4)  /home/*/ATAT@WIEN2k_filesに戻って、make.inc を書き換える
  A) gfortran
    FC=gfortran
    FOPT=-O2
  B) Intel Compiler
    FC=ifort
    FOPT=-O2
5) make

□  実行方法
  (調査中)

------------------------------------------------------------------------------
■ Cubic-elastic
1) tar zxvf cubic-elastic-by-using-deriative-method.tar.gz
2) cd cubic-elastic
3) Makefile にて書き換える(makefile-exampleを参考にすればよい)
  FC = ifort
  FOPT = -FR -mp1 -w -prec_div -pc80 -pad -align -DINTEL_VML -traceback
  LDFLAGS  = $(FOPT) -L/home/*/intel/*/mkl/lib/ia32 -lpthread
4) make

□ 実行方法
  (調査中)

------------------------------------------------------------------------------
■ Hex-elastic
1) tar zxvf hex-elastic.tar.gz
2) cd hex-elastic
3) Makefile にて書き換える(makefile-exampleを参考にすればよい)
  FC = ifort
  FOPT = -FR -mp1 -w -prec_div -pc80 -pad -align -DINTEL_VML -traceback
  LDFLAGS  = $(FOPT) -L/home/*/intel/*/mkl/lib/ia32 -lpthread
4) make

□ 実行方法
  (調査中)

------------------------------------------------------------------------------
■ XCrySDenのセットアップ : http://www.xcrysden.org/XCrySDen.html
1) tar zxvf xc-1.4.1bin-linuxPC-static.tar.gz 
2) cd XCrySDen-1.4.lbin-static
3) ./xcConfigure
4) Please specify XCRYSDEN_SCRATCH directory
   (default: /home/lecture/cp120/xcrys_tmp): (enter)
5) Do you have a CRYSTAL package ([y]es/[n]o): n
6) Specify print command (default: lpr -h): (enter)
7) Do you want to enable the BABEL program ([y]es/[n]o): n
8) Do you want to enable image conversion program ([y]es/[n]o): y
9) Which image conversion program 
   (default: //bin/X11/convert): (enter)
10) Do you want to enable whirlgif program ([y]es/[n]o): n
11) Do you want to enable mpeg_encode program ([y]es/[n]o): y
12) Which mpeg_encode program
    (default: //bin/mpeg_encode): (enter)
13) Is this correct ([y]es/[n]o): y
14) Would you like to edit ~/.xcrysden/custom-definitions
   file now ([y]es/[n]o): n
以上で終了。最新版の1.5でなくても十分に他のプログラムが使える。大変良い意味で枯れたプログラムである。これまでのところ、ユーザー側で明示的にパスを通さなくても、WIEN2kやPWguiは動作してくれる。
※ Xming で用いたい場合はPrevious 1.5 versions:を選択し、semishare のものをダウンロードすれば良いだろう。
※ 上記の7) のbabelはubuntu10.04でopenbabelをインストールした場合には、y で良い。
参考HP : http://cphys.s.kanazawa-u.ac.jp/~oda/butsuri-jikken-print/node5.html

------------------------------------------------------------------------------
■ 計算の結果で論文に書く項目
1) k点の数(Brillouin zone内かirreducible wedge内のk点数)
2) Muffin-Tin半径(Rmtの値{WIEN2kで入力している値は a.u. 単位になります})
3) RmtKmaxの値(ポテンシャルと電荷密度の展開における最大のL)
4) カットオフ Gmax(case.in2の最後にある)
5) 基底関数の数(平面波の数+local orbitalsの数)
6) Core statesとvalence statesの区切りの値
以上で、1は必須、2と3は書かれている方が良い。4-6を書かれている論文は少ないが、書かれているとありがたい。

------------------------------------------------------------------------------
■ 並列化について
  複数のPCを用いて並列計算させようとすると、mpichとScalapackやfftw(gfortranの場合はより容易にインストールできる)、rshやsshの取り扱いを利用可能なように整備しなければならない。一方、CPUが複数搭載されたPCを用いる場合は、OpenMPを選択すれば、このような煩わしさがないため初学者にはお勧めであると思われる(MPIより速度は落ちると言われている)。コンパイルに不安があれば、-parallel で自動並列化してみるだけでもよい。


■ 並列化(業者様向け) <以下は調査中>
<ubuntu11.04で試行した。cd /usr/lib の後、ls または、find *blas* などと入力して、ライブラリの名称を確認する。/usr/lib の中にある liblapack.a などは -llapack として、lib を -l とし、最後の.aを除くとリンクされる{ただし、-L/usr/lib と、-L の後に ライブラリが入っているディレクトリがどこにあるかを記述しておく必要がある}。私がセットアップしたときには、ubuntu11.04でのblasはliblas.aという名称になっていたため、リンクの指定は-llasとした。新しくセットアップしたものでは改善されていた{9/9/2011}>
<左の欄にあるandLinuxでのsudo apt-get installで並列化に関係するものは入れておく>
OpenMPを用いた場合 [1] (CentOSのテストでは1 Cycleが終わらない)
1) tar -xvf WIEN2k_11.tar 
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) V gfortran + gotolib を選択
7) gfortran, gcc を入力
8) l を押して、最後の-staticを除く
9) r を押して、-llapack_lapw -lblas_lapw -llapack -lblas -fopenmp
10) Shared Memory Architecture? (y/n): y
11) Do you have MPI and Scalapack installed and......(y/n): n
12) error が出たルーチンの部分を再度コンパイルする
  oを押して、次にoを選び、最後に追加した --fopenmpi を除く
  rを押して、次にsを選び、Errorの出たルーチンを選択する(例えば、lapwso など)
13) ./userconfig_lapw
14) bash
15) w2web
※どうしてもtelnes3だけErrorが出る。
※  O   Compiler options:の最後に -ffree-line-length-none を追加すればtelnes3 でエラーが解決するかもしれない。
参考HP :
[1] http://xinhuolin.web.officelive.com/Wien2kinUbuntu.aspx
[2] http://interface.t.u-tokyo.ac.jp/home/teru/wien2k.html
参考文献 : http://www.ghfecher.de/Fecher_CompileIntel.pdf 
※ ./userconfig_lapwの後、.bashrc を開いて、export OMP_NUM_THREADS= の後にスレッドの数 を書き入れる。
参考HP:http://www2.kobe-u.ac.jp/~lerl2/l_cc_p_10.1.008/doc/main_cls/mergedProjects/optaps_cls/common/optaps_par_var.htm
http://publib.boulder.ibm.com/infocenter/comphelp/v101v121/index.jsp?topic=/com.ibm.xlf121.aix.doc/proguide/ompthreads.html


□ OpenMPIを用いた場合
1) tar -xvf WIEN2k_11.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) V gfortran + gotolib を選択
7) gfortran, gcc を入力
8) l を押して、-static を除くき、-L/usr/lib を追加
9) r を押して、-llapack_lapw -lblas_lapw -llapack -lblas
10) Shared Memory Architecture? (y/n): y
11) Do you have MPI and Scalapack installed and......(y/n): y
  Your compiler: mpif90.openmpi
  RP RP_LIB(SCALAPACK+PBLAS): -lscalapack-openmpi -lblacs-openmpi -lmpi -lfftw_mpi -lfftw 
12) ./userconfig_lapw 
13) bash
14) w2web
※どうしてもtelnes3だけErrorが出る。
※  O   Compiler options:の最後に -ffree-line-length-none を追加すればtelnes3 でエラーが解決するかもしれない。

□ MPICHを用いた場合
1) tar -xvf WIEN2k_11.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) V gfortran + gotolib を選択
7) gfortran, gcc を入力
8) l を押して、-static を除くき、-L/usr/lib を追加
9) r を押して、-llapack_lapw -lblas_lapw -llapack -lblas
10) Shared Memory Architecture? (y/n): y
11) Do you have MPI and Scalapack installed and......(y/n): y
  Your compiler: mpif90
  RP RP_LIB(SCALAPACK+PBLAS): -lscalapack-openmpi  -lblacs-openmpi -lfftw_mpi -lfftw 
  FP FPOPT(par.comp.options): -ffree-form -O2 -I/usr/lib/mpich/include
12) ./userconfig_lapw 
13) bash
14) w2web
※どうしてもtelnes3だけErrorが出る。
※  O   Compiler options:の最後に -ffree-line-length-none を追加すればtelnes3 でエラーが解決するかもしれない。
 
□ OpenMPIを用いた場合 (ATLAS, Ubuntu11.04 32bitの場合{64bitの場合は -m32を-m64へ}) 
1) tar -xvf WIEN2k_11.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) V gfortran + gotolib を選択
7) gfortran, gcc を入力
8) O   specify compiler options, BLAS and LAPACK
    O   Compiler options: -ffree-form -O2 -mtune=core2 -march=core2 -m32
    L   Linker Flags: $(FOPT) -L/usr/local/atlas/lib
    P   Preprocessor flags '-DParallel'
    R   R_LIB (LAPACK+BLAS): -llapack_netlib_atlas -lf77blas -latlas
10) Shared Memory Architecture? (y/n): y
11) Do you have MPI and Scalapack installed and......(y/n): y
    Your compiler: /usr/lib/openmpi/bin/mpif90
    RP  RP_LIB(SCALAPACK+PBLAS): -L/usr/local/atlas/lib -lscalapack_openmpi -lblacsF77_openmpi -lblacs_openmpi -llapack_netlib_atlas -lf77blas -latlas -L/usr/lib -lfftw_mpi -lfftw
     FP  FPOPT(par.comp.options): -ffree-form -O2 -mtune=core2 -m32
     MP  MPIRUN commando : mpirun -np _NP_ -machinefile _HOSTS_ _EXEC_
12) ./userconfig_lapw 
13) bash
14) w2web
※どうしてもtelnes3だけErrorが出る。 
※  O   Compiler options:の最後に -ffree-line-length-none を追加すればtelnes3 でエラーが解決するかもしれない。

□ OpenMPIを用いた場合 (ATLAS, Ubuntu11.04 32bitの場合{64bitの場合は -m32を-m64へ})
(lapw1などが成功していない)
1) tar -xvf WIEN2k_11.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) V gfortran + gotolib を選択
7) gfortran, gcc を入力
8) O   specify compiler options, BLAS and LAPACK
    O   Compiler options: -ffree-form -O2 -mtune=core2 -m32
    L   Linker Flags: $(FOPT) -L/usr/local/atlas/lib -lpthread
    P   Preprocessor flags '-DParallel'
    R   R_LIB (LAPACK+BLAS): -lptlapack_netlib_atlas -lptf77blas -latlas
10) Shared Memory Architecture? (y/n): y
11) Do you have MPI and Scalapack installed and......(y/n): y
    Your compiler: /usr/lib/openmpi/bin/mpif90
    RP  RP_LIB(SCALAPACK+PBLAS): -L/usr/local/atlas/lib -lscalapack_openmpi -lblacsF77_openmpi -lblacs_openmpi -llapack_netlib_atlas -lf77blas -latlas -L/usr/lib -lfftw_mpi -lfftw
     FP  FPOPT(par.comp.options): -ffree-form -O2 -mtune=core2 -m32
     MP  MPIRUN commando : mpirun -np _NP_ -machinefile _HOSTS_ _EXEC_
12) ./userconfig_lapw 
13) bash
14) w2web
※どうしてもtelnes3だけErrorが出る。
※  O   Compiler options:の最後に -ffree-line-length-none を追加すればtelnes3 でエラーが解決するかもしれない。

□ OpenMPI+OpenMPを用いた場合 (GotoBLAS, Ubuntu11.04 32bitの場合{64bitの場合は -m32 を -m64 へ})
1) tar -xvf WIEN2k_11.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) V gfortran + gotolib を選択
7) gfortran, gcc を入力
8) O   specify compiler options, BLAS and LAPACK
    O   Compiler options: -ffree-form -O2 -mtune=core2 -march=core2 -m32
    L   Linker Flags: $(FOPT) -L/usr/local/lib -L../SRC_lib -lpthread
    P   Preprocessor flags '-DParallel'
    R   R_LIB (LAPACK+BLAS): -lgoto2 -fopenmp -llapack_lapw -lblas_lapw
10) Shared Memory Architecture? (y/n): y
11) Do you have MPI and Scalapack installed and......(y/n): y
    Your compiler: /usr/lib/openmpi/bin/mpif90
    RP RP_LIB(SCALAPACK+PBLAS): -L/usr/local/lib -lscalapack_goto2_openmpi -lblacsF77_goto2_openmpi -lblacs_goto2_openmpi -lgoto2 -lpthread -fopenmp -L/usr/lib -lfftw_mpi -lfftw  
    FP  FPOPT(par.comp.options): -ffree-form -O2 -mtune=core2 -march=core2 -m32
    MP  MPIRUN commando : mpirun -np _NP_ -machinefile _HOSTS_ _EXEC_
12) ./userconfig_lapw 
13) bash
14) w2web
※telnes3でerrorが出る。
※ ./userconfig_lapwの後、.bashrc を開いて、export OMP_NUM_THREADS= の後にスレッドの数 を書き入れる。
  TiC: 108 sec. (2 threads)
※  O   Compiler options:の最後に -ffree-line-length-none を追加すればtelnes3 でエラーが解決するかもしれない。

 
■ 並列化(学生様向け)
root または home で 隠しファイルになっている.bashrcに下記を書き込む。
  source /opt/intel/composerxe-2011.5.220/bin/compilervars.sh ia32
上記は64bit 版の場合、ia32 ではなく intel64 となる。
 
□ OpenMPを用いた場合
1) tar -xvf WIEN2k_11.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) ヴァージョンに合わせてI, J, K, K1 を選択(ここでは11.1 のK1を選択してみる)
7) ifort, gcc を入力
8) Current settings:
    O Compiler options: -FR -mp1 -w -prec_div -pc80 -pad -ip -DINTEL_VML -traceback
    L Linker Flags: $(FOPT) -L/opt/intel/Compiler/11.1/080/mkl/lib/32 -pthread
    P Preprocessor flags '-DParallel'
    R R_LIB (LAPACK+BLAS): -lmkl_intel -lmkl_intel_thread -lmkl_core -openmp -lpthread
9) Shared Memory Architecture? (y/n): y
10) Do you have MPI and Scalapack installed and......(y/n): n
11) ./userconfig_lapw
12) bash
13) w2web
参考HP : http://xinhuolin.web.officelive.com/Wien2kinUbuntu.aspx
参考文献 : http://www.ghfecher.de/Fecher_CompileIntel.pdf 
※ -lguide を付けると lapw0でエラー、-lmkl_lapack を付けると lapw1とlapw2でエラーが出る。そのため、-lguide と -lmkl_lapack を R R_LIB (LAPACK+BLAS): から除いた。
※ ./userconfig_lapwの後、.bashrc を開いて、export OMP_NUM_THREADS= の後にスレッドの数 を書き入れる。

□ 並列化 (SCF計算まで動作確認 成功事例)
OpenMPI 
1) tar -xvf WIEN2k_11.tar
2) gunzip *.gz
3) chmod +x ./expand_lapw
4) ./expand_lapw
5) ./siteconfig_lapw
6) ヴァージョンに合わせてI, J, K, K1 を選択(ここでは 12 のIを選択する)
7) ifort, icc を入力
8) Current settings:
    O Compiler options: -FR -mp1 -w -prec_div -pc80 -pad -ip -DINTEL_VML -traceback
    L Linker Flags: $(FOPT) $(FOPT) -L$(MKLROOT)/lib/$(MKL_TARGET_ARCH) -pthread
    P Preprocessor flags '-DParallel'
    R R_LIB (LAPACK+BLAS): -lmkl_intel -lmkl_intel_thread -lmkl_core -openmp -lpthread
9) Shared Memory Architecture? (y/n): y
10) Do you have MPI and Scalapack installed and......(y/n): y
    Your compiler: /usr/local/openmpi/bin/mpif90
    RP RP_LIB(SCALAPACK+PBLAS): -lmkl_scalapack_core -lmkl_solver -lmkl_blacs_openmpi -L/usr/local/lib -lfftw_mpi -lfftw $(R_LIBS)
   FP FPOPT(par.comp.options): $(FOPT) -FR -mp1 -w -prec_div -pc80 -pad -ip -DINTEL_VML -traceback 
11) ./userconfig_lapw 
12) bash
13) w2web
参考HP : http://xinhuolin.web.officelive.com/Wien2kinUbuntu.aspx
参考文献 : http://www.ghfecher.de/Fecher_CompileIntel.pdf 

□ MPICHを用いた場合<再確認中>
ifort, icc の場合
tar zxvf fftw-2.1.5.tar.gz
cd fftw-2.1.5
  sudo su
  export CC=icc
  export F77=ifort
  ./configure --enable-mpi --enable-threads
  make
  make install

tar zxvf fftw-3.3.tar.gz
cd fftw-3.3
  sudo su
  export CC=icc
  export F77=ifort
  ./configure --enable-mpi --enable-threads
  make
  make install

  1) tar -xvf WIEN2k_11.tar
  2) gunzip *.gz
  3) chmod +x ./expand_lapw
  4) ./expand_lapw
  5) ./siteconfig_lapw
  6) ヴァージョンに合わせてI, J, K, K1 を選択(ここでは 11.1 のK1を選択する)
  7) ifort, icc を入力
  8) O specify compiler options, BLAS and LAPACK
    L Linker Flags: $(FOPT) -L/opt/intel/Compiler/11.1/080/mkl/lib/32 -pthread
    R R_LIB (LAPACK+BLAS): -lmkl_intel -lmkl_intel_thread -lmkl_core -lguide -lpthread
  9) Shared Memory Architecture? (y/n): y
  10) Do you have MPI and Scalapack installed and......(y/n): y
    Your compiler: /usr/local/mpich/bin/mpif90
    RP RP_LIB(SCALAPACK+PBLAS): -L/usr/local/lib -lscalapack -lblacs -L/opt/intel/Compiler/11.1/080/mkl/lib/32 -lmkl_solver -L/usr/local/mpich/lib -lmpich -L/usr/local/lib -lfftw_mpi -lfftw -lfftw3_mpi -lfftw3 $(R_LIBS)
   FP FPOPT(par.comp.options): $(FOPT) -FR -mp1 -w -prec_div -pc80 -pad -ip -DINTEL_VML -traceback -I/usr/local/mpich/include -I/usr/local/include
  11) ./userconfig_lapw 
  12) bash
  13) w2web
参考HP : http://xinhuolin.web.officelive.com/Wien2kinUbuntu.aspx
参考文献 : http://www.ghfecher.de/Fecher_CompileIntel.pdf
http://dft-blog.natanzon.eu/2010/03/parallel-compilation-of-wien2k-on-intel.html

http://web.kudpc.kyoto-u.ac.jp/hpc/intel

□ MPICHを用いた場合<再確認中>
  Intel Fortran Compiler (ifort)
  GCC or Intel C/C++ compiler (icc)
  Intel MKL libraries
  FFTW 2.1.5
  MPI (MPICH1)

  Fortran compiler: ifort
  C compiler: icc
  Compiler options, BLAS and LAPACK:
  O Compiler options: -FR -mp1 -w -prec_div -pc80 -pad -align -DINTEL_VML -traceback
  L Linker Flags: $(FOPT) -L/opt/intel/Compiler/11.1/069/mkl/lib/em64t -lguide -pthread
  P Preprocessor flags '-DParallel'
  R R_LIB (LAPACK+BLAS): $(FOPT) -L/opt/intel/Compiler/11.1/069/mkl/lib/em64t  -lmkl_lapack -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -pthread
  RP RP_LIB(SCALAPACK+PBLAS): -L/opt/intel/Compiler/11.1/069/mkl/lib/em64t -lmkl_intel_lp64 -lmkl_scalapack_lp64 -lmkl_blacs_lp64 -lmkl_sequential -lmkl -L/opt/mpich1/lib -lmpich -L/usr/fftw-2.1.5/mpi/.libs -lfftw_mpi -L/usr/fftw-2.1.5/fftw/.libs -lfftw
  FP FPOPT(par.comp.options): $(FOPT) -I/opt/mpich1/include
  MP MPIRUN commando : mpirun -np _NP_ -machinefile _HOSTS_ _EXEC_

参考文献:http://dft-blog.natanzon.eu/2010/03/parallel-compilation-of-wien2k-on-intel.html 
------------------------------------------------------------------------------

■ コンパイルオプション メモ(Memo: Compile Option)

  O Compiler options: -FR -mp1 -w -prec_div -pc80 -pad -align -DINTEL_VML -traceback -axSSE4.2,SSE4.1,SSSE3,SSE3
  L Linker Flags: $(FOPT) -Wl,-rpath=/opt/intel/mkl/10.1.2.024/lib/em64t -Wl,-rpath=/opt/inte/Compiler/11.0/083/lib/intel64 -L/opt/intel/mkl/10.1.2.024/lib.em64t
  P Preprocessor flags '-DParallel'
  R R_LIB (LAPACK+BLAS): $(FOPT) -lmkl_lapack -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -lpthread
 

------------------------------------------------------------------------------

■ Memo #1

◇ システムによっては、R_LIBSに -llapack_lapw -lblas_lapw -llapack_lapw -lblas_lapw のように、ライブラリを二重に指定する必要がある場合もある。それは、後ろに指定されたライブラリの中の副プログラムが、前に指定されたライブラリの中の副プログラムを呼んでいるときに、前のライブラリを繰り返し参照するようになっていないシステムの場合である。
◇ w2web でのパスワードが分からなくなってしまったら、個人の最上の(ホーム)ディレクトリにできている環境設定ディレクトリ .w2web にあるパスワードファイル .w2web/users を消去あるいは別名にしてしまえば、パスワードの指定が再度要求される。
◇ w2web で指定したポート番号は、1024 から 65536 であり、1023以下の番号は root でしか使えない。
◇ セッションは作業をするディレクトリ(通常、物質名などを付ける)のショートカット名であり、セッションの作成、消去はディレクトリの作成・消去とは関係がない。セッションの消去方法は以下のとおりである。[メイン・ウインドウ]の左側下方の [Session Mgnt. >>] をクリックして [delete session]を表示し、さらに[delete session]をクリックして先に進む。

参考文献:和光システム研究所、『個体の中の電子』、和光システム研究所

------------------------------------------------------------------------------

■ Memo #2
◆ init_lapw
◇ NN: RMT球のチェック
◇ SGROUP: 空間群
◇ SYMMETRY: 空間群
◇ LSTART: 各原子でのシュレーディンガー方程式の計算
◇ KGEN: k点メッシュの作成
◇ DSTART: 各原子での電子密度を重ね合わせる。電子密度分布ρが得られる。
◆ runSCF
◇ LAPW0: DSTARTまたは前回のSCFサイクルで作られた電荷密度分布ρからポテンシャルを作成する。ポアソン方程式を解いてρからポテンシャルVcを計算する。交換相関ポテンシャルVxcもρから計算して、ポテンシャル V = Vc + Vxc とする。
◇ ORB: LDA+Uの計算時に、LDA+UでのUをVに入れる。V=Vc+Vxc+V(+U)
◇ LAPW1: ポテンシャルを使って価電子バンドの固有値と固有ベクトルの計算をする。case.in1 の第1行にあるフラグのWFFIL を WFPRI に変えると、サブルーチン wfprint1.Fの中でエネルギー値とAPWの係数が書式にしたがってファイル case.vec (または case.output1) に出力されるから、新しい物理量の計算プログラムを書くときに使いやすい。ただし、球内の部分波の係数や動径波動関数は求め直さなければならない。<Spin orbit coupling (SOC または SO)での固有値は case.outputso に出力されるが、APWの係数は出力されない。 Blaha教授からは、SRC_lapwso/kptout.f を書き換え、case.vectorso files (unformatted) だけでなく、unit 6=case.outputso) に出力させるようにして下さいとのこと><現在では、wfprint1.Fではなくwfpnt1.F及び詳細な表示用のwfpnt.Fが使われている>
◇ LWPWSO: スピン軌道相互作用の計算
◇ LAPW2: 固有値、固有ベクトルからフェルミエネルギーや価電子の電荷密度分布を求める。
◇ LAPWDM: 密度行列を計算
◇ LCORE: 内殻電子の状態と電荷密度分布を計算する。
◇ MIXER: 次に使う電荷密度分布を新しい電荷密度分布(価電子帯の電荷密度{LAPW2で計算}と内殻の電荷密度{LCOREで計算}の合計)と古い電荷密度分布を混ぜ合わせて作る。
※ complex (平面波が複素成分)を含む計算の場合に、ファイルや処理でc が付けられる。
参考文献:和光システム研究所、『個体の中の電子』、和光システム研究所

------------------------------------------------------------------------------

■ Memo #3

◇ バンド計算を行うエネルギーの範囲の指定は、case.strcut ではなく、lapw1に対してはcase.in1 であり、電荷密度分布 lapw2 では case.in2 である。特に、前者の emax は少し大きめにとっておかないと、期待通りの計算がされない場合がある。

参考文献:和光システム研究所、『個体の中の電子』、和光システム研究所
 

------------------------------------------------------------------------------

■ Memo #4 初期化計算(initialize calc.)

※ [StructGen]画面で[set automatically RMT and continue editing]をクリックすると内接球半径に近い値がRMTに与えられる。

1)  まず、ピンク色に変っているメニュー[x nn] をクリックしてプログラム nn [Nearest Beighbour] を実行 [eXecute]する。 nn-bondinglength factor (f) を標準値 2 のままで [Execute!] をクリックする。次に進むには、画面の下の方の[initialapw]をクリックする。

 このプログラムでは、単位胞にある各原子の周りの隣接原子の座標と原子間距離のデータが作られ、後でフルポテンシャルの作成などで使われる。取り入れる原子は、距離が最隣接原子間距離(NN-dist)のf倍以内となる。

2) [wiew outputnn] をクリックして、nnの出力ファイルの1つである case.outputnn を表示する。このファイルのデータは、 結晶内の原子の距離関係などであり、一応目を通してデータの意味を想像することは有意義であろう。ここで注意すべきことは、マフィンティン半径 RMT の和が最隣接原子間距離 NN-DIST より小さくなければならないことである。次に進むには上部にある[initlapw] をクリックする。以後、[initlapw] をクリックすることは記述しない。

3) [x sgroup] をクリックしてプログラム sgroup を実行する。このプログラムでは、結晶の対称性を調べ、対称操作の行列のデータなどが case.outputsgroup に出力される。

4) [view outputsgroup] をクリックして sgroup の出力ファイルの1つである case.outputsgroup を表示する。

5) [sgroup found:] に続く場面では通常[No]を選択する。対称性の指定に過ちの警告があった場合には[Yes] を選択して、struct ファイルを取り替えるプログラムを走らせる。

6) [x symmetry] をクリックしてプログラム symmetry を実行する。

 このプログラムでは、各原子位置における対称性を調べ、各原子位置での調和関数展開の項(LM)の数を減らすために、局所的な座標軸を変換する変換行列(Local Rotation Matrix)とLMの組などが出力される。

7) [copy struct?st (and view outputs) ] をクリックしてsymmetry の出力ファイルである outputs を表示する。[copy struct_st]の下にあるコメント and view outputs は、上にある[copy strcut_st] に対するものであり、下にある[xlstart]に対するものではない。今後出てくるコメントも全て直前にある作業に対するものとなる。

8) [x lstart] をクリックしてプログラム lstart を実行する。交換相関ポテンシャルの選択と準内殻電子と価電子を区別するエネルギー値の指定を問い合わせてくるから、とりあえずディフォールト値のPBE-GGA (sol は2回微分を用いた交換相関ポテンシャル)と -6.0 のまま [Execute!] をクリックして進む(もし、エラーが出たら、このエネルギーの値を変える。内殻電子と準内殻電子は、ここで指定したエネルギーよりも 3.0 Ry 引いた値がWIEN2k側で自動的に設定される。つまり、ディフォルトの場合 -6.0 Ry となる)。

 このプログラムでは殻原子の原子状態での自己無撞着な計算が指定された交換相関ポテンシャルを用いて行われ、電荷密度を求めるほか各電子を内殻電子(1s, 2s, 2p)とするか、局所軌道を使う準内殻電子(3s, 3p)とするか、あるいは価電子(3d, 4s, 4d)とするかなどを決定する。

9) [view outputst] をクリックして lstart の出力ファイルである outputst を表示する。各原子で計算された電子状態のデータが示されるから、電荷の広がりなどを見て電子状態の分類が意図したものとなっているか調べることができる。

 この原子の計算はディフォルトでは Desclaux [1] の相対論的原子計算プログラムを使っている。

10) [check case.in1_st] をクリックして、同じく lstart の出力ファイル case.in_st を表示する。このファイルの第2行は採用すべき逆格子点の数(基底関数となるから、行列の大きさになる)を決定するパラメータ RKMAX=7.0、マフィンティン球内での波動関数の最大値(l < 10)、ポテンシャルの展開の最大値(l < 4)である。RKMAXはマフィンティン半径と逆格子ベクトルの最大値の積であり、7.0が与えられているが、LAPWを使うときは 6 〜 10、APWを使うときは 5 〜 9 でよい。以下で、軌道にLAPWを使うかAPWを使うかを、それぞれ 0 か 1 かで指定する。第3行には線形化の基準となるエネルギー値 El の標準値 0.30、以下で個別に指定する軌道の数、それ以外の軌道にLAPWを使うことを指定する 0 がある。第4行には l (方位量子数)、E0、El を求めるときのエネルギー刻みde の値、後に説明するswitch、最後にLAPWかAPWを指定する。de=0.0の場合には、Elの標準値0.30を使う。de=0.0でない場合にはE0としてバンドの中間値を探し、switch が STOP 指定していれば、中間値が見つからなかった場合に計算を中断することになる。

 局在化している3d電子、4f電子だけをAPWに指定すればよいことが多い。最後の行は計算するk点のデータファイルの入力装置識別子iuの標準値4であり、ファイル case.klist を使うことを指定し、-9.0, 1.5 は固有値(Ry単位)を探すエネルギー・ウィンドウの範囲(emin, emax)の指定である。エネルギーの高い占有されていない状態の密度(DOS)なども求めたいならば、emax を 2.0 などに変更しなければならない。変更した場合には [Save] しておく。

11) [check case.in2_st] をクリックして case.in2_st を表示する。このファイルは先の[check case.in1_st] のチェックが済むとでき上がっている。このファイルには各原子で使うLM展開のLM値が記され、電荷のフーリエ変換に使う逆講師の最大値 GMAX に12、フェルミ・エネルギーを求めるためのブリルアン・ゾーンでの積分に四面体法(TETRA)が指定されているので、必要に応じて変更する。筆者の経験だと、常磁性 Cr の SCF の計算では TETRA では収束せずGAUSS にすると収束した。

12) [check case.inm_st] をクリックして case.inm_st を表示する。このファイルには自己無撞着にする繰り返しで、新しい電荷あるいはポテンシャルの重み(mixing factor)が0.4 と指定してある。局所的なd, f 電子や磁性体を扱う場合には、もっと小さく 0.05 程度にしないと収束しないこともある。

13) [Prepare input files] をクリックすると計算に使うインプット・ファイル in0, in1, in2, inc, inm を、同名で後ろに_st の付いたファイルにコピーを作る。

14) [x kgen] をクリックしてプログラム kgen を実行する。このプログラムでは実際に計算をする k点を生成する。生成するk点を第一ブリルアン・ゾーン(BZ)の中で何点程度使うかを[Number of k-point] に指定する。 1000程度が推奨されているが、単位胞に複数の原子がある場合にはもっと少なくてよい。また、生成するk点を対称性のある重みの小さい軸上から、重みの大きい対称性の低い点(「高い点」の誤りか?)にシフトしてk点の数を減らすためには[yes]を、そうでないなら[no]を指定する。

 ただし、ガンマ点やBZの境界上の点でのエネルギー値などが重要な場合にはシフトしてはいけない。

15) [view klist] をクリックして kgen の出力ファイルである klist を表示する。x, y, z 軸のそれぞれが分割され、既約領域でk点が作られている。第一列は通し番号であり、第2〜4列は第5列で割った値がk点となる。第1行にはeminとemaxの値も記されている。

16) [x dstart] をクリックしてプログラム dstart を実行する。このプログラムでは自己無撞着にするサイクルの最初の電荷密度分布を、lstart で求めた各原子の電荷密度分布を重ね合わせて作成する。[interactively] にチェックを入れておくと、計算が済むまで他の作業は行えず、待たされる。

17) [view case.outputd] をクリックして dstart の出力ファイルである dstart を表示する。gmax > gmin であることを確認する。

 このファイルにはマフィンティン球外の平面波のKn、内部のLM展開などがある。

18) スピン偏極した計算をするかどうかを聞いてくる。常磁性物質の計算の場合[No]を選択し、初期化の計算を終える。磁性物質の場合には[Yes]を選択する。

19) [Continue with run SCF] をクリックするか、左側の[run SCF]をクリックするとSCF Cycle の画面が表示される。画面のオプションはそのままでもよいが、収束条件をより厳しくしたい場合には[charge]にチェックを入れ、その値を0.0001にする。フォノンの計算をしたい場合はForce にチェックを入れて値を設定する。下の方にある[Start SCF cycle]をクリックすると、自己無撞着サイクルが走りはじめる。左側の[Utils.]をクリックして現れるメニューにある[Show STDOUT] をクリックすると、進行状況が示される。[reload]をクリックすると最新情報に更新され、[reload in reverse order]をクリックすると逆の順に最新情報が表示される。[show dayfile] をクリックすると進行状況がわかり、最後に stop が表示されてSCF計算が終了していることが分かる。

参考文献:和光システム研究所、『個体の中の電子』、和光システム研究所

[1] J. P. Desclaux, Comp. Phys. Commun. 1 (1969) 216.
------------------------------------------------------------------------------
■ 反強磁性
1. Change Session information -> spin polarized calculation と AFM calculation にチェックを入れる。
2. スピンを入れた計算をするように設定していくが、case.inst でスピンを反平行に設定する(instgen_lapwで selected below: を選択してuとdを指定してもよい)。
Cr 1
(省略)
3, -3, 1.0 N
3, -3, 0.0 N
4, -1, 0.5 N
4, -1, 0.5 N
Cr 2
(省略)
3, -3, 0.0 N
3, -3, 1.0 N
4, -1, 0.5 N
4, -1, 0.5 N
3. Perform antiferromagnetic calc. ? -> yes -> Yes, continue -> x afminput -> case.struct を case.struct.supergroup にコピーする(例えば、別のターミナルを開いておいて、cp case.struct case.struct_supergroup とする)。
4. 回転、平行移動の値を入力して、Execute! を実行する。
5. run SCF

MacでX11のエラーが出る場合(上記3のx afminput または x_lapw afminput から下記のようにする。caseはフォルダー名に変更する)
1. vi afminput.def
-----
14, 'case.outputafminput',  'unknown','formatted', 0
15, 'case.inclmcopy_st',    'unknown','formatted', 0
16,'case.clmup',            'old',    'formatted', 0
17,'case.clmdn',            'old',    'formatted', 0
20,'case.struct',           'old',    'formatted', 0
21,'case.struct_supergroup','unknown','formatted', 0
-----
2. cp case.struct case.struct_supergroup
3. afminput afminput.def
4. 回転、平行移動の値を入力
5. view outputafminput
6. view inclmcopy_st
7. cp case.inclmcopy_st case.inclumcopy
Please, check rotation matrix.

error case
-----
   5                                              NUMBER of ATOMS to CHANGE
   1   1                                          INTERCHANGE these ATOMS
  1.00000000000  0.00000000000  0.00000000000    1    0    0 0.00000000     SYMMETRY OPERATION
  0.00000000000  1.00000000000  0.00000000000    0    1    0 0.00000000
  0.00000000000  0.00000000000  1.00000000000    0    0    1-0.00000000
-----

good case
-----
   5                                              NUMBER of ATOMS to CHANGE
   1   1                                          INTERCHANGE these ATOMS
  1.00000000000  0.00000000000  0.00000000000    1    0    0 0.00000000     SYMMETRY OPERATION
  0.00000000000  1.00000000000  0.00000000000    0    1    0 0.00000000
  0.00000000000  0.00000000000  1.00000000000    0    0    1 0.00000000
-----
8. run SCF
 
参考文献:和光システム研究所、『個体の中の電子』、和光システム研究所
------------------------------------------------------------------------------
■ Memo #4 電荷密度のプロット 3D & 2D
1. http://www.nims.go.jp/cmsc/staff/arai/wien/venus-j.html を参考にして、wien2venus.pyを"wien2venus.py"という名前で保存する。
2. Terminal 上で chmod +x wien2venus.py と入力する。または、保存したファイルを右クリックしてプロパティを開き、実行ファイルにチェックを入れる。
3. wien2venus.py を計算したいWIEN2kのディレクトリにコピー。
4. cd WIEN2kのディレクトリ
5. Terminal 上で wien2venus.py で 入れたいメッシュ数を x, y, z軸に対して入力する。
  例えば、wien2venus.py 50 50 50
 ファイルの最後にc が付いている場合は、wien2venus.py 50 50 50 -c とする。
6. case.rho3d の名称を case.rho に書き換える。
7. VESTAで case.rho を読み込む。
・ 3D: Properties... → Isosurfaces の中央にある表(No. level mode c... とある中央にある表)の中にある1を押します。Isosurface level: 右側の値を変えられるようになります。
・ 2D: Utilites → 2D data display... で専用の画面が表示されます。Slice... のボタンを押すと2D面の入力画面が表示されます。入力が済めばOK → Contours → Draw contour lines にチェックを入れると等高線が入ります。この幅は 下にある Intervalの値を小さくすれば細かくなります。
□ 原子も含める場合
・ VESTAでEdit → Struct Parameter → Import から 構造ファイル(case.struct)を読み込む
http://www.nims.go.jp/cmsc/staff/arai/wien/venus-j.html
------------------------------------------------------------------------------
■  Memo #4 剛体バンドモデルでの電荷密度のプロット
1. SCF計算を行う
2. SCF計算終了後、case.in2 の 2行目の2番目のNEの数を変える。
3. run SCF にて、一番下の run anyway を選択して、SCF計算を行う。
4. DOS を描いて剛体バンドモデル的にシフトしているかを確認する。
5. 上記の「Memo #4 電荷密度のプロット 3D & 2D」を参考にして電荷密度をプロットする。
------------------------------------------------------------------------------
■ Memo #4 電荷密度のプロット
SCF計算終了後では、準内殻電子まで表示される。
1. [El. Dens.] をクリック
2. [Electron density plots] 画面が現れる
3. [x lapw5] をクリック
4. [rhoplot] をクリック
5. [plot electron density] をクリックすれば図が表示される
表示されるエネルギー範囲を指定するには下記の様にする。
6. [edit case.in2] クリック
7. emin の値を変えて SAVE し、 [lapw2] で電荷密度分布の計算をし直す
表示される空間的な範囲を指定するには下記の様にする。
8. [case.in5] をクリック
1行目:plot の原点となる座標値(x, y, zの順に並ぶ)、第4列は分母。

例えば、 1 0 0 4 となっていれば、原点の座標は x=1/4, y=0/4, z=0/4 となる。
2行目:plot のx軸の終点と成る座標値。記述方法は1行目と同じ。
3行目:plot のy軸の終点と成る座標値。記述方法は1行目と同じ。
4行目:計算に取り入れるx, y, z 方向の単位砲の数
5行目:x, y 軸方向のメッシュ数
6行目:電荷密度分布など、プロットする物理量を指定
7行目:密度の単位(z軸)を A^{-3} とする
8行目:直交座標系を指定
9. 編集したらSAVE し、[x lapw5] , [rhoplot] を繰り返す。
10. Min, Max, Delta に値を入力して、[plot electron density] をクリック
内殻電子の電荷密度分布を計算する場合
11. [For difference densities only !] を使用する
12. [x lstart -sigma] で電子の全価電子の計算をする
13. [case.inst] で、表示したい軌道の[N] を [P] に変更する。
14. [x lapw2] をクリック
15. [case.in5] で RHO を OVER に変更すれば全電荷密度を表示できる
16. 表示が出来たら、[case.in2] でのemin の値を -9.0 に戻しておく。

------------------------------------------------------------------------------
■ Memo #4 AIM ( atoms in molecules )

□ SCF計算
1. initiallize calc. での in2_st にて、4行目以降にある「  0 0  4 0  4 4  6 0  6 4」の記述の部分を増やし(LMsが8-10になるまで記述する)、run SCFを行う(LMsを増やすには対称性に関する理解が必要なので、難しければin2_stを編集しないままAIM計算に取り組んでみるとよい)。
※ initiallize calc. での in2_st にて、4行目以降にあるLとMの変化の傾向を参考にして、LとMの値を8から10程度まで書き入れる、と良いと思う(調査中)。
※ LMsの記述は半角英数で、スペースも含めて、Lは3マス、Mは2マスで記述する。例えば、Lは「  0」や「 -1」、Mは「 0」や「 1」などである(正確にはFortran でのデータの読み込みで、LはI3、MはI2で読み込まれる。Iは整数として読み込むということ。Iの後の数値はデータを読み込む範囲{読み込む記述の幅}を指定している)。
※ WIEN2kのuserguide のcase.in2 における line 4でのL,Mについて書かれている「CAUTION: additional LM terms which do not belong to the lattice harmonics will in general not vanish and thus such terms must be omitted. Automatic termination of the lm series occurs when a second 0,0 pair appears within the list. When you change the l;m list during an SCF calculation the Broyden-Mixing is restarted in MIXER.」に注意する必要がある。

□ AIM計算
1. cd SCF計算をしたディレクトリ
2. case.inaim という名称のテキストを作る
3. WIEN2k の ユーザーガイドにある AIM の inaim をコピー&ペーストする。
SURFの次の番号は case.struct にある MULTも入れて数えたときの原子番号を入力する。それ以外はディフォルトで良いと思う。
*************
SURF
3 atom in center of surface (including MULT)
40 0.0 3.1415926536 theta, 40 points, from zero to pi
40 -0.7853981634 2.3561944902 phi
0.07 0.8 2 step along gradient line, rmin, check
1.65 0.1 initial R for search, step (a.u)
3 3 3 nshell
IRHO "INTEGRATE" rho
WEIT WEIT (surface weights from case.surf), NOWEIT
30 30 radial points outside min(RMIN,RMT)
END
*************
4. x aim
  run SCF で -c の表示があった場合は、 x aimi -c と入力する。
5. case.outputaim に結果が出力される。(最後の部分の"Z="の記述がある部分の charge がAIMでの結果のように見えるが、詳細は不明。 Bader-Charge は :RHOTOT for IND-ATOMの行を見ると良いだろう)
6. 単位胞内にある全ての原子について計算をして、トータルの電子の増減数がほぼ0になっているかを確認すると良い。

□ 境界の計算方法
境界は下記のようにして求められている。
  This is clear from Figure 5, which shows that an interatomic surface is defined by the set of trajectories that terminate at a point where (r) = 0. Thus an interatomic surface satisfies the "zero-flux" boundary condition stated in equation (1)
(rsn(rs) = 0, for every point rs on the surface S(rs) (1)
where n(rs) is the unit vector normal to the surface at rs. In words, the surface is not crossed by any trajectories of (r). An atom, as a constituent of some larger system, is itself an open system subject to fluxes in charge and momentum through its bounding surface. [2]

□ Slide show
http://www.slideserve.com/Thomas/wien2k-software-package
http://www.wien2k.at/reg_user/textbooks/WIEN2k_lecture-notes_2013/WIEN2k-getting_started.pdf

□ AIMの計算に必要なファイル
case.struct
case.clmsum
□ 入力ファイル
case.inaim
□ 出力ファイル
case.outputaim
*************
WIEN2kにあるメーリングリストの重要な記述
at the end of the AIM output you should see a line similar to this:
:RHOTOT for IND-ATOM 5 Z= 6.0 CHARGE: 7.30973 -1.30973
here you can see, that the atom integrated in this example has a Bader-Charge of -1.31 electrons.
However, if you plan to interpret these numbers you should make sure that the Bader charges of all atoms sum to zero! This is important in order to detect mistakes in the basin-boundaries or an insufficient numerical accuracy. You can easily obtain totally useless values for these charges if you fail to locate all critical points of your basin surface. When using the CRITIC code you can in addition use the value of the integrated second derivative of the electron density (the Laplacian) as a criterion which for each basin must be zero. [3]
*************
It is important to recognize that "2+" and "2-" are the valences, NOT the charges. The term "formal charges" is in my opinion dangerously misleading. Valences go back to Pauling, and are an insight into the bonding. You might find Surface Science 606 (2012) 344 and the references therein useful, or do a google search on "Bond Valence" which is the appropriate modern term.
The Bader charges are different, not really connected. They are a measure of how the charges (as against valences) are distributed. If you found Bader charges of (for instance) +1.5/-1.5 that would correspond to a very ionic compound, whereas with +0.12/-0.12 you have a covalent compound. (Please note that I have put the sign in front when I mean real electrostatic charges, as against after when it is a valence -- this is deliberate.) The fact that some of the charge is in the interstitial, i.e. outside the muffin-tins is not relevant to much. N.B., if you do "x nn ; grep -e Bond *tnn " you get the Bond Valences for oxides and a few other combinations, not sure about FeTe. [11]
*************
With respect to the second question, you can get an estimate of the nett charge on an atom from the output at the bottom of the output from case.outputaim (if you are running just one atom); I've never tested using it for more than one atom. Please note that I deliberately said "estimate of the nett charge". There are two reasons for this:
1) The Bader charge, which is what the code approximates, is a useful measure, but it is not really something that you can measure experimentally. It is probably safest to only use it as a comparative measure.
2) The calculation is quite hard to do numerically with a reasonable degree of accuracy. In addition to needing a very well converged density (with LM's beyond just 6) the numerical errors can be relatively severe. I would not want to trust the values to more than 0.01 electrons.[14]

*************
□ critic code [4-8]
□ Born effective charge (Born 有効電荷)の計算方法[9, 10]


References:
[1] WIEN2k userguide: AIM
[2] http://www.aim2000.de/
[3] http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg06797.html
[4] http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg06792.html
[5] http://azufre.quimica.uniovi.es/software.html
[6] http://iopscience.iop.org/1402-4896/86/2/025706
[7] http://www.sciencedirect.com/science/article/pii/S092145261200590X
[8] http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg07271.html
[9] https://github.com/spichardo/BerryPI/tree/master/tutorials/tutorial2
[10] http://www.nims.go.jp/cmsc/staff/arai/memo/kyushu/example2.pdf
[11] http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg07272.html
他の重要な記述
[12] http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg00313.html
[13] http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg00319.html
[14] http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg00322.html
[15] http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg06417.html
[16] http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg05720.html
論文
[17] http://zdsys.web.xtu.edu.cn:8081/xiangxinhuaeWebEditor_V280_Free_sp1/UploadFile/201292183922683.pdf
------------------------------------------------------------------------------
■ Memo #4 DOSとバンド図
基本的に濃い灰色の行を除いて上から順にボタンを押していけばよい。
(バンド分散のところにある濃い灰色の部分は各原子の起動におけるバンド分散を計算するためのもの。バンド分散だけ必要であればボタンを押す必要は無い)
------------------------------------------------------------------------------
■ Total DOSの出力結果
 case.structに記載されている原子の数だけ計算されます。代表的な原子座標を記述すると等価な原子が自動的に記載されていることが分かります。その数の合計と各原子でのDOSが一致します。そのため、case.strcutに記載されている等価な原子の数でDOSを割ることで、単位は[Density of states / eV. atom] になります。同様に、Total DOS でもcase.structに記載されている原子数で割り[Density of states / eV. atom]にします。[Density of states / eV. unitcell]ではないので注意してください。
 Total DOS = Σ Partial DOS + interstitial DOS (case.struct の Inewuivalent Atoms と edit case.int のAtomが対応)
 Total DOS = Total DOS (up) + Total DOS (down)
※ 単位胞内での原子数が分かっている場合は、Total DOSが下記のようにして出力されます。
1) BCC: 全原子*1/2個 (case.structで記述されている原子の数と同じになることが分かる)
 得られた Total DOS を 2 倍すると [Density of states / eV. unitcell] になる。
2) FCC: 全原子*1/4個 (case.structで記述されている原子の数と同じになることが分かる)
 得られた Total DOS を 4 倍すると [Density of states / eV. unitcell] になる。
3) HCP: 全原子(case.structで記述されている原子の数と同じになることが分かる)
 得られた Total DOS を 1 倍すると [Density of states / eV. unitcell] になる。
4) SC: 全原子(case.structで記述されている原子の数と同じになることが分かる)
 得られた Total DOS を 1 倍すると [Density of states / eV. unitcell] になる。
※ case.dos1(Ryでの出力。integrated DOSも出力される)
 Ry → eVへの変換: (Energy - EF)*13.6058, DOS / 13.6058 とする。
 EF値は、case.dos1の二行目の一番最初に記載されている。
※ case.dos1eV(eVでの出力。EFが0の位置に自動的に調整されている)

------------------------------------------------------------------------------
■ Memo #4 各成分に対するバンド図プロット
1. 濃い灰色の部分の2下の方のボタンを押す。
2. case.insp において、jatom のある行で、最初の部分に原子を、二番目に軌道の番号を入力する。入力の番号はDOSと同じ。(jatomが原子の番号、jtypeが軌道の番号)
------------------------------------------------------------------------------
■ Memo #4 格子定数 最適化計算
※ 慣れてきたら、格子定数最適化から始めるとよいであろう。
1. [StructGenTM]にて、[set automatically RMT and continue esiting]でReduce RMTs by %のところに数値を入れる。私は5にしている。
2. [runSCF]まで進んだら、[optimize(V,c/a)]に進む。
3. Generate structure files from でチェックを入れる。複数ある場合は、最初のものを選択すれば安全だろう。
4. optimizer では上から好きな手法での最適化を選択する。例えば、A, B, C軸の全てを最適化する場合は6)を選択する。次に、For option で、選択した数値に対応する行を探す。ここでは6)を選択したので、For option 6:の行を選択する。最初の数値では27を選択してみる。
5. edit optimize.jop では、最初に#が書かれているコメントの部分に従う。
  # x dstart # -c ← non spin の場合はこの行の最初の#を消す。
  # x dstart -up # -c  ← spinを考慮に入れた計算の場合はこの行の最初の#を消す。
  # x dstart -dn # -c ← spin を考慮に入れた計算の場合はこの行の最初の#を消す。
  run_lapw -ec 0.0001 # -p -it ← spinを入れた場合はこの行の最初に#を付ける。
  # runsp_lapw -ec 0.0001 ← spin を考慮に入れた計算の場合はこの行の最初の#を消す。
  ※ -c の前の#は、runSCFを走らせたときに -c が付いてたかを調べ、-c が付いていたら # を消す。
  必要ならば、save_lapw ${1} ← save_lapw ${1}_pbe などとファイルの種類分けをするために記入する。
 以上の変更が終わったら SAVE。
6. run optimize.job を押して計算を開始させ、[View STDOUT]を押す。上手くLAPW0やLAPW1などのrunSCFと同じように計算が走るようになれば成功。
7. plot を押して、右に出来る欄にある * の直後に、save_lapw ${1}の後に書き入れた文字を書き入れて plot を押す。
※ 元の構造よりも大きな原子半球の原子に置換した場合には、負の値のものは絶対値で正の値ほど大きな値が必要ないことが私の経験では多い(例えば、STOに金属元素をドープする場合には格子定数が-0.2%の変化でよい場合などもある。XRDであらかじめ調べておくのもよいだろう)。慣れて、経験を積んできたら、負の値の指定は少なくしておくこともよいだろう。例えば、-2%, 1%, 5%, 10% というように体積を増やすように指定するなど。(ここでの入力では負の値から正の値へ、そして、絶対値の大きなものから入力していくと、最後でエラーになるといったことが避けられる。例えば、-0.2%, 1.5%, 1.0%, 5%, 2%, 0.2% など。最低限必要な点数は分からないがc/aの計算などでは6点あれば大丈夫だろう )。0%の値は必要ないかもしれないと考えている。
※ 格子定数の最適化の計算に失敗した場合は、残っているcase.strcut ファイルを使うことは避ける(エラーの出た最後の方の構造が case.strcut ファイルになっている為)。格子定数の最適化の計算をする前に、case.struct は別名にしたり、別のファイルに保存しておき、格子定数の計算に失敗した場合は、計算前に保存しておいたファイルを用いるとよい。そして、エラーの出た値よりも小さな値を選択して格子定数の最適化の計算をし直す(計算速度を早くするために、PCの再起動も忘れずに!)。
※ スーパーセルを作成して最適化する場合は、意図的に格子定数が長くなる方向の軸を長くして、空間群をより最適化に適したものにすることが良いと思われる。エラーの発生率が低くなる。当然Pなどの空間群指定の方が良さそうだが時間が掛かる。VASPやPWscf、ABINITなどで最適化した値を使うのも手だろう(そちらの方が安全で早いかも……)。
※ 上記の手法でも上手く行かないことも多い。現在は、PWscfやXRDでの結果から、原子位置と格子定数を固定して、WIEN2kで計算する効率的な手法を模索中である。
※ 最後まで終わった後で、構造が変わっていた場合は、Pにしていないかを調べる。P1としておくと変更されることが少ない。つまり、VESTAなどで cif 形式 にして入力ファイルを作るとよい。

■ unit ( Equation of state: Murnaghan )
Volume (bohr^3 / atom)
Volume = Lattice parameters (bohr) ^3 / XX, Inequivalent Atoms: XX
http://www.mail-archive.com/wien%40zeus.theochem.tuwien.ac.at/msg10272.html
------------------------------------------------------------------------------
■ Memo #4 原子位置の緩和(格子定数固定)
1. run_SCF で Force にチェックを入れる
2. mini. positions で MSR1a の Change case.inm and goto ecf-execution を押す
3. Continue with [ run SCF ] を押す 
参考文献: http://www.wien2k.at/reg_user/textbooks/WIEN2k_lecture-notes_2011/Exercises_11.pdf

------------------------------------------------------------------------------
■ Memo #4 格子定数+原子位置の緩和
※ 慣れてきたら、格子定数最適化から始めるとよいであろう。
1. [StructGenTM]にて、[set automatically RMT and continue esiting]でReduce RMTs by %のところに数値を入れる。私は5にしている(10など大きな値でも時間は掛かるが計算精度は変わらないといわれている)。
2. [runSCF]まで進んだら、[optimize(V,c/a)]に進む。
3. Generate structure files from でチェックを入れる。複数ある場合は、最初のものを選択すれば安全だろう。
4. optimizer では上から好きな手法での最適化を選択する。
5. edit optimize.jop では、最初に#が書かれているコメントの部分に従う。
  # x dstart # -c ← non spin の場合はこの行の最初の#を消す。
  # x dstart -up # -c  ← spinを考慮に入れた計算の場合はこの行の最初の#を消す。
  # x dstart -dn # -c ← spin を考慮に入れた計算の場合はこの行の最初の#を消す。
  run_lapw -ec 0.0001 # -p -it ← spinを入れた場合はこの行の最初に#を付ける。
  # runsp_lapw -ec 0.0001 ← spin を考慮に入れた計算の場合はこの行の最初の#を消す。
  # min -I -j "run_lapw -I -fc 1.0 -i 40 " ←  原子位置の緩和を考慮に入れた計算の場合はこの行の最初の#を消す。
  ※ -c の前の#は、runSCFを走らせたときに -c が付いてたかを調べ、-c が付いていたら # を消す。
  必要ならば、save_lapw ${1} ← save_lapw ${1}_pbe などとファイルの種類分けをするために記入する。
 以上の変更が終わったら SAVE。
6. run optimize.job を押して計算を開始させ、[View STDOUT]を押す。上手くLAPW0やLAPW1などのrunSCFと同じように計算が走るようになれば成功。
7. plot を押して、右に出来る欄にある * の直後に、save_lapw ${1}の後に書き入れた文字を書き入れて plot を押す。

------------------------------------------------------------------------------
■ Memo #4 内殻空孔の導入と伝導帯に電子の追加
1. スーパーセルを作成
2. case.inc で空孔にしたい電子のOCCUPを2→1にする。
3. case.in2のNEの値を+1する。
4. run scf
5. case.in2のNEの値を元に戻す。
6. task → XSPEC や TELNES3 を行う。
参考文献: http://interface.t.u-tokyo.ac.jp/home/teru/wien2k.html 
http://www.wien2k.at/reg_user/textbooks/WIEN2k_lecture-notes_2011/Blaha_xas_eels.pdf

------------------------------------------------------------------------------
■ Memo #4 内殻空孔の導入と伝導帯に電子の追加(詳細)
WIEN2kでのXASの計算のさせ方(常に単位、bohrならbohr かを確認して下さい)

■ 基本的な入力ファイルの作成
1. Execution → StructGen →  Number of atoms に inequivalent な原子の数(代表的となる原子の数)を入力する。
2. Lattice: の欄から空間群を選らんで青色のラインが掛かるようにする。
3. Lattice parameters を入力。
4. Atom1 の直ぐ右の欄に原子記号を入力する。続いて、Pos 1:のある行の x, y, z へ座標を入力する。
5. Save Structure → set automatically RMT and continue editing → do it
6. Save Structure → save file and clean up

■ スーパーセルの作成
1. Execution → single prog. → Other programs にある supercell にチェックを入れる → Execute !
2. Number of cells in x direction にx軸方向で拡張したい倍率を入力(同様に y, z も入力)
3. Enter your target lattice type: で指定した空間群の分類に対応するものを選択する。(基本的な入力ファイルの作成でLattice で選んだ記号で P があればP, FがあればF, BがあればBを選択する)→ Execute !
4. Files → struct file(s) → super.struct とあるファイルの行の一番左をクリック → Copy の行にある最後の/の次から同じ行の最後までの文字をコピーして to の横にある枠に入れる → _super を削除する → copy it
5. Execution → StructGen

■ hole または 置換系をする原子の種類分け
1. Execution → StructGen → edit STRUCT file → 目的の座標の原子が1原子だけで inequivalent になっていない場合は 対応する座標の右にあるsplit を押す → 目的の座標の原子(置換やholeを入れる原子)の左から二番目の欄だけに他と異なった数値を入力する(他が空白であれば、目的の座標の原子だけ1を入力) 。置換する場合は原子記号も変える。
2. Save Structure → set automatically RMT and continue editing → do it
3. Save Structure → save file and clean up
4. Execution → initialize calc. → x nn (→ Execute! → initlapw ) → view outputnn (→ initlapw ) → x group ( → initlapw ) → view outputsgroup ( → initlapw ) → Yes → x symmetry ( → initlapw )
5. copy struct_st ( → initlapw ) → x lstart ( → Execute! → initlapw ) → view outputst ( → initlapw ) 等々と順番に押していく。
   ※ 面倒な場合は Expert : で必要な情報(select spin-polarized calulation の場合はチェックを入れて、use X k-points in full BZ (default: 1000) にk点を入力{2x2x2なら130、 3x3x3なら37、半導体や絶縁体ならさらに1/4〜1/5倍する})を入力して、CHECK BATCH VALES → RUN BATCH INITIAKISATION

■ hole の導入と valence electron の追加
1. Files → input.files → .inc のあるファイルを選択し、hole にする原子の軌道のOCCUPを2から1にする。NUMBER OF ORBITALS の組は StructGenのinequivalent atomの順番に並んでいる。(KAPPAはWIEN2k のUserguideにある。nは主量子数)→ Save
2. Files → input.files → .in2 のあるファイルを選択し、2行目の左から二番目の数値を+1する → Save

■ 並列計算の設定
1. Utils → edit .machines → 1:localhost の行を CPUの数と同じにする → save

■ SCF計算の実行
1. run SCF → parallel にチェックを入れる → start SCF cycle

■ XSPEC の計算
1. Tasks → XSPEC → .in1 の一番最後の行の左から二番目の数値を2.5から4.5にする → save → continue with xspec
2. x lapw1
3. Files → input.files → .inc のあるファイルを選択し、2行目の左から二番目の数値を-1する → Save
4. x lapw2 -qtl
5. .inxsで atom と n colre と l core の値を書き換え、S(装置の分解能)とgamma0(内殻の寿命)の値を入力する → save
6. x xspec → continue with xspec → plot
※ Sとgamma0 はとりあえず 0.5 0.5 にしてplot した後、結果を見て再度 .inxs ファイルを書き直して、x xspec を実行すれば良い。
□ 方位指定
7. x xspec を行っていない場合は、x init_xspec
8. Files → input.files → .int にDOSのときと同じように計算する軌道を指定する。
9. x tetra
10. x txspec
11. x lorentz
※ x xspec = x init_xspec + x tetra + x txspec + x lorentz となる。結果はDOSでのplotで見れる。
※ SCF計算直後に「3. Files → input.files → .inc のあるファイルを選択し、2行目の左から二番目の数値を-1する → Save」を行ってしまっても良いかどうかは調査中。

■ EELSの計算(調査中)
1. Tasks → TELNES3
2. .innes で計算条件を記入する。濃い灰色の部分はディフォルトのままでよい。
Collection s.a.: と Convergence s.a.: を 0.00 にして、NRとNTを1にするとXSPECの結果と同等になる。
3. x qtl -telnes → continue with TELNES3
4. x telnes3 → continue with TELNES3
5. 後は上から最後まで順番に進めていけば良いだろう。
□ 方位指定
6. .innes でORIENTATION SENSITIVEを指定する。(0.0 0.0 0.0 で結晶のc軸と電子ビームが平行)
※ SCF計算後に「Files → input.files → .inc のあるファイルを選択し、2行目の左から二番目の数値を-1する → Save」を行った方が良いかどうは調査中。

------------------------------------------------------------------------------
■ Memo #4 Spin orbital coupling の計算
1. spin orbit couplingを入れて計算をしたい場合は、[run SCF]→Optionsでのspinorbitにチェックを入れる。
2. p1/2の影響を入れてより高精度な結果で考慮したい場合は、case.insoでNXのところに計算に入れる数を入力します。
3. NX1に原子に付けられた番号を入れます(この行の部分を、NXで指定した数だけ増やします)。

------------------------------------------------------------------------------
■ Memo #4 DFT+U の計算(xxxはsessionまたはディレクトリ名にして下さい。平面波の係数に複素数成分がある計算の場合は xxx.indmcとして下さい)
1. cp $WIENROOT/SRC_templates/case.indm xxx.indm
2. cp $WIENROOT/SRC_templates/case.inorb xxx.inorb
3. Files → input files → xxx.indm
  2行目:Uを考慮する原子の個数
  3行目:Uを考慮する原子の番号、Uを入れる軌道の数、Uを入れる軌道の方位量子数
  (StructGenの入力と同じ番号を指定すればよい)
 ※ 4行目を削除し、Uを考慮する原子の数だけ、3行目の形式の行を書く。
4. Files → input files → xxx.inorb
  1行目:2番目の数値を、 Uを考慮する原子の数 に書き換える
  3行目:Uを考慮する原子の番号、Uを入れる軌道の数、Uを入れる軌道の方位量子数
  (StructGenの入力と同じ番号を指定すればよい)
  nsic と記述のある行:1を指定。(つまり書き換える必要は無い)
  U J と記述のある行:U と J の値を入力(Jはディフォルトにあるように0.00で良いだろう)。入力する数値の単位は Ry なので注意(1 Ry = 13.6 eV です)。
  ※ 4行目を削除し、Uを考慮する原子の数だけ、3行目の形式の行を書く。
  ※ 最後の行を削除し、Uを考慮する原子の数だけ、U J と記述のある行の形式の行を書く。
5. Execution → run SCF にて orbital pot (LDA+U) にチェックを入れる。
※ 反強磁性相(NiOなど)の場合は、case.inst を書き換える必要がある。case.inst は upとdownが交互に記述された形式になっている。そのため、反強磁性の計算において、downで主に支配される原子に対し、case.inst にある左から三番目の数値の記述を up と down で逆にする。つまり、主量子数と方位量子数が同じ行があるので、downが主に支配する原子に対して、電子の占有数(左から三番目の数値)を入れ換えれてしまえばよい。
[1] http://www.apph.tohoku.ac.jp/sakuma-lab/docs/wien2k.pdf 
[2] http://www.nims.go.jp/cmsc/staff/arai/wien/ldau.html

◇ 非磁性系の物質で、LDA+Uとスピン軌道相互作用の計算が必要な場合
spinを入れた入力ファイルを作り、ターミナルで計算させるディレクトリに cd コマンドで入り、runsp_c_lapw -so を入力して計算を走らせる。下記のようになり、内殻以外はupスピンでのみ計算される。
lapw0
lapw1 -c -up
lapwso -up -c
lapw2 -c -up -so
lcore -up
lcore -dn
mixer
計算の収束後、runsp_c_lapw -so -orbdu とする。
1回だけ計算させたい場合は、runsp_c_lapw -so -robdu -i 1とすればよい。
------------------------------------------------------------------------------
■ Memo #4 effective U の計算 ( U =d^2E/d^2n=E[n+1]+E[n-1]-2E[n] )
下記のWIEN2kの手法では Uを 電子を0.5個足した全エネルギーと0.5個引いた全エネルギーから計算する。
1. スーパーセルでの計算を行う。
  Uを計算したい原子の番号(原子記号を入力する次の欄)を変えて、RKMAX=5, 1 k-point にする。
2. case.inst で電子数を増減させる原子に対して、Uを導入するまでの軌道をNからPにする(Pにすると各軌道のデータが出力される)。下記はNiOの場合で、最初のNiに対して電子数を増減させる。他の部分は変えなくて良い。
  Ni
  Ar 3 5
  3, 2,2.0 P
  3, 2,2.0 P
  3,-3,3.0 P
  3,-3,1.0 P
  4,-1,1.0 N
  4,-1,1.0 N
  Ni
  Ar 3 5
  3, 2,2.0 N
  3, 2,2.0 N
  ……
3. ターミナル上で下記を入力する。
  cd $HOME/WIEN2k/計算するディレクトリ名
  x lstart
  x dstart
  x dstart -up
  x dstart -dn
  runsp
  save case_orig
  ※ save すると その後に入力した名称でファイルが作られる(フォルダではない)。
4. ターミナル上で下記を入力する。
  cp case.inc case.incup_+.50 ←電子数を0.5個追加した場合の入力ファイル
  cp case.inc case.incdn_+.50 ←電子数を0.5個追加した場合の入力ファイル
  cp case.inc case.incup_+.5-1←電子数を0.5個引いた場合の入力ファイル
  cp case.inc case.incdn_+.5-1←電子数を0.5個引いた場合の入力ファイル
5. Uを計算する軌道を inc に書き入れる(coreに書き入れる)。
  upとdnそれぞれUを計算する軌道の総和を2で割った値がupとdnのcoreに入れたUを計算する軌道の電子数になる。下記はNiOの場合で、最初のNiに対して電子数を増減させる。他の部分は変えなくて良い。
  The 4.5 ↑, 4 ↓ calculation.
  NiO.incup_+.50: NiO.incdn_+.50
  7 1.00             7 1.00
  1,-1,2             1,-1,2
  2,-1,2             2,-1,2
  2, 1,2              2, 1,2
  2,-2,4             2,-2,4
  3,-1,2             3,-1,2
  3, 2,4             3, 2,4
  3,-3,5             3,-3,4
 
  The 4.5 ↑, 3 ↓ calculation.
  NiO.incup_+.5-1: NiO.incdn_+.5-1
  7 1.00             7 1.00
  1,-1,2             1,-1,2
  2,-1,2             2,-1,2
  2, 1,2             2, 1,2
  2,-2,4             2,-2,4
  3,-1,2             3,-1,2
  3, 2,4             3, 2,4
  3,-3,5             3,-3,2
6. Uを計算する軌道をフェルミエネルギーから遠くに離す。
  in1 で 対応する軌道のエネルギーを20などと大きな値にする。
7. coreに入れたUを計算する軌道の電子を価電子から引く。
  in2 で NE からUを計算する軌道の電子を引く。
  case.in2_+.50 ←電子数を0.5個追加した場合の入力ファイル
  case.in2_+.5-1←電子数を0.5個引いた場合の入力ファイル
8. ターミナル上で下記を入力する。
  cp case.in2_+.50 case.in2
  cp case.incup_+.50 case.incup
  cp case.incdn_+.50 case.incdn
  runsp
  save case_+.50
9. ターミナル上で下記を入力する。
  cp case.in2_+.5-1 case.in2
  cp case.incup_+.5-1 case.incup
  cp case.incdn_+.5-1 case.incdn
  runsp
  save case_+.5-1
10. ターミナル上で下記を入力する。(3d orbital case)
  grepline :fer "case_+.50.scf" 1
    gives εF ((n + 1)/2, n/2)
  grepline ":3DD001" "case_+.50.scf" 2 | head -2 | tail -1
  grepline ":3D 001" "case_+.50.scf" 2 | head -2 | tail -1
    gives (4 * 3DD001+5 * 3D 001)/9 = ε3d↑((n + 1)/2, n/2)
  grepline :fer "case_+.5-1.scf" 1
    gives εF ((n + 1)/2, n/2-1)
  grepline ":3DD001" "case_+.5-1.scf" 2 | head -2 | tail -1
  grepline ":3D 001" "case_+.5-1.scf" 2 | head -2 | tail -1
    gives (4 * 3DD001+5 * 3D 001)/9 = ε3d↑((n + 1)/2, n/2-1)
11. U の計算
  F0eff (Ry) = ε3d↑((n + 1)/2, n/2) − ε3d↑((n + 1)/2, n/2 − 1) −εF ((n + 1)/2, n/2) + εF ((n + 1)/2, n/2 − 1)
  U (eV) = F0eff (Ry) * 13.6058

[1] http://www.wien2k.at/reg_user/textbooks/Constraint_U.pdf
[2] http://www.abinit.org/documentation/helpfiles/for-v6.6/tutorial/lesson_detu.html
[3] http://www.wien2k.at/events/ws2006/lda+u_transport.pdf 

------------------------------------------------------------------------------
■ Memo #4 DFT + hybrid (xxxはsessionまたはディレクトリ名にして下さい。平面波の係数に複素数成分がある計算の場合は xxx.indmcとして下さい)(動作未確認)
1. cp $WIENROOT/SRC_templates/case.indm xxx.indm
  (DFT+U の設定と同じ)
2. cp $WIENROOT/SRC_templates/case.ineece xxx.ineece
3. 1行目の二番目の数値に hybridを導入する原子の個数を入力する。
4. 3行目:hybrid する原子の番号、hybrid する軌道の数、hybrid する軌道の方位量子数
   (StructGenの入力と同じ番号を指定すればよい)
5. 4行目を削除し、hybrid する原子の数だけ、3行目の形式の行を書く。
6. HYBR の書かれている行で HYBR を記入。
7. amount of exact exchange に数値を書き入れる。(PBE0は0.25, B3PW91とB3LYPは0.2)
9. xxx.inc で indxc を B3PW91 は18に、B3LYPは47にする。
8. Execution → run SCF にて eece (hybrid functionals) にチェックを入れる。 

------------------------------------------------------------------------------
■ Memo #4 TB-mBJの計算(xxxはsessionまたはディレクトリ名にして下さい)
1. 通常のSCF計算を行う。
2. xxx.in0 の NR2V を R2V に書き換える。
3. cp $WIENROOT/SRC_templates/case.inm_vresp xxx.inm_vresp
4. run_lapw -NI -i 1
5. save_lapw default_lapw
6. xxx.in0 で indxc を PBEの13からmBJとなる 28 に書き換える。
7. cp xxx.in0 xxx.in0_grr
8. xxx.in0_grr で indxc を 50 にする。
9. 発散する場合があるので、それを防ぐ為に xxx.inm で PRATT にして、mixing factor を 0.1 にする。
10. Execution → run SCF → start SCF cycle
※ Userguide の4.5.9 の通りに行えばよい。
------------------------------------------------------------------------------
■ Memo #4 YS-PBE0の計算(xxxはsessionまたはディレクトリ名にして下さい)
1. 通常のSCF計算を行う。
2. save_lapw default_lapw
3. cp $WIENROOT/SRC_templates/case.inhf xxx.inhf
4. NBAND の値を入力する。(xxx.in2 の NE を 2割り程度増やした量で良い?)
5. cp xxx.in0 xxx.in0_grr
6. xxx.in0_grr で indxc を 52 にする(LDAは51, PBEは52, WCは53)。NR2V を R2V に書き換える。TOT を KXC に書き換える。
7. xxx.inc で IPRINT を 0 から 1 にする(NUMBER OF ORBITALS のある行の左から三番目の数値)。
8. xxx.in1 で EMAX を 5 Ry にする。
9. run_kgenhf_lapw
10. k点を入力
11. run_lapw -hf ← spin-polarized calculation の場合は runsp_lapw -hf
※ Userguide の4.5.8 の通りに行えばよい。
※ band図を描く場合には、 run_bandplothf_lapw を用いる。

------------------------------------------------------------------------------
■ Memo #4 wannier関数を用いた計算
フェルミ面を構成するバンドの軌道成分を引き出すことができる。
文献[1]には具体的な計算方法の記述がある。

(調査中)
1. ターミナルを開く
2. cd ディレクトリ名
3. init_w2w
  1) 0
  2) Specify 3 mesh-division(n1, n2, n3): 8 8 8
  3) 0 (=unshift)
  4) continue with findbands or execute kgen again (c/e)?: c
  5) enter energy window for findbands [Emin Emax] (eV): -12.0 5.0
  6) continue with write_inwf or rerun findbands (c/r) c
  7) [Nmin Nmax]
  8) control + D
  9) continue with write_win or excute write_inwf(c/e)?: c
  10) continue with nnkp or excute write_wine (c/e)?: c
4. lapw1
5. w2w
6. wannier90

1. ターミナルを開く
2. cd ディレクトリ名
3. init_w2w
  1) case.struct が case.ksym にコピーされる。
  2) case.ksym にて、 NUMBER OF OPERATONS を1にし、その下の行列を単位行列に変わる。
  3) kgenが実行される。0を入力し、Specify 3 mesh-division(n1, n2, n3)で 8, 8, 8 などと入力する。
4. lapw1と入力
5. バンド構造と case.output2 を見て、抽出するバンドを決める。
  case.output2 には、あるバンドがどのような軌道成分から構成されているかを知ることができる。
6. write_w2win
  case.w2winが生成される
7. write_win
  Wannier90で用いられるcase.winが作成される。
8. case.win を修正する。
9. Wannier90のマニュアルを参照して、バンドの本数とwannier軌道の数、エネルギー範囲を書き換える。
  projections には case.w2winで指定したwannier軌道と同じ数の軌道を指定する。
10. write_w2wdef
  w2w.def が生成される。
11. wannier90 -pp case
  case.nnkp が生成する。
12. w2wr w2w.def
  case.amnとcase.mmnが生成される。
13. wannier90
  case_band.dat が case.sphagetti_eneの結果を再現していればよい。
  軌道間の遷移積分の情報は case_hr.dat に出力される。
wannier 関数は case.mmn と case.amnの2つのファイルから作成できる。
[1] http://www.heavy-electrons.jp/files/newsletter/33/NL8_high2.pdf?t=1347426278 ( Japanese )
[2] http://www.wien2k.at/reg_user/textbooks/WIEN2k_lecture-notes_2011/Exercises_11.pdf 
[3] http://ir.lib.uec.ac.jp/infolib/user_contents/9000000623/9000000623.pdf
WIEN2WANNIER 1.0 is included in the WIEN2k_14.2 distribution; to use it, simply install the latest WIEN2k version. WIEN2WANNIER-specific documentation is included in SRC_w2w/. For reference, a complete copy of WIEN2WANNIER is provided Initiates file downloadhere. [4]
[4] http://www.ifp.tuwien.ac.at/forschung/arbeitsgruppen/cms/software-download/wien2wannier/
------------------------------------------------------------------------------
■ Memo #4 Electric Field がある場合の計算
------------------------------------------------------------------------------
■ Memo #4 DMFTの計算
下記の条件が比較的良く成り立つと言われています。
U << t : DFT(LDA, GGA, PBE)
U 〜 t : DFT + DMFT + wannier
U >> t: DFT +U, DFT+hybrid
t → kinetic energy, U → potential energy.
ハバード・モデルで考えると分かりやすい。tは移動積分、Uはクーロン反発エネルギー(Hubbard-U)。
http://wyvern.phys.s.u-tokyo.ac.jp/f/lecture/kobelect.pdf 

------------------------------------------------------------------------------
■ Memo #5

A) LAPW法は、スレーターのAPW法の行列要素を線形化して、固有値問題の解法を容易くしたものである。WIEN2kコードでは、フルポテンシャルを採用しているので、FLAPW法と言われる。また、マフィンティン球の内部で定義されるknに依存しない局所関数(local robital:LO)を取り入れて改良している。

B) 2000年に E. Stostedt 等は、LAPW ではなく元のAPWにlocal orbital(lo)を取り入れることを提案した。この場合も線形な固有値問題としておくために、マフィンティン球の内部の展開に使う動径波動関数として、ある固定したEl における関数u(r,El)を使用した。変分の自由度を保つために、新しい局所関数(local orbital:lo)も取り入れている。この新しい局所関数(lo)はLAPWの基底関数に似ているが、式上で現れる二つの係数(uとuの微分にそれぞれ付けられる係数)はknに依存せず、それらはloが球上でゼロとなり、しかも規格化されているという条件から決定される。この新しい方法によると、LAPW法と同じ結果に収束し、しかも使う平面波の最大波数の目安であるRKmaxの値が1小さくて済むので、基底関数の数が最大50%少なくなり、計算時間は1桁短くなる可能性がある。

参考文献:和光システム研究所、『個体の中の電子』、和光システム研究所
------------------------------------------------------------------------------
■ より簡単な入力の仕方
・tabで次のカラムに移動できる。座標の入力は、0.5 や 1/2, x などでも良い。
・StructGen → initialize calc → Expert の下の部分を入力(ディフォルトを選択する場合は入力しない) → check → viewでerrorやwarningが無いのを確認 → SCF の計算へ
・Analysis → ENE にチェックを入れる → グラフを描く
・save_lapw → save name or directory に pbe_rkm7_1000k_exp などと入力し、saveを押す。
・DOSでは濃い灰色の部分とeditは押さなくてよい。
・Electron densites
  1. edit case.scf1:各原子の軌道のエネルギーを表示。 E0_0001 E(0) は原子1のs軌道
  2. edit case.scf2:全体の軌道のエネルギーを表示。
  3. lapw2 → x lstart-sigma (difference density の場合のみ)→ calculate density with XcrySDen (case.in5がこれで作成される) → 2D plot → number of point を入力 → Tree-atom にチェックを入れて三つの原子を選ぶ → selected を押す → ADなどの欄の値を全て0.5にする → Rectangular にチェックを入れる → update display → submit → RHO or DIFF(difference density の場合) → submit → Range で範囲を変える → Ball / Stick で原子の表示を小さくする。
  4. なるべく特定の軌道の電子密度分布を知りたい場合は、 lapw2 の右欄に数値を入れる(単位は Ry)。
・Fermisurface の表示
  xcrysden --wien_fermisurface . ←ドットが重要。
・格子定数の最適化
  1. Rmt は小さくしておく。自動で計算する Rmt のところに1〜5の値を入力。
  2. optimize.job をterminalで入力すると計算可能。
  3. restore_lapw → x lapw0 → DOSやBand図のプロット(上手く行うと 各体積での結果が得られる)
・原子位置の最適化(PORTの場合)( w2web上では min. positions )
  1. Rmt は小さくしておく。自動で計算する Rmt のところに1〜5の値を入力。(10にすることも多々ある)
  2. min_lapw を実行させる。( w2web上では min. positions )
  構造最適化の結果は、structファイルに新しい構造に上書きされている。
  ※ error で RMTが書かれている場合は、上記1の入力で大きな値を入力してRMTを小さくするか、RKmaxを小さくする。幾つか調べたところ、RKmaxが大きいとRMTを小さくしないと RMTに関するerrorが起こる事が判明した。
  ※ 最初は k点を1や100など小さい値にして、RMTを10%減少させて、RKmaxを5や6にする。RKmaxを7にするとRMTを15など大きな値にしなければならず計算結果を待てなくなる。
  ※ 個人的にはk点を1点にしてRMTを10%減少、RKmaxを5にしても良いのではないかと思う。気になれば、RKmaxを5.5にして結果の違いを比較してみたり、k点を増やしてみたらどうだろうか?結果が収束しているようならばそれで報告しても良いと思う。
・原子位置の最適化(MSR1aの場合)( w2web上では min. positions )
  1. Rmt は小さくしておく。自動で計算する Rmt のところに1〜5の値を入力。(10にすることも多々ある)
  2. run -fc 5
  3. save_lapw case_initial
  4. case.inm の MSR1 を MSR1a に書き換える
  5. run -fc 1 -cc 0.0001 -ec 0.00001
・Force の計算(caseはSession または ディレクトリ名, 詳細は userguide の arrowsを参照)
  save_lapw を実行すると case.clmsum, case.scf, case.struct
  1. run_lapw -fc 1
  2. save_lapw case_initial
  3. run_lapw -fc 1
  4. save_lapw case_final
  5. xcrysden --wien_struct case_initial
  6. case.initial.xsf でsave
  7. x arrows
  8. xcrysden --xsf case_forces.xsf
  9. x -delta arrows
  10. xcrysden --xsf case_delta.xsf
・ terminal での計算方法
  run_lapw -h で run_lapw の後に入力する option が表示される。大抵はディフォルトで良い。

------------------------------------------------------------------------------
■ Memo #6
  プログラムと入出力ファイルの関係は Userguide での「Table 4.1: Input and output files of init programs」の部分から書かれている。特定のプログラムを動かす場合に、どのファイルを修正しても良いかはここから判断できる。以下では基本的な入出力ファイルについて解説する。
□ case.outputkgen: Shift k-mesh (if applicable)をNoの場合、 「point    coordinates     relation」でのrelationの最も左にある番号は、  weights of k-points:での左から二番目の番号に関連づけられる。weights of k-points:での左側はcase.klistの左側に対応する。自作のテトラへドロン法などでもっとも簡単なプログラムを作りたい場合には、この関係から得られるデータを用いて全てのk点に対するデータを用いるようにするとよい。
□ case.output1: 固有値(通常 -9.0 Ryまでが表示される)とWFPRIのオプションをcase.in1に入力すると平面波(最初にAPW、続いてlo)のデータが羅列される。Matrix size = APW + lo の数となっている。loを除いたAPWの成分の情報が欲しい場合は、「number of local orbitals, nlo (hamilt)  」(ヴァージョンによって表示が僅かにことなる)でloの数が表示されるので、平面波のデータの下からloの数だけ除けばよい。APWの平面波成分の係数が出力されるが最大が1を超えることもある。これはloなどの成分も合わせて規格化されているためである。
□ case.output2: FERMI ENERGY AT にEFでのエネルギーが記述されている。SCF後に出力されるので、DOSからEFを求めることができない場合などに用いるとよい。
□ case.outputt: DOSを低いエネルギーから積分したデータが出力される。Ry単位なので注意すること。積分をするプログラムやExcelのシートを作る自信がない場合は利用するとよい。
□ case.struct: 二行目には空間群に関するデータが記述される。最も左側が大まかな結晶の分類になる。FはFCC, BはBCC, HはHCPとなる(詳細はUserguideの「Table 4.4: Lattice type, description and bravais matrix used in WIEN2k.」を参照)。バンド分散でのk点のリストはこの記号に対応している。次は数値が続いて読み辛いが、NONEQUIV.ATOMS 空間群の番号_空間群の記号となっている。単位胞内の全原子の数はNONEQUIV.ATOMのMULTの総和で求めることができる。最後は「NUMBER OF SYMMETRY OPERATIONS」の情報が羅列される。case.outputkgenとどちらを用いるかは悩むところである。

■ case.outputkgen
point coordinates relation
relation in case.outputkgen = second colume in weight of k-points
first colume in weight of k-points = coordinates in case.klist
bandstrucutre klist = coordinates in case.klist
------------------------------------------------------------------------------

■ Memo #7 (最小限の入力ファイルとは?)
以下に記す10個の入力ファイルがあれば、SCFの計算が可能となる(複素数成分がある場合は最後にcの付いたファイルが必要)。
1) case.clmsum
2) case.in0
3) case.in1
4) case.in2
5) case.inc
6) case.inm
7) case.inst
8) case.kgen
9) case.klist
10) case.struct
11) case.vsp
------------------------------------------------------------------------------
■ 付録:データ取り出し用スクリプト(csh で作成されている)
使い方
1) 下記のスクリプトをコピーして、好きな名前を付ける
2) 「Properties」→「Permissions」→「Execute:」にチェックを入れる
上記1) と 2) は一度だけで良い。作成したファイルは Desktopなどに置く
3) 作成したファイルを、計算したディレクトリ(フォルダ)の中に入れて実行
  Ubuntu 10.04 の場合: 二回クリックして、Run を選択する
4) ディレクトリ(フォルダ)の名称 +_data の中に下記のデータがある
  SCF_DATA:再計算に必須のデータ。これだけあれば、3回で収束する。
  DOS_DATA: DOSのデータ。 igor などで呼び出せば良い。
  BAND_DATA: BANDのデータ。 _ene のデータを Excel などで取り出し、最後の2列を igor にコピーして用いれば良い。
  フォルダの中にある txt は履歴です。
※ 可能な限り作りは簡単にしましたので、色々な人が容易に書き換えることができると思います。各自で便利なスクリプトを作成して頂いて、PWscf や ABINIT 用のものなどを積極的に公開して頂ければ幸いです。
※ 幾つかのデータを取得して、自作したプログラムを走らせる場合などにも便利です。
※ terminal などで使用するコマンドもコピー&ペーストすれば使えるので便利です。
※ 可能であれば学生の方にはGPLライセンスで使っていただけるとありがたいです。業者の方はBSDで良いと思います。
------------------------------------
non-spin 用データ自動纏めプログラム csh ファイル
------------------------------------------
#! /bin/csh -f

set file = `pwd`
set file = $file:t
# echo $file
set subfilename = $file'_data'
mkdir $subfilename

if !( -d SCF_DATA ) then
mkdir SCF_DATA
endif
set filename = $file'_scf_date'
echo '---------------------------------------------' >> ./SCF_DATA/$filename.txt
echo ' put scf data' >> ./SCF_DATA/$filename.txt
date >> ./SCF_DATA/$filename.txt
echo '---------------------------------------------' >> ./SCF_DATA/$filename.txt
echo ' '
echo 'put scf data in' $file '/SCF_DATA/ directroy'
set refilename = $file
#'_rescf'
# set refilename = 'wien'
cp $file.clmsum ./SCF_DATA/$refilename.clmsum
cp $file.in0 ./SCF_DATA/$refilename.in0
cp $file.in1 ./SCF_DATA/$refilename.in1
cp $file.in2 ./SCF_DATA/$refilename.in2
cp $file.inc ./SCF_DATA/$refilename.inc
cp $file.inm ./SCF_DATA/$refilename.inm
cp $file.inst ./SCF_DATA/$refilename.inst
cp $file.kgen ./SCF_DATA/$refilename.kgen
cp $file.klist ./SCF_DATA/$refilename.klist
cp $file.struct ./SCF_DATA/$refilename.struct
cp $file.vsp ./SCF_DATA/$refilename.vsp
echo ' '

if !( -d DOS_DATA ) then
mkdir DOS_DATA
cd DOS_DATA
mkdir DOS_up_DATA
mkdir DOS_dn_DATA
mkdir DOS_up_eV_DATA
mkdir DOS_dn_eV_DATA
cd ..
endif
set filename = $file'_DOS_date'
echo '---------------------------------------------' >> ./DOS_DATA/$filename.txt
echo ' put dos data' >> ./DOS_DATA/$filename.txt
date >> ./DOS_DATA/$filename.txt
echo '---------------------------------------------' >> ./DOS_DATA/$filename.txt
echo ' '
echo 'put dos input data in' $file '/DOS_DATA/ directroy'
set filename = $file
cp $file.dos1up ./DOS_DATA/DOS_up_DATA/$filename.dos1up
cp $file.dos1dn ./DOS_DATA/DOS_dn_DATA/$filename.dos1dn
cp $file.dos1evup ./DOS_DATA/DOS_up_eV_DATA/$filename.dos1evup
cp $file.dos1evdn ./DOS_DATA/DOS_dn_eV_DATA/$filename.dos1evdn
cp $file.int ./DOS_DATA/$filename.int
if ( -e $file.dos2up ) then
cp $file.dos2up ./DOS_DATA/DOS_up_DATA/$filename.dos2up
cp $file.dos2dn ./DOS_DATA/DOS_dn_DATA/$filename.dos2dn
cp $file.dos2evup ./DOS_DATA/DOS_up_eV_DATA/$filename.dos2evup
cp $file.dos2evdn ./DOS_DATA/DOS_dn_eV_DATA/$filename.dos2evdn
endif
if ( -e $file.dos3up ) then
cp $file.dos3up ./DOS_DATA/DOS_up_DATA/$filename.dos3up
cp $file.dos3dn ./DOS_DATA/DOS_dn_DATA/$filename.dos3dn
cp $file.dos3evup ./DOS_DATA/DOS_up_eV_DATA/$filename.dos3evup
cp $file.dos3evdn ./DOS_DATA/DOS_dn_eV_DATA/$filename.dos3evdn
endif
if ( -e $file.dos4up ) then
cp $file.dos4up ./DOS_DATA/DOS_up_DATA/$filename.dos4up
cp $file.dos4dn ./DOS_DATA/DOS_dn_DATA/$filename.dos4dn
cp $file.dos4evup ./DOS_DATA/DOS_up_eV_DATA/$filename.dos4evup
cp $file.dos4evdn ./DOS_DATA/DOS_dn_eV_DATA/$filename.dos4evdn
endif
if ( -e $file.dos5up ) then
cp $file.dos5up ./DOS_DATA/DOS_up_DATA/$filename.dos5up
cp $file.dos5dn ./DOS_DATA/DOS_dn_DATA/$filename.dos5dn
cp $file.dos5evup ./DOS_DATA/DOS_up_eV_DATA/$filename.dos5evup
cp $file.dos5evdn ./DOS_DATA/DOS_dn_eV_DATA/$filename.dos5evdn
endif
echo ' '

if !( -d BAND_DATA ) then
mkdir BAND_DATA
endif
set filename = $file'_BAND_date'
echo '---------------------------------------------' >> ./BAND_DATA/$filename.txt
echo ' put hr data' >> ./BAND_DATA/$filename.txt
date >> ./BAND_DATA/$filename.txt
echo '---------------------------------------------' >> ./BAND_DATA/$filename.txt
echo ' '
echo 'put BAND input data in' $file '/BAND_DATA/ directroy'
set filename = $file'_BAND'
cp $file.spaghettiup_ene ./BAND_DATA/$filename.spaghettiup_ene
cp $file.spaghettidn_ene ./BAND_DATA/$filename.spaghettidn_ene
cp $file.spaghettiup_ps ./BAND_DATA/$filename.spaghettiup_ps
cp $file.spaghettidn_ps ./BAND_DATA/$filename.spaghettidn_ps
echo ' '

mv SCF_DATA $subfilename
mv DOS_DATA $subfilename
mv BAND_DATA $subfilename
#
------------------------------------------------------------------------------
------------------------------------------------------------------------------
■ Memo #7 (最小限の入力ファイルとは?)
以下に記す入力ファイルがあれば、SCFでspinを入れたSOCとLDA+Uの計算が可能となる(複素数成分がある場合は最後にcの付いたファイルが必要)。
1) case.clmdn
2) case.clmsum
3) case.clmup
4) case.dmatdn
5) case.dmatud
6) case.dmatup
7) case.in0
8) case.in1c
9) case.in2c
10) case.inc
11) case.indm
12) case.indmc
13) case.inm
14) case.inorb
15) case.inso
16) case.inst
17) case.kgen
18) case.klist
19) case.struct
20) case.vorbdn
21) case.borbup
22) case.vspdn
23) case.vspup
------------------------------------------------------------------------------

□ SCF計算用 csh ファイル
------------------------------------------------------------------------------
#! /bin/csh -f

  set file    = `pwd`
  set file    = $file:t
#  echo $file

  if !( -d SCF_DATA ) then
    mkdir SCF_DATA
  endif
  set filename = $file'_scf_date'
  echo '---------------------------------------------' >> ./SCF_DATA/$filename.txt
  echo '    put scf data' >> ./SCF_DATA/$filename.txt
  date >> ./SCF_DATA/$filename.txt
  echo '---------------------------------------------' >> ./SCF_DATA/$filename.txt
  echo '  '
  echo 'put scf data in' $file '/SCF_DATA/ directroy'
  set refilename = $file'_rescf'
  set refilename = 'wien'
  cp $file.clmdn ./SCF_DATA/wien.clmdn
  cp $file.clmsum ./SCF_DATA/wien.clmsum
  cp $file.clmup ./SCF_DATA/wien.clmup
  cp $file.dmatdn ./SCF_DATA/wien.dmatdn
  cp $file.dmatud ./SCF_DATA/wien.dmatud
  cp $file.dmatup ./SCF_DATA/wien.dmatup
  cp $file.in0 ./SCF_DATA/wien.in0
  cp $file.in1 ./SCF_DATA/wien.in1
  cp $file.in2 ./SCF_DATA/wien.in2
  cp $file.in1c ./SCF_DATA/wien.in1c
  cp $file.in2c ./SCF_DATA/wien.in2c
  cp $file.inc ./SCF_DATA/wien.inc
  cp $file.indm ./SCF_DATA/wien.indm
  cp $file.indmc ./SCF_DATA/wien.indmc
  cp $file.inm ./SCF_DATA/wien.inm
  cp $file.inorb ./SCF_DATA/wien.inorb
  cp $file.inso ./SCF_DATA/wien.inso
  cp $file.inst ./SCF_DATA/wien.inst
  cp $file.kgen ./SCF_DATA/wien.kgen
  cp $file.klist ./SCF_DATA/wien.klist
  cp $file.struct ./SCF_DATA/wien.struct
  cp $file.vorbdn ./SCF_DATA/wien.vorbdn
  cp $file.vorbup ./SCF_DATA/wien.vorbup
  cp $file.vsp ./SCF_DATA/wien.vsp
  cp $file.vspdn ./SCF_DATA/wien.vspdn
  cp $file.vspup ./SCF_DATA/wien.vspup
  echo '  '

  if !( -d HR_DATA ) then
    mkdir HR_DATA
  endif
  set filename = $file'_HR_date'
  echo '---------------------------------------------' >> ./HR_DATA/$filename.txt
  echo '    put hr data' >> ./HR_DATA/$filename.txt
  date >> ./HR_DATA/$filename.txt
  echo '---------------------------------------------' >> ./HR_DATA/$filename.txt
  echo '  '
  echo 'put HR input data in' $file '/HR_DATA/ directroy'
  set filename = $file'_HR'
  cp $file.outputt ./HR_DATA/wien_HR.outputt
  cp $file.klist ./HR_DATA/wien_HR.klist
  cp $file.output1 ./HR_DATA/wien_HR.output1
  cp $file.struct ./HR_DATA/wien_HR.struct
  cp $file.output2 ./HR_DATA/wien_HR.output2
  cp $file.outputkgen ./HR_DATA/wien_HR.outputkgen
  cp $file.dos1 ./HR_DATA/wien_HR.dos1
  echo '  '

  if !( -d HR_DATA_up ) then
    mkdir HR_DATA_up
  endif
  set filename = $file'_HR_date_up'
  echo '---------------------------------------------' >> ./HR_DATA_up/$filename.txt
  echo '    put hr data' >> ./HR_DATA_up/$filename.txt
  date >> ./HR_DATA_up/$filename.txt
  echo '---------------------------------------------' >> ./HR_DATA_up/$filename.txt
  echo '  '
  echo 'put HR input data up in' $file '/HR_DATA_up/ directroy'
  set filename = $file'_HR_up'
  cp $file.klist ./HR_DATA_up/wien_HR.klist
  cp $file.output1up ./HR_DATA_up/wien_HR.output1up
  cp $file.struct ./HR_DATA_up/wien_HR.struct
  cp $file.output2up ./HR_DATA_up/wien_HR.output2up
  cp $file.outputkgen ./HR_DATA_up/wien_HR.outputkgen
  cp $file.dos1up ./HR_DATA_up/wien_HR.dos1up
  echo '  '

  if !( -d HR_DATA_dn ) then
    mkdir HR_DATA_dn
  endif
  set filename = $file'_HR_date_dn'
  echo '---------------------------------------------' >> ./HR_DATA_dn/$filename.txt
  echo '    put hr data' >> ./HR_DATA_dn/$filename.txt
  date >> ./HR_DATA_dn/$filename.txt
  echo '---------------------------------------------' >> ./HR_DATA_dn/$filename.txt
  echo '  '
  echo 'put HR input data dn in' $file '/HR_DATA_dn/ directroy'
  set filename = $file'_HR_dn'
  cp $file.klist ./HR_DATA_dn/wien_HR.klist
  cp $file.output1dn ./HR_DATA_dn/wien_HR.output1dn
  cp $file.struct ./HR_DATA_dn/wien_HR.struct
  cp $file.output2dn ./HR_DATA_dn/wien_HR.output2dn
  cp $file.outputkgen ./HR_DATA_dn/wien_HR.outputkgen
  cp $file.dos1dn ./HR_DATA_dn/wien_HR.dos1dn
  echo '  '
#
------------------------------------------------------------------------------

□ DOS用 csh ファイル
------------------------------------------------------------------------------
#! /bin/csh -f

  set file    = `pwd`
  set file    = $file:t
#  echo $file

  if !( -d DOS_DATA ) then
    mkdir DOS_DATA
  endif
  set filename = $file'_DOS_date'
  echo '---------------------------------------------' >> ./DOS_DATA/$filename.txt
  echo '    put dos data' >> ./DOS_DATA/$filename.txt
  date >> ./DOS_DATA/$filename.txt
  echo '---------------------------------------------' >> ./DOS_DATA/$filename.txt
  echo '  '
  echo 'put dos input data in' $file '/DOS_DATA/ directroy'
  set filename = $file'_DOS'
#  cp $file.dos1 ./DOS_DATA/$filename.dos1
#  cp $file.dos1ev ./DOS_DATA/$filename.dos1ev
  cp $file.outputt ./DOS_DATA/$filename.outputt
  cp $file.int ./DOS_DATA/$filename.int
  cp $file.struct ./DOS_DATA/$filename.struct
  cp $file.dos1up ./DOS_DATA/$filename.dos1up
  cp $file.dos1evup ./DOS_DATA/$filename.dos1evup
  cp $file.outputtup ./DOS_DATA/$filename.outputtup
  cp $file.dos1dn ./DOS_DATA/$filename.dos1dn
  cp $file.dos1evdn ./DOS_DATA/$filename.dos1evdn
  cp $file.outputtdn ./DOS_DATA/$filename.outputtdn
  if ( -e $file.dos2up ) then
#    cp $file.dos2 ./DOS_DATA/$filename.dos2
#    cp $file.dos2ev ./DOS_DATA/$filename.dos2ev
    cp $file.dos2up ./DOS_DATA/$filename.dos2up
    cp $file.dos2evup ./DOS_DATA/$filename.dos2evup
    cp $file.dos2dn ./DOS_DATA/$filename.dos2dn
    cp $file.dos2evdn ./DOS_DATA/$filename.dos2evdn
  endif
  if ( -e $file.dos3up ) then
#    cp $file.dos3 ./DOS_DATA/$filename.dos3
#    cp $file.dos3ev ./DOS_DATA/$filename.dos3ev
    cp $file.dos3up ./DOS_DATA/$filename.dos3up
    cp $file.dos3evup ./DOS_DATA/$filename.dos3evup
    cp $file.dos3dn ./DOS_DATA/$filename.dos3dn
    cp $file.dos3evdn ./DOS_DATA/$filename.dos3evdn
  endif
  if ( -e $file.dos4up ) then
#    cp $file.dos4 ./DOS_DATA/$filename.dos4
#    cp $file.dos4ev ./DOS_DATA/$filename.dos4ev
    cp $file.dos4up ./DOS_DATA/$filename.dos4up
    cp $file.dos4evup ./DOS_DATA/$filename.dos4evup
    cp $file.dos4dn ./DOS_DATA/$filename.dos4dn
    cp $file.dos4evdn ./DOS_DATA/$filename.dos4evdn
  endif
  if ( -e $file.dos5up ) then
#    cp $file.dos5 ./DOS_DATA/$filename.dos5
#    cp $file.dos5ev ./DOS_DATA/$filename.dos5ev
    cp $file.dos5up ./DOS_DATA/$filename.dos5up
    cp $file.dos5evup ./DOS_DATA/$filename.dos5evup
    cp $file.dos5dn ./DOS_DATA/$filename.dos5dn
    cp $file.dos5evdn ./DOS_DATA/$filename.dos5evdn
  endif
  echo '  '
#
------------------------------------------------------------------------------

□ バンド分散用 csh ファイル
------------------------------------------------------------------------------
#! /bin/csh -f

  set file    = `pwd`
  set file    = $file:t
#  echo $file

  if !( -d FF_DATA ) then
    mkdir FF_DATA
  endif
  set filename = $file'_FF_date'
  echo '---------------------------------------------' >> ./FF_DATA/$filename.txt
  echo '    put ff data' >> ./FF_DATA/$filename.txt
  date >> ./FF_DATA/$filename.txt
  echo '---------------------------------------------' >> ./FF_DATA/$filename.txt
  echo '  '
  echo 'put FF input data in' $file '/FF_DATA/ directroy'
  set filename = $file'_FF'
  cp $file.outputt ./FF_DATA/wien_FF.outputt
  cp $file.output1 ./FF_DATA/wien_FF.output1
  cp $file.output2 ./FF_DATA/wien_FF.output2
  cp $file.outputtup ./FF_DATA/wien_FF.outputtup
  cp $file.output1up ./FF_DATA/wien_FF.output1up
  cp $file.output2up ./FF_DATA/wien_FF.output2up
  cp $file.outputtdn ./FF_DATA/wien_FF.outputtdn
  cp $file.output1dn ./FF_DATA/wien_FF.output1dn
  cp $file.output2dn ./FF_DATA/wien_FF.output2dn
  cp $file.struct ./FF_DATA/wien_FF.struct
  cp $file.dos1 ./FF_DATA/wien_FF.dos1
  cp $file.dos1up ./FF_DATA/wien_FF.dos1up
  cp $file.dos1dn ./FF_DATA/wien_FF.dos1dn
  cp $file.klist_band ./FF_DATA/wien_FF.klist_band
  cp $file.outputkgen ./FF_DATA/wien_FF.outputkgen
  mkdir spaghetti_DATA
  cp $file.spaghetti_ps ./spaghetti_DATA/$file.spaghetti_ps
  cp $file.spaghetti_ene ./spaghetti_DATA/$file.spaghetti_ene
  cp $file.spaghettiup_ps ./spaghetti_DATA/$file.spaghettiup_ps
  cp $file.spaghettiup_ene ./spaghetti_DATA/$file.spaghettiup_ene
  cp $file.spaghettidn_ps ./spaghetti_DATA/$file.spaghettidn_ps
  cp $file.spaghettidn_ene ./spaghetti_DATA/$file.spaghettidn_ene
  echo '  '
endif
#
------------------------------------------------------------------------------
■ 以下は調査中の引数
------------------------------------------------------------------------------
lapw1/wfpnt.F の引数
NE:示する固有値の数
NV:基底関数の数
KZZ(1,J)、KZZ(2,J)、KZZ(3,J):それぞれ基底関数のh,k,l
ZLOCAL(J,K):基底関数の係数
Z(J,K):基底関数の係数
DBLE():組み込み関数で、倍精度の実数へ変換。複素数の場合、実数部のみ表示
IMAG:複素数(0.0D+0,1.0D+0)
------------------------------------------------------------------------------
lapwso/kpout.f の引数(parameter)
SS(1), SS(2), SS(3) : それぞれあるk点でのh, k, l
BNAME:バンドの番号及び名称
kt(1), kt(2), kt(3) : それぞれある平面波のh, k, l
nv:number of plane wave.
nlo:number of local orbitals. totalである。nlo = nlon + nlov の関係がある。
nlon:number of relativistic local orbitals
nlov:number of original local orbitals
nnrlo:内殻の局在軌道の数?
ne(1)+ne(2)+2*nnrlo:Matrix Size であり、APW+loの数
WEIGHT:あるk点での重み
isi:スピンのUPとDOWN
is:スピンのUPとDOWN、1がup, 2がdown
neig:表示する固有値の数
en(j):固有値
vect(n,j,isi):vect(?、固有値、スピン). SOの影響を含んだCk. (kはベクトル)
------------------------------------------------------------------------------
Dr. Pavel Novak に聞いてみた。
nv(is)    is total number of LAPW1 basis functions for spin is
           i.e. this does not include relativistic local orbitals
ne(is)    is number of LAPW1 energies for spin is
nlo(ity)  is number of local orbitals for atom of type ity
nlov(ity) is index of 1st lo of atom ity
nnlo      is total number of local orbitals
nrlo(ity)  is number of relativistic local orbitals for atom of type ity
nnrlo     is total number of relativistic local orbitals
nv(is) + nnrlo is total number of basis functions for spin is
ne(1)+ne(2)+2*nnrlo is dimension of matrix diagonalyzed in LAPWSO
------------------------------------------------------------------------------
real():実数部を抽出
aimage():虚数部を抽出
------------------------------------------------------------------------------
TH-HR-NFE-FF (SOC + LDA+U)
case.in1, case.in1_so, case.in1_st
case.inso
1.5 Ry -> 3.5 Ry and inclease nband
case.inso: WFFIL (not use WFPRI, occuring uplapw2.def error)
------------------------------------------------------------------------------


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