O()法によって1000個以上の原子を含む大規模な系を取り扱うことが可能ですが、 OpenMXで実行されるO()法では、波動関数に関する情報を得ることができません。 大規模系に対する波動関数と対応する固有値を得るための簡便な方法は、最初にO()法を用いて 自己無撞着な電子密度を求め、次にこの自己無撞着な電子密度の下で、一度だけ通常の対角化計算を 行うものです。 この方法の例として、564個の炭素原子で構成される多重連結したカーボンナノチューブ (MCCN)の大規模計算を示します。 まず最初に、16 MPIプロセス (Xeon, 2.6GHz)とO() Krylov部分空間法を用いてMCCNのSCF計算を実行しました。 計算条件は以下の通りです。C5.0-s2p1 (基底関数)、「scf.energycutoff=130 Ryd」、 「scf.criterion=1.0e-7」、 「orderN.HoppingRange=6.5 Å」、 「orderN.KrylovH.order=400」、およびRMM-DIISK(混合法)。 入力ファイルは「work」ディレクトリの中の「MCCN.dat」です。 フーリエ表示での差分電子密度のノルムをSCFステップの関数として、図 26 に示します。 系の電子密度が収束するのに56 SCFステップが必要であり、また計算時間は約7分でした。 この後、以下の様にキーワードを設定します。
scf.maxIter 1 scf.EigenvalueSolver Band scf.Kgrid 1 1 1 scf.restart on MO.fileout on num.HOMOs 2 num.LUMOs 2 MO.Nkpoint 1 <MO.kpoint 0.0 0.0 0.0 MO.kpoint>
|
次に波動関数を計算するために、16 MPIプロセス (Xeon, 2.6GHz)と通常の対角化法を用いて、同じ系の計算を実行し、 その計算時間は約2分でした。図 27 は上記の方法で計算したMCCNの点でのHOMOおよびLUMOの等値面図です。 この計算例では、O()法と通常の対角化法の計算時間の差はそれほど大きくありませんが、 O()法と通常の固有値解法の組み合わせする本手法は数千原子を含む大規模系に対して有用だと考えられます。