next up previous contents index
Next: MLWFの作成例 Up: 最局在ワニエ関数 Previous: 解析   Contents   Index

スプレッド関数の最適化過程の確認

最適化の過程は標準出力に書き出されます。以下の方法により、最適化の進行過程を確認して下さい。 ここでは便宜上、標準出力はファイル「stdout.std」に保存されていると仮定します。 以下で示す例は、「openmx*.*/work/wf_example」中の入力ファイル「Si.dat」を用いて、ユーザー各自が 同じ計算を実行することができます。

DISE

次の様にして、バンドのもつれをほどく処理(最適化の第1段階)の自己無撞着ループが確認できます。

    % grep "DISE" stdout.std

    |  Iter  | Omega_I (Angs^2) | Delta_I (Angs^2) |  ---> DISE
    |     1  |   18.371525257652|   18.371525257652|  ---> DISE
    |     2  |   17.955767336391|   -0.415757921261|  ---> DISE
    |     3  |   17.659503060694|   -0.296264275698|  ---> DISE
    |     4  |   17.454033576174|   -0.205469484520|  ---> DISE
    |     5  |   17.311180447271|   -0.142853128902|  ---> DISE
    |     6  |   17.210945408916|   -0.100235038355|  ---> DISE
    |     7  |   17.139778800398|   -0.071166608519|  ---> DISE
    |     8  |   17.088603102826|   -0.051175697572|  ---> DISE
    |     9  |   17.051329329614|   -0.037273773211|  ---> DISE
    |    10  |   17.023842837298|   -0.027486492316|  ---> DISE
    ........
    .....
    ...
    .
ここで、「Iter」は繰り返し数、「Omega_I」はスプレッド関数のゲージ不変部分、 「Delta_I」は隣接する2つのステップ間の「Omega_I」の差をそれぞれ意味します。 キーワード「Wannie.Dis.Conv.Criterion」に与えた収束条件が「Delta_I」に適用されます。

CONV

次の様にして、スプレッド関数のゲージ依存部分の最適化(最適化の第2段階)過程が確認できます。

    % grep "CONV" stdout.std

   Opt Step |Mode of Gradient|d_Omega_in_steps|     d_Omega   | (in Angs^2) ---> CONV 
   | SD    1 | 6.52434844E-01 | 5.41612774E-04 |-5.41340331E-04|  ---> CONV 
   | SD    2 | 6.51123660E-01 | 5.40524307E-04 |-5.40253165E-04|  ---> CONV 
    .....
    .....
   | SD  200 | 4.77499752E-01 | 3.96392019E-04 |-3.96271308E-04|  ---> CONV 
   |Opt Step |Mode of Gradient|     d_Omega    | (Angs^2) ---> CONV 
   | CG    1 | 8.61043764E-01 | -3.24716990E-01|  ---> CONV 
    .....
    .....
   | CG   58 | 1.67083857E-12 | -5.37225101E-13|  ---> CONV 
   | CG   59 | 5.44431651E-13 | -1.98972260E-13|  ---> CONV 
   ************************************************************* ---> CONV
                     CONVERGENCE ACHIEVED !                      ---> CONV
   ************************************************************* ---> CONV
                     CONVERGENCE ACHIEVED !                      ---> SPRD
ここで、「Opt Step」はSD法またはCG法のどちらかにおける最適化ステップであり、「Mode of Gradient」は、スプレッド関数の勾配の絶対値です。 SD法では、ゲージ依存スプレッド関数における隣接する2つのステップ間の差が2つの異なる方法で計算されます。 その結果が「d_Omega_in_steps」および「d_Omega」です。「d_Omega_in_steps」は、

$\displaystyle d\Omega = \epsilon \sum_{\bf k} \vert\vert G^{\bf (k)} \vert\vert^2,$      

であり、$\epsilon$はステップ長、$G^{\bf (k)}$はスプレッド関数の勾配です。この式の詳細は参考文献 [78]に説明されています。 一方、「d_Omega」は

$\displaystyle d\Omega = \Omega^{(n+1)} - \Omega^{(n)},$      

により与えられます。 ここで、$n$は反復(繰り返し)数です。CG法では、「d_Omega」のみを評価します。 キーワード「Wannier.Minimizing.Conv.Criterion」で与えられた収束条件が、 「Mode of Gradient」に適用されます。

SPRD

次の様にして、ワニエ関数の広がりの変化を確認できます。

     % grep "SPRD" stdout.std

    |Opt Step |     Omega_I    |     Omega_D    |     Omega_OD  |    Tot_Omega  | (in Angs^2) ---> SPRD 
    | SD    1 |   16.93053479  |    0.13727387  |    6.57748455 |   23.64529321 |  ---> SPRD 
    | SD    2 |   16.93053479  |    0.13724827  |    6.57696989 |   23.64475295 |  ---> SPRD 
    | SD    3 |   16.93053479  |    0.13722279  |    6.57645620 |   23.64421378 |  ---> SPRD 
    | SD    4 |   16.93053479  |    0.13719743  |    6.57594347 |   23.64367569 |  ---> SPRD 
     .....
     .....
    | SD  199 |   16.93053479  |    0.13399285  |    6.48989479 |   23.55442243 |  ---> SPRD 
    | SD  200 |   16.93053479  |    0.13398326  |    6.48950811 |   23.55402616 |  ---> SPRD 
    |Opt Step |     Omega_I    |     Omega_D    |     Omega_OD  |    Tot_Omega  | (Angs^2) ---> SPRD 
    | CG    1 |    16.93053479 |     0.15480701 |    6.14396737 |   23.22930917 |  ---> SPRD 
    | CG    2 |    16.93053479 |     0.17172507 |    5.87830203 |   22.98056189 |  ---> SPRD 
    | CG    3 |    16.93053479 |     0.17012089 |    5.78940789 |   22.89006357 |  ---> SPRD 
     .....
     .....
    | CG   57 |    16.93053479 |     0.16557875 |    5.73752928 |   22.83364282 |  ---> SPRD 
    | CG   58 |    16.93053479 |     0.16557876 |    5.73752928 |   22.83364282 |  ---> SPRD 
    | CG   59 |    16.93053479 |     0.16557876 |    5.73752928 |   22.83364282 |  ---> SPRD 
    ************************************************************* ---> SPRD
                      CONVERGENCE ACHIEVED !                      ---> SPRD
    ************************************************************* ---> SPRD
ここで、「Opt Step」はSD法またはCG法のどちらかにおける最適化ステップです。 「Omega_I」はスプレッド関数のゲージ不変部分です。 「Omega_D」はおよび「Omega_OD」は、それぞれゲージ依存の対角成分および非対角成分からの寄与です。 「Tot_Omega」は、スプレッド関数の上記3つの成分の総和です。

CENT

次の様にしてワニエ関数中心の変化を確認できます。

    % grep "CENT" stdout.std
    WF   1 ( 1.14164289, 1.14164298, 1.14164266) |   2.95573380  --->CENT
    WF   2 ( 1.55716251, 1.55716342, 1.14164203) |   2.95572597  --->CENT
    WF   3 ( 1.55716191, 1.14164295, 1.55716190) |   2.95572978  --->CENT
    WF   4 ( 1.14164389, 1.55716087, 1.55716055) |   2.95572957  --->CENT
    WF   5 ( 0.20775982, 0.20775967, 0.20775893) |   2.95572677  --->CENT
    WF   6 ( 0.20776045,-0.20775959,-0.20775914) |   2.95572605  --->CENT
    WF   7 (-0.20775851, 0.20775981,-0.20775888) |   2.95572925  --->CENT
    WF   8 (-0.20775787,-0.20775767, 0.20775933) |   2.95573335  --->CENT
    Total Center ( 5.39761509, 5.39761243, 5.39760738) sum_spread  23.64583455 --->CENT
     SD     1 ------------------------------------------------------------------------> CENT
    WF   1 ( 1.14164582, 1.14164592, 1.14164559) |   2.95566613  --->CENT
    WF   2 ( 1.55715957, 1.55716049, 1.14164497) |   2.95565831  --->CENT
    WF   3 ( 1.55715897, 1.14164588, 1.55715897) |   2.95566211  --->CENT
    WF   4 ( 1.14164683, 1.55715794, 1.55715761) |   2.95566190  --->CENT
    WF   5 ( 0.20775689, 0.20775673, 0.20775599) |   2.95565910  --->CENT
    WF   6 ( 0.20775752,-0.20775666,-0.20775620) |   2.95565838  --->CENT
    WF   7 (-0.20775558, 0.20775687,-0.20775594) |   2.95566158  --->CENT
    WF   8 (-0.20775493,-0.20775474, 0.20775639) |   2.95566569  --->CENT
    Total Center ( 5.39761509, 5.39761243, 5.39760738) sum_spread  23.64529321 --->CENT
     SD     2 ------------------------------------------------------------------------> CENT
     .....
     .....
     CG    59 ------------------------------------------------------------------------> CENT
    WF   1 ( 1.14585349, 1.14584696, 1.14584386) |   2.85421846  --->CENT
    WF   2 ( 1.55295615, 1.55294970, 1.14584792) |   2.85422167  --->CENT
    WF   3 ( 1.55296133, 1.14584610, 1.55295139) |   2.85421070  --->CENT
    WF   4 ( 1.14584053, 1.55296761, 1.55296391) |   2.85417080  --->CENT
    WF   5 ( 0.20356211, 0.20355857, 0.20355600) |   2.85418933  --->CENT
    WF   6 ( 0.20355119,-0.20355008,-0.20355192) |   2.85422458  --->CENT
    WF   7 (-0.20355306, 0.20355395,-0.20355905) |   2.85420611  --->CENT
    WF   8 (-0.20355603,-0.20356000, 0.20355520) |   2.85420117  --->CENT
    Total Center ( 5.39761571, 5.39761281, 5.39760730) sum_spread  22.83364282 --->CENT
「SD」または「CG」で始まる行に、最適化法とそのステップ数が示されています。 「WF」で始まる行は、各ワニエ関数の中心の(x, y, z)座標をÅ単位で、またその広がりをÅ$^{2}$単位で示しています。 すべてのワニエ関数中心と広がりの総和を、「Total Center」で始まる行に示しています。



t-ozaki 2013-12-23