nano_exit

基礎的なことこそ、簡単な例が必要だと思うのです。

グラフ理論の個人用メモ。

  • graph

vertexとedgeの集合。

  • vertex

点。

  • edge

二つのvertexの非順序対。辺。

  • adjacent

edgeで繋がれている二つのvertex間の関係。もしくは、veterxを共有している二つのedgeの関係。隣接。

  • incident

edgeにvertexが含まれているときの「edgeとvertex」の関係。接続。adjacentとの混同に注意。

  • degree

あるvertexにincidentしているedgeの数。

  • isolated vertex

degreeが0のvertex

  • end vertex

degreeが1のvertex

  • loop

同じvertexによるedge。

  • simple graph

loopやmultiple edgeを含まないgraph。

  • directed graph (digraph)

edgeが非順序対ではなく、順序対になったgraph。

  • walk

あるvertexからあるvertexへの行き方。vertexの有限列。ただし、隣り合う項の対はedge setに含まれていなければならない。walkに含まれるedgeの数が長さとして定義される。歩道。

  • trail

含まれるedgeが全て異なるwalk。小道。

  • path

どのvertexも高々一つしか現れないwalk。道。

  • cycle

出発と終着が同じpath。walkでもcycleと言うのか不明。

  • Eulerian graph

全てのedgeを一回ずつ通って出発点に戻るwalkを持つgraph。

  • Hamiltonian graph

全てのvertexを通るcycleがpathになっているgraph。
Eulerian graphのvertex version。

  • connected graph

どのvertexもwalkで繋げることのできるgraph。

  • disconnected graph

walkで繋げることのできないgraphを含むgraph。connected graphのunion。

  • subgraph

vertex setおよびedge setが部分集合になっていて、それら部分集合がgraphを成しているもの。

  • complement

vertex setは同じで、adjecentでなかったvertexを繋いだgraph。補グラフ。

  • tree

どのvertex間もpathが一つしかないgraph。

  • planar graph

交差が無いように書き直せるgraph。

  • regular graph

どのvertexのdegreeも等しいsimple graph。

  • complete graph

相異なるvertexが全てadjacentにあるsimple graph。 K_nと書き、edgeの数は n(n-1)/2
degree  n-1のregular graphとも言える。

  • cycle graph

degree 2のregular graph。vertexの数が nのcycle graphを C_nと書く。

  • path graph

cycle graphからedgeを一つ取り除いたgraph。P_nと書く。

  • wheel

 C_{n-1}にvertexを一つ足し、他の全てのvertexとadjacentになるようにedgeを追加したgraph。W_nと書く。

  • bipartite graph

graphのvertex setを互いに素な二つのvertex setに分け、graphの全てのedgeが分割したvertex set間を繋いでいるとき、このgraphはbipartite graphと呼ばれる。

  • complete bipartite graph

分割したvertex set間の各点が相手のvertex setのvertex全てと隣接しているとき、このgraphはcomplete bipartite graphと呼ばれる。

  • contraction

あるedgeを消去し、それにincidentしていた二つのvertexを統合して一つのvertexにすること。縮約。

  • isomorphic

二つのgraph間でvertexとedgeが一対一対応する状態。同形。

  • self complementary

complementが元のgraphとisomorphicな状態。自己補対。

  • automorphism

vertex setに対して全単射でかつedge setの構造を保存している写像。自己同形写像

参考文献:グラフ理論入門

外部プログラムをpythonでループさせて動かす(自分用のメモ)。

pythonを使って外部プログラムをループ動作させる。

エラーが起こることを想定して、適当にエラーを起こさせるためのfortranプログラムのソースを用意。

! test.f90
program test
open( 10, file = 'test.inp', status = 'old' )
end program test

適当にコンパイルしておく。

gfortran test.f90 -o test.out

ループの途中でのファイルのやり取りを想定して、適当なテキストファイルを用意。

touch a.txt

適当なループでtest.outを繰り返し動作させるpythonスクリプト
errorを発生させるため、test.outが読み込むtest.inpを用意せずに動かす。
発生したerrorはtest.errに書き込ませるため、動作は途中で止まらず、故にループも止まらない。
以下のスクリプトでは、各ループでの結果を別々のディレクトリに保存することを想定しているため、ディレクトリ及びパス操作が含まれている。

# test.py

import os
import shutil
import time
from subprocess import call

time_start = time.time()

# corrent work directory
cwd = os.getcwd()

# arbitrary loop
for i in range(3):

    # directory path which stores results
    path = './test{}'.format( i )

    # check path and make directory
    if os.path.exists( path ):
        print( '{}.exists.'.format( path ) )
    else:
        os.makedirs( path )

    # copy required files from cwd
    shutils.copy( cwd + '/a.txt', path + '/a.txt' )

    # change directory
    os.chdir( path )
    
    # main operation
    cmd = '{}/test.out 2> test.err'.format( cwd )
    call( cmd. shell = True )

    # return to the original directory
    os.chdir( cwd )

time_end = time.time()
dt = time_end - time_start
print( 'time: {:.1f}'.format( dt ) )
print( 'time: {:d}h {:d}m'.format( int(dt/3600), int(dt%3600/60) )

周期結晶におけるフーリエ変換(フーリエ級数展開)。

そもそもの「フーリエ変換」と「フーリエ級数」の違いについては以下のサイトが詳しい。
フーリエ変換とDFTの関係
離散化と周期化

ざっとまとめると、
フーリエ変換:x(連続、非周期)→ k(連続、非周期)
フーリエ級数:x(連続、周期)→ k(離散、非周期)
z変換:x(離散、非周期)→ k(連続、周期)
離散フーリエ変換:(離散、非周期)→ k(離散、非周期)

したがって、周期結晶では周期性があるので、フーリエ級数に対応する。
しかし、固体物理で言う周期性には二段階あるため、注意が必要である。簡単のため一次元を考えると、

  1. 周期 a: unit cellの周期性
  2. 周期 L:  N個のunit cellの周期性

 Nというのは、フーリエ級数展開するのときのパラメータの様なものだと考えるのが簡単である。
もう少し説明すると、「 aがunit cellの周期」であることを一旦忘れて、「 aが領域 Lのデータ点の間隔」と思えば、 L N)が大きければ大きいほど波数の間隔は細かくなり、長波長の波を表現することができる。
 N \rightarrow \inftyとすると、「フーリエ変換」に戻り、周期性の恩恵は得られない。

わざわざ二段階にする必要は無いように感じられるかもしれない。しかし、周期 aだけを採用すると、周期 aで繰り返している現象しか記述できない。例えば、波動関数がunit cellをまたがって位相情報を共有している場合、明らかに波動関数の周期は aではない。その周期が収まる「入れ物」が必要であり、収まるように拡大した周期が Lなのである。

この条件において、フーリエ級数展開を考える。
そのために、ややこしいが、「周期 Lの周期性が有限回( 2M+1回)」であるとし、後で M\rightarrow \inftyの極限を取る方法を採用する。

任意の周期関数 fは次のように書ける。

\displaystyle
f( r ) = \sum_{m=-M}^M f_L( r - m L )
ただし、 f_L( r )  0 \le r < L の範囲で値を持つとする。

これを「フーリエ変換」する。
係数の付け方は以前の内容を踏襲。
koideforest.hatenadiary.com

\displaystyle
f( k ) = \int dr \, f( r ) e^{- i k r }
  = \sum_{m=-M}^M \int dr \, f_L( r - m L ) e^{- i k r }
\\
\displaystyle
\qquad
  = \sum_{m=-M}^M e^{- i k m L } \int^L_0 dr' \, f_L( r' ) e^{- i k r' }
  \equiv f_L( k ) \sum_{m=-M}^M e^{- i k m L }

 \sum_{m=-M}^M e^{- i k m L }はディリクレ核と呼ばれ、 M \rightarrow \inftyデルタ関数になる。
(参考:離散化と周期化
これがこの記事の肝である(肝の部分を引用で済ますのもどうかと思うが)。
記事によれば、

\displaystyle
\lim_{M\rightarrow \infty} \sum_{m=-M}^M e^{- i k m L }
  = \frac{2\pi}{L} \sum_{n=-\infty}^\infty \delta\left( k - \frac{2\pi}{L} n\right)
\\
\qquad
\displaystyle
  \equiv \frac{2\pi}{L} \sum_{n=-\infty}^\infty \delta\left( k - k_n \right)

したがって、

\displaystyle
f( r ) = \sum_{m=-\infty}^\infty f_L( r - m L )
\\
\displaystyle
f( k ) = \frac{2\pi}{L} \sum_{n=-\infty}^\infty  \delta\left( k - k_n \right)  \int^L_0 dr' \, f_L( r' ) e^{- i k r' }
  = \frac{2\pi}{L} \sum_{n=-\infty}^\infty  \delta\left( k - k_n \right)  f_L( k_n )

逆変換は

\displaystyle
f( r ) = \frac{1}{2\pi} \int dk \, f(k) e^{ikr}
  = \frac{1}{L} \sum_{n=-\infty}^{\infty} f_L(k_n) e^{i k_n r}
  = \frac{1}{L} \sum_{n=-\infty}^{\infty} f_L(k_n) e^{i k_n ( r - mL )}
\\
\displaystyle
\qquad
  = \frac{1}{L} \sum_{n=-\infty}^{\infty} \int dr' \, f_L( r' ) e^{i k_n (r - mL - r')}
\\
\displaystyle
\qquad
  = \frac{1}{L} \frac{1}{\Delta k} \sum_{n=-\infty}^{\infty} \Delta k \, \int dr' \, f_L( r' ) e^{i k_n (r - mL - r')}
\\
\displaystyle
\qquad
  = \frac{1}{2\pi} \int dk\, dr' \, f_L( r' ) e^{i k (r - mL - r')}
\\
\displaystyle
\qquad
  = \int dr' \, f_L( r' ) \delta( r - mL - r' )
\\
\displaystyle
\qquad
  = f_L( r - mL )
 m f( r ) = f_L( r - mL )を満たす整数である。


ここまでは、ほぼ一般のフーリエ級数の話である。
ここから、二段階の周期性を入れた「周期結晶のフーリエ級数展開」の話になる。

もし、関数 g( r )が周期 aの周期性を持つ場合、周期 Lは周期 a N個含むから、

\displaystyle
g( r ) = \sum_{m = -\infty}^{\infty} g_L( r - m L )
\\
\displaystyle
g_L( r ) = \sum_{l = 0}^{N-1} g_a( r - l a )

これにより、フーリエ級数

\displaystyle
g_L( k_n ) =  \int^L_0 dr' \, g_L( r' ) e^{- i k_n r' }
  = \sum_{l = 0}^{N-1} \int^a_0 dr' \, g_a( r' - l a ) e^{- i k_n r' }
\\
\displaystyle
\qquad
  = \sum_{l = 0}^{N-1} e^{-i ( k_n a ) l} \int^a_0 dr'' \, g_a( r'' ) e^{- i k_n r'' }
  \equiv \sum_{l = 0}^{N-1} e^{-i ( k_n a ) l} g_a( k_n )

 \sum_{l = 0}^{N-1} e^{-i ( k_n a ) l}は以前にまとめた内容が使えて、 n = n_K N  n_K:任意の整数)のみが許される。
koideforest.hatenadiary.com
注意として、以前の記事では 0 \le n \le N-1の範囲(後述)だったため k_n = 0しか許されないが、今の場合には無限なのでゼロ以外にも成分が残る。
したがって、

\displaystyle
\sum_{l = 0}^{N-1} e^{-i ( k_n a ) l} = N \delta_{k_n, K}
\\
\displaystyle
K \equiv \frac{ 2 \pi }{ L } n_k N = \frac{ 2 \pi }{ N a } n_k N = \frac{ 2 \pi }{ a } n_K 
\\
\displaystyle
g_L( k_n )   = N \delta_{k_n, K} g_a( K )
 Kは逆格子ベクトルと呼ばれ、周期 a格子定数)で決まる。
したがって、 k = \tilde k + Kとすれば、 \tilde k = k_i ( 0 \le i \le N-1 ) K_j = k_{jN}の二つのラベルで関数を表すことができる。
これが、以前に 0 \le n \le N-1の範囲しか考えなかった理由である( \tilde k_i ( 0 \le i \le N-1 )のみを考えていたということ)。

これにより、周期 Lを持つ関数 f_Lは、

\displaystyle
f_L( k ) = f_L( \tilde k + K ) = f_{L, K}(\tilde k)
のように表すこともできる。

逆変換は、

\displaystyle
g( r )  = \frac{1}{L} \sum_{n=-\infty}^{\infty} g_L(k_n) e^{i k_n r}
  = \frac{1}{a} \sum_{j=-\infty}^{\infty} g_a(K_j) e^{i K_j ( r - j a )}
となる。

ASEでバンド図のフェルミエネルギーを設定する話。

ASEを使ってQuantum ESPRESSOを動かすチュートリアルをやってみた。
Espresso — ASE documentation
第一原理計算高速チュートリアル · 物性実験家のための無料でできる第一原理計算入門

すると、計算したフェルミエネルギーをバンド図のプロットで設定しようとするとフェルミエネルギーのところで、「cannot attribute "reference"」的なエラーが出る。

calc = Espresso( ... )
...
bs = calc.band_structure()
bs.reference = fermi_level

ソースを見るために、"pip show ase" でインストールした場所を探す。
pipでインストールしたパッケージの場所を調べる - Qiita

ソースを見てみると、calc.band_structure() は クラスase.spectrum.band_structure.BandStructureのインスタンスを作るので、 bs は Espresso にはもはやぶら下がっていない。
それで、BandStructureを見てみると、

class BandStructure:
    def __init__(self, path, energies, reference=0.0):
        ...
        self._reference = reference

    ...

    @property
    def reference(self) -> float:
        return self._reference

したがって、クラス変数は「_reference」であり、「reference」はクラス関数なのである。

ではなぜ「bs.reference」と変数のように書けたかというと、pythonのデコレーターである@propetyのおかげである。
3.4. プロパティ - ゼロから学ぶ Python
したがって、いくら変数のように見えても、関数であるから代入は出来ない。このため、外から見ると変数の再代入が禁止されているように見える。

つまり、正しくは「bs._reference = fermi_level」と書けば良い、ということであった。

二体演算子の第二量子化

二体演算子 vは、(Fermion)粒子のペアが重要であり、順列には依らない。

\displaystyle
v_{i,j} = v_{j,i}

N粒子系に作用する二体演算子 V_Nは、 vの全ての粒子ペアを取ったもので表せる。

\displaystyle
  V_N = \sum_{i < j}^N v_{i,j}
    = \frac{1}{2}\left( \sum_{i < j}^N v_{i,j} + \sum_{i < j}^N v_{j,i} \right)
    = \frac{1}{2}\left( \sum_{i < j}^N v_{i,j} + \sum_{j < i}^N v_{i,j} \right)
    = \frac{1}{2} \sum_{ i \neq j }^N v_{i,j}

 vの位置表示について対角的だとすると、

\displaystyle
v_{i,j} | \vec r_1 ; i \rangle | \vec r_2 ; j \rangle
  = v( \vec r_1, \vec r_2 ) | \vec r_1 ; i \rangle | \vec r_2 ; j \rangle
\\
\displaystyle
\qquad
  = v_{j,i} | \vec r_1 ; i \rangle | \vec r_2 ; j \rangle
  = v( \vec r_2, \vec r_1 ) | \vec r_1 ; i \rangle | \vec r_2 ; j \rangle

N粒子系のSlater行列式は、

\displaystyle
  \left| \vec r_1, \cdots \vec r_N \right\rangle
    \equiv \frac{1}{\sqrt{N!}} \sum_{P} \prod_{k=1}^N (-1)^P | \vec r_k ; P(k) \rangle
したがって、

\displaystyle
  V_N \left| \vec r_1, \cdots \vec r_N \right\rangle
    = \frac{1}{2} \sum_{i \neq j} v( \vec r_i, \vec r_j ) \left| \vec r_1, \cdots \vec r_N \right\rangle
最初は粒子のペアだったのが、位置座標のペアに代わっていることに注意。

ここから、第二量子化へと進んでいく。

Slater行列式と以下の(第二量子化)表現が等価になるように場の演算子 \hat \psiが定義されているとする。

\displaystyle
  \left| \vec r_1, \cdots \vec r_N \right\rangle \equiv \hat \psi^\dagger( \vec r_1 ) \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle

このときに、以下の関係を満たすように V_N第二量子化した \hat Vを探すことが目標である。

\displaystyle
\hat V \left| \vec r_1, \cdots \vec r_N \right\rangle = V_N \left| \vec r_1, \cdots \vec r_N \right\rangle

そして、天下り的であるが、 \hat Vは(位置表示:場の演算子において)以下のように表される。

\displaystyle
\hat V
  = \frac{1}{2} \int d\vec x d\vec y \,
    \hat \psi^\dagger( \vec x ) \hat \psi^\dagger( \vec y ) \, v( \vec x, \vec y ) \, \hat \psi( \vec y ) \hat \psi( \vec x )
ここから、 \hat Vが正しく V_Nと繋がるかどうかを確認する。

まず、場の消滅演算子 \left| \vec r_1, \cdots \vec r_N \right\rangleに作用させると、

\displaystyle
\hat \psi( \vec x ) \, \left| \vec r_1, \cdots \vec r_N \right\rangle
\\
\displaystyle
\qquad
  = \hat \psi( \vec x ) \, \hat \psi^\dagger( \vec r_1 ) \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle
\\
\displaystyle
\qquad
  = \sum_{i=1}^N (-1)^{i-1} \delta( \vec x - \vec r_i ) \,
    \hat \psi^\dagger( \vec r_1 ) \cdots
    \left\{ \hat \psi^\dagger( \vec r_{i} ) \right\}
    \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle
 \{ \hat \psi^\dagger( \vec r_{i} ) \} \hat \psi^\dagger( \vec r_{i} )が抜けている(消滅している)ことを表す。

同様にして、

\displaystyle
\hat \psi( \vec y ) \hat \psi( \vec x ) \, \left| \vec r_1, \cdots \vec r_N \right\rangle
\\
\displaystyle
\qquad
  = \hat \psi( \vec y ) \sum_{i=1}^N (-1)^{i-1} \delta( \vec x - \vec r_i ) \,
    \hat \psi^\dagger( \vec r_1 ) \cdots
    \left\{ \hat \psi^\dagger( \vec r_{i} ) \right\}
    \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle
\\
\displaystyle
\qquad
  = \sum_{i=1}^N (-1)^{i-1} \delta( \vec x - \vec r_i ) \, \sum_{ j (< i ) } (-1)^{j-1} \delta( \vec y - \vec r_j )
\\
\displaystyle
\qquad \qquad \times
    \hat \psi^\dagger( \vec r_1 ) \cdots
    \left\{ \hat \psi^\dagger( \vec r_{j} ) \right\} \cdots
    \left\{ \hat \psi^\dagger( \vec r_{i} ) \right\}
    \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle
\\
\displaystyle
\qquad
  + \sum_{i=1}^N (-1)^{i-1} \delta( \vec x - \vec r_i ) \, \sum_{ j (> i ) } (-1)^{j-2} \delta( \vec y - \vec r_j )
\\
\displaystyle
\qquad \qquad \times
    \hat \psi^\dagger( \vec r_1 ) \cdots
    \left\{ \hat \psi^\dagger( \vec r_{i} ) \right\} \cdots
    \left\{ \hat \psi^\dagger( \vec r_{j} ) \right\}
    \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle

一方で、ここから場の生成演算子を作用させていくと、

\displaystyle
\hat \psi^\dagger( \vec y ) \hat \psi( \vec y ) \hat \psi( \vec x ) \, \left| \vec r_1, \cdots \vec r_N \right\rangle
\\
\displaystyle
\qquad
  = \sum_{i=1}^N (-1)^{i-1} \delta( \vec x - \vec r_i ) \, \sum_{ j (< i ) } (-1)^{j-1} \hat \psi^\dagger( \vec r_j )  \delta( \vec y - \vec r_j )
\\
\displaystyle
\qquad \qquad \times
    \hat \psi^\dagger( \vec r_1 ) \cdots
    \left\{ \hat \psi^\dagger( \vec r_{j} ) \right\} \cdots
    \left\{ \hat \psi^\dagger( \vec r_{i} ) \right\}
    \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle
\\
\displaystyle
\qquad
  + \sum_{i=1}^N (-1)^{i-1} \delta( \vec x - \vec r_i ) \, \sum_{ j (> i ) } (-1)^{j-2} \hat \psi^\dagger( \vec r_j ) \delta( \vec y - \vec r_j )
\\
\displaystyle
\qquad \qquad \times
    \hat \psi^\dagger( \vec r_1 ) \cdots
    \left\{ \hat \psi^\dagger( \vec r_{i} ) \right\} \cdots
    \left\{ \hat \psi^\dagger( \vec r_{j} ) \right\}
    \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle
\\
\displaystyle
\qquad
  = \sum_{i=1}^N (-1)^{i-1} \delta( \vec x - \vec r_i ) \, \left( \sum_{ j (< i ) } + \sum_{ j ( > i ) } \right) \delta( \vec y - \vec r_j )
\\
\displaystyle
\qquad \qquad \times
    \hat \psi^\dagger( \vec r_1 ) \cdots
    \left\{ \hat \psi^\dagger( \vec r_{i} ) \right\}
    \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle
\\
\displaystyle
\qquad
  = \sum_{i \neq j}^N (-1)^{i-1} \delta( \vec x - \vec r_i ) \delta( \vec y - \vec r_j )
\\
\displaystyle
\qquad \qquad \times
    \hat \psi^\dagger( \vec r_1 ) \cdots
    \left\{ \hat \psi^\dagger( \vec r_{i} ) \right\}
    \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle

\displaystyle
\hat \psi^\dagger( \vec x ) \hat \psi^\dagger( \vec y ) \hat \psi( \vec y ) \hat \psi( \vec x ) \, \left| \vec r_1, \cdots \vec r_N \right\rangle
\\
\displaystyle
\qquad
  = \sum_{i \neq j}^N (-1)^{i-1} \hat \psi^\dagger( \vec r_i ) \delta( \vec x - \vec r_i ) \delta( \vec y - \vec r_j )
\\
\displaystyle
\qquad \qquad \times
    \hat \psi^\dagger( \vec r_1 ) \cdots
    \left\{ \hat \psi^\dagger( \vec r_{i} ) \right\}
    \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle
\\
\displaystyle
\qquad
  = \sum_{i \neq j}^N \delta( \vec x - \vec r_i ) \delta( \vec y - \vec r_j )
\\
\displaystyle
\qquad \qquad \times
    \hat \psi^\dagger( \vec r_1 ) \cdots
    \cdots \hat \psi^\dagger( \vec r_N ) | 0 \rangle
\\
\displaystyle
\qquad
  = \sum_{i \neq j}^N \delta( \vec x - \vec r_i ) \delta( \vec y - \vec r_j ) \left| \vec r_1, \cdots \vec r_N \right\rangle
場の演算子の掛ける順番に注意。これは \hat V積分の中身に対応させてある。
和は、位置番号に対応しているが、場の演算子の表現にした時点で、位置番号と粒子番号が同等として扱われている。

したがって、

\displaystyle
\hat V \left| \vec r_1, \cdots \vec r_N \right\rangle
\\
\displaystyle
\qquad
  = \frac{1}{2} \sum_{i \neq j }^N \int d\vec x d\vec y \, v( \vec x, \vec y )
    \delta( \vec x - \vec r_i ) \delta( \vec y - \vec r_j ) \left| \vec r_1, \cdots \vec r_N \right\rangle
\\
\displaystyle
\qquad
  = \frac{1}{2} \sum_{i \neq j }^N v( \vec r_i, \vec r_j ) \left| \vec r_1, \cdots \vec r_N \right\rangle
\\
\displaystyle
\qquad
  = V_N \, \left| \vec r_1, \cdots \vec r_N \right\rangle
場の演算子による表現が、Slater行列式による表現と一致することが示せた。

ここから、 \hat Vを他の生成消滅演算子で書くと、

\displaystyle
\hat V
  = \int d\vec x d\vec y \,
    \hat \psi^\dagger( \vec x ) \hat \psi^\dagger( \vec y ) \, v( \vec x, \vec y ) \, \hat \psi( \vec y ) \hat \psi( \vec x )
\\
\displaystyle
\qquad
  = \frac{1}{2} \sum_{\alpha, \alpha'} \sum_{\beta, \beta'} \left( \int d\vec x d\vec y \,
    \psi_\alpha^*( \vec x ) \psi^*_\beta( \vec y ) \, v( \vec x, \vec y ) \, \psi_{\beta'}( \vec y ) \psi_{\alpha'}( \vec x ) \right)
    c^\dagger_\alpha c^\dagger_\beta c_{\beta'} c_{\alpha'} 
\\
\displaystyle
\qquad
  \equiv \frac{1}{2} \sum_{\alpha, \alpha'} \sum_{\beta, \beta'} v_{\alpha \beta, \alpha' \beta'} \,
    c^\dagger_\alpha c^\dagger_\beta c_{\beta'} c_{\alpha'}
もし、 \alpha', \beta'の和が同じ空間内を動くなら、

\displaystyle
\hat V
  = \frac{1}{2} \sum_{\alpha, \alpha'} \sum_{\beta, \beta'} v_{\alpha \beta, \alpha' \beta'} \,
    \left( \frac{1}{2} c^\dagger_\alpha c^\dagger_\beta c_{\beta'} c_{\alpha'}
        + \frac{1}{2} c^\dagger_\alpha c^\dagger_\beta c_{\beta'} c_{\alpha'} \right)
\\
\displaystyle
\qquad
  = \frac{1}{2} \sum_{\alpha, \alpha'} \sum_{\beta, \beta'} v_{\alpha \beta, \alpha' \beta'} \,
    \left( \frac{1}{2} c^\dagger_\alpha c^\dagger_\beta c_{\beta'} c_{\alpha'}
        - \frac{1}{2} c^\dagger_\alpha c^\dagger_\beta c_{\alpha'} c_{\beta'} \right)
\\
\displaystyle
\qquad
  = \frac{1}{4} \sum_{\alpha, \alpha'} \sum_{\beta, \beta'}
    \left( v_{\alpha \beta, \alpha' \beta'} - v_{\alpha \beta, \beta' \alpha'} \right) \,
    c^\dagger_\alpha c^\dagger_\beta c_{\beta'} c_{\alpha'}

有効質量と自己エネルギーについて。

前回、繰り込み因子と自己エネルギーの関係についてまとめた。
koideforest.hatenadiary.com
自己エネルギーの虚部がゼロ( \rm Im \Sigma = 0)であるところでは、スペクトル関数がデルタ関数で表せるため、(準)粒子のエネルギーが上手く定義出来ている。
その(準)粒子エネルギーを \omega( \vec p ) = \omega_{\vec p } + \rm Re \Sigma( \vec p, \omega( \vec p ) )と定義した。

今回は、(電子の)有効質量と自己エネルギーについてまとめる。
非摂動状態のエネルギー \omega_{\vec p}が粒子質量 mに反比例するとする。

\displaystyle
\omega_{\vec p} \equiv \frac{1}{m} f( \vec p )
自由電子であれば、 \omega_{\vec p} = \frac{p^2}{2m} \, ( f( \vec p) = p^2 / 2 ) である。

ここで、 \omega( \vec p ) \omega_{\vec p}で展開すると、

\displaystyle
\omega( \vec p ) = \omega_0 + c \omega_{\vec p} + O\left( \omega_{\vec p}^2 \right)
\\
\displaystyle
\qquad \equiv \omega_0 + \frac{m}{m^*} \omega_{\vec p} + O\left( \omega_{\vec p}^2 \right)
\\
\displaystyle
\qquad = \omega_0 + \frac{1}{m^*} f( {\vec p} ) + O\left( \omega_{\vec p}^2 \right)
\\
\displaystyle
\therefore
\left. \frac{\partial \omega( \vec p )}{ \partial \omega_{\vec p}} \right|_{\omega_{\vec p} = 0 } = \frac{m}{m^*}

元々、 \omega( \vec p ) = \omega_{\vec p } + \rm Re \Sigma( \vec p, \omega( \vec p) )であったから、

\displaystyle
\left. \frac{\partial \omega( \vec p )}{ \partial \omega_{\vec p}} \right|_{\omega_{\vec p} = 0 }
  = \frac{ m }{ m^* }
\\
\displaystyle
  \qquad = \lim_{\omega_{\vec p} \rightarrow 0}
    \left( 1
      + \frac{ \partial \vec p }{ \partial \omega_{\vec p} } \frac{ \partial \rm Re \Sigma( \vec p, \omega( \vec p ) ) }{ \partial \vec p }
      + \frac{ \partial \omega(\vec p) }{ \partial \omega_{\vec p} } \frac{ \partial \rm Re \Sigma( \vec p, \omega( \vec p ) ) }{ \partial \omega( \vec p ) } \right)
\\
\displaystyle
  \qquad = \lim_{\omega_{\vec p} \rightarrow 0}
    \left( 1
      + \frac{ \partial \vec p }{ \partial \omega_{\vec p} } \frac{ \partial \rm Re \Sigma( \vec p, \omega( \vec p ) ) }{ \partial \vec p }
      + \frac{m}{m^*} \frac{ \partial \rm Re \Sigma( \vec p, \omega( \vec p ) ) }{ \partial \omega( \vec p ) } \right)
.

したがって、

\displaystyle
\frac{ m }{ m^* }
  = \frac{ f_+( \vec p ) }{ g_-( \vec p ) }
,
\\
\displaystyle
f_+ ( \vec p ) \equiv
  \lim_{\omega_{\vec p} \rightarrow 0}
    \left( 1
       + \frac{ \partial \vec p }{ \partial \omega_{\vec p} } \frac{ \partial \rm Re \Sigma( \vec p, \omega( \vec p ) ) }{ \partial \vec p }
    \right)
\\
\displaystyle
g_- ( \vec p ) \equiv
  \lim_{\omega_{\vec p} \rightarrow 0}
    \left( 1
      - \frac{ \partial \rm Re \Sigma( \vec p, \omega( \vec p ) ) }{ \partial \omega( \vec p ) }
    \right)
.

  • 参考文献

G. D. Mahan, "Many-Particle Physisc (THIRD EDITION)".