*Crystal Orbital Overlap Population (COOP) [#m656b473] -吸着系における電荷の解析(Mulliken電荷解析の結晶(吸着)系への拡張) **HOWTO [#nac8d788] -計算に必要なファイルの準備(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 ! DUMMY knv3 ! DUMMY 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, NEXTST=1にして再度STATEを実行~ //この際CPU数は必ず1にすること!!!!!!!!!! //(新しいプログラムでは並列OKらしいが詳細不明。) //(新しいプログラムは並列でも動作するが、k点が多いとsij, bijが正しく計算できていない可能性がある。その結果、coop_analysis.fを実行する際にCholesky分解に失敗する。) //---この際SCFはnextst=1で収束させる。nextst=0とすると大きな系ではsij, bijが正しく計算できないことがある。 --並列計算を行うと *** CHECKING THE ORTHONORMALITY *** attn! imo,imo2,b3ij= 132 172 0.0171 attn! imo,imo2,b3ij= 132 185 -0.0132 attn! imo,imo2,b3ij= 132 191 0.0154 ... のように規格直交性がmype=0の担当分しか出力されないが、COOPなどは正しく計算される。 -出力ファイル: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 ---後処理 ---解析 PDOSは吸着系を吸着子にProjectしたDOS COOPは結合か反結合かをしめすDOS PDOSは吸着系を吸着子にProjectしたDOS COOPは結合か反結合かをしめすDOS -古いバージョンでは無理でしたが、最新版のSTATEではCOOPは並列化されています (k点並列は自動で抑制)。 **WARNING [#ed9c0a57] //-COOP解析の前のSCF計算には必ずDavidson法を使って下さい。RMMを使用する際にはかならず非局所ポテンシャルを逆格子空間で取り扱うようにして下さい。~ //(pdos_coop*は実空間の射影に対応していません) -COOP解析を行う際には必ず擬ポテンシャルの非局所部分を逆格子空間で扱って下さい(NEXTST=1)。 pdos_coop*は逆格子空間での射影にしか対応していません。 **Reference [#y8fa79f7] -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)