forked from JackS9/phatpsy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
anmbnm.f
51 lines (51 loc) · 1.94 KB
/
anmbnm.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
SUBROUTINE ANMBNM (ANM,ALPHA,BNM,BETA,N,M,NABDIM)
C...........VERSION = 11/12/73/00
C.......................................................................
C THIS SUBROUTINE GENERATES THE SCALED MODIFIED A AND B FUNCTIONS
C DEFINED BY
C
C ANM(N+1) = ASCALE(N,M,ALPHA)
C = EXP(+ALPHA) INTEGRAL (XI = 1,INFINITY) XI**N
C (XI**2 - 1)**M EXP(-ALPHA*XI) D XI
C
C BNM(N+1) = BSCALE(N,M,BETA)
C = EXP(-ABS(BETA)) INTEGRAL (ETA = -1,+1) ETA**N
C (1 - ETA**2)**M EXP(-BETA*ETA) D ETA
C
C THESE ARE GENERATED BY RECURSION FROM THE SCALED STANDARD A AND B
C FUNCTIONS WHICH CORRESPOND TO M = 0 IN THE ABOVE FORMULAE. THESE
C RELATIONS ARE%
C
C A(N,M) = A(N+2,M-1) - A(N,M-1)
C
C B(N,M) = B(N,M-1) - B(N+2,M-1)
C
C ALL VALUES OF N FROM 0 TO THE VALUE SPECIFIED IN THE ARGUMENT LIST
C ARE PROVIDED. THE DIMENSION OF ANM(*) AND BNM(*), NABDIM, MUST BE
C AT LEAST N+2*M+1.
C WHEN TERMS LIKE ANM(K)*BNM(L) ARE USED, THEY MUST BE MULTIPLIED
C BY EXP(-ALPHA+ABS(BETA)) TO OBTAIN THE ORDINARY A AND B FUNCTION
C TERMS. THIS IS DONE BECAUSE THE LIMITED COMPUTER EXPONENT RANGE
C LEADS TO OVERFLOWS FOR THE B FUNCTION AND UNDERFLOWS FOR THE A
C FUNCTION FOR LARGE ARGUMENTS WHICH CORRESPOND TO LARGE ORBITAL
C EXPONENTS OR LARGE BOND DISTANCES.
C
C AUTHOR% NELSON H.F. BEEBE, QUANTUM THEORY PROJECT, UNIVERSITY OF
C FLORIDA, GAINESVILLE, FLORIDA, AND DIVISION OF THEORETICAL
C CHEMISTRY, DEPARTMENT OF CHEMISTRY, AARHUS UNIVERSITY,
C AARHUS, DENMARK
C
C.......................................................................
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION ANM(NABDIM),BNM(NABDIM)
CALL ASCALE (N+2*M,ALPHA,ANM,NABDIM)
CALL BSCALE (N+2*M,BETA,BNM,NABDIM)
IF (M .EQ. 0) GO TO 30
DO 20 K = 1,M
LIMIT = N + 2*(M-K) + 1
DO 10 I = 1,LIMIT
ANM(I) = ANM(I+2) - ANM(I)
10 BNM(I) = BNM(I) - BNM(I+2)
20 CONTINUE
30 RETURN
END