浜本さんのコード
- コードを理解/移植する場合のメモ
- おそらく計算時間を短縮に重点が置かれているようだ。そのために、いろいろテクニックを使っている。
- ポテンシャルの近くでは、計算点を多くとり計算精度をあげている。r = 0.025, 0.050, 0.075, 0.100, 0.125, 0.150, 0.175, 0.200, 0.250, 0.300, 0.350, 0.400, 0.500, 0.600, 0.700, 0.800, 1.000, 1.2000, 1.400, ... fm.
- 実数変数は Double precision を用いているが、実数値は単精度。例えば 1.0/EX など。すべて倍精度にするには、1.0d0/EX と書き換える。
- ファイルへの出力は小数点以下6桁で出力しているので、場合によっては(コードの移植のために計算値をプロットして比較するときなど)精度が足りない。
59.4 fm からおよそ 3.8 fm まで 0.2 fm 間隔で Störmer method を用いてシュレディンガー方程式を積分していく(参考: Encyclopedia of Mathematics - Störmer method)。積分の精度をあげると (例えば 0.2 fm を 0.1 fm にする) VWS の値が 100 keV 程度変わる。31Ne の場合、Sn = -300keV の p3/2 軌道を計算すると、0.2 fm の精度の場合 VWS = -46.75 MeV となるが (PRC81(2010)021304)、 精度をあげていくと VWS = -46.83 MeV あたりに近づくようだ。
- Störmer method は前 5 点 の二階微分の値が必要。コード内だと r = 0.0 fm における値を 4 回使っている。より精度の高い計算をすると、この初期値が効いてくる。
- 外側から計算した波動関数と内側から計算した波動関数を 3.8 fm 地点で接続させる際、傾きを計算するが、前後 2 点, 計 4 点 の値を使って正確に計算しているようだ。しかし、ポテンシャルの深さの決定には、ここはあまり効かないかも?
コードを移植する際、同じアルゴリズムで倍精度の変数を用いれば、大体の値は 9 桁以上で一致する。ただし、シュレディンガー方程式を端から積分していく場合、最初は9桁で合っていた値でも若干変わっていき、5桁程度の一致になる(r = 59.8 fm --> 3.8 fm の場合)。
main-eg.f
サブルーチン |
変数名 |
意味 |
値 |
MAIN |
ISTRTW |
バレンス中性子のスピンの大きさを 2 倍したもの |
1 |
MAIN |
VSO |
dvipng error! exitcode was 2 (signal 0), transscript follows:の v (PRC69(2004)041306(R). (1) 式参照) 。 Vso(r) の方ではないので注意。 |
32 (Β安定線上の核のスタンダードな値) |
MAIN |
DFN |
diffuseness。 dvipng error! exitcode was 2 (signal 0), transscript follows:の a (PRC69(2004)041306(R). (2) 式参照)。 |
0.67 fm (Β安定線上の核のスタンダードな値) |
MAIN |
RZERO |
dvipng error! exitcode was 2 (signal 0), transscript follows:の r0 (PRC69(2004)041306(R). (2) 式参照)。 |
1.27 fm (Β安定線上の核のスタンダードな値) |
MAIN |
TMAS |
コアの質量数。これを AT とする。 |
- |
MAIN |
PMAS |
バレンス中性子の質量数。 これを AP とする。 |
1 |
MAIN |
RMAS |
コアとバレンス中性子の質量数の換算質量"数"。これを Aμ とする。 |
大雑把には 1 |
MAIN |
CHARGE |
バレンス中性子の電荷 Z |
0 |
MAIN |
WNUNIT |
dvipng error! exitcode was 2 (signal 0), transscript follows:。M は中性子または陽子の質量 (変数 CHARGE によって変わる)。 |
中性子 : 0.21968 MeV-1/2fm-1 |
MAIN |
CFUNIT |
dvipng error! exitcode was 2 (signal 0), transscript follows:。M は中性子または陽子の質量。 |
大雑把には ? |
MAIN |
XBFAC |
AT1/3 |
- |
MAIN |
XBAR |
R = r0AT1/3。コアの核半径。 |
- |
MAIN |
XCPLE |
動径方向の波動関数を出力するときの範囲 |
60 fm |
MAIN |
XMES2 |
動径方向の波動関数を出力するときのステップ。これを Δr とする。 |
0.2 fm |
MAIN |
NXMAX |
計算範囲のステップ数 |
300 |
MAIN |
NXRM |
コアの核半径のステップ数。 R/Δr。 |
- |
MAIN |
RCWL |
dvipng error! exitcode was 2 (signal 0), transscript follows:。Reduced Compton WaveLength of nucleon dvipng error! exitcode was 2 (signal 0), transscript follows:を 2 で割ったもの dvipng error! exitcode was 2 (signal 0), transscript follows:。 |
- |
MAIN |
JJ1, JJROW, J1 |
バレンス中性子の全角運動量 j の大きさを 2 倍したもの |
- |
MAIN |
LL1, LLROW, L1 |
バレンス中性子の軌道角運動量 l の大きさを 2 倍したもの |
- |
VMACH |
SPFC |
dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
VMACH |
SPFACT |
dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
VMACH |
EZERO, ECM |
中性子分離エネルギー Sn のマイナス |
- |
VMACH |
VSX |
ウッズサクソンポテンシャルの深さ VWS の初期値 |
典型的には -40~50 MeV |
VMACH |
DELEDR |
ウッズサクソンポテンシャルの深さ VWS をサーチする際の微小変化量 |
0.0001 MeV |
POTENV |
COE1 |
サブルーチン POTENV 内で用いるウッズサクソンポテンシャルの深さ VWS |
- |
POTENV |
COE2 |
Zeff = 1.4398650 Z (?) |
- |
POTENV |
COE3 |
dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
POTENV |
COE4 |
VWS/a |
- |
POTENV |
XBARC |
Rc = r0''c''AT1/3。コアの陽子半径。 |
- |
POTENV |
VCLFC1 |
Zeff/(2*Rc) |
- |
POTENV |
NDFMES |
原点付近の波動関数を精度良く計算するため、動径方向を分割するが、その時の分割領域数。 |
4 |
POTENV |
XMES1 |
原点付近での波動関数を計算する際のステップ |
- |
POTENV |
X |
動径方向の変数 r |
- |
POTENV |
DX |
動径方向の変数の微小区間 Δr |
- |
POTENV |
EX |
dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
POTENV |
EXINV |
dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
POTENV |
NX |
各微小区間の番号 |
1 ~ 300? |
POTENV |
VCENTR(NX) |
各微小区間に対する dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
POTENV |
VSPIN(NX) |
各微小区間に対する dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
POTENV |
VCOULM(NX) |
各微小区間に対するクーロンポテンシャル。 dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
POTENV |
VKR(NX) |
各微小区間に対する dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
POTENV |
VKRS1(NX) |
各微小区間に対する dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
POTENV |
VKRS2(NX) |
各微小区間に対する dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
VMACH |
E1 |
中性子分離エネルギー Sn の絶対値 |
- |
VMACH |
WN |
dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
VMACH |
WNINI |
dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
AHNKEV |
L1 |
バレンス中性子の軌道角運動量 l の大きさを 2 倍したもの |
- |
AHNKEV |
LL |
バレンス中性子の軌道角運動量 l の大きさ + 1 |
- |
AHNKEV |
X |
計算範囲の少し外 (NXMAX+3) * XMES2 = 60.6 からスタート。 |
- |
AHNKEV |
NQ |
((NXMAX+2)*XMES2 ~ (NXMAX-2)*XMES2) : 60.4, 60.2, 60.0, 59.8, 59.6 fm に対応する 5 点に対して Hankel 関数を計算 。 |
- |
AHNKEV |
RHOMX,R |
dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
AHNKEV |
RI |
dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
AHNKEV |
EX |
dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
AHNKEV |
G(1) |
EX * RI = dvipng error! exitcode was 2 (signal 0), transscript follows: |
- |
AHNKEV |
G(2) |
EX * (RI + RI**2) |
- |
AHNKEV |
G(3) |
EX * (2*RI + 3*RI**2 + 3*RI**3) |
- |
AHNKEV |
G(L+2) |
G(L+2) = (2L + 1) * RI * G(L+1) + G(L) |
- |
AHNKEV |
LL2 |
バレンス中性子の軌道角運動量 l の大きさ - 1 |
- |
AHNKEV |
GCRA(LL,NQ) |
バレンス中性子の軌道角運動量 l の大きさ + 1 と 60.4, 60.2, 60.0, 59.8, 59.6 fm の 5 点に対する Hankel 関数の値を格納? |
- |
- サブルーチン VMACH での各変数の値
ITEI |
INEX |
NDMAX |
ND |
FND |
DX |
K2COR2 |
X_ini |
NXIMIN |
N3 |
X |
NXIMAX |
N3 |
X |
NXMAX3 |
NXPRCH |
NNX |
1 |
1 |
4 |
1 |
1 |
0.025 |
-1 |
0 |
2 |
1 |
0.025 |
8 |
7 |
0.175 |
|
3 |
2 |
1 |
1 |
4 |
2 |
2 |
0.05 |
3 |
0.15 |
5 |
8 |
0.2 |
8 |
11 |
0.35 |
|
5 |
3 |
1 |
1 |
4 |
3 |
4 |
0.1 |
7 |
0.3 |
5 |
12 |
0.4 |
8 |
15 |
0.7 |
|
5 |
3 |
1 |
1 |
4 |
4 |
8 |
0.2 |
11 |
0.6 |
5 |
16 |
0.8 |
21 |
32 |
4 |
17 |
5 |
3 |
1 |
2 |
1 |
1 |
1 |
-0.2 |
311 |
59.8 |
1 |
310 |
59.6 |
281 |
30 |
3.6 |
276 |
|
|
- 動径方向シュレディンガー方程式の解き方
dvipng error! exitcode was 2 (signal 0), transscript follows:
Störmer method を用いて解を求めている(参考: Encyclopedia of Mathematics - Störmer method)。これで解くのはなにか理由があるのだろうか?
cc-nilson-g.f
dvipng error! exitcode was 2 (signal 0), transscript follows:
- ここで
dvipng error! exitcode was 2 (signal 0), transscript follows:
- より(これは違ってた。。。以下間違ってるかも)、
dvipng error! exitcode was 2 (signal 0), transscript follows: