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

PWscf

 ここではPWscfを用いた基本的な計算からXANESの計算までを解説する。
-------------------------------------------------------------------------------
■ 私の記述を見るよりも、下記のHPを見るのがよいだろう(私の必要性はもう何年も前から無い)。
http://www.misasa.okayama-u.ac.jp/~masami/pukiwiki/index.php?QE%A4%F2Mac%A1%DC%A5%A4%A5%F3%A5%C6%A5%EB%A5%B3%A5%F3%A5%D1%A5%A4%A5%E9%A4%C7 (Japanese)
http://www.stat.phys.titech.ac.jp/SATL_qe_tutorial/index.html (Japanese)

PWscf forum(困ったときは下記を参考にしてみると良いだろう)
The PW_forum: http://qe-forge.org/pipermail/pw_forum/
pf_forum: https://www.google.com/cse/home?cx=000217952118062629757:xew9tb5yarq
FAQ: http://www.quantum-espresso.org/faq/
Input Data Description: http://www.quantum-espresso.org/users-manual/input-data-description/
Pesudopotential naming: http://www.quantum-espresso.org/pseudopotentials/naming-convention/ , http://www.quantum-espresso.org/pseudopotentials/unified-pseudopotential-format/

■ 利用方法
  基本的には下記のHPやexamplesを参考にするとよい。
http://institute.loni.org/dft2011/documents/NarasimhanLec2.pdf
PWscf のHP → LEARN → Tutorials
  • Hands-on Tutorial of Quantum Espresso: 
     http://www.fisica.uniud.it/~giannozz/QE-Tutorial/
  • Hands-on Tutorial on Electronic Strucutre Computations, ICTP Trieste
     http://cdsagenda5.ictp.it/full_display.php?email=0&ida=a10125
  • NSF/Democritos Summer School on Materials Modeling form First-Principles:
     http://www.quantum-espresso.org/wiki/index.php/QESB09
  PWgui でHelpを押すと説明が出力されるので、それの利用も勧めたい。
その他 ※ 下記にPWguiを用いた場合での利用方法を説明する。(PWguiは基本的にコマンドで入力していた時代の利用者が使いやすいように作られている{印象を受ける}。PWguiの利用は慣れれば入力ファイル作成やコマンド入力の時間を省くことができ有用性は高い。しかし、PWguiのヴァージョンが異なるとファイルの読み取りができなかったり、計算が可能な種類が減少?されていたりと良い意味で枯れていないのが残念。慣れてきたら入力ファイルをテキストで作成し、コマンドで計算させるようにするのがよい)

□ ファイル(データ)の格納場所について
  Prefix for I/O filenames(prefix): 'case'
  Temporary directory (outdir): './tmp'
  上記のように指定すると、PWguiを起動させたディレクトリ(カレントディレクトリ)に tmpファイルが作成され、その中に出力されたファイルがcase.saveとともに格納される。つまり、 PWscfを起動させたディレクトリ/tmp/case.saveとなる。前回のデータを利用する場合は、上記と同じように設定すればデータが受け継がれる。何も入力しないとPWguiを起動させたディレクトリ上にpwscf.saveが作成される。

□ 文字と数値の入力について
  文字や数値の設定は、文字での入力は' 'で文字を挟み、数値は' 'で挟まない。

□ 擬ポテンシャルや交換相関項の設定について
  pbeと付いたものを選択すれば良いです。ファンデスワールス力が関係する場合はvdWを設定して下さい(収束には時間が掛かります。もし計算時間が掛かりすぎる場合はpzを指定して下さい)。pzはLDAの分類に入ります。   Frequently Asked Questions (FAQ) : http://www.quantum-espresso.org/user_guide/node57.html
上記のHPによるとNCPP, USPP, PAW は混ぜて使っても問題ないようです。しかし、NCPPはカットオフが多く必要になります。可能であれば、「NCPPのみ」か「USPPとPAW」の組み合わせで構成しましょう。
※ スーパーセルを用いたXANESの計算をする場合は(http://www.quantum-espresso.org/pseudopotentials/)にて、HALF or ONE CORE-HOLE > Apply Filter でのものを用います。Fe, Co, Ni, Cu, C, N, O, Si, Be 以外がありませんので、代表的なMgOでのMgに対する吸収構造を計算する場合には自作する必要があります。
http://www.impmc.upmc.fr/~cabaret/Xspectra/Intro/intro.htm のHPの擬ポテンシャルを用いるのも良いでしょう。

□ ブロードニング
・ Methfessel-Paxton method: http://www.hector.ac.uk/cse/distributedcse/reports/conquest/conquest/node6.html 
 フェルミディラック分布よりも精度良く幅を広くできるのでより安定である。0-th order は フェルミディラック分布と同じ。

□ PWguiのリンクの張り方
.bashrc にて下記を書き込む。
export PWGUI=$HOME/espresso-4.3.2 ←PWguiの実行ファイルのあるディレクトリを書き込む。
PATH="$PATH:$PWGUI" ← PATH へのパスの追加。
以上を行うとTerminal で pwgui と入力するだけで起動する。

□ PWscf のリンクの張り方(調査中)
.bashrc にて下記を書き込む。
export espresso=$HOME/espresso-4.3.2
export PWSCF=$HOME/espresso-4.3.2/bin ←PWscfの実行ファイルのあるディレクトリを書き込む。
PATH="$PATH:$PWSCF" ← PATH へのパスの追加。
以上を行うとTerminal で コマンドを入力するだけで動作する。

□ Phonon 分散の計算について
下記の結果を見ると商用のVASPとよい勝負が出来ている。計算速度も速い。
http://unam.bilkent.edu.tr/mt2/SIESTA-PHON/PHON/analysis.pdf
下記の論文を読むと良く分かる。Linear response を用いるとスーパーセルを用いなくても単位胞の計算で比較的精度の良い結果が得られる。PWscfはもっと誇っても良いと私は思う。
http://www.mcc.uiuc.edu/summerschool/2007/qmc/tutorials/Tutorial_phonons_alfe.pdf


■ 擬ポテンシャル ( under constraction)
-----
◆ ノルム保存型擬ポテンシャル(主にフォノンの計算で2014年現在でも用いられている)
(2014年の現在でもフォノンを扱った計算では論文にその記述を見つけることができる) -----
◆ ウルトラソフト擬ポテンシャル
 必要なカットオフがノルム保存型擬ポテンシャルよりも小さく済むと言われている。カットオフはノルム保存型擬ポテンシャルの1/8から1/4程度で良いと聞く。
・PBE
mkdir all_pbe_uspp
cd all_pbe_uspp
tar zxvf all_pbe_uspp.tar.gz
---
・LDA
mkdir all_lda_uspp
cd all_lda_uspp
tar zxvf all_lda_uspp.tar.gz
gunzip uspp-736-0.tgz
tar xf uspp-736-0.tar
rm uspp-736-0.tar
USpp2Abinitを用いて非常に有名なヴァンデルビート(Vanderbilt)のUSPPをAbinitのPAWフォーマットに変換する。しかし、下記で示すように既にPAWが整備されているので、下記のPAWを用いることをオススメする。
-----
◆ PAW擬ポテンシャル
 必要なカットオフ(ecut)がノルム保存型擬ポテンシャルよりも小さく済むと言われている。形式的にはウルトラソフト擬ポテンシャルに近い。
・GGA (pbe, pw91)
    mkdir pbe.0.3.1
    cd pbe.0.3.0
    tar zxvf pbe.0.3.1.tgz
・LDA (pz)
    mkdir pz.0.3.1
    cd pz.0.3.0
    tar zxvf pz.0.3.1.tgz
rel = relativistic
-----
※ 上手くいかないときは、SCF計算とDOS計算の入力ファイルで格子定数が同じかどうかを確認する。当然ながらSCFとDOSで格子定数が異なると正しい値は出力されない。

-------------------------------------------------------------------------------
■ PWguiのセットアップ:
PWgui : http://www-k3.ijs.si/kokalj/pwgui/pwgui.html 
Download → Self-containted standalone executables : から取得し、
tar xvf pwgui-4.2-linux-x87.tgz と入力。64bitではx86_64のものにする。
1) ./PWgui でPWguiを起動させる
2) Edit → Settings → Specify the path for QE binaries にコンパイルした実行ファイルが入っているespresso-4.2.1/binを指定
3) 計算に必要な擬ポテンシャルをHPのpseudoからDownload the full archive で一括してダウンロードし、解凍したら、$HOME/espressoの中へ入れる
4) Lattice & Atomic data → Enter atomic types: → Pseudopotential-file でPseudopotential ...で$HOME/espresso → pseudo の中で対応するものを選択
  * Directory containing pseudopotential files (pseudo_dir) : において、
   '/root/home/espresso-4.2.1/espresso/pseudo/'
と指定すれば解凍したファイルの中に擬ポテンシャルファイルを入れればよい。

■ 基本的な使用方法
-----------------------------
□ SCF計算:
1) PWgui を起動させて、File → New PW.X Input
2) Control
  Optional variables
  Type calculation (calculation): Self-Consistent- Field を選択
3) SYSTEM
  a) Required variales は入力が必要
  b) Optional variables
      OccupationsでOccupation of statesをsmearing、
      Gaussian spreading for BZ integraion を0.02 などにする
  c) Lattice & Atomic data は入力が必要
      複数の原子の擬ポテンシャルを用いる場合は、
      atom.xxx-???.UPF でxxxが同じものを選択する。
      atom は元素名
      xxx は交換相関項の種類
      ??? は擬ポテンシャルのタイプで、さらに_gipawがあるものはPAW
       ※ xxx では、種類が同じにならないと計算時にエラーが示される。
       Line : Atomic corrdinate unit ではInternal cystal coordinateがお勧め。
   d) K-point data
      Automatic generation にして、下にあるnk1, nk2, nk3の値を入力する。
4) PWgui → Wiew → Structure with XCrySDen で構造を確認
5) PWgui → Run で計算

-----------------------------
□ DOS計算:
※ 注意すべき点としては、テトラヘドロン法はdos.xにしか対応しておらず、ProjWFCには対応していない。dos.x で行う場合は、SCFでoccupations='tetrahedra'とし、dosでdegaussは記述しない。
1) PWgui → File → New ProjWFC.X Input
2) PDOS ploting Options
    Type of gaussian brodening をSimple Gaussian などに
    Gaussian broadening を 0.01 〜 0.025 などに
    Resolution of PDOS plot を 0.01などに
    Enegy window for PDOS に値を入れると計算される範囲が変えられる
3) DOSの図の表示は
    xmgrace xxxx.pdos (← などの名前の付いたファイルを選択)  
4) フェルミ準位はSCF計算で得られたcase.out に書かれている。
※ データは Total, 磁気量子数の順で出力されている。
s軌道:Eの欄も入れて全部で3列(1+1+1), スピンを考慮した場合は5列(1+2+2)
p軌道:Eの欄も入れて全部で5列(1+1+3), スピンを考慮した場合は9列(1+2+6)
d軌道:Eの欄も入れて全部で7列(1+1+5), スピンを考慮した場合は13列(1+2+10)

-----------------------------
□ バンド分散:
1) ./PWgui → View → Structure with XCrySDen
2) XCrySDen でFile Display .......とある欄で Tools → k-path を選択
    Files of type で PWscf K_POINTS Filesを選択し、case.pwscf で保存
    WIEN2kの場合:R→Λ→Γ→Δ→X→Z→M→Σ→Γ
    論文[1]:Γ→X→M→R→Γ 
    ※ Total number of k-points along the... は(labelの数-1)*10 。(調査中)
3) case.pwscf を開いて、K_POINTS crystal の前の空白(スペース)を削除
4) PWgui  -> K-point -> Manual specification in CRYSTAL units -> Load K-point coordinates from file ... ->  case.pwscf
     Control -> Verbosity of output (verbosity): high
5) 下記の二通りの方法が考えられる。
  A) Control → Non-selfconsistent calculation にチェックを入れて計算。
  B) Control → Band structure calculation にチェックを入れて計算。
      Bの手法を選択し、「分散表示変換プログラム」を用いると、下記を続けなくてもバンド分散の結果を得ることが出来る。
6) bands.in というテキストファイルを作り下記のように入力する。
    ----------------------------
      &inputpp
      prefix = 'pwscf'
      filband = 'bands.dat'
      /
    ----------------------------
    上記のpwscfはデフォルト指定だとpwscf.saveに対応する
7) $HOME/espresso-4.2.1/bin/bands.x' < bands.in > bands.out
8) $HOME/espresso-4.2.1/bin/plotband.x
    input file > bands.dat
    Range (Emin, Emax)を聞かれるので左記の範囲内で空白で区切って入力
    outpu file (xmgr) > bands.xmgr
    outpu file (ps) > bands.ps
    Efermi > 14.886
    deltaE, reference E(for tics) 1.0, 6.337
9) 以上でバンド分散がpsファイルとして出力される
    xmgrace bands.xmgr としてもよい
[1] F. Li et al., Mater. Sci. Eng. B 172 (2010) 136.
※ reference E は 点線を表示する場所。EFの値を入力しておけばよい。
※ spinを分けて表示したい場合は、spin_componet をbands.inに書き入れる。1がupで2がdown。 http://users.aims.ac.za/~daniel/hands_on/tutorial_postproc.pdf
※ 構造最適化をした場合は、case.out を読み取って、Current Slide を最後のものにして、Save WIEN2k Struct File にした後に、VESTAで cif にして左欄にある「入力ファイルの変換」で新しい座標の入力ファイルを作る。
※ case.pw.out から バンド図をプロットするプログラムをFortran 77で作成中です。コードを最下段に掲載します。

-----------------------------
□ 電荷密度分布:
1) PWgui → File → New PP.X Input
2) Specify property to calculate
    What to calculate (plot_num): charge density を選択
3) Specify Plot
    Namelist:PLOT
    Number of data files (nfiles): 1
    Weighting factors: 1.0
    Plot infor
      Name of output file (fileout): 'case_chr.dat'
      Dimensionality of plot (iflag): 2D plot
      Format of the output (output_format): format suitable for plotrho
    Spanning vectros & origin
      1 st spanning vector: e1(1): 1.0 e1(2): 1.0 e1(3): 0.0
      2nd spanning vector: e1(1): 0.0 e1(2): 0.0 e1(3): 1.0
    Number of points in each direction
      nx: 56 ny:40
4) Run
5) $HOME/espresso-4.2.1/bin/plotchr.x
    input file > case_chr.dat
    outpu file > case_chr.ps
    Logarithmic scale (y.n)? > n
    min, max, # of lovels > 0 0.09 6 (原子単位か? 調査中)
6) 以上で電荷密度分布がpsファイルとして出力される

-----------------------------
□ STMシミュレーション:
1) PWgui → File → New PP.X Input
2) Specify property to calculate
    What to calculate (plot_num): STM images を選択
    Options for STM images
    For STM: the bias of the sample [in Ryd] in ......(sample_bias): EF近傍値
3) Specify Plot
    Namelist:PLOT
    Number of data files (nfiles): 1
    Weighting factors: 1.0
    Plot infor
      Name of output file (fileout): 'case_stm.xsf'
      Dimensionality of plot (iflag): 2D plot
      Format of the output (output_format): XCRYSDEN's XSF format
    Spanning vectros & origin
      1st  spanning vector: e1(1): 1.0 e1(2): 1.0 e1(3): 0.0
      2nd spanning vector: e1(1): 0.0 e1(2): 0.0 e1(3): 1.0
    Number of points in each direction
      nx: 56 ny:40
4) Run
5) xcrysden --xsf case.xsf
以上でSTM像が出力される

-----------------------------
□ フォノン分散:
1) PWgui → New → New PH.X input
2) INPUTPH
    Files/Diretories
    File containing the dynamical ......(fildyn): 'case.dyn'
    What to Compute
    Compute phonon dispersion (ldisp): Yesにチェック
      nq#1: 4 nq#2: 4 nq#3: 4
    Control option
      Atomic Masses
        Number of types of atoms in ......(ntyp): 原子の種類分けの数
        amass : 原子の質量
3) Run
4) q2r.in というテキストファイルを作り下記のように入力する。
    ----------------------------
      &input
      fildyn = 'case.dyn'
      zasr='simple'
      flfrc='case444.fc'
      /
    ----------------------------
5) $HOME/espresso-4.2.1/bin/q2r.x < q2r.in
6) case_matdyn.in というテキストファイルを作り下記のように入力する。
    ----------------------------
      &input
      zasr='simple',
      amass(1)= ,
      ...
      flfrc='case444.fc',
      flfrq='case.freq'
      /
      k点の数
      kx ky kz kdifferent
      ...
    ----------------------------
    k点の部分はXCrySDenから出力したcase.pwscfをコピー&ペーストしてもよい。
7) $HOME/espresso-4.2.1/bin/matdyn.x < case_matdyn.in
8) $HOME/espresso-4.2.1/bin/plotband.x case.freq
  加えて、フォノンの状態密度分布は
9) case.phdos.in というテキストファイルを作り下記のように入力する。
    ----------------------------
      &input
      asr='simple',
      amas(1)= ,
      ...
      flfrc='case444.fc',
      flfrq='case.freq'
      dos=.true.
      fldos='case_ph.dos'
      nk1=4, nk2=4, nk3=4
      /
    ----------------------------
10) $HOME/espresso-4.2.1/bin/matdyn.x < case.phdos.in > case.phdos.out
11) xmgrace case_ph.dos

-----------------------------
□ IR & Raman 計算:

Infrared and Raman Cross Section
1) PWgui → Open → Open PW.X Input
2) SFC計算での入力で下記の変更を行う
    Control
    Calculate forces (tpronfor): Yes
3) Run
4) PWgui → New → PH.X Input
5) INPUTPH
    Files/Diretories
    File containing the dynamical matrix (fildyn): 'case.dyn'
    What to Compute
      Compute phonon dispersions (ldisp): No
      Compute the macroscopic ...... (epsil): Yes
      Compute electron-phonon ...... (elph): No
      Compute dynamic polarizabilities (fpol): No
      Compute Raman coefficients (lraman): No
      Control options
        Restart from an ...... (recover): No
        Number of types of atoms ...... (ntyp): 原子の種類分けの数
        amass(1) : 原子の質量
      Suffix cards
        xq(1): 0.0 xq(2): 0.0 xq(3): 0.0
6) Run
7) case.ir.in というテキストファイルを作り下記のように入力する。
    ----------------------------
      &input
      fildyn='case.dyn',
      asr='zero-dim'
      /
    ----------------------------
8) $HOME/espresso-4.2.1/bin/dynmat.x < case.ir.in > case.ir.out
9) xcrysden --axsf dynmat.axsf
    XCrySDen → Forces にチェックを入れると変化が分かる

Normal Modes
1) 上記2)でK-pointをGammaにしてRun
    対応する擬ポテンシャルがないとエラーが出る。vbcと付いたものが良さそう。
2) 上記6)でRunせずに、case.nm.in名でsaveして、下記を実行
    $HOME/espresso-4.2.1/bin/phcg.x < case.nm.in > case.nm.out
3) case.ir.in を case.cs.in という名前にして下記を実行
4) $HOME/espresso-4.2.1/bin/dynmat.x < case.cs.in > case.cs.out
5) xcrysden --axsf dynmat.axsf
    XCrySDen → Forces にチェックを入れると変化が分かる

Electron-Phonon Interaction Coefficients(調査中)
1) SCF計算の入力ファイル(case.in)で、$System 内に la2F = .true., を追加
2) $HOME/espresso-4.2.1/bin/pw.x < case.in > case.out
3) case.elph.in を下記のように作成
    ----------------------------
      &inputph
      fildvscf='aldv',
      amass(1)= ,
      ......
      outdir='./tmp/',
      fildyn='al.dyn',
      elph=.true.,
      trans=.true.
      /
      0.0 0.0 1.0
    ----------------------------
4) $HOME/espresso-4.2.1/bin/ph.x < case.elph.in > case.elph.out
メモ: denseと付いたファイルでは trans=.true. → trans=.false.としている。

-----------------------------
□ 電気伝導度の計算:
PWcond.x を用いる方法 : 下記のHPを参照すれば良い。
  http://people.sissa.it/~smogunov/PWCOND/pwcond.html 
  http://people.sissa.it/~smogunov/PWCOND/lectures.pdf 
  http://people.sissa.it/~smogunov/PWCOND/examples.html
1) case.cond.in を下記のように作成する。(編集中)
2) $HOME/espresso-4.2.1/bin/pwcond.x < case.cond.in

WanT を用いる方法 : 下記のHPでコードが得られる。
  http://www.wannier-transport.org/download.html

-----------------------------
□ XANES:
(下記にはCでの例を示す。Core-holeを導入しない場合は下記の5)から行えばよい)
1)  case.ld1.in に下記を書き込む(config で 1s1はCore-holeのため)。
 ----------------------------------
       &INPUT
       iswitch = 3 ,
       zed = 6.0 ,
       config = '1s1 2s2 2p1.5 3s0 3p0' ,
       rel = 1 ,
       dft = 'PBE' ,
       /
       &InputP
       pseudotype = 2 ,
       file_pseudopw = 'C.pbe-cv1s-mt_gipaw.UPF' ,
       lloc = 1 ,
       tm = .true. ,
       lgipaw_reconstruction = .true. ,
       /
       2
       2S 2 0 2.000 0.000 1.50 1.50
       2P 2 1 1.500 0.000 1.50 1.50 
       &TEST
        /
       4
       2S 2 0 2.000 0.000 1.50 1.50
       3S 3 0 0.000 0.000 1.50 1.50
       2P 2 1 1.500 0.000 1.50 1.50 
       3P 3 1 0.000 0.000 1.50 1.50 
   ----------------------------------
   上記の file_pseudopw では利用に便利な名前を入力する。
   ./$HOME/espresso-4.2.1/bin/ld1.x  case.ld1.out
   上記のコマンドで擬ポテンシャルが作成される。
2) PWgui → Open → Open PW.X input
    Control
      Type of calculation (calculation): Self-Consistent-Field
    System をscfのときと同じように入力
     (構造はスーパーセルが望ましい。ecutwfcは通常より大きな値に)
      Required variables
        Kinteic energy cutoff for ...... (ecutwfc): 40.0
      Optional variables
        Total system charge (tot_charge): 1.0
    Lattice & Atoms
      XANESを得たい原子に対して、作成した擬ポテンシャルを選択
      K-point をscfのときと同じように入力
4) Run
   上記で、XANESでの終状態の波動関数を得る
5) $HOME/espresso-4.2.1/bin/XSpectra/upf2plotcore.sh C.pbe-mt_gipaw.UPF > C.wfc
   この手順で始状態の波動関数を得る
6) prefix.xspectra.in を作成する
  ----------------------------------
       &input_xspectra
       calculation='xanes_dipole',
       prefix='pwscf',
       xonly_plot=.false.,
       xniter=1000,
       xcheck_conv=50,
       xerror=0.001,

       x_save_file='prefix.xspectra.sav',

       ef_r=${FERMI_LEVEL},

       xiabs=1,
       xepsilon(1)=1.0,
       xepsilon(2)=0.0,
       xepsilon(3)=0.0,
       /
       &plot
       xgamma=0.8,
       xnepoint=1000,
       xemin=-10.0,
       xemax=30.0,
       terminator=.true.,
       cut_occ_states=.true.,
       /
       &pseudos
       filecore='C.wfc',
       r_paw(1)=3.2,
       /
       &cut_occ
       cut_desmooth=0.1,
       cut_stepl=0.01,
       / 
       4 4 4 1 1 1
  ----------------------------------
最後の数値はK-pointである。SCF計算の時に入力したファイルを参考に値を入力すればよい。各入力データの意味は「X-ray absorption lecture note : 」を参照して下さい。時間があれば意味をここに書き加えます。
7) $HOME/espresso-4.2.1/bin/xspectra.x < prefix.xspectra.in > prefix.xspectra.out
8) xmgrace xanes.dat

-------------
(所有しているPCではLD1.X input で上手く動作しなかった。調査中)
1) PWgui → New → New LD1.X input
2) General
    Required varibles
      Type of calculation (iswitch): PseudoPotential Generationを選択
      Nuclear charge (zed): 6.0
      Electronic configuration (config): '1s2 2s2 2p1.5 3s0 3p0'
      内殻を空孔を作る場合は2を1にする。例えば1s2 → 1s1
      Relativistic Effects (rel): Scalar Relativistic
      Exchange-Correlation (dft): Predew-Becke-Ernzerhof (PBE)
3) PsudoPotential Generation
    Required varibles
      Type of PsudoPotential (pseudotype): Norm Conserving, more than ......
      Name of the ...... (file_pseudopw): 'C.pbe-cv1s-mt_gipaw.UPF'
      Local Potential channel (lloc): L=1
      Type of pseudization procedure (tm): Troullier-Martins
      Generate all-electron data for GIPAW (lgipaw_reconstruction): Yes
      All-electron cards
        Number of states: 2
        Label N L Occupancy Energy Rcut USRcut
        2S     2  0  2.00          0.00     1.5   1.5
        2P     2  1  1.50          0.00     1.5   1.5
4) PseudoPotential Test
    Number of testing configureations (nconf): 1
    Testing configuration #.1
      Number of states: 4
      Label N L Occupancy Energy Rcut USRcut
      2S     2  0  2.00          0.00     1.5   1.5
      3S     3  0  0.00          0.00     1.5   1.5
      2P     2  1  1.50          0.00     1.5   1.5
      3P     3  1  0.00          0.00     1.5   1.5
5) Run
X-ray absorption lecture note :
http://cdsagenda5.ictp.it/askArchive.php?base=agenda&categ=a10125&id=a10125s1t6/lecture_notes
-----------------------------
□ 時間依存密度汎関数法(TDDFT):
(PWscf-4.3以降からβ版として利用が可能となっている。心が折れた……)(編集中)

-----------------------------
□ 分子動力学法:(SCF計算の例を参考に入力ファイルを作って下さい)
1) PWguiを起動させて、File → Open → open PW.X Input
2) Control
    Optional variables
      Type calculation (calculation): Molecular dynamics  を選択
      格子定数も変えたい場合はMolecular ......を選択
    Miscellaneous control parameters
      Number of ionic steps (nstep): 50
      Molecular-Dynamics time step (dt): 20.0
3) Ions
    Type of extrapolation (pot_extrapolation): extrapolate ......
    Type of extrapolation (wfc_extrapolation): no extrapolation
    Molecular Dynamics
      Starting temperature in MD runs (tempw): 300
      Tolerance for velocity rescaling (tolp): 0.001
      Temperature rescaling (delta_t): 1.0
4) Run
5) xcrysden --pwo case.out
    do not reduce dimensionality
    Display All Coordinates as Animation
    → → で動画を見ることができる

-----------------------------
□ 構造最適化:(SCF計算の例を参考に入力ファイルを作って下さい)
(Quasi-Newton ionic relaxation)
1) PWguiを起動させて、File → Open → open PW.X Input
2) Control
    Optional variables
      Type calculation (calculation): Ionic relaxation  を選択
        格子定数も変えたい場合はIonic ......を選択
    Miscellaneous control parameters
      Number of ionic steps (nstep): 50
3) Ions
    Type of ionic dynamics (ion_dynamics): BFGS......
    Type of extrapolation (pot_extrapolation): extrapolate ......
    Type of extrapolation (wfc_extrapolation): no extrapolation
    BFGS Structure Optimization
      Max. reduction factor (upscale): 10.D0
      Maximum ionic displacement in the ......(trust_radius_max): 0.5
      Minimum ionic displacement in the ...... (trust_radius_min): 0.001
    Parameters used in line search based on the Wolfe conditions:
      w_1: 0.01
      w_2: 0.5
4) Run
5) xcrysden --pwo case.out
    構造最適化の結果を見ることができる。xcrysdenでは、PWscfのcase.outを「Display All Coordinates as Animation」で開くとエラーが出にくい。

特定の原子を固定したいときは、原子座標の記述の後に 0 0 0 と記述する。
-----------------------------
□ 各点でのフォノン:
1) PWscf → New → New PH.X input
2) INPUTPH
    Files/Diretories
      File containing the dynamical ......(fildyn): 'case.dynE'
    Control option
      Atomic Masses
      Number of types of atoms in ......(ntyp): 原子の種類分けの数
      amass : 原子の質量
3) Suffix cards
    Line : The phonon wavevector
    xq(1) : 0.0 xq(2): 0.0 xq(3):0.0 ← 得たい点の座標
4) Run
5) case_dynmat.in というテキストファイルを作り下記のように入力する。
  ----------------------------
      &input
      fildyn = 'case.dynE'
      /
  ----------------------------
6) $HOME/espresso-4.2.1/bin/dynmat.x dynmat.axsf
7) xcrysden --axsf dynmat.axsf
8) XCrySDen → Forces
-----------------------------
□ 擬ポテンシャルの変換
 
CPMD タイプの場合
1) http://people.web.psi.ch/krack/potentials.html
2) 交換相関項を選択。例えば、PBEなど
3) ファイル形式を選択。例えば、CPMDなど
4) Show all matching files から欲しい擬ポテンシャルをダウンロードする
5) cd espresso-4.3.2/upftools
6) cpmd2upf.x Sb-q5
7) 以上でPWscf用の非相対論の擬ポテンシャルが作成される。

Fritz Haber タイプの場合(調査中)
1) http://www.quantum-espresso.org/pseudo-notes.php 
2) http://www.abinit.org/downloads/psp-links/pseudopotentials 
3) GGA (PBE) pseudopotential files : 
  Fritz-Haber-Institute (FHI) pseudopotentials for selected elements (Troullier-Martins scheme)
4) 上記のHPから欲しい擬ポテンシャルのファイルをダウンロード
5) cd espresso-4.3.2/upftools
6) fhi2upf.x 51-Sb.GGA.fhi
7) Confirm or modify l max, l loc (read:3  0)> 3,0
8) 次に、擬ポテンシャルをダウンロードしたHPの下にある ini ファイルを参考にして入力。
    n l f が並んでいるところの一番したから入力していく。
    Wavefunction #1: lavel (e.g. 4s), occupancy >5p, 3 
    Wavefunction #2: lavel (e.g. 4s), occupancy >5s, 2
    Wavefunction #3: lavel (e.g. 4s), occupancy >4d, 10
    Wavefunction #4: lavel (e.g. 4s), occupancy >4p, 6
9) 以上でPWscf用の非相対論の擬ポテンシャルが作成される。

-----------------------------
□ 擬ポテンシャルの作り方 (調査中)
※1 作成した擬ポテンシャルは、構造最適化を行って格子定数が実験値と2-3%内であり、体積弾性率が実験値や他の信頼できる擬ポテンシャルと似ていること。そして、バンド分散を描いてゴーストバンドが存在していないことを確認する。
※2 全エネルギーはCore / Semi-core / valence を区切る範囲やコア半径の大きさによって変わる為、他の擬ポテンシャルを用いた場合と絶対値が異なっていてもよい。

1) Sb.pbe-tm.UPFの場合
  -----------------------------
  &INPUT
  iswitch = 3 ,
  zed = 51.0 ,
  config = '1s2 2s2 2p6 3s2 3p6 3d10 4s2 4p6 4d10 5s2 5p3' ,
  rel = 1 ,
  dft = 'PBE' ,
  /
  &InputP
  pseudotype = 3 ,
  file_pseudopw = 'Sb.pbe-tm.UPF' ,
  lloc = 1 ,
  tm = .true. ,
  /
  3
  4D 4 2 10.00 0.00 2.00 2.20
  5S 5 0 2.00 0.00 2.00 2.20
  5P 5 1 3.00 0.00 2.00 2.20

  &TEST
  /
  3
  4D 4 2 10.00 0.00 2.00 2.20
  5S 5 0 2.00 0.00 2.00 2.20
  5P 5 1 3.00 0.00 2.00 2.20
  -----------------------------

1) Sb.pbe-rrkjus.UPFの場合
  -----------------------------
  &INPUT
  iswitch = 3 ,
  zed = 51.0 ,
  config = '1s2 2s2 2p6 3s2 3p6 3d10 4s2 4p6 4d10 5s2 5p3' ,
  rel = 1 ,
  dft = 'PBE' ,
  /
  &InputP
  pseudotype = 3 ,
  file_pseudopw = 'Sb.pbe-rrkjus.UPF' ,
  lloc = 1 ,
  tm = .false.
  /
  3
  4D 4 2 10.00 0.00 3.40 3.40
  5S 5 0 2.00 0.00 4.00 4.00
  5P 5 1 3.00 0.00 4.60 4.60
  &TEST
  /
  3
  4D 4 2 10.00 0.00 3.40 3.40
  5S 5 0 2.00 0.00 4.00 4.00
  5P 5 1 3.00 0.00 4.60 4.60
  -----------------------------
  ※ 上記の条件だと cut-off 22 Ry 程度とcase.ld1.outに出力される。
  ※ [Kr] 410 5s2 5p3 という表記方法では動作しなかった。
  ※ Rcut と US Rcut の値が良いものだと、Errors in PS-KS equation のエラーが消えて、擬ポテンシャルが作成される。Rcut と US Rcut が小さすぎると n is too large と出る。
2) ld1.x のコマンドを用いて擬ポテンシャルを作成する。
  ./$HOME/espresso-4.2.1/bin/ld1.x case.ld1.out

References
[1] http://www.democritos.it/pipermail/pw_forum/2011-September/021827.html
[2] http://www.democritos.it/pipermail/pw_forum/2008-December/010960.html
[3] http://www.quantum-espresso.org/wiki/index.php/Naming_convention_for_the_pseudopotential
[4] http://www.quantum-espresso.org/pseudo.php
[5] http://www.pwscf.org/pseudo.htm
-----------------------------

-------------------------------------------------------------------------------
□ PAW
1) download: http://www.wfu.edu/~natalie/papers/pwpaw/man.html
2) tar zxvf atompaw-3.0.1.3.tar.gz
3) cd atompaw-3.0.1.3
4) ./configure CC=icc LIBS="-L/opt/intel/Compiler/11.0/084/mkl/lib/em64t -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread" --prefix=/home/ubuntu11/atompaw-3.0.1.3
5) make
6) make check
7) make install

使い方(調査中)
Examples
-----------------------------
A “minimal” input file
Boron [1s2] 2s2 2p1
4 partial-waves in basis
-----------------------------
B 5. # atome name # Z番号
LDA-PW ! XC_function. LDA-PW or GGA-PBE
2 2 0 0 0 ! s, p, d, f, g の最大値, 例えば Nickel 4 3 3 0 0
2 1 1.0 ! 2p1 (n=2, l=1, occupation=1), 埋まっていない軌道だけ記述でもよい
0 0 0
c ! 1s core
v ! 2s valence
v ! 2p valence
1 ! Basis contains s and p partial-waves
1.7 ! Rasius (atomic units), rpaw=1.7
y ! additional s partial-wave ← 2s ?
3.! at Eref=3.0 Ry 
n
y ! additional p partial-wave ← 2p ?
3.! at Eref=3.0 Ry
n
vanderbilt ! projector_keyword
2 0. ! l=2, Eref=0.0 Ry
1.5 ! Matching radius for Phi1 (l=0) ← 2s up?
1.5 ! Matching radius for Phi2 (l=0) ← 2s down?
1.7 ! Matching radius for Phi3 (l=1) ← 2p up?
1.7 ! Matching radius for Phi4 (l=1) ← 2p down?
2 ! 2=abinit, 3=PWscf
default ! PWscf の場合、pufdx, upfxmin upfzmesh の入力が必要
0 ! END
-----------------------------

A “complete” input file
Nickel [1s2 2s2 2s6 3s2 3p6] 3d9 4s1 4p0
6 partial-waves in basis
-----------------------------
Nickel 28.
GGA-PBE
scalarrelativistic
point-nucleus
loggrid 1500 80. 2.3 loggderivrange -10. 10. 300
4 4 3 0 0 ! Up to 4s, 4p and 3d9 4s2 4p0
1 0 2.0 ! Electronic configuration 3d 4s 4p
2 0 2.0
2 1 6.0
3 0 2.0
3 1 6.0
3 2 9.0
4 0 1.0
4 1 0.0
0 0 0
c ! 1s
c ! 2s
c ! 3s
v ! 4s valence
c ! 2p
c ! 3p
v ! 4p valence
v ! 3d valence
2 ! Basis contains s, p and d partial-waves
2.3 2.3 1.1 2.2 ! rpaw=2.3, rshape=2.3, rveff=1.1, rcore=2.2
y ! Additional s partial-wave
4. ! at Eref=4.0 Ry
n
y ! Additional p partial-wave
4. ! at Eref=4.0 Ry
n
y ! Additional d partial-wave
2.5 ! at Eref=2.5 Ry
n
custom rrkj gramschmidtortho sinc ! RRKJ PW + sinc shape func.
Bessel ! Simple Bessel Vloc
2.3 ! Matching radius for Phi1 (l=0)
2.3 ! Matching radius for Phi2 (l=0)
2.3 ! Matching radius for Phi3 (l=1)
2.3 ! Matching radius for Phi4 (l=1)
2.3 ! Matching radius for Phi5 (l=2)
2.3 ! Matching radius for Phi6 (l=2)
1
1 0 2.0 ! Test configuration 3d 4s
2 0 2.0
2 1 6.0
3 0 2.0
3 1 6.0
3 2 8.0
4 0 2.0
0 0 0
2 ! Output for abinit
prtcorewf noxcnhat rsoptim 12. 2. 0.00001 logspline 500 0.03 ! abinit options
3 ! Outpu for PWscf
upfdx 0.005 upfxmin -9.0 upfzmesh 1.0 ! PWscf options
0 ! END

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
※ 「espresso-4.3.2」→「Doc」→「user_guide.pdf」 P.29 などを見ておくとよい。
□ 並列化1(業者様向け) <gfortranでのコンパイル>
  下記を実行前に、andLinuxにあるsudo apt-get install を全て入れておく。
  tar zxvf espresso-4.3.2.tar.gz
  cd espresso-4.3.2
  ./configure
  make all

□ 並列化2(業者様向け) <gfortranでのコンパイル>
  下記を実行前に、andLinuxにあるsudo apt-get install を全て入れておく。
  Intel fortranなどGNU系以外のものをインストールした後で、GNUを用いたい場合は、下記のようにしてもよい。
  MPIF90=mpif90
  FC=gfortran
  F77=gfortran
  F90=gfortran
  CC=gcc
  CXX=g++
  export MPIF90 FC F77 F90 CC CXX
  FFLAGS='-O2'
  CFLAGS='-O2'
  export FFLAGS CFLAGS
  BLAS_LIBS='-lblas'
  LAPACK_LIBS='-llapack'
  FFT_LIBS='-lfftw3'
  export BLAS_LIBS LAPACK_LIBS FFT_LIBS
  tar zxvf espresso-4.3.2.tar.gz
  cd espresso-4.3.2
  ./configure
  make all 

□ 並列化1(学生様向け)<Intel Compiler + MPICH でのコンパイル>
  下記を実行前に、 ライブラリの設定 を参考にMPICH, FFTW3を導入する。
  MPIF90=/usr/local/mpich/bin/mpif90
  FC=ifort
  F77=ifort
  F90=ifort
  CC=gcc
  CXX=g++
  export MPIF90 FC F77 F90 CC CXX
  FFLAGS='-O2 -assume byterecl'
  CFLAGS='-O2'
  DFLAGS='-D__INTEL'
  export FFLAGS CFLAGS DFLAGS
  BLAS_LIBS='-L/opt/intel/Compiler/11.1/080/mkl/lib/32 -lmkl_blas95 -lmkl_intel -lmkl_intel_thread -lmkl_core -lifcore -lguide -lpthread -lsvml'
  LAPACK_LIBS='-L/opt/intel/Compiler/11.1/080/mkl/lib/32 -lmkl_lapack95'
  FFT_LIBS='-L/usr/local/lib -lfftw3'
  export BLAS_LIBS LAPACK_LIBS FFT_LIBS
  tar zxvf espresso-4.3.2.tar.gz
  cd espresso-4.3.2
  ./configure
  make all
※上手くいかない場合は、再度ターミナル(コンソール)を初めから開いて行う。
参考文献:http://nitrogen14.blog51.fc2.com/blog-entry-36.html

□ 並列化2(学生様向け)<Intel Compiler + MPICH でのコンパイル>
下記を実行前に、 ライブラリの設定 を参考にMPICH, FFTW3を導入する。
  MPIF90=/usr/local/mpich/bin/mpif90
  FC=ifort
  F77=ifort
  F90=ifort
  CC=gcc
  CXX=g++
  export MPIF90 FC F77 F90 CC CXX
  FFLAGS='-O2 -assume byterecl'
  CFLAGS='-O2'
  DFLAGS='-D__INTEL'
  export FFLAGS CFLAGS DFLAGS
  BLAS_LIBS='-L/opt/intel/Compiler/11.1/080/mkl/lib/32 -lmkl_blas95 -lmkl_blacs -lmkl_intel -lmkl_intel_thread -lmkl_core -lifcore -lguide -lpthread -lsvml'
  LAPACK_LIBS='-L/opt/intel/Compiler/11.1/080/mkl/lib/32 -lmkl_lapack95 -lmkl_scalapack_core'
  FFT_LIBS='-L/usr/local/lib -lfftw3 -lfftw3_mpi'
  export BLAS_LIBS LAPACK_LIBS FFT_LIBS
  tar zxvf espresso-4.3.2.tar.gz
  cd espresso-4.3.2
  ./configure
  make all
参考文献:http://nitrogen14.blog51.fc2.com/blog-entry-36.html 
※上手くいかない場合は、再度ターミナル(コンソール)を開いて初めから行う。

□ 並列化3(学生様向け)(調査中)<Intel Compilerでのコンパイル>
下記を実行前に、 ライブラリの設定 を参考にMPICH, OPENMP, LAM, インテルのFFTW3を導入する(導入の仕方はPhaseのインストールマニュアルや下記の参考文献に記載がある)。
  MPIF90=mpif90
  FC=ifort
  F77=ifort
  F90=ifort
  CC=icc
  CXX=icpc
  export MPIF90 FC F77 F90 CC CXX
  FFLAGS='-O2 -assume byterecl'
  CFLAGS='-O2'
  DFLAGS='-D__INTEL -D__FFTW3'
  export FFLAGS CFLAGS DFLAGS
  BLAS_LIBS='-L/opt/intel/Compiler/11.1/080/mkl/lib/32 -lmkl_blas95 -lmkl_intel -lmkl_intel_thread -lmkl_core -lifcore -lguide -lpthread -lsvml'
  LAPACK_LIBS='-L/opt/intel/Compiler/11.1/080/mkl/lib/32 -lmkl_lapack95'
  FFT_LIBS='-L/opt/intel/Compiler/11.1/080/mkl/lib/32 -lfftw3xf_intel'
  export BLAS_LIBS LAPACK_LIBS FFT_LIBS
  tar zxvf espresso-4.3.2.tar.gz
  cd espresso-4.3.2
  ./configure
  make all
参考文献:http://nitrogen14.blog51.fc2.com/blog-entry-36.html
http://nitrogen14.blog51.fc2.com/blog-entry-14.html

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
□ 附録:graceのインストール(ubuntu-ja-8.04 on VMwarePlayer)
  sudo dpkg -i fftw2_2.1.3-16.2_i386.deb
  sudo dpkg -i lesstif2_0.94.4-1_i386.deb
  sudo dpkg -i libnetcdf3_3.6.0+3.6.1-beta3-0ubuntu1_i386.deb
  sudo dpkg -i libt1-5_5.1.0-2ubuntu0.6.06.1_i386.deb
  sudo dpkg -i xmhtml1_1.1.7-14_i386.deb
  sudo dpkg -i grace_5.1.18-4ubuntu1_i386.deb
-------------------------------------------------------------------------------
□ 大規模な系ではIntel Fortran & C Compiler + MKL またはATLASが望まれる(64bitタイプ及び並列化も重要)。
Intel Fortran Compiler + MKL (並列化無し)の場合
PWscf : http://www.quantum-espresso.org/
  Intel Fotran Compiler + MKL
     tar zxvf espresso-4.2.1.tar.gz
     cd espresso-4.2.1
     ./configure BLAS_LIBS='-lmkl_blas95 -lmkl_intel -lmkl_intel_thread -lmkl_core -lifcore -lguide -lpthread -lsvml' LAPACK_LIBS='-lmkl_lapack95'
make all xspectra

-------------------------------------------------------------------------------
□ 下記はSpin を入れた系に対するバンド図プロット用 Fortran77コードの例です。

コンパイルの仕方
1. テキストファイルに下記のプログラムをコピー&ペーストし、例えば pwscf_band2plot.f という名称でSAVEします。
2. 6100 continue などど 数値と continue のある行の最初に空白を入れてください。
3. Terminal を開いて、cd で pwscf_band2plot.f のあるディレクトリをカレントディレクトにします。
4. gfortran pwscf_band2plot.f -o pwscf_band2plot と入力します。そうすると、実行ファイルが作成されます。

使い方
1. case.pw.out をコピーしてf01というファイル名にします。
2. 上記でコンパイルして作成された実行ファイル pwscf_band2plot を実行します。
3. 出力されたf10とf20がそれぞれupとdownの結果になります(non spinの場合 f10に結果が出力される)。プロットはWIEN2kと同じように、最後の2列をxとyに指定すれば良いです。
※ case.pw.outの結果を並べ替えただけですので、EFを0としたい場合はご自身で計算してください。
c=======================================================================
c  pwscf_band2plot.f
c    2012. 7. 8  Version 1.00  written by ***
c=======================================================================
c  process
c --------------------------------------------------------------------
      IMPLICIT NONE

      integer*4 kpoint_num_para
      parameter (kpoint_num_para = 999)
      integer*4 eigen_num_para
      parameter (eigen_num_para = 9999)
     
      character*130 READOR
     
c spin
      integer*4 spin
c do loop
      integer*4 i, j, m, n
c number of kpoint
      integer*4 num_kpoint
c number of eigen
      integer*4 num_eigen
c read_eigen_line
      integer*4 read_eigen_line
     
c EF_eV
      real*8 EF_eV
c kpoint, h, k, l
      real*8 h(kpoint_num_para), k(kpoint_num_para), l(kpoint_num_para)
c temp_delta_kpoint
      real*8 temp_delta_kpoint
c deltal_kpoint_length = sqrt( temp_delta_kpoint)
      real*8 delta_kpoint_length(kpoint_num_para)
c total_kpoint_length
      real*8 total_kpoint_length(kpoint_num_para)
     
c up spin
c eigenvalue(eigenvalue, kpoint, spin)
      real*8 eigenvalue_up(eigen_num_para, kpoint_num_para)
c eigenvalue_ef = eigenvalue - EF
      real*8 eigenvalue_up_sub_ef(eigen_num_para, kpoint_num_para)
     
c down spin
c eigenvalue(eigenvalue, kpoint, spin)
      real*8 eigenvalue_down(eigen_num_para, kpoint_num_para)
c eigenvalue_ef = eigenvalue - EF
      real*8 eigenvalue_down_sub_ef(eigen_num_para, kpoint_num_para)
     
c read line start number
      integer*4 num_eigen_line
      integer*4 num_kpoint_line
     
      spin = 2

c f01 : read *.pw.out data
      open( 1, file = 'f01' )
     
c read basic data
      rewind(01)
      i = 0
      do
        i = i + 1
        read( 1,'( a130 )' ) READOR
        if( READOR(1:32) .eq. '     number of Kohn-Sham states=' ) then
          num_eigen_line = i
        end if
        if( READOR(1:24) .eq. '     number of k points=' ) then
          num_kpoint_line = i - 1
          goto 6100
        end if
      end do
6100 continue

      rewind(01)
      i = 0
      do
        i = i + 1
        if( num_eigen_line .eq. i ) then
          read( 1,'( 32x,i13 )' ) num_eigen
c          write( 6,'( 32x,i13 )' ) num_eigen
        else
          read( 1,'( a130 )' ) READOR
        end if
        if( num_kpoint_line .eq. i ) then
          read( 1,'( 24x,i8 )' ) num_kpoint
c          write( 6,'( 24x,i8 )' ) num_kpoint
          goto 6200
        end if
      end do
6200 continue

c read eigenvalue data
c      write(6,*) 'OK'
      do
       
        if( READOR(1:28) .eq. ' ------ SPIN UP ------------' ) then
          spin = 2
          j = 0
          total_kpoint_length(1) = 0.0
          read( 1,'( a130 )' ) READOR
          read( 1,'( a130 )' ) READOR
          do
            j = j + 1
            read( 1,'( 13x, 3f7.4 )' ) h(j), k(j), l(j)
            if( j .ge. 2 ) then
              temp_delta_kpoint =
     & (h(j) - h(j-1))**2 + (k(j) - k(j-1))**2 + (l(j) -l(j-1))**2
            delta_kpoint_length(j) = sqrt(temp_delta_kpoint)
            total_kpoint_length(j) = total_kpoint_length(j-1) +
     & delta_kpoint_length(j)
            end if
            read( 1,'( a130 )' ) READOR
c ----
            if( mod(num_eigen,8) .gt. 0)then
              read_eigen_line = int(num_eigen / 8) + 1
            else
              read_eigen_line = int(num_eigen / 8)
            end if
            do n = 1, read_eigen_line
              read( 1, '( 2x, 8(1x,f8.4) )' )
     & ( eigenvalue_up((m+(n-1)*8), j), m=1, 8)
c              write( 6, '( 2x, 8(1x,f8.4) )' )
c     & ( eigenvalue_up((m+(n-1)*8), j), m=1, 8)
            end do
c ----
            read( 1,'( a130 )' ) READOR
            if( j .ge. (num_kpoint/spin) ) then
              goto 6300
            end if
          end do
          write(6, *) 'SPIN UP OK'
        end if
6300 continue
       
       
        if( READOR(1:28) .eq. ' ------ SPIN DOWN ----------' ) then
          spin = 2
          j = 0
          total_kpoint_length(1) = 0.0
          read( 1,'( a130 )' ) READOR
          read( 1,'( a130 )' ) READOR
          do
            j = j + 1
            read( 1,'( 13x, 3f7.4 )' ) h(j), k(j), l(j)
            if( j .ge. 2 ) then
              temp_delta_kpoint =
     & (h(j) - h(j-1))**2 + (k(j) - k(j-1))**2 + (l(j) -l(j-1))**2
            delta_kpoint_length(j) = sqrt(temp_delta_kpoint)
            total_kpoint_length(j) = total_kpoint_length(j-1) +
     & delta_kpoint_length(j)
            end if
            read( 1,'( a130 )' ) READOR
c ----
            if( mod(num_eigen,8) .gt. 0)then
              read_eigen_line = int(num_eigen / 8) + 1
            else
              read_eigen_line = int(num_eigen / 8)
            end if
            do n = 1, read_eigen_line
              read( 1, '( 2x, 8(1x,f8.4) )' )
     & ( eigenvalue_down((m+(n-1)*8), j), m=1, 8)
c              write( 6, '( 2x, 8(1x,f8.4) )' )
c     & ( eigenvalue_down((m+(n-1)*8), j), m=1, 8)
            end do
c ----
            read( 1,'( a130 )' ) READOR
            if( j .ge. (num_kpoint/spin) ) then
              goto 6400
            end if
          end do
          write(6, *) 'SPIN DOWN OK'
        end if
6400 continue
       
       
        if( READOR(1:12) .eq. '   JOB DONE.' ) then
          goto 6500
        end if
       
        read( 1,'( a130 )' ) READOR
       
      end do
6500 continue
      close(01)
     
c write output data
     
c f05 : band2igor up spin output
      open(10, file = 'f10' )
      do i = 1, num_eigen
        write( 10, '( i6 )' ) i
        do j = 1, (num_kpoint/spin)
          write( 10, '( 6(1x,f8.4) )' ) h(j),k(j),l(j),
     & delta_kpoint_length(j), total_kpoint_length(j),
     & eigenvalue_up(i, j)
        end do
      end do
      close(10)
     
c f06 : band2igor down spin output
      open(20, file = 'f20' )
      do i = 1, num_eigen
        write( 20, '( i6 )' ) i
        do j = 1, (num_kpoint/spin)
          write( 20, '( 6(1x,f8.4) )' ) h(j),k(j),l(j),
     & delta_kpoint_length(j), total_kpoint_length(j),
     & eigenvalue_down(i, j)
        end do
      end do
      close(20)
     
      stop
      end
-------------------------------------------------------------------------------

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