Crystal Orbital Overlap Population (COOP)

  • 吸着系における電荷の解析(Mulliken電荷解析の結晶(吸着)系への拡張)

HOWTO

  • 古いバージョンの場合(5.3.0以前)
    • ソースファイルの変更(main.f90)
    • pdos_coop.f90のパラメータを計算した系に合わせて変更する。
    • プログラムの再コンパイル
    • ICOND=16にして実行
  • 最近のバージョン(5.3.1以降)
    • 計算に必要なファイルの準備(STATEの実行)
      • zaj.data:吸着系の波動関数(例 : CO/Pt(111))
      • zak1.data:吸着子の波動関数(例 : CO )
      • zak2.data :今のバージョンでは二種類の吸着子(共吸着系)を考慮できる。
        二種類目の吸着子があれば計算し、波動関数をzak2.dataとリネームする。
      • zak3.data:基板金属の波動関数(例 : Pt(111) )
        上記の波動関数のデータを吸着系と孤立系について個別にSTATEを実行して生成する。
        このとき、孤立系(吸着子、基板金属)のユニットセル、k点、カットオフエネルギーは 吸着系と同じになるように注意する。
        さらにバンド数NEGについて、
        NEG(zaj.data) = NEG(zak1.data) + NEG(zak2.data)+NEG(zak3.data)、
        となる必要がある。すなわち、孤立系のバンドの和が吸着系のものと一致していないといけない。

      • eko.data:吸着系の固有値やFermiエネルギーを記述したデータ。
        フォーマットは以下の通り
        1行目:Fermi energy
        (以下、k点の数だけ繰り返し)
        2行目:k点のインデックス、Gベクトルの数、k点、k点の重み
        3行目:固有値
        ...

        (以下、eko.dataに関するコメント) zaj.dataを出力した同計算のnfoutより FERMI LEVEL以下からOCCUPATIONまでの数値(k点の値や重み、EIGEN VALUEなど)を各k点ごとに抜き出したデータ。EIGEN VALUEなどの数値のない行は詰める。
        例:
        NKP=    3  NGP=     22102  K=(  0.19421  0.00000  0.00000)  WKP= 0.0625~
          3   22102   0.19421  0.00000  0.00000   0.0625


        rafiki:/home/hamada/STATE/tools/state2eg.pl というスクリプトを作りました。STATEの出力ファイルからeko.dataを作成することが可能です。
        使用例:
        state2eg.pl nfout_1 > eko.data
  • nfcoop.data : 参照 subroutine pdos_coop3 @ pdos_coop.f90
    kspin !データは用いられていないかも 
    knv3 !データは用いられていないかも
    npdosmo1, kpdosmo1, katm_1, klmta_1    ! 1番目の吸着子
    npdosmo2, kpdosmo2, katm_2, klmta_2    ! 2番目の吸着子がない場合は 0 0 0 0 を入力する
    npdosmo3, kpdosmo3, katm_3, klmta_3    ! 基板
    epdos(1), epdos(2), epdos(3), npdose   ! DOSのEnergyの下限, 上限, Gaussianによるピークのぼかし幅, Energyのグリッド数
    1行目:
    kspin:スピンの種類:1:非磁性、2:磁性
    2行目:
    knv3:k点の数
    3-5行目:
    npdosmoX(X=1,2,3):coop_analysisで使用する波動関数のバンド数
    kpdosmoX(X=1,2,3): 波動関数のバンドの次元(最大次元)
    katm_X(X=1,2,3):各系(吸着系、孤立系)における原子数
    klmta_X(X=1,2,3):ノンローカルポテンシャルの角運動量成分の数と原子数のインデックスの総和。
    各系における計算での出力ファイルからklmtaを探し記入すること。
    epdos(1:3):計算する状態密度のエネルギーの下限と上限、Gaussianのぼかしの幅、エネルギーのグリッドの数
    (comment)
    nfcoop.dataはSTATEの計算とCOOP analysisの計算の両方で使用できるように設計されています。
    npdosmo*はCOOP解析で用いる分子軌道の数、kpdosmo*は分子軌道の数の上限、即ち、プログラムでの配列の次元を指定するパラメータになります。ですから
    npdosmo* < kpdosmo*
    となります。
    COOPの解析は吸着系の波動関数を吸着子と基板の分子軌道の線形結合で表現し軌道の結合状態とpopulationの計算を行うものです。従ってSTATEの計算で求めた分子軌道が多すぎる場合にはovercompletenessの問題が生じます。その問題はnpdosmo*を減らすことにより解消できます。

  • Overlapの計算
    • ICOND=17にして再度STATEを実行
      この際CPU数は必ず1にすること!!!!!!!!!!(新しいプログラムでは並列OKらしいが詳細不明。)
  • 出力ファイル:coop_sij.data, coop_bij.data
  • coop analysisの実行
    • coop_analysisはfortranのプログラムです。smithの~morikawa/STATE/src/Analysis/coop/COOP_hamada/coop_analysis.f90 を使うこと。f90のプログラムですが、固定形式で書かれているのでcoop_analysis.fと改名してコンパイルする方がよい。
    • コンパイル方法 gfortran coop_analysis.f -llapack -lblas -o coop_analysis
    • Input files : nfcoop.data, coop_sij.data, coop_bij.data
    • 実行
      %> coop_analysis > coop.out


NOTE

  • 古いバージョンでは無理でしたが、最新版のSTATEではCOOPは並列化されています。濱田にバージョンを確認して下さい。

WARNING

  • COOP解析の前のSCF計算には必ずDavidson法を使って下さい。RMMを使用する際にはかならず非局所ポテンシャルを逆格子空間で取り扱うようにして下さい。
    (pdos_coop*は実空間の射影に対応していません)

Reference

  • R. Hoffmann, Rev. Mod. Phys. 60, 601 (1988).
  • H. Aizawa and S. Tsuneyuki, Surf. Sci. 399, L364 (1998).

更新履歴

  • 2007-10-11 (木) 17:57:02 I. Hamada (comment)
  • 2007-10-07 (金) 18:35:00 N.Mitsuda (nfcoop.dataについて、加筆修正)
  • 2007-09-11 (火) 17:10:21 S. Yanagisawa (若干、加筆訂正)
  • 2007-09-05 (水) 17:06:49 I. Hamada (misc. modif.)
  • 2007-08-31 (金) 18:12:00 N.Mitsuda (柳澤さんから教えていただいた説明の追加)
  • 2006-11-29 (水) 12:22:11 I. Hamada (created)
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS