nano_exit

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

ポテンシャルの角運動量展開

非球対称ポテンシャルでは、波動関数を球面調和函数で展開すると角運動量を添字とする行列になることを示した。
koideforest.hatenadiary.com

\displaystyle
V_{LL'}( r ) = \int d\hat{r} Y^*_L( \hat{r} ) V( \vec{r} ) Y_L( \hat{r} )
角度積分するのに掛かる時間を t_I、必要な最大の軌道角運動量と動径メッシュの数をそれぞれ l_{max} N_rとすると、全ての行列要素を求める時間は t_I ( l_{max} + 1 )^4 N_rと表せる。
 ( l_{max} + 1 )^2は、例えば、 l_{max}=1まで必要とすると、 L = ( l, m ) = (0,0), (1,-1), (1,0), (1,1)で4つ必要であり、それを表せている。

次に、直接求めるのではなく、ポテンシャルを角運動量(球面調和関数)で展開することを考える。

\displaystyle
V( \vec{r} ) = \sum_{L} V_L( r ) Y_L( \hat{r} )
\\
\displaystyle
V_L( r ) = \int d\hat{r} \, Y^*_L( \hat{r} ) V( \vec{r} )
この展開に掛かる時間は t_I (l_{max}+1)^2 N_rと表せる。

これを使って、波動関数角運動量展開した時の行列要素は、以下のように表せる。

\displaystyle
V_{LL'}( r ) = \int d\hat{r} Y^*_L( \hat{r} ) V( \vec{r} ) Y_L( \hat{r} )
  = \sum_{L''} V_{L''}( r ) \int d\hat{r} Y^*_L( \hat{r} ) Y_{L''}( \hat{r} ) Y_{L'}( \hat{r} )
\\
\displaystyle
\quad
  = \sum_{L''} V_{L''}( r ) \, G( L'' L' | L )

 G( L'' L' | L )はGaunt係数である。 l''は、最大で l,l'の2倍が必要であるため、Gaunt係数を求める時間を t_Gとすると、行列要素全てを求める時間は t_G (l_{max} + 1)^4 ( 2 l_{max} + 1 )^2 となる。
ポテンシャルを展開するところと合わせれば、 t_I (2l_{max}+1)^2 N_r + t_G (l_{max} + 1)^4 ( 2 l_{max} + 1 )^2と表せる。

したがって、

\displaystyle
t_I (2l_{max}+1)^2 N_r + t_G (l_{max} + 1)^4 ( 2 l_{max} + 1 )^2 < t_I (l_{max}+1)^4 N_r
\\
\displaystyle
t_G < t_I N_r \frac{ (l_{max}+1)^4 - (2l_{max}+1)^2 }{ (l_{max} + 1)^4 ( 2 l_{max} + 1 )^2  }
\\
\displaystyle
t_G < t_I N_r \frac{ l_{max}^2 ( ( l_{max} + 2)^2 - 2 ) }{ (l_{max} + 1)^4 ( 2 l_{max} + 1 )^2  }
の時、Gaunt積分の方法の方が速くなる。

ただ、直感的には、どっちもあまり変わらなそうな気もする。