「結晶場の中の希土類イオン」がダウンロードされます。angular.pdf
このページの説明はこの pdf ファイルの記事に依っています。まずこれをダウンロードしてください。
「立方対称の結晶場レベルの計算プログラム cubicmn.f」が
縮約行列を計算するサブルーチン redmat のソースと使用法はこの中に含まれています。
1) クレブッシュ=ゴーダン係数のサブルーチン TCGCOF
入力の引数は半整数を含めるため,2倍したものを使う。途中の計算は全て整数計算で行い最後に結果を
倍精度の実数にして返す。単精度の整数で表現が可能ならば、結果の整数表示も選ぶことができる。
CALL TCGCOF(C,JA,JB,JC,MA,MB,IND,IPRINT,J1,J2,J3)
変数名
|
型
|
内容
|
C
|
D
|
クレブッシュ=ゴーダン係数の値 (出力)
|
JA
|
I
|
クレブッシュ=ゴーダン係数の j1の2倍 (入力)
|
JB
|
I
|
クレブッシュ=ゴーダン係数の j2の2倍 (入力)
|
JC
|
I
|
クレブッシュ=ゴーダン係数の Jの2倍 (入力)
|
MA
|
I
|
クレブッシュ=ゴーダン係数の m1の2倍 (入力)
|
MB
|
I
|
クレブッシュ=ゴーダン係数の m2の2倍 (入力)
|
IND
|
I
|
計算の状況を知らせる (出力)
|
IPRINT
|
I
|
標準出力への出力を指定 (入力)
|
J1
|
I
|
クレブッシュ=ゴーダン係数の整数表示の分子 (出力)
|
J2
|
I
|
クレブッシュ=ゴーダン係数の整数表示の分母 (出力)
|
J3
|
I
|
クレブッシュ=ゴーダン係数の分母の平方根の中 (出力)
|
IND=0 正常終了(5.13) を満たさない場合、(値が0と定義されている)
IND=1 正常終了、整数表示が可能, =2 正常終了、整数表示不可能(多倍長整数になる)
IND=-1 異常終了、JA,JB,JC,MA,MB に偶数、奇数の対応の不良がある。
IND=-2 異常終了、計算中に配列オーバーが起きた。
IPRINT=0 出力なし, =1入力データと値, =2 整数表示を含める, =3 素因数分解で示す 。
クレブッシュ=ゴーダン係数を計算するサブルーチン TCGCOF のソース はここにあります。
2) 6J 記号のサブルーチン T6JSYM
入力の引数は半整数を含めるため,2倍したものを使う。途中の計算は全て整数計算で行い最後に結果を
倍精度の実数にして返す。単精度の整数で表現が可能ならば、結果の整数表示も選ぶことができる。
CALL T6JSYM(C,JA,JB,JC,JP,JQ,JR,IND,IPRINT,J1,J2,J3)
変数名
|
型
|
内容
|
C
|
D
|
6J 記号の値 (出力)
|
JA
|
I
|
6J 記号の左上の2倍 (入力)
|
JB
|
I
|
6J 記号の中上の2倍 (入力)
|
JC
|
I
|
6J 記号の右上の2倍 (入力)
|
JP
|
I
|
6J 記号の左下の2倍 (入力)
|
JQ
|
I
|
6J 記号の中下の2倍 (入力)
|
JR
|
I
|
6J 記号の右下の2倍 (入力)
|
IND
|
I
|
計算の状況を知らせる (出力)
|
IPRINT
|
I
|
標準出力への出力を指定 (入力)
|
J1
|
I
|
6J 記号の値の整数表示の分子 (出力)
|
J2
|
I
|
6J 記号の値の整数表示の分母 (出力)
|
J3
|
I
|
6J 記号の値の整数表示の分母の平方根の中 (出力)
|
IND=0 正常終了(5.13) を満たさない場合、(値が0と定義されている)
IND=1 正常終了、整数表示が可能, =2 正常終了、整数表示不可能(多倍長整数になる)
IND=-1 異常終了、JA,JB,JC,JP,JQ,JR に偶数、奇数の対応の不良がある。
IND=-2 異常終了、計算中に配列オーバーが起きた。
IPRINT=0 出力なし, =1入力データと値, =2 整数表示を含める, =3 素因数分解で示す
6J記号を計算するサブルーチン T6JSYM のソース はここにあります。
以下のプログラムは、angular.pdf の (5.26) の両辺を計算して比較している。
C AN EXAMPLE PROGRAM OF TCGCOF AND T6JSYM REAL*8 CA,CB,CX,CY,CZ,XX,YY,SI,ZZ READ(5,*) JA,JB,JC,JP,JQ,JR,MA,MB CALL T6JSYM(CA,JA,JB,JC,JP,JQ,JR,IND,3,J1,J2,J3) CALL TCGCOF(CB,JA,JB,JC,MA,MB,IND,3,J1,J2,J3) MC=-(MA+MB) XX=0.0 NA=JP+1 DO 1 IA=1,NA MP=JP-(IA-1)*2 MQ=MP+MC IF(IABS(MQ).GT.JQ) GO TO 1 MR=MQ+MA IF(IABS(MR).GT.JR) GO TO 1 CALL TCGCOF(CX,JP,JQ,JC,MP,-MQ,IND,3,J1,J2,J3) CALL TCGCOF(CY,JQ,JR,JA,MQ,-MR,IND,3,J1,J2,J3) CALL TCGCOF(CZ,JR,JP,JB,MR,-MP,IND,3,J1,J2,J3) IS=IABS(JP+JQ+JR+MP+MQ+MR)/2 SI=1-2*MOD(IS,2) XX=XX+CX*CY*CZ*SI 1 CONTINUE XX=XX/SQRT(DBLE((JA+1)*(JB+1))) YY=CA*CB ZZ=1-2*MOD(IABS(JA-JB-MC)/2,2) YY=YY*ZZ WRITE(6,*) XX,YY WRITE(6,*) JA,JB,JC,JP,JQ,JR,MA,MB STOP END
3) O 群の既約表現基底を半整数のJに対して生成するサブルーチンTSTRJM
CALL TSTRJM(JJ,U,KP,INS)
変数名
|
型
|
内容
|
JJ |
I
|
角運動量の大きさの2倍(入力)(奇数でないと誤動作)
|
U(100) |
C
|
状態 |J,m> に掛ける係数 (出力)
|
KP(100) |
I
|
m=2J-2(KP(I)-1) (出力)
|
INS(4,24) |
I
|
欄外で説明 (出力)
|
U,KP の上に J 番目の線形結合が INS(1,J) から INS(2,J) に入っている。その O 群の既約表現番号が INS(4,J) で、
その表現の中の状態番号が INS(3,J) である。生成された線形結合の数は当然 JJ+1 個である。
このサブルーチンは TSTRLM と違い、O 群のみに対応している。他の軸対称の場合については、angular.pdf に
記述がある。 tstrjm.f のソースはここにあります。
以下のプログラムは、angular.pdf の (3.16) 式を J=15/2 まで延長した結果を出力する。
C ********************************************** IMPLICIT REAL*8(A-H,O-Z) COMPLEX*16 U(100) INTEGER KP(100),INS(4,24) CALL TSPACE(1) DO 1 J=1,15,2 JJ=J WRITE(6,*) WRITE(6,*) ' J=',JJ,'/2' CALL TSTRJM(JJ,U,KP,INS) CALL TSJMDS(JJ,U,KP,INS) 1 CONTINUE STOP END