⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 threej.bas

📁 Newman程序是一套很好的光谱软件计算程序
💻 BAS
字号:
DECLARE SUB threej (R0#, AJ1!, AJ2!, AJ3!, AM1!, AM2!, AM3!)REM  THIS IS A PROGRAM TO CALCULATE THE 3_J SYMBOLREM    R0 =  (AJ1,AJ2,AJ3;AM1,AM2,AM3)REM    F(I)=I! IS THE FACTORIAL FUNCTIONREM    I = 0 TO 30 IS USUSALLY ENOUGHREM    PLEASE NOTE THAT I STRATS FROM ZEROREMREM    "CRYSTAL FIELD HANDBOOK", EDITED BY D.J. NEWMAN AND BETTY NGREM    CAMBRIDGE UNIVERSITY PRESS	DEFINT J, M	DEFDBL R		 PRINT "THIS IS A PROGRAM TO CALCULATE THE 3_J SYMBOL"	 PRINT "  R0 =  (AJ1,AJ2,AJ3;AM1,AM2,AM3)"	 PRINT "       "	 PRINT "CRYSTAL FIELD HANDBOOK, EDITED BY D.J. NEWMAN AND BETTY NG"	 PRINT "  CAMBRIDGE UNIVERSITY PRESS"	 PRINT "      "REPEAT:  INPUT " J1 = ?, J2 = ? ,J3 = ?", AJ1, AJ2, AJ3	 INPUT " M1 = ?, M2 = ? ,M3 = ?", AM1, AM2, AM3REM CALL THE SUBPROGRAM THREEJ	 CALL threej(R0, AJ1, AJ2, AJ3, AM1, AM2, AM3)	 PRINT "THE THREE J SYMBOL IS:", R0	 PRINT " "REM  TO CONTINUE OR NOT      PRINT " DO YOU WANT TO CALCULATE ANOTHER 3-j SYMBOL?"      INPUT " TYPE IN Y/y (FOR YES), N/n (FOR NO)", QANS$      IF QANS$ = "Y" OR QANS$ = "y" THEN	 CLS	 GOTO REPEAT:	ELSE	 GOTO FINISH:      END IFFINISH:  ENDDEFSNG J, MSUB threej (R0, AJ1, AJ2, AJ3, AM1, AM2, AM3)       DEFINT J, M-N       DEFDBL F, R       DIM F(0 TO 30)REM DEFINE THE FACTORIAL FUNCTION       FOR I = 0 TO 30	   F(I) = 1	   FOR J = 1 TO I	     F(I) = F(I) * J	   NEXT J       NEXT IREM   SELECTION RULES     IF AM1 + AM2 + AM3 <> 0 THEN GOTO ZERO:     IF AJ1 + AJ2 - AJ3 < 0 THEN GOTO ZERO:     IF AJ3 + AJ1 - AJ2 < 0 THEN GOTO ZERO:     IF AJ3 + AJ2 - AJ1 < 0 THEN GOTO ZERO:     IF AJ1 + AJ2 + AJ3 + 1 < 0 THEN GOTO ZERO:     IF AJ1 - AM1 < 0 THEN GOTO ZERO:     IF AJ2 - AM2 < 0 THEN GOTO ZERO:     IF AJ3 - AM3 < 0 THEN GOTO ZERO:     IF AJ1 + AM1 < 0 THEN GOTO ZERO:     IF AJ2 + AM2 < 0 THEN GOTO ZERO:     IF AJ3 + AM3 < 0 THEN GOTO ZERO:   R4 = F(CINT(AJ1 + AJ2 - AJ3)) * F(CINT(AJ1 - AM1)) * F(CINT(AJ2 - AM2)) * F(CINT(AJ3 - AM3)) * F(CINT(AJ3 + AM3))   R5 = F(CINT(AJ1 + AJ2 + AJ3 + 1)) * F(CINT(AJ3 + AJ1 - AJ2)) * F(CINT(AJ3 + AJ2 - AJ1)) * F(CINT(AJ1 + AM1)) * F(CINT(AJ2 + AM2))   R6 = 0   FOR J7 = 0 TO 25       IF AJ1 + AM1 + J7 < 0 THEN GOTO J7R:       IF AJ2 + AJ3 - AM1 - J7 < 0 THEN GOTO J7R:       IF AJ3 + AM3 - J7 < 0 THEN GOTO J7R:       IF AJ1 - AM1 - J7 < 0 THEN GOTO J7R:       IF AJ2 - AJ3 + AM1 + J7 < 0 THEN GOTO J7R:       R8 = F(CINT(AJ1 + AM1 + J7)) * F(CINT(AJ2 + AJ3 - AM1 - J7)) * (-1) ^ (CINT(AJ1 - AM1 - J7))       R9 = F(J7) * F(CINT(AJ3 + AM3 - J7)) * F(CINT(AJ1 - AM1 - J7)) * F(CINT(AJ2 - AJ3 + AM1 + J7))       R6 = R6 + R8 / R9J7R:  NEXT J7       R0 = SQR(R4 / R5) * R6 * (-1) ^ CINT((AJ1 - AJ2 - AM3))       GOTO FIN:ZERO:  R0 = 0FIN: END SUB

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -