角運動量と結晶場のホームページ

「結晶場の中の希土類イオン」がダウンロードされます。angular.pdf

このページの説明はこの pdf ファイルの記事に依っています。まずこれをダウンロードしてください。

「立方対称の結晶場レベルの計算プログラム cubicmn.f」が

ダウンロードされます。cubic.pdf

   縮約行列を計算するサブルーチン 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

TSPACEのホームページへもどる。