DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦8ae308f73⟧ TextFile

    Length: 95232 (0x17400)
    Types: TextFile
    Names: »per4«

Derivation

└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
    └─⟦4334b4c0b⟧ 
        └─⟦this⟧ »per4« 

TextFile

c    program 4
c
c    acqvweights new version. a new version af a general program
c    to calculate angular momentum integrals in atomic structure.
c    hibbert, a.
     ref. in comp. phys. commun. 2 (1971) 180 and
             comp. phys. commun. 6 (1973)  59 and
             comp. phys. commun. 7 (1974) 318 and
             comp. phys. commun. 8 (1974) 329
c            
C
C      JANUARY 1971
C
C     GENERAL PROGRAM TO CALCULATE THE MATRIX ELEMENTS OF THE TWO-
C     ELECTRON OPERATOR OF THE HAMILTONIAN AS A SUM OF SLATER INTEGRALS
C     WRITTEN BY  A. HIBBERT , DEPT. OF APPLIED MATHEMATICS AND
C     THEORETICAL PHYSICS,  THE QUEENS UNIVERSITY OF BELFAST.
C
C     THE CODE USES THE RECOUPLING COEFFICIENT CODE OF  P.G. BURKE ,
C     AND THE COEFFICIENT OF FRACTIONAL PARENTAGE ROUTINES (CFPP AND
C     CFPD) WRITTEN BY  D.C.S. ALLISON , BOTH OF THE QUEENS UNIVERSITY
C     OF BELFAST
C
C
C     THREE DASHES (OR THREE EQUALS SIGNS) AT THE BEGINNING OF A COMMENT
C     CARD INDICATE A NEW SECTION OF A SEGMENT
C
C
C ********** LISTING OF COMMON BLOCKS **********
C
C
C === INFORM
C     IREAD - DEFINITION OF CARD INPUT CHANNEL
C     IWRITE - DEFINITION OF LINE PRINTER OUTPUT CHANNEL
C     IPUNCH - DEFINITION OF CARD PUNCH OUTPUT CHANNEL
C
C === DEBUG
C     IBUG1  -  DEFINES PRINTOUT FROM THIS PACKAGE
C          = 0   -   NO PRINT-OUT
C          = 1  -  FINAL RESULTS
C          .GT. 1  -  FULL RESULTS
C     IBUG2  -  DEFINES PRINT-OUT FROM PRNTWT
C     IBUG3  -  DEFINES PRINT-OUT FROM RECOUPLING COEFFICIENT PACKAGE
C          ONLY PRINT-OUT WHEN =1
c     ibug4  -  defines printout from one-electron part   cf. ibug1
c     ibug5 to ibug9 are not used in this paskage
C
C === KRON
C     IDEL(I,J),I,J=1,NHDEL  -  KRONECKER DELTA
C
C === STATES
C     NCFG   -   NUMBER OF CONFIGURATIONS
C     NOCCSH(I),I=1,NCFG   -    FOR EACH CONFIGURATION, THE NUMBER OF
C               OCCUPIED SHELLS
C     NOCORB(J,I),J=1,NOCCSH(I),I=1,NCFG   -   FOR EACH CONFIGURATION
C               THE NUMBERS INDICATING WHICH SHELLS ARE OCCUPIED
C     NELCSH(J,I),J=1,NOCCSH(I),I=1,NCFG   -   FOR EACH CONFIGURATION,
C               THE NUMBER OF ELECTRONS IN EACH OCCUPIED SHELL
C     J1QNRD(J,K,I),J=1,2*NOCCSH(I)-1,K=1,3,I=1,NCFG   -   ANGULAR
C               MOMENTUM QUANTUM NUMBERS.   K=1  IS SENIORITY,  K=2  IS
C               (2L+1),  K=3  IS (2S+1).   J=1,NOCCSH(I)  IS THE SET OF
C               QUANTUM NUMBERS FOR EACH SHELL.  THE REMAINING
C               NOCCSH(I)-1 ARE QUANTUM NUMBERS RESULTING FROM COUPLING
C               OF THE SHELLS
C     MAXORB   -   HIGHEST VALUE OF NOCORB(J,I)
C     LJCOMP(I),I=1,MAXORB   -    L  VALUES OF THE ORBITALS
C
C === TERMS
C     NROWS  -  NUMBER OF ROWS OF TABLE OF TERMS, ACCORDING TO
C              S,S**2,P,P**2,P**3,D,...D**5, ETC.
C     ITAB(I),I=1,NROWS  -  NUMBER OF SETS OF 3 QUANTUM NUMBERS IN
C               EACH ROW
C     JTAB(I),I=1,NROWS  -  IF WE LIST ALL QUANTUM NUMBERS IN A SINGLE
C               LINE, THIS MEASURES NUMBER OF QUANTUM NUMBERS OCCURRING
C               BEFORE ROW  I
C     NTAB(J),J=1,(JTAB(I)+3*ITAB(I))  -  LIST OF THE QUANTUM NUMBERS OF
C               THE TERMS
C
C === FACT
C     GAMMA(I),I=1,NFACT  -  FACTORIAL (OR GAMMA FUNCTION FOR INTEGER)
C
C === MEDEFN
C          THIS LISTS THE QUANTUM NUMBERS NEEDED IN A SINGLE MATRIX
C          ELEMENT (PSI/V/PSIP)
C     IHSH  -  NUMBER OF SHELLS OCCUPIED (INCLUDING DUMMIES) IN PSI
C               OR PSIP
C     NJ(I),LJ(I),I=1,IHSH  -  N,L VALUES OF THE OCCUPIED SHELLS
C     NOSH1(I),NOSH2(I),I=1,IHSH  -  NUMBER OF ORBITALS IN EACH SHELL,
C               FOR PSI AND PSIP RESPECTIVELY
C     J1QN1(J,K),J1QN2(J,K),J=1,2*IHSH-1,K=1,3  -   K=1 IS SENIORITY ,
C               K=2 IS 2L+1  ,  K=3  IS 2S+1   .   THE FIRST IHSH VALUES
C               OF  J  ARE THE QUANTUM NUMBERS OF THE SHELLS, THE
C               REMAINING IHSH-1 ARE THE QUANTUM NUMBERS OBTAINED BY
C               COUPLING THE SHELLS
C               J1QN1 CORRESPONDS TO PSI,   J1QN2  TO PSIP
C          NOTICE THE DIFFERENT DEFINITION OF THIS BLOCK IN MUMDAD
C          AND SETUP,
C
C === MVALUE
C     M1,M2,.....M20
C               M1=ISIG-IRHO,   M2=ISIGP-IRHOP,   M19=IRHO-IRHOP
C               M20=ISIG-ISIGP  .   ALL THE REST OF THE M-VALUES ARE
C               SIMPLY RELATED TO IHSH AND ARE AS DEFINED IN RKWTS
C
C === XATION
C     KD1,KD2  -  LIMITS ON  K  FOR DIRECT INTEGRALS
C     KE1,KE2  -  LIMITS ON  K  FOR EXCHANGE INTEGRALS
C     AMULT(K),K=KD1,KD2,2 . BMULT(K),K=KE1,KE2,2  -  THESE STORE THE
C               MULTIPLYING FACTORS OF THE DIRECT AND EXCHANGE RK
C              INTEGRALS
C     MULTD,MULTE  -  ARE ZERO IF THERE ARE NO DIRECT/EXCHANGE INTEGRALS
C               TO CALCULATE
C
C === NJLJ
C     NRHO,LRHO,NSIG,LSIG,NRHOP,LRHOP,NSIGP,LSIGP
C               N,L VALUES OF THE SHELLS RHO,SIG,RHOP,SIGP
C
C === INTERM
C          INTERMEDIATE COUPLING QUANTUM NUMBERS
C     J1BAR1(I,K),J1BAR2(I,K),J1TLD1(I,K),J1TLD2(I,K),I=1,IHSH,K=1,3
C               K=1 IS SENIORITY, K=2 IS (2L+1),  K=3 IS (2S+1)
C               J1BAR1 AND J1BAR2 DEFINE QUANTUM NUMBERS OF SPECTATOR
C               ELECTRONS IN EACH SHELLS OF PSI AND PSIP RESPECTIVELY
C               J1TLD1 AND J1TLD2 ARE DEFINED ONLY IF RHO=SIG (OR
C               RHOP=SIGP).  THEN THESE ARE QUANTUM NUMBERS OBTAINED BY
C               COUPLING ONE OF THE TWO INTERACTING ELECTRONS ONTO THE
C               SPECTATOR ELECTRONS OF THE APPROPRIATE SHELLS
C          NOTICE THE DIFFERENT DEFINITION IN MUMDAD AND SETUP
C
C === COUPLE
C          THIS BLOCK HOLDS THE INPUT DATA FOR NJSYM
C     MI -  LENGTH OF J1 ARRAY
C     MJ -  NUMBER OF J2 OR J3 ROWS, PLUS 1
C     J1(I),I=1,3*IHSH+4(7)  -  (2J+1) VALUES  -  SPIN(ANGULAR)
C     J2(I),J),J3(I,J),I=1,IHSH+1(2),J=1,3  -  DETERMINE COUPLING
C               SCHEMES.  I LIMIT IS IHSH+1 FOR SPIN, IHSH+2 FOR ANGULAR
C
C === HOLD
C          STORAGE ARRAYS FOR SPIN AND ANGULAR COUPLING SCHEMES
C          STORES J2 AND J3 ARRAYS ROW AFTER ROW
C     J2SPIN(I),J3SPIN(I),I=1,3*(IHSH+1)
C     J2ANG(I),J3ANG(I),I=1,3*(IHSH+2)
C
C === DIAGNL
C     IDIAG = 0   FOR OFF-DIAGONAL MATRIX ELEMENT
C           = 1   FOR DIAGONAL MATRIX ELEMENT
C
C === ENAV
C          OUTPUT OF INFORMATION FROM INTERACTION ENERGY ROUTINE
C     NINTS - NUMBER OF  FK  OR  GK INTEGRALS OTHER THAN  F0
C     KVALUE(I),I=1,NINTS  -  THE K-VALUES OF THOSE INTEGRALS
C     COEFCT(I),I=1,NINTS - THE COEFFICIENTS MULTIPLYING THOSE INTEGRALS
C
C === REMOVE
C          ICHOP(I),I=1,IHSH    -
C                    = 1  IF ALL INTERACTIONS INVOLVING SHELL  I  MAY BE
C                            TREATED PURELY BY AVERAGE ENERGY
C                    = 0   OTHERWISE
C
C === STORE
C          USED AS A STORAGE AREA WHEN  MEDEFN  IS MODIFIED
C
C
C
C ********** END OF LIST OF COMMON BLOCKS **********
C
C
C
C
      program newver external bldata
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/STATES/NCFG,NOCCSH(30),NOCORB(5,30),NELCSH(5,30),
     1     j1qnrd(9,3,30),maxorb,njcomp(21),ljcomp(21),iajcmp(21)
      COMMON/KRON/IDEL(10,10)
      common/diagnl/idiag,ja,jb
      common/comchf/locate(21)
      common/punch1/yl(100),nl,jl1(100),jl2(100)
C
    1 FORMAT(4I5)
   11 FORMAT(//56H IN THIS CALCULATION, THE NUMBER OF STATES CONSIDERED
     1IS,I3,1H,,5X,31HTHE NUMBER OF FACTORIALS SET IS,I3/39H AND THE SIZ
     2E OF THE KRONECKER DELTA IS,I3,14H.     IPUNCH =,I3//)
   12 FORMAT(10X,29H DEBUG IN TWO-ELECTRON PART =,I2/10X,30H DEBUG IN RE
     1COUPLING PACKAGE =,I2/10X,29H DEBUG IN ONE-ELECTRON PART =,I2)
   13 FORMAT(95H1PACKAGE - WEIGHTS - CALCULATION OF MATRIX ELEMENTS OF T
     1HE TWO-ELECTRON PART OF THE HAMILTONIAN/31X,29H AS A SUM OF SLATER
     2 INTEGRALS/25X,41H PLUS THE CORRESPONDING ONE-ELECTRON PART//////)
   41 FORMAT(/40X,22H ---------------------/40X,22H ONE-ELECTRON INTEGRA
     1L/40X,22H ---------------------)
   42 FORMAT(/40X,22H ---------------------/40X,22H TWO-ELECTRON INTEGRA
     1L/40X,22H ---------------------)
C
C
C --- THIS PROGRAMME CONSIDERS EITHER SUPERPOSITION OF CONFIGURATIONS OR
C     MULTI-CONFIGURATIONAL HARTREE-FOCK WAVE FUNCTIONS.  USING THE
C     RESULT THAT THE TWO-ELECTRON HAMILTONIAN MATRIX ELEMENT
C     (PSI/V/PSIP)  CAN BE WRITTEN AS A SUM OF SLATER INTEGRALS, THE
C     PRESENT CODE  -  WEIGHTS  -  CALCULATES THE COEFFICIENTS OF THESE
C     INTEGRALS.  PSI AND PSIP ARE ALLOWED TO RUN OVER NCFG CONFIGURATNS
C
C
C
C --- SET INPUT AND OUTPUT CHANNELS
C
      zone readf(400,1,stderror)
      zone writef(400,1,stderror)
      zone punchf(400,1,stderror)
      call zassign(readf,1)
      call zassign(writef,7)
      call zassign(punchf,8)
      call open(readf,4,'readfile',0)
      call open(writef,4,'writefile',0)
      call open(punchf,4,'punchfile',0)
      IREAD=1
      IWRITE=7
      ipunch=8
      WRITE(IWRITE,13)
C
C --- PRINT-OUT OF TERMS FORMED FROM CONFIGURATIONS L**Q
C
      CALL TMSOUT
C
C     NSTATE IS THE NUMBER OF STATES (NOT CONFIGURATIONS) UNDER
C          CONSIDERATION
C     NFACT DEFINES THE NUMBER OF FACTORIALS CALCULATED
C     NHDEL DEFINES THE DIMENSION OF THE KRONECKER DELTA
C     IPUNCH IS ZERO IF THE WEIGHTS OF THE SLATER INTEGRALS ARE NOT TO
C        BE PUNCHED ON CARDS.  IF SUCH PUNCHING IS REQUIRED,  IPUNCH IS
C        TO BE GIVEN THE VALUE OF THE CARD PUNCH CHANNEL NUMBER
C     ONLY PRINT-OUT OF COEFFICIENTS IN THE FOLLOWING CASES -
C        IBUG1 = 1  -  ONLY FINAL RESULTS FROM WEIGHTS
C        IBUG1 .GE. 2  -  FULL PRINT-OUT FROM WEIGHTS
C        IBUG3 = 1 - FULL PRINT-OUT FROM RECOUPLING COEFFICIENT PACKAGE
c         ibug4 similar to ibug1, except for one-electron part.
C     IBUG2  IS DEFINED IN PRNTWT
C      IBUG5 TO IBUG9 ARE NOT USED IN THIS PACKAGE
C
      READ(IREAD,1) NSTATE,NFACT,NHDEL,IPUNCH
      WRITE(IWRITE,11) NSTATE,NFACT,NHDEL,IPUNCH
      READ(IREAD,1) IBUG1,IBUG3,ibug4
      WRITE(IWRITE,12) IBUG1,IBUG3,ibug4
      IBUG5=0
      IBUG6=0
      do 11 i=1,10
      locate(i)=0
   11 continue
      nl=0
C
C --- SET FACTORIALS
C
      CALL SHRIEK(NFACT)
C
C ---  SET KRONECKER DELTA
C
      DO 2 I=1,NHDEL
      DO 3 J=1,I
      IF(I-J) 4,5,4
    5 IDEL(I,I)=1
      GO TO 3
    4 IDEL(I,J)=0
      IDEL(J,I)=0
    3 CONTINUE
    2 CONTINUE
C
C --- READ IN (AND PRINT OUT) CONFIGURATIONS
C
   10 CALL CFGIN
      CALL CFGOUT
      call cfgtst
C
C --- CONSIDER (PSI/V/PSIP) AS PSI AND PSIP RUN OVER ALL CONFIGURATIONS
C
      DO 6 JA=1,NCFG
      DO 7 JB=1,JA
      IF(JA.EQ.JB) GO TO 20
      IDIAG=0
      GO TO 21
   20 IDIAG=1
   21 CONTINUE
C
C --- SET UP DEFINING QUANTUM NUMBERS FOR EACH MATRIX ELEMENT
C
      CALL SETUP(JA,JB)
      IF(IBUG1-1) 14,15,15
   15 CALL VIJOUT(JA,JB)
C
C --- TEST ON POSSIBLE RECOUPLING ORTHOGONALITY
C
   14 CALL ORTHOG(LET)
     1L/40X,22H ---------------------)
C     REPLACE CARD 272 BY THE FOLLOWING  11 CARDS
      IF(LET.EQ.0) GO TO 7
      IF(IBUG4.EQ.2) WRITE(IWRITE,41)
      IF(IDIAG.EQ.0) GO TO 32
      IF(IBUG4.NE.0) CALL DH0
      GO TO 35
   32 CALL H0WTS(ISIG,ISIGP,Y,ICAL)
C
C     ICAL=0  UNLESS  Y  HAS BEEN CALCULATED
C
      CALL ODH0(ISIG,ISIGP,Y,ICAL)
   35 IF(IBUG1.EQ.2) WRITE(IWRITE,42)
c    program 4
c
c    acqvweights new version. a new version af a general program
c    to calculate angular momentum integrals in atomic structure.
c    hibbert, a.
     ref. in comp. phys. commun. 2 (1971) 180 and
             comp. phys. commun. 6 (1973)  59 and
             comp. phys. commun. 7 (1974) 318 and
             comp. phys. commun. 8 (1974) 329
c            
C
C      JANUARY 1971
C
C     GENERAL PROGRAM TO CALCULATE THE MATRIX ELEMENTS OF THE TWO-
C     ELECTRON OPERATOR OF THE HAMILTONIAN AS A SUM OF SLATER INTEGRALS
C     WRITTEN BY  A. HIBBERT , DEPT. OF APPLIED MATHEMATICS AND
C     THEORETICAL PHYSICS,  THE QUEENS UNIVERSITY OF BELFAST.
C
C     THE CODE USES THE RECOUPLING COEFFICIENT CODE OF  P.G. BURKE ,
C     AND THE COEFFICIENT OF FRACTIONAL PARENTAGE ROUTINES (CFPP AND
C     CFPD) WRITTEN BY  D.C.S. ALLISON , BOTH OF THE QUEENS UNIVERSITY
C     OF BELFAST
C
C
C     THREE DASHES (OR THREE EQUALS SIGNS) AT THE BEGINNING OF A COMMENT
C     CARD INDICATE A NEW SECTION OF A SEGMENT
C
C
C ********** LISTING OF COMMON BLOCKS **********
C
C
C === INFORM
C     IREAD - DEFINITION OF CARD INPUT CHANNEL
C     IWRITE - DEFINITION OF LINE PRINTER OUTPUT CHANNEL
C     IPUNCH - DEFINITION OF CARD PUNCH OUTPUT CHANNEL
C
C === DEBUG
C     IBUG1  -  DEFINES PRINTOUT FROM THIS PACKAGE
C          = 0   -   NO PRINT-OUT
C          = 1  -  FINAL RESULTS
C          .GT. 1  -  FULL RESULTS
C     IBUG2  -  DEFINES PRINT-OUT FROM PRNTWT
C     IBUG3  -  DEFINES PRINT-OUT FROM RECOUPLING COEFFICIENT PACKAGE
C          ONLY PRINT-OUT WHEN =1
      ibug4  -  defines printout from one-electron part   cf. ibug1
      ibug5 to ibug9 are not used in this paskage
C
C === KRON
C     IDEL(I,J),I,J=1,NHDEL  -  KRONECKER DELTA
C
C === STATES
C     NCFG   -   NUMBER OF CONFIGURATIONS
C     NOCCSH(I),I=1,NCFG   -    FOR EACH CONFIGURATION, THE NUMBER OF
C               OCCUPIED SHELLS
C     NOCORB(J,I),J=1,NOCCSH(I),I=1,NCFG   -   FOR EACH CONFIGURATION
C               THE NUMBERS INDICATING WHICH SHELLS ARE OCCUPIED
C     NELCSH(J,I),J=1,NOCCSH(I),I=1,NCFG   -   FOR EACH CONFIGURATION,
C               THE NUMBER OF ELECTRONS IN EACH OCCUPIED SHELL
C     J1QNRD(J,K,I),J=1,2*NOCCSH(I)-1,K=1,3,I=1,NCFG   -   ANGULAR
C               MOMENTUM QUANTUM NUMBERS.   K=1  IS SENIORITY,  K=2  IS
C               (2L+1),  K=3  IS (2S+1).   J=1,NOCCSH(I)  IS THE SET OF
C               QUANTUM NUMBERS FOR EACH SHELL.  THE REMAINING
C               NOCCSH(I)-1 ARE QUANTUM NUMBERS RESULTING FROM COUPLING
C               OF THE SHELLS
C     MAXORB   -   HIGHEST VALUE OF NOCORB(J,I)
C     LJCOMP(I),I=1,MAXORB   -    L  VALUES OF THE ORBITALS
C
C === TERMS
C     NROWS  -  NUMBER OF ROWS OF TABLE OF TERMS, ACCORDING TO
C              S,S**2,P,P**2,P**3,D,...D**5, ETC.
C     ITAB(I),I=1,NROWS  -  NUMBER OF SETS OF 3 QUANTUM NUMBERS IN
C               EACH ROW
C     JTAB(I),I=1,NROWS  -  IF WE LIST ALL QUANTUM NUMBERS IN A SINGLE
C               LINE, THIS MEASURES NUMBER OF QUANTUM NUMBERS OCCURRING
C               BEFORE ROW  I
C     NTAB(J),J=1,(JTAB(I)+3*ITAB(I))  -  LIST OF THE QUANTUM NUMBERS OF
C               THE TERMS
C
C === FACT
C     GAMMA(I),I=1,NFACT  -  FACTORIAL (OR GAMMA FUNCTION FOR INTEGER)
C
C === MEDEFN
C          THIS LISTS THE QUANTUM NUMBERS NEEDED IN A SINGLE MATRIX
C          ELEMENT (PSI/V/PSIP)
C
C --- IF NO SUCH ORTHOGONALITY IS EXHIBITED, CALCULATE WEIGHTS OF SLATER
C     INTEGRALS
C
    8 CALL CHOP
      CALL RKWTS
    7 CONTINUE
    6 CONTINUE
C
C --- ARE THERE ANY MORE STATES TO CONSIDER
C
      NSTATE=NSTATE-1
      IF(NSTATE) 9,9,10
    9 PAUSE
      END
C
c-------------------------------------------------------------------------------c                            t m s o u t
c---------------------------------------------------------------------------
c
       SUBROUTINE TMSOUT
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/TERMS/NROWS,ITAB(12),JTAB(12),NTAB(171)
C
C --- PRINT-OUT OF TABLE OF TERMS, SET IN BLOCK DATA
C
    1 FORMAT(40X,24H TABLE OF POSSIBLE TERMS//)
    2 FORMAT(I3,91H  ROWS OF THIS TABLE (NTAB) ARE DEFINED.  THE LENGTHS
     1 (ITAB) OF THE ROWS ARE, RESPECTIVELY,/30X,12I5)
    3 FORMAT(/74H LIST OF NTAB.  EACH TRIAD OF NUMBERS CORRESPONDS TO (S
     1ENIORITY,2L+1,2S+1)/)
    4 FORMAT(5H ROW ,I2,2H ,,8(I8,2I3)/I17,2I3,7(I8,2I3))
      WRITE(IWRITE,1)
      WRITE(IWRITE,2) NROWS,(ITAB(I),I=1,NROWS)
      WRITE(IWRITE,3)
      DO 5 I=1,NROWS
      JI=JTAB(I)
      JJ=3*ITAB(I)
      WRITE(IWRITE,4) I,(NTAB(JI+J),J=1,JJ)
    5 CONTINUE
      RETURN
      END
c
c-----------------------------------------------------------------------
c                             s h r i e k
c-----------------------------------------------------------------------
c
      SUBROUTINE SHRIEK(NFACT)
C
C ===  EVALUATES FACTORIALS
C
      COMMON/FACT/ GAMMA(20)
      common/const/zero,tenth,half,one,two,four,seven,eleven,eps
      GAMMA(1)=one
      DO 1 I=2,NFACT
      II=I-1
      GAMMA(I)=II*GAMMA(II)
    1 CONTINUE
      RETURN
C
C      GAMMA(I+1)=FACTORIAL I
C
      END
c
c---------------------------------------------------------------------
c                          c f g i n
c---------------------------------------------------------------------
c
      SUBROUTINE CFGIN
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/STATES/NCFG,NOCCSH(30),NOCORB(5,30),NELCSH(5,30),
     1     j1qnrd(9,3,30),maxorb,njcomp(21),ljcomp(21),iajcmp(21)
C
C --- QUANTUM NUMBERS DEFINING THE CONFIGURATIONS ARE READ IN
C
    1 FORMAT(12I5)
    5 format(24a3)
      MAXORB=0
      READ(IREAD,1) NCFG
      READ(IREAD,1)(NOCCSH(I),I=1,NCFG)
      DO 2 I=1,NCFG
      N=NOCCSH(I)
      READ(IREAD,1) (NOCORB(J,I) ,J=1,N)
      READ(IREAD,1) (NELCSH(J,I) ,J=1,N)
      IF(MAXORB-NOCORB(N,I)) 3,4,4
    3 MAXORB=NOCORB(N,I)
    4 M=2*N-1
      READ(IREAD,1) ((J1QNRD(J,K,I),K=1,3),J=1,M)
    2 CONTINUE
      READ(IREAD,1) (NJCOMP(I),LJCOMP(I),I=1,MAXORB)
      read(iread,5) (iajcmp(i),i=1,maxorb)
      RETURN
      END
c
c---------------------------------------------------------------------
c                           c f g o u t
c---------------------------------------------------------------------
c
      SUBROUTINE CFGOUT
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/STATES/NCFG,NOCCSH(30),NOCORB(5,30),NELCSH(5,30),
     1    J1QNRD(9,3,30),MAXORB,NJCOMP(21),LJCOMP(21)
C
C --- PRINT-OUT OF CONFIGURATIONS, BEING DATA READ IN CFGIN
C
    1 FORMAT(27H1NUMBER OF CONFIGURATIONS =,I3/)
    2 FORMAT(50H NUMBER OF OCCUPIED SHELLS IN THESE CONFIGURATIONS/30I3)
    4 FORMAT(/14H CONFIGURATION,I3/6X,21HOCCUPIED ORBITALS ARE,32X,10I3)
    5 FORMAT(5X,16H COUPLING SCHEME)
    6 FORMAT(5X,3I3,6(I10,2I3))
    7 FORMAT(22X,6(I10,2I3))
    8 FORMAT(/10H THERE ARE,I3,30H ORBITALS WHOSE N,L VALUES ARE/2I3,10(
     1I8,I3))
    9 FORMAT(5X,49H NUMBER OF ORBITALS IN RESPECTIVE OCCUPIED SHELLS,5X,
     110I3)
      WRITE(IWRITE,1) NCFG
      WRITE(IWRITE,2) (NOCCSH(I),I=1,NCFG)
      DO 3 I=1,NCFG
      N=NOCCSH(I)
      WRITE(IWRITE,4) I,(NOCORB(J,I),J=1,N)
      M=2*N-1
      WRITE(IWRITE,9) (NELCSH(J,I),J=1,N)
      N1=N+1
      WRITE(IWRITE,5)
      WRITE(IWRITE,6) ((J1QNRD(J,K,I),K=1,3),J=1,N)
      WRITE(IWRITE,7) ((J1QNRD(J,K,I),K=1,3),J=N1,M)
    3 CONTINUE
      WRITE(IWRITE,8) MAXORB,(NJCOMP(I),LJCOMP(I),I=1,MAXORB)
      RETURN
      END
c
c---------------------------------------------------------------------
c                        s e t u p
c---------------------------------------------------------------------
c
      SUBROUTINE SETUP(JA,JB)
      COMMON/STATES/NCFG,NOCCSH(30),NOCORB(5,30),NELCSH(5,30),
     1     j1qnrd(9,3,30),maxorb,njcomp(21),ljcomp(21),iajcmp(21)
      common/medefn/ihsh,nj(10),lj(10),nosh(10,2),j1qn(19,3,2),ijful(10)
C
C     NOTICE THE DIFFERENT NAMES IN THE COMMON BLOCK MEDEFN  -  WE
C      STORE NOSH1(I=1,10) AS NOSH((I=1,10),1) AND NOSH2(I=1,10) AS
C     NOSH((I=1,10),2)   AND USE THE FACT THAT NOSH1 AND NOSH2 WILL THEN
C     BE EQUIVALENT TO THE SINGLE 2-DIMENSIONAL ARRAY NOSH.  SIMILARLY
C     FOR J1QN
C
C === GENERATES THE ARRAYS  NJ,LJ - DEFINING THE QUANTUM NUMBERS OF THE
C     SHELLS,   NOSH - DEFINING THE OCCUPATION OF THE SHELLS,  J1QN -
C     DEFINING THE COUPLING OF THE SHELLS,   FOR EACH OF THE TWO
C     CONFIGURATIONS CONSIDERED.    ONLY THOSE SHELLS OCCURRING IN AT
C     LEAST ONE CONFIGURATION ARE INCLUDED.
C                   AT LEAST TWO SHELLS MUST BE CONSIDERED OCCUPIED.
C     THUS (1S)**2    HELIUM  MUST BE TREATED AS ,E.G., (1S)**2(2S)**0
C     THE SIZE OF THE ARRAYS HERE CALCULATED IS ARRANGED TO BE NO
C     GREATER THAN IS NECESSARY TO INCLUDE ALL ORBITALS WHICH ARE
C     DEEMED TO BE OCCUPIED IN EITHER OR BOTH OF THE CONFIGURATIONS
C     JA,JB
C
C --- INITIALIZE BASIC QUANTITIES - (I1+1) RUNS OVER 1,MAXORB,  IHSH IS
C     THE CURRENT VALUE OF THE HIGHEST OCCUPIED SHELL YET CONSIDERED,
C     WHILE I2HSH=2*IHSH-1
C
      I1=0
      IHSH=0
      I2HSH=-1
      IA=NOCCSH(JA)
      IB=NOCCSH(JB)
C
C --- TEST ON WHETHER LIMIT OF I1 HAS BEEN REACHED
C
    1 IF(I1-MAXORB) 101,100,100
C
C --- INCREASE BASIC QUANTITIES
C
  101 I1=I1+1
      I3=IHSH+1
      I5=I2HSH+I3
C
C --- IS THE SHELL I1 OCCUPIED IN JA
C
      DO 2 J=1,IA
      IF(I1-NOCORB(J,JA)) 2,3,2
    2 CONTINUE
      NA=1
      GO TO 4
    3 NA=2
      J1=J
C
C --- IS THE SHELL I1 OCCUPIED IN JB
C
    4 DO 5 J=1,IB
      IF(I1-NOCORB(J,JB)) 5,6,5
    5 CONTINUE
      NB=1
      GO TO 7
    6 NB=2
      J2=J
C
C     IF THE SHELL I1 IS NOT OCCUPIED IN EITHER JA OR JB, IGNORE THE
C     SHELL, DO NOT INCREASE IHSH, AND CONSIDER NEXT SHELL BY INCREASING
C     I1
C
    7 IF(NA-1) 8,8,9
    8 IF(NB-1) 1,1,9
C
C --- IF THE SHELL I1 IS OCCUPIED IN EITHER JA OR JB -
C     (1)   IF IHSH.GT.1, THEN ALREADY AT LEAST TWO SHELLS AND THE
C     RESULTING COUPLINGS HAVE BEEN STORED. WE MUST THUS MAKE ROOM FOR
C     THE QUANTUM NUMBERS OF THIS NEW SHELL BETWEEN THE QUANTUM NUMBERS
C     OF THE PREVIOUS SHELLS AND THE QUANTUM NUMBERS OF THE INTERMEDIATE
C     COUPLINGS OF THE CONFIGURATIONS.  THUS THE LATTER SET ARE =MOVED
C     ALONG= TO MAKE ROOM FOR THE NEW SHELL
C     (2)   IF IHSH.LE.1, THERE ARE NO INTERMEDIATE COUPLING QUANTUM
C     NUMBERS, AND SO THERE IS NOTHING TO MOVE
C
    9 IF(IHSH-1) 11,11,10
   10 DO 12 I=1,2
      DO 13 J=I3,I2HSH
      I4=I5-J
      DO 14 K=1,3
      J1QN(I4+1,K,I)=J1QN(I4,K,I)
   14 CONTINUE
   13 CONTINUE
   12 CONTINUE
   11 IHSH=I3
      I2HSH=I2HSH+2
      NC=NA
      I=1
      IC=J1
      JC=JA
C
C --- FIRST CONSIDER THE L.H.S. (I=1) OF THE MATRIX ELEMENT.  NC=1 MEANS
C     UNOCCUPIED, REPRESENTED BY A DUMMY SINGLET S SHELL, AND THE
C     ADDITIONAL SET OF COUPLING QUANTUM NUMBERS WILL BE THE SAME AS THE
C     LAST SET OF COUPLING QUANTUM NUMBERS ALREADY OBTAINED.
C     NC=2 MEANS OCCUPIED.  THEN ALL THE NEW QUANTUM NUMBERS (BOTH FOR
C     THE SHELL AND FOR THE COUPLING OF THIS SHELL TO THE RESULTANT OF
C     THE PREVIOUS ONES) ARE DEFINED IN THE CORRESPONDING J1QNRD ARRAY.
C     NOSH - THE NUMBER OF ELECTRONS IN THIS SHELL, IS DEFINED BY THE
C     APPROPRIATE ENTRY IN NELCSH .  THE R.H.S. IS THEN CONSIDERED
C     SIMILARLY (I=2)
C
   25 GO TO (15,16),NC
   15 NOSH(IHSH,I)=0
      J1QN(IHSH,1,I)=0
      J1QN(IHSH,2,I)=1
      J1QN(IHSH,3,I)=1
      IF(IHSH-2) 22,18,19
   18 J1QN(3,1,I)=0
      J1QN(3,2,I)=J1QN(1,2,I)
      J1QN(3,3,I)=J1QN(1,3,I)
      GO TO 22
   19 DO 27 K=1,3
      J1QN(I2HSH,K,I)=J1QN(I2HSH-1,K,I)
   27 CONTINUE
      GO TO 22
   16 NOSH(IHSH,I)=NELCSH(IC,JC)
      DO 20 K=1,3
      J1QN(IHSH,K,I)=J1QNRD(IC,K,JC)
C
C     IS THIS THE FIRST OCCUPIED SHELL OF EITHER CONFIGURATION. IF SO,
C     THEN THERE ARE NO INTERMEDIATE COUPLINGS TO CONSIDER AT THIS STAGE
C
      IF(IHSH-1) 20,20,21
C
C     IS THIS THE FIRST OCCUPIED SHELL OF THIS CONFIGURATION, THOUGH NOT
C     THE FIRST OF THE OTHER CONFIGURATION.  IF SO, THE INTERMEDIATE
C     COUPLING FORMED HAS THE SAME  L,S  VALUES AS THIS OCCUPIED SHELL,
C     SINCE WE COUPLE THE SHELL TO A DUMMY SINGLET S.
C
   21 IF(IC-1) 26,26,29
   26 I2=1
      IF(K-1) 28,17,28
C
C     SENIORITY SET (ARBITRARILY) ZERO FOR INTERMEDIATE COUPLING
C
   17 J1QN(I2HSH,1,I)=0
      GO TO 20
   29 I2=NOCCSH(JC)+IC-1
   28 J1QN(I2HSH,K,I)=J1QNRD(I2,K,JC)
   20 CONTINUE
   22 IF(I-2) 23,24,24
   23 NC=NB
      I=2
      IC=J2
      JC=JB
      GO TO 25
C
C --- SET THE NJ AND LJ VALUES OF THE OCCUPIED SHELLS
C
   24 NJ(IHSH)=NJCOMP(I1)
      LJ(IHSH)=LJCOMP(I1)
      ijful(ihsh)=i1
C
C --- RETURN TO 1  TO SEE IF MAXORB HAS BEEN REACHED
C
      GO TO 1
  100 RETURN
      END
c
c--------------------------------------------------------------------
c                          v i j o u t
c--------------------------------------------------------------------
c
      SUBROUTINE VIJOUT(JA,JB)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1     j1qn2(19,3),ijful(10)
C
C     THIS SUBROUTINE IS ENTERED ONLY IF IBUG1 IS GREATER THAN ZERO
C
C --- PRINT OUT OF QUANTUM NUMBERS AND COUPLING SCHEMES FOR EACH
C     MATRIX ELEMENT AS DEFINED BY SETUP
C
    5 FORMAT(//48H L.H.S. OF HAMILTONIAN MATRIX ELEMENT DEFINED BY)
    6 FORMAT(//48H R.H.S. OF HAMILTONIAN MATRIX ELEMENT DEFINED BY)
    7 FORMAT(9H1(CONFIG ,I2,10H/V/CONFIG ,I2,1H))
    8 FORMAT(/7H NJ,LJ ,10(I6,I3))
    9 FORMAT(/6H NOSH ,10I4)
   10 FORMAT(6H J1QN ,10(I5,2I3))
      I2HSH=2*IHSH-1
      WRITE(IWRITE,7) JA,JB
      WRITE(IWRITE,8) (NJ(I),LJ(I),I=1,IHSH)
      IF(IBUG1-1) 1,1,2
    2 WRITE(IWRITE,5)
      WRITE(IWRITE,9) (NOSH1(J),J=1,IHSH)
      WRITE(IWRITE,10) ((J1QN1(J,K),K=1,3),J=1,I2HSH)
      WRITE(IWRITE,6)
      WRITE(IWRITE,9) (NOSH2(J),J=1,IHSH)
      WRITE(IWRITE,10) ((J1QN2(J,K),K=1,3),J=1,I2HSH)
    1 RETURN
      END
c
c----------------------------------------------------------------------
c                            o r t h o g
c----------------------------------------------------------------------
c
      SUBROUTINE ORTHOG(LET)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1      j1qn2(19,3),ijful(10)
C
C     THIS SUBROUTINE CHECKS FOR POSSIBLE ORTHOGONALITY DUE TO
C     COUPLING DIFFERENCES OR UNEVEN PARITY
C
  101 FORMAT(37H DIFFERING RESULTANT ANGULAR MOMENTUM)
  102 FORMAT(52H ORTHOGONALITY IN COUPLING SCHEMES OF CONFIGURATIONS)
  103 FORMAT(59H THE TWO CONFIGURATIONS HAVE DIFFERING NUMBERS OF ELECTR
     1ONS)
  104 FORMAT(51H THE TWO CONFIGURATIONS HAVE DIFFERING TOTAL PARITY)
C
C --- DO PSI AND PSIP CONTAIN THE SAME NUMBERS OF ELECTRONS
C     DO PSI AND PSIP HAVE THE SAME TOTAL PARITY
C
      N5=0
      N6=0
      N7=0
      DO 20 I=1,IHSH
      L1=LJ(I)
      L2=NOSH1(I)
      L3=NOSH2(I)
      N5=N5+L2
      N6=N6+L3
      N7=N7+L1*(L2-L3)
   20 CONTINUE
C
C     CHECK ON NUMBER OF ELECTRONS
C
      IF (N5-N6) 21,22,21
   21 IF(IBUG1-1) 11,28,28
   28 WRITE(IWRITE,103)
      GO TO 11
C
C     CHECK ON PARITY
C
   22 IF(N7-N7/2*2) 23,24,23
   23 IF(IBUG1-1) 11,25,25
   25 WRITE(IWRITE,104)
      GO TO 11
   24 N1=2*IHSH-1
      N2=IHSH+1
      N3=IHSH-1
      N4=IHSH-2
C
C --- IS THE FINAL STATE THE SAME FOR PSI AND PSIP
C
      DO 1 K=2,3
      IF(J1QN1(N1,K)-J1QN2(N1,K))2,1,2
    1 CONTINUE
      GO TO 3
    2 IF(IBUG1-1) 11,26,26
   26 WRITE(IWRITE,101)
C
C --- THE TWO CONFIGURATIONS WILL HAVE ZERO HAMILTONIAN MATRIX ELEMENT
C
   11 LET=0
      RETURN
C
C --- COUPLING ORTHOGONALITY TEST FOR FIRST TWO SHELLS
C
    3 continue
C
C --- NO OBVIOUS ANGULAR MOMENTUM ORTHOGONALITY
C
   12 LET=1
      RETURN
      END
c
c---------------------------------------------------------------------
c                           r k w t s
c---------------------------------------------------------------------
c
      SUBROUTINE RKWTS
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1     j1qn2(19,3),ijful(10)
     1     J1QN2(19,3)
      COMMON/MVALUE/M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,
     1     M16,M17,M18,M19,M20
      COMMON/REMOVE/ICHOP(10)
C
C     THE MATRIX ELEMENT OF THE TWO-ELECTRON POTENTIAL BETWEEN TWO
C     STATES (LABELLED 1 AND 2) MAY BE EXPRESSED AS A SUM OF WEIGHTED
C     RK (SLATER) INTEGRALS.  THIS SUBROUTINE, TOGETHER WITH THOSE
C     CALLED BY IT, DETERMINES THESE WEIGHTS, WHICH ARISE FROM AN
C     INTEGRATION OVER THE ANGULAR AND SPIN CO-ORDINATES
C     FOR DETAILS, SEE   U. FANO, PHYS. REV.,140,A67,(1965)
C
C     THE =INTERACTING= SHELLS ARE DESIGNATED  IRHO,ISIG,IRHOP,ISIGP.
C     THE FIRST TWO REFER TO THE L.H.S. OF     (PSI/V/PSIP)     , WHILE
C     THE SECOND TWO REFER TO THE R.H.S.  FOR DIAGONAL AND CERTAIN OFF-
C     DIAGONAL MATRIX ELEMENTS, THESE MAY NOT BE UNIQUE, AND EACH
C     POSSIBILITY MUST BE CONSIDERED IN TURN
C     THE CONDITION =IRHO .LE. ISIG ,  IRHOP .LE. ISIGP=  IS TO BE
C     SATISFIED
C
   61 FORMAT(//10X,7H IRHO =,I3,4X,7H ISIG =,I3,4X,8H IRHOP =,I3,3X,8H I
     1SIGP =,I3)
C
C === DETERMINE THE INTERACTING SHELLS AS FAR AS POSSIBLE BY
C     CONSIDERING THE DIFFERENCES BETWEEN PSI AND PSIP
C
      IBUG2=2
      IX=0
      IRHO=0
      ISIG=0
      IRHOP=0
      ISIGP=0
      DO 4 J=1,IHSH
      N=NOSH1(J)-NOSH2(J)
      IF(IABS(N)-2) 5,5,1
    5 IF(N) 7,4,6
    6 IF(N-1) 4,8,9
C
C --- TO SATISFY =IRHO.LE.ISIG=  IRHO IS SET FIRST,  ETC.
C
    8 IF(IRHO) 10,10,11
   10 IRHO = J
      GO TO 12
   11 ISIG=J
   12 IX =IX+1
      GO TO 4
    9 IRHO=J
      IX=IX+2
      GO TO 4
    7 IF(N+1) 13,14,4
   14 IF(IRHOP) 15,15,16
   15 IRHOP = J
      GO TO 17
   16 ISIGP=J
   17 IX=IX+1
      GO TO 4
   13 IRHOP=J
      IX=IX+2
    4 CONTINUE
C
C     IX MEASURES THE TOTAL NUMBER OF ELECTRONS IN EITHER CONFIGURATION
C     WHICH DO NOT OCCUR IN THE OTHER.  THEN IF  IX  IS GREATER THAN 4,
C     ORTHOGONALITY OF THE ORBITALS PREVENTS A NON-ZERO MATRIX ELEMENT.
C     IF  IX  IS LESS THAN 4, THEN WE DIVIDE IX BY 2 AND NOW IX MEASURES
C     THE NUMBER OF ELECTRONS WHICH HAVE BEEN CHANGED IN GOING FROM PSI
C     TO PSIP.  IF NOW IX=0, WE HAVE A DIAGONAL MATRIX ELEMENT.  RHO AND
C     SIG MAY TAKE ON ANY VALUES LESS THAN IHSH.  IF IX=1, ONE INTER-
C     ACTING SHELL ON EACH SIDE IS FIXED, WHILE THE OTHER MAY VARY.  IF
C     IX=2, ALL INTERACTING SHELLS ARE DETERMINED
C
      IF(IX-4) 18,18,1
   18 IX=IX/2
      IF(IX-1) 19,20,21
C
C === UNIQUE SPECIFICATION OF INTERACTING SHELLS
C
   21 IF(ISIG) 22,23,22
   23 ISIG=IRHO
   22 IF(ISIGP) 24,25,24
   25 ISIGP = IRHOP
   24 IF(IBUG1.GT.1) WRITE(IWRITE,61) IRHO,ISIG,IRHOP,ISIGP
C
C --- CALCULATE COEFFICIENTS OF SLATER INTEGRALS
C
   70 CALL REDUCE(IRHO,ISIG,IRHOP,ISIGP,LESSEN)
      call setm
   75 CALL FANO(IRHO,ISIG,IRHOP,ISIGP)
      IF(LESSEN.NE.0) CALL MEREST(IRHO,ISIG,IRHOP,ISIGP)
      CALL PRNTWT(IRHO,ISIG,IRHOP,ISIGP)
      RETURN
C
C === ONE INTERACTING SHELL SPECIFIED ON EACH SIDE. SUMMATION OVER OTHER
C
   20 IRSTO=IRHO
      IRPSTO=IRHOP
      DO 125 K1=1,IHSH
      IF(NOSH1(K1)) 26,125,26
   26 ISIG=K1
      IF(NOSH2(K1)) 29,125,29
   29 ISIGP = K1
      IRHO=IRSTO
      IRHOP=IRPSTO
C
C     ORTHOGONALITY OF THE ORBITALS REQUIRES THAT THE VARYING INTER-
C     ACTING SHELL BE THE SAME ON BOTH SIDES OF THE MATRIX ELEMENT
C
C --- IRHO.LE.ISIG,   IRHOP.LE.ISIGP
C
      IF(IRHO-ISIG) 27,127,227
  227 ISTO=IRHO
      IRHO=ISIG
      ISIG = ISTO
      GO TO 27
  127 IF(NOSH1(ISIG)-1) 125,125,27
   27 IF(IRHOP-ISIGP) 30,130,31
   31 ISTO=IRHOP
      IRHOP = ISIGP
      ISIGP = ISTO
      GO TO 30
  130 IF(NOSH2(ISIGP)-1) 125,125,30
   30 IF(IBUG1.GT.1) WRITE(IWRITE,61) IRHO,ISIG,IRHOP,ISIGP
C
C --- CALCULATE COEFFICIENTS OF SLATER INTEGRALS
C
   71 CALL REDUCE(IRHO,ISIG,IRHOP,ISIGP,LESSEN)
      call setm
   76 CALL FANO(IRHO,ISIG,IRHOP,ISIGP)
      IF(LESSEN.NE.0) CALL MEREST(IRHO,ISIG,IRHOP,ISIGP)
      CALL PRNTWT(IRHO,ISIG,IRHOP,ISIGP)
  125 CONTINUE
      RETURN
C
C === NO INTERACTING SHELLS SPECIFIED
C     SUMMATION OVER ALL POSSIBLE COMBINATIONS
C     IN THIS CASE, ORTHOGONALITY OF ORBITALS PRECLUDES ALL CASES
C     EXCEPT  IRHO=IRHOP    AND    ISIG=ISIGP
C
   19 DO 32 K1=1,IHSH
      IF(NOSH1(K1)) 36,32,36
   36 ISIG=K1
      DO 33 K2=1,K1
      IF(NOSH1(K2)) 37,33,37
   37 IRHO=K2
      IF(IRHO-ISIG) 50,51,50
   51 IF(NOSH1(ISIG)-1) 33,33,50
   50 IRHOP=IRHO
      ISIGP=ISIG
      IF(IBUG1.GT.1) WRITE(IWRITE,61) IRHO,ISIG,IRHOP,ISIGP
C
C --- CALCULATE COEFFICIENTS OF SLATER INTEGRALS
C
   74 IF(ICHOP(K1).EQ.1.OR.ICHOP(K2).EQ.1) GO TO 34
      CALL REDUCE(IRHO,ISIG,IRHOP,ISIGP,LESSEN)
      call setm
   77 CALL FANO(IRHO,ISIG,IRHOP,ISIGP)
      IF(LESSEN.NE.0) CALL MEREST(IRHO,ISIG,IRHOP,ISIGP)
      CALL PRNTWT(IRHO,ISIG,IRHOP,ISIGP)
      GO TO 33
   34 CALL USEEAV(IRHO,ISIG)
   33 CONTINUE
   32 CONTINUE
    1 RETURN
C
C --- SET CONSTANTS USEFUL IN INNER SUBROUTINES
C
      END
c
c-----------------------------------------------------------------------
c                         f a n o
c-----------------------------------------------------------------------
c
      SUBROUTINE FANO(IRHO,ISIG,IRHOP,ISIGP)
      DIMENSION RMEDIR(9),RMEEX(9),NBAR(10)
      DIMENSION K6(40),K7(80),K8(40),KW(6,20)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/KRON/IDEL(10,10)
      COMMON/TERMS/NROWS,ITAB(12),JTAB(12),NTAB(171)
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1     j1qn2(19,3),ijful(10)
      COMMON/MVALUE/M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,
     1     M16,M17,M18,M19,M20
      common/xation/amult(9),bmult(9),kd1,kd2,ke1,ke2,multd,multe
      COMMON/NJLJ/NRHO,LRHO,NSIG,LSIG,NRHOP,LRHOP,NSIGP,LSIGP
      COMMON/INTERM/J1BAR1(10,3),J1BAR2(10,3),J1TLD1(3),J1TLD2(3)
      COMMON/COUPLE/NJ1S,NJ23S,J1(40),J2(12,3),J3(12,3)
C
      common/const/zero,tenth,half,one,two,three,four,seven,eleven,eps
C
C === DETERMINES POTENTIAL MATRIX ELEMENT FOR GIVEN RHO,SIG,RHOP,SIGP
C
C
  301 FORMAT(21H NO POSSIBLE K-VALUES)
  302 FORMAT(66H SPECTATOR QUANTUM NUMBERS NOT DIAGONAL FOR NON-INTERACT
     1ING SHELLS)
  305 FORMAT(23H DIRECT SPIN INTEGRAL =,F10.6)
  306 FORMAT(25H EXCHANGE SPIN INTEGRAL =,F10.6)
  307 FORMAT(6H NJ,LJ,4(I8,I4))
  308 FORMAT(6H KD1 =,I4,6H KD2 =,I4,6H KE1 =,I4,6H KE2 =,I4)
  309 FORMAT(56H ROWS OF TERM TABLE CONTAINING PARENTS ARE, RESPECTIVELY
     1,2(I6,I3))
  310 FORMAT(26H DIRECT ANGULAR INTEGRAL =,F10.6)
  311 FORMAT(3H J1,I6,36I3)
  312 FORMAT(28H EXCHANGE ANGULAR INTEGRAL =,F10.6)
C
C --- SET USEFUL CONSTANTS
C
      M1=ISIG-IRHO
      M2=ISIGP-IRHOP
      M19=IRHO-IRHOP
      M20=ISIG-ISIGP
      MULTD=0
      MULTE=0
C
C     JSNDIR,JANGDI=0  IMPLIES APPROPRIATE J2,J3 ARRAYS FOR CALL OF
C     NJSYM HAVE NOT BEEN SET
C
      JSNDIR=0
      JANGDI=0
C
C --- SET N,L VALUES OF INTERACTING SHELLS
C
      NRHO=NJ(IRHO)
      LRHO=LJ(IRHO)
      NSIG=NJ(ISIG)
      LSIG=LJ(ISIG)
      NRHOP=NJ(IRHOP)
      LRHOP=LJ(IRHOP)
      NSIGP=NJ(ISIGP)
      LSIGP=LJ(ISIGP)
      IF(IBUG1-1) 160,160,161
  161 WRITE(IWRITE,307) NRHO,LRHO,NSIG,LSIG,NRHOP,LRHOP,NSIGP,LSIGP
C
C --- EVALUATE MULTIPLICATIVE FACTORS
C
  160 IL=IDEL(IRHO,ISIG)
      IR=IDEL(IRHOP,ISIGP)
      q=nosh1(irho)*(nosh1(isig)-il)*nosh2(irhop)*nosh2(isigp)-ir)
      xmult=sqrt(q)*half
      adirct=(1+(1-il)*(1-ir))/sqrt((lsig+lsig+one)*(lrhop+lrhop+one))
      IEXCHG=2-IL-IR
      aexchg=iexchg/sqrt((lsig+lsig+one)*(lsig+lsig+one))
      DO 13 J=1,IHSH
      NBAR(J)=NOSH1(J)-IDEL(J,IRHO)-IDEL(J,ISIG)
   13 CONTINUE
      IDELP=0
      IF(M1) 14,15,14
   14 K1=IRHO+1
      DO 16 J=K1,ISIG
      IDELP=IDELP+NBAR(J)
   16 CONTINUE
   15 IF(M2) 17,18,17
   17 K1=IRHOP+1
      DO 19 J=K1,ISIGP
      IDELP=IDELP+NBAR(J)
   19 CONTINUE
   18 xmult=xmult*(-one)**idelp
C
C --- DETERMINES RANGES OF K FOR DIRECT AND EXCHANGE INTEGRALS
C     TRIANGULAR RELATIONS LIMIT (K+1) VALUES TO LIE BETWEEN KD1 AND KD2
C     FOR =DIRECT= INTEGRALS,  KE1 AND KE2 FOR =EXCHANGE= INTEGRALS
C
      K1=IABS(LSIG-LSIGP)
      K2=LSIG+LSIGP
      K3=IABS(LRHO-LRHOP)
      K4=LRHO+LRHOP
      KD1=MAX0(K1,K3)+1
      KD2=MIN0(K2,K4)+1
      K1=IABS(LRHOP-LSIG)
      K2=LRHOP+LSIG
      K3=IABS(LRHO-LSIGP)
      K4=LRHO+LSIGP
      KE1=MAX0(K1,K3)+1
      KE2=MIN0(K2,K4)+1
      IF(IBUG1-1) 612,612,613
  613 WRITE(IWRITE,308) KD1,KD2,KE1,KE2
  612 IF(KD1-KD2) 213,213,211
  211 IF(KE1-KE2) 213,213,212
  212 IF(IBUG1-1) 400,400,401
  401 WRITE(IWRITE,301)
  400 RETURN
C
C --- ZEROIZE MULTIPLYING FACTORS FOR ALLOWED K-VALUES.  THE LOWEST
C     VALUES  KD1  AND  KD2  ARE ALWAYS ALLOWED (UNLESS THEY ARE
C     GREATER THAN KD2 AND KE2 RESPECTIVELY).  ALLOWED K-VALUES THEN
C     STEP BY 2 TO SATISFY THE EVEN CONDITION OF THE REDUCED MATRIX
C     ELEMENTS, WHICH ARE THEN CALCULATED AND STORED
C
  213 IF(KD1-KD2) 231,231,232
  231 DO 230 JK1=KD1,KD2,2
      K=JK1-1
      AMULT(JK1)=one
      RMEDIR(JK1)=RME(LRHO,LRHOP,K)*RME(LSIG,LSIGP,K)
  230 CONTINUE
  232 IF(KE1-KE2) 233,233,241
  233 DO 234 JK1=KE1,KE2,2
      K=JK1-1
      BMULT(JK1)=one
      RMEEX(JK1)=RME(LRHO,LSIGP,K)*RME(LSIG,LRHOP,K)
  234 CONTINUE
C
C --- SET SENIORITY, S AND L VALUES OF SPECTATOR SHELLS
C
  241 DO 26 J=1,IHSH
      IF(IRHO-J) 27,29,27
   27 IF(ISIG-J) 28,29,28
   28 DO 128 K=1,3
      J1BAR1(J,K)=J1QN1(J,K)
  128 CONTINUE
   29 IF(IRHOP-J) 30,26,30
   30 IF(ISIGP-J) 31,26,31
   31 DO 181 K=1,3
      J1BAR2(J,K)=J1QN2(J,K)
  181 CONTINUE
      IF(IRHO-J) 32,26,32
   32 IF(ISIG-J) 33,26,33
C
C     CHECK THAT SPECTATOR SHELLS HAVE SAME RESPECTIVE QUANTUM NUMBERS
C
   33 DO 183 K=1,3
      IF(J1BAR1(J,K)-J1BAR2(J,K)) 402,183,402
  183 CONTINUE
   26 CONTINUE
      GO TO 405
  402 IF(IBUG1-1) 404,404,403
  403 WRITE(IWRITE,302)
  404 RETURN
C
C --- FROM WHICH ROWS OF NTAB DO WE FIND THE QUANTUM NUMBERS WITH BARS
C     OR TILDES
C
  405 NELCTS=NOSH1(ISIG)
      K2=NTAB1(NELCTS,LSIG+1)
      IF(M1) 20,21,20
   21 NELCTS=NOSH1(ISIG)-1
      GO TO 22
   20 NELCTS=NOSH1(IRHO)
   22 K1=NTAB1(NELCTS,LRHO+1)
      NELCTS=NOSH2(ISIGP)
      K4=NTAB1(NELCTS,LSIGP+1)
      IF(M2) 23,24,23
   24 NELCTS=NOSH2(ISIGP)-1
      GO TO 25
   23 NELCTS=NOSH2(IRHOP)
   25 K3=NTAB1(NELCTS,LRHOP+1)
      IF(IBUG1-1) 59,59,49
   49 WRITE(IWRITE,309) K1,K2,K3,K4
   59 KK1=ITAB(K1)
      KK2=ITAB(K2)
      KK3=ITAB(K3)
      KK4=ITAB(K4)
C
C === SUM OVER QUANTUM NUMBERS WITH BARS OR TILDES
C
      DO 151 JJ2=1,KK2
C
C --- TEST TO SEE WHICH PARENT TERMS ARE ALLOWABLE.  ONLY TEST THIS ON
C     L  AND  S  VALUES AT THIS STAGE, BY MEANS OF TRIANGULAR CONDITIONS
C     FOR TWICE THE QUANTUM NUMBERS, IN ORDER TO USE ONLY INTEGER
C     QUANTITIES
C
      IN3=2*LSIG
      IJK2=3*(JJ2-1)+JTAB(K2)
      DO 131 K=2,3
      IN1=NTAB(IJK2+K)-1
      IN2=J1QN1(ISIG,K)-1
      IF(IN1-IN2-IN3) 130,130,151
  130 IF(IN1-IABS(IN2-IN3)) 151,140,140
  140 IN3=1
  131 CONTINUE
      DO 152 JJ1=1,KK1
      IN3=2*LRHO
      IJK1=3*(JJ1-1)+JTAB(K1)
  162 DO 132 K=2,3
      IN1=NTAB(IJK1+K)-1
      IF(M1) 141,142,141
  141 IN2=J1QN1(IRHO,K)-1
      GO TO 143
  142 IN2=NTAB(IJK2+K)-1
  143 IF(IN1-IN2-IN3) 144,144,152
  144 IF(IN1-IABS(IN2-IN3)) 152,145,145
  145 IN3=1
  132 CONTINUE
      DO 153 JJ4=1,KK4
      IN3=2*LSIGP
      IJK4=3*(JJ4-1)+JTAB(K4)
      DO 133 K=2,3
      IN1=NTAB(IJK4+K)-1
      IN2=J1QN2(ISIGP,K)-1
      IF(IN1-IN2-IN3) 146,146,153
  146 IF(IN1-IABS(IN2-IN3)) 153,147,147
  147 IN3=1
  133 CONTINUE
      DO 154 JJ3=1,KK3
      IN3=2*LRHOP
      IJK3=3*(JJ3-1)+JTAB(K3)
  137 DO 134 K=2,3
      IN1=NTAB(IJK3+K)-1
      IF(M2) 138,139,138
  138 IN2=J1QN2(IRHOP,K)-1
      GO TO 148
  139 IN2=NTAB(IJK4+K)-1
  148 IF(IN1-IN2-IN3) 149,149,154
  149 IF(IN1-IABS(IN2-IN3)) 154,150,150
  150 IN3=1
  134 CONTINUE
C
C     SUMMATIONS NOW PERFORMED OVER ALLOWED QUANTUM NUMBERS
C     THE TILDES CORRESPOND TO  IRHO=ISIG  AND/OR IRHOP=ISIGP
C
C --- SET THE REMAINING QUANTUM NUMBERS WITH BARS OR TILDES
C
      DO 35 K=1,3
      J1BAR1(IRHO,K)=NTAB(IJK1+K)
      J1BAR2(IRHOP,K)=NTAB(IJK3+K)
      IF(M1) 36,37,36
   36 J1BAR1(ISIG,K)=NTAB(IJK2+K)
      GO TO 38
   37 J1TLD1(K)=NTAB(IJK2+K)
   38 IF( M2) 39,40,39
   39 J1BAR2(ISIGP,K)=NTAB(IJK4+K)
      GO TO 35
   40 J1TLD2(K)=NTAB(IJK4+K)
   35 CONTINUE
C
C --- IS POTENTIAL DIAG. IN BARRED QU. NOS. FOR INTERACTING SHELLS
C
      I5=0
      I=ISIG
      GO TO 50
   42 I=IRHO
      IF( M1) 43,44,43
   43 GO TO 50
   44 I5=I5+1
   45 I=ISIGP
      GO TO 50
   46 I=IRHOP
      IF(M2) 47,48,47
   47 GO TO 50
   50 I5=I5+1
      DO 51 K=1,3
      IF(J1BAR1(I,K)-J1BAR2(I,K)) 154,51,154
   51 CONTINUE
      GO TO (42,45,46,48),I5
   48 PICFP=one
C
C --- EVALUATE FRACTIONAL PARENTAGE COEFFICIENTS
C
      I=1
      CALL MUMDAD (I,ISIG,IRHO,M1,CFPLHS)
      PICFP=PICFP*CFPLHS
      if(abs(picfp).lt.eps) go to 154
   53 I=2
      CALL MUMDAD(I,ISIGP,IRHOP,M2,CFPRHS)
      PICFP=PICFP*CFPRHS
      IF(ABS(PICFP).LT.eps) GO TO 154
C
C === SET UP J1,J2,J3 AND EVALUATE RECOUPLING COEFFICIENTS
C
C --- FIRST OF ALL, THE SPIN COEFFICIENTS
C
   55 I=3
      CALL SETJ1(I,IRHO,ISIG,IRHOP,ISIGP)
  269 CALL J23SPN(IRHO,ISIG,IRHOP,ISIGP,JSNDIR)
C
C --- DIRECT SPIN INTEGRAL
C
  570 IF(KD1-KD2) 89,89,90
   90 SPINDT=zero
      GO TO 78
   89 CALL NJSYM(J6C,J7C,J8C,JWC,K6,K7,K8,KW,SPINDT)
   78 IF(IBUG1-1) 91,91,170
  170 WRITE(IWRITE,305) SPINDT
C
C     IEXCHG IS ZERO WHENEVER  M1=0=M2 , IN WHICH CASE THE EXCHANGE
C     INTEGRAL HAS ZERO COEFFICIENT.  THERE IS THEN NO POINT IN
C     CALCULATING THIS INTEGRAL, AND SPINEX IS SET ZERO (AT STATEMENT
C     93) AS A MARKER OF THIS SITUATION
C
   91 IF(IEXCHG.EQ.0) GO TO 93
C
C --- MODIFY J2 AND J3 TO CALCULATE THE EXCHANGE SPIN INTEGRAL
C
      I=1
      CALL MODJ23(I)
C
C --- EXCHANGE SPIN INTEGRAL
C
      IF(KE1-KE2) 92,92,93
   93 SPINEX=zero
      GO TO 94
   92 CALL NJSYM(J6C,J7C,J8C,JWC,K6,K7,K8,KW,SPINEX)
   94 IF(IBUG1-1) 171,171,172
  172 WRITE(IWRITE,306) SPINEX
C
C --- MULTIPLY SPIN INTEGRALS BY PRODUCT OF FRACTIONAL PARENTAGE COEFFS
C
  171 BDIRCT=SPINDT*PICFP
      BEXCHG=SPINEX*PICFP
C
C --- THE ANGULAR RECOUPLING COEFFICIENTS
C     SET J1,J2,J3   (COMPARE SPIN INTEGRALS)
C
C     IF BOTH SPIN INTEGRALS ARE ZERO,  THERE IS NO PURPOSE IN
C     CALCULATING THE ANGULAR INTEGRALS
C
      if(abs(spindt).lt.eps.and.abs(spinex).lt.eps) go to 154
C
   87 I=2
      CALL SETJ1(I,IRHO,ISIG,IRHOP,ISIGP)
      CALL J23ANG(IRHO,ISIG,IRHOP,ISIGP,JANGDI)
C
C     IF THE DIRECT SPIN RECOUPLING COEFFICIENT IS ZERO, WE NEED NOT
C     CALCULATE THE CORRESPONDING ORBITAL RECOUPLING COEFFICIENT
C
      if(abs(spindt).lt.eps) go to 121
c
C --- DIRECT ANGULAR INTEGRAL
C
C     CONSIDER ALL ALLOWED K-VALUES
C
      DO 114 JK1=KD1,KD2,2
      CALL J23ANG(IRHO,ISIG,IRHOP,ISIGP,JANGDI)
      J1(NJ1S)=2*JK1-1
      CALL NJSYM(J6C,J7C,J8C,JWC,K6,K7,K8,KW,ANGDIR)
C
C     ADD INTO THE COEFFICIENT OF THE SLATER INTEGRAL
C
      AMULT(JK1)=AMULT(JK1)+ANGDIR*BDIRCT
C
C     MULTD=1 WHEN A DIRECT INTEGRAL COEFFICIENT HAS BEEN CALCULATED -
C     FOR USE, SEE PRNTWT
C
      MULTD=1
      IF(IBUG1-1) 114,114,123
  123 WRITE(IWRITE,310) ANGDIR
  114 CONTINUE
C
C     IF THE EXCHANGE SPIN RECOUPLING COEFFICIENT IS ZERO, WE NEED NOT
C     CALCULATE THE CORRESPONDING ORBITAL RECOUPLING COEFFICIENT
C
  121 if(abs(spinex).lt.eps) go to 154
C
C --- EXCHANGE ANGULAR INTEGRAL
C
C     CONSIDER ALL ALLOWED K-VALUES
C
  122 DO 115 JK1=KE1,KE2,2
C
C  --- MODIFY J2 AND J3 ARRAYS TO CALCULATE EXCHANGE TERMS
C
      I=2
      CALL MODJ23(I)
      J1(NJ1S) = 2*JK1-1
      I=4
      CALL NJSYM(J6C,J7C,J8C,JWC,K6,K7,K8,KW,ANGEX)
      BMULT(JK1)=BMULT(JK1)-ANGEX*BEXCHG
C
C     MULTE=1 WHEN AN EXCHANGE INTEGRAL COEFFICIENT HAS BEEN CALCULATED
C
      MULTE=1
      IF(IBUG1-1) 115,115,117
  117 WRITE(IWRITE,312) ANGEX
  115 CONTINUE
  154 CONTINUE
  153 CONTINUE
  152 CONTINUE
  151 CONTINUE
C
C === INCLUDE MULTIPLICATIVE FACTORS COMMON TO ALL TERMS WITHIN THIS
C     FOUR-FOLD SUMMATION
C
      IF(MULTD) 524,525,524
  524 DO 518 JK1=KD1,KD2,2
      AMULT(JK1)=AMULT(JK1)*XMULT*RMEDIR(JK1)*ADIRCT
  518 CONTINUE
  525 IF(MULTE) 526,527,526
  526 DO 519 JK1=KE1,KE2,2
      BMULT(JK1)=BMULT(JK1)*XMULT*RMEEX(JK1)*AEXCHG
  519 CONTINUE
C
C --- PRINT OUT THE VALUES OF THE COEFFICIENTS OF THE SLATER INTEGRALS
C
C     THE SUBROUTINE PRNTWT IS CALLED FROM RKWTS
C
  527 RETURN
C
C *** DEFINITION OF DIMENSION LIST
C
C     RMEDIR(K),K=KD1,KD2,2  -  DIRECT REDUCED MATRIX ELEMENT PRODUCT
C     RMEEX(K),K=KE1,KE2,2  -  EXCHANGE REDUCED MATRIX ELEMENT PRODUCT
C     KD1,KE1   ARE ALWAYS .GE. 1
C     KD2,KE2   ARE .LE.  1+2*MAX(L-VALUE)
C     NBAR(I), I=1,IHSH  -  NUMBER OF SPECTATOR ELECTRONS IN EACH SHELL
C      THE K6,K7,K8,KW ARRAYS ARE DEFINED IN NJSYM
C
C
      END
c
c-----------------------------------------------------------------------
c                               r m e
c-----------------------------------------------------------------------
c
      FUNCTION RME(L,LP,K)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/FACT/ GAMMA(20)
      common/const/zero,tenth,half,one,two,three,four,seven,eleven,eps
C
C --- EVALUATES THE REDUCED MATRIX ELEMENT (L//C(K)//LP)  -  SEE FANO
C     AND RACAH, IRREDUCIBLE TENSORIAL SETS, CHAP. 14, P. 81
C
  200 FORMAT(//4H L =,I3,5H LP =,I3,4H K =,i3,43H RME SET ZERO SINCE TRI
     1angle does not match)
     if(k.gt.(l+lp).or.k.lt.iabs(l-lp) go to 100
      I2G=L+LP+K
      IG=I2G/2
      IF(I2G-2*IG) 1,2,1
    1 RME=zero
      RETURN
  100 IF(IBUG1-1) 1,1,3
    3 WRITE(IWRITE,200) L,LP,K
      GO TO 1
    2 IF(IG) 100,13,12
   13 RME=one
      RETURN
   12 I1=IG-L
      I2=IG-LP
      I3=IG-K
      AL1=GAMMA(I1+1)
      AL2=GAMMA(2*I1+1)
      ALP1=GAMMA(I2+1)
      ALP2=GAMMA(2*I2+1)
      AK1=GAMMA(I3+1)
      AK2=GAMMA(2*I3+1)
      QUSQRT=(2*L+1)*(2*LP+1)*AL2*ALP2*AK2/GAMMA(I2G+2)
      RME=SQRT(QUSQRT)*GAMMA(IG+1)/(AL1*ALP1*AK1)
      RETURN
      END
c
c----------------------------------------------------------------------
c                               n t a b 1
c----------------------------------------------------------------------
c
      FUNCTION NTAB1(NELCTS,K)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
C
C     THIS SUBROUTINE CALCULATES THE ROW OF NTAB CORRESPONDING TO THE
C     PARENTS WHICH MAY GIVE RISE TO THE TERM ASSOCIATED WITH SHELL
C     LAMBDA .  E.G. IF WE SEEK THE ROW OF NTAB CONTAINING THE PARENTS
C     OF ONE OF THE P**3 TERMS, THE ROW = VALUE OF NTAB1 IS THAT
C     CONTAINING THE P**2 TERMS
C
C     USE IS MADE OF THE FACT THAT THE LIST OF POSSIBLE PARENTS (SEE
C     WHITE - ATOMIC SPECTRA - APPENDIX)  IS SYMMETRICAL ABOUT THE
C     CONFIGURATION L**(2L+1)
C
C
C --- FOR ONE ELECTRON IN A TERM, THE PARENT IS ALWAYS A SINGLET S TERM
C
      IF(NELCTS-1) 1,2,1
    2 NTAB1=2
      RETURN
C
C     OTHERWISE THE VALUE OF NTAB1  DEPENDS ON THE L VALUE OF THE
C     ELECTRONS
C
    1 GO TO (3,4,5,6,14),K
C
C --- FOR S ELECTRONS, THE ONLY OTHER POSSIBILITY IS THAT NELCTS=2
C
    3 NTAB1=1
      RETURN
C
C --- P ELECTRONS - ARE WE BEYOND P**4
C
    4 IF(NELCTS-4) 7,7,8
    8 NELCTS=8-NELCTS
    7 NTAB1=1+NELCTS
      RETURN
C
C --- D ELECTRONS - ARE WE BEYOND D**6
C
    5 IF(NELCTS-6) 9,9,10
   10 NELCTS=12-NELCTS
    9 NTAB1=4+NELCTS
      RETURN
C
C --- F ELECTRONS - ARE THERE MORE THAN TWO.  IF SO, THE PROGRAMME NEEDS
C     AN F-SHELL COEFFICIENT-OF-FRACTIONAL-PARENTAGE ROUTINE, AND THE
C     ARRAYS IN /TERMS/ NEED EXTENDING
C
    6 IF(NELCTS-2) 2,11,12
   11 NTAB1 = 11
      RETURN
C
C --- G ELECTRONS - ARE THERE MORE THAN TWO.  IF SO, THE PROGRAMME
C     NEEDS A G-SHELL COEFFICIENT-OF-FRACTIONAL-PARENTAGE ROUTINE, AND
C     THE ARRAYS IN /TERMS/ NEED EXTENDING
C
   14 IF(NELCTS-2) 2,15,16
   15 NTAB1=12
      RETURN
   12 WRITE(IWRITE,13)
   13 FORMAT(////67H STOP AND EXTEND THE NTAB AND ITAB ARRAYS TO ALLOW M
     1ORE F-ELECTRONS/78H YOU WILL ALSO REQUIRE A COMPLETE FRACTIONAL PA
     2RENTAGE ROUTINE FOR F-ELECTRONS//)
      GO TO 17
   16 WRITE(IWRITE,18)
   18 FORMAT(////67H STOP AND EXTEND THE NTAB AND ITAB ARRAYS TO ALLOW M
     1ORE G-ELECTRONS/78H YOU WILL ALSO REQUIRE A COMPLETE FRACTIONAL PA
     2RENTAGE ROUTINE FOR G-ELECTRONS//)
   17 CALL EXIT
      END
c
c------------------------------------------------------------------------
c                           m u m d a d
c------------------------------------------------------------------------
c
      SUBROUTINE MUMDAD(II,IJ,IK,M,X)
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH(10,2),J1QN(19,3,2)
      COMMON/INTERM/J1B(10,3,2),J1T(3,2)
      common/const/zero.tenth,half,one,two,three,four,seven.eleven,eps
C
C     NOTICE THE NAMES IN THE COMMON BLOCKS. SEE SETUP FOR DESCRIPTION
C
C --- CALLS AND EVALUATES FRACTIONAL PARENTAGE COEFFICIENTS
C
      X=one
      LIJ=LJ(IJ)
      IF(LIJ) 12,12,11
   12 IF(M)4,5,4
   11 N=NOSH(IJ,II)
      IVI=J1QN(IJ,1,II)
      ILI=(J1QN(IJ,2,II)-1)/2
      ISI=J1QN(IJ,3,II)
C
C     IF M=0 THERE ARE QUANTUM NUMBERS WITH TILDES TO CONSIDER
C
      IF(M) 1,2,1
    1 IVJ=J1B(IJ,1,II)
      ILJ=(J1B(IJ,2,II)-1)/2
      ISJ= J1B(IJ,3,II)
      GO TO 3
    2 IVJ=J1T(1,II)
      ILJ=(J1T(2,II)-1)/2
      ISJ=J1T(3,II)
    3 CALL CFP(LIJ,N,IVI,ILI,ISI,IVJ,ILJ,ISJ,COEFP)
      X=X*COEFP
      IF(ABS(X).LT.eps) GO TO 5
    4 LIJ=LJ(IK)
      IF(LIJ) 5,5,14
   14 IF(M) 6,7,6
    6 N=NOSH(IK,II)
      IVI=J1QN(IK,1,II)
      ILI=(J1QN(IK,2,II)-1)/2
      ISI=J1QN(IK,3,II)
      IVJ = J1B(IK,1,II)
      ILJ =(J1B(IK,2,II)-1)/2
      ISJ = J1B(IK,3,II)
      GO TO 8
    7 N=NOSH(IJ,II)-1
      IVI=IVJ
      ILI=ILJ
      ISI=ISJ
      IVJ=J1B(IJ,1,II)
      ILJ=(J1B(IJ,2,II)-1)/2
      ISJ = J1B(IJ,3,II)
    8 CALL CFP(LIJ,N,IVI,ILI,ISI,IVJ,ILJ,ISJ,COEFP)
      X=X*COEFP
    5 CONTINUE
      RETURN
      END
c
c----------------------------------------------------------------------
c                              c f p
c----------------------------------------------------------------------
c
      SUBROUTINE CFP(LIJ,N,IVI,ILI,ISI,IVJ,ILJ,ISJ,COEFP)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
C
C === CHOOSES APPROPRIATE FRACTIONAL PARENTAGE SUBROUTINE
C
    9 FORMAT(69H UNNECESSARY ATTEMPT TO FORM CFP OF AN S-ELECTRON - THER
     1E IS AN ERROR)
   10 FORMAT(8H COEFP =,F15.9)
      K=LIJ+1
C
C     IF F-SHELL OR G-SHELL COEFFICIENT-OF-FRACTIONAL-PARENTAGE ROUTINES
C     ARE INCLUDED, THIS COMPUTED GO TO NEEDS MODIFYING TO ACCOUNT FOR
C     THIS
C
      GO TO (1,2,3,4,4),K
C
C --- FALSE CALL FOR S-SHELLS
C
    1 WRITE(IWRITE,9)
      CALL EXIT
C
C --- P-SHELLS
C
    2 CALL CFPP(N,ILI,ISI,ILJ,ISJ,COEFP)
      GO TO 5
C
C --- D-SHELLS
C
    3 CALL CFPD(N,IVI,ILI,ISI,IVJ,ILJ,ISJ,COEFP)
      GO TO 5
C
C --- F-SHELLS, G-SHELLS ETC. WITH UP TO TWO ELECTRONS
C
    4 CALL CFPF(N,IVI,ILI,ISI,IVJ,ILJ,ISJ,COEFP)
    5 IF(IBUG1-1) 6,6,7
    7 WRITE(IWRITE,10) COEFP
    6 RETURN
      END
c
c------------------------------------------------------------------------
c                             c f p f
c------------------------------------------------------------------------
c
      SUBROUTINE CFPF(N,IVI,ILI,ISI,IVJ,ILJ,ISJ,COEFP)
C
C     THIS IS A DUMMY SUBROUTINE TO CALCULATE CFP OF F-ELECTRONS.  IT IS
C     VALID ONLY FOR ONE OR TWO ELECTRONS IN THE F-SHELL UNDER
C     CONSIDERATION.
C
      COEFP=one
      RETURN
      END
c
c-------------------------------------------------------------------------
c                             s e t j 1
c-------------------------------------------------------------------------
c
      SUBROUTINE SETJ1(K,IRHO,ISIG,IRHOP,ISIGP)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1     j1qn2(19,3),ijful(10)
      COMMON/MVALUE/M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,
     1     M16,M17,M18,M19,M20
      COMMON/NJLJ/NRHO,LRHO,NSIG,LSIG,NRHOP,LRHOP,NSIGP,LSIGP
      COMMON/INTERM/J1BAR1(10,3),J1BAR2(10,3),J1TLD1(3),J1TLD2(3)
      COMMON/COUPLE/NJ1S,NJ23S,J1(40),J2(12,3),J3(12,3)
      common/const/zero,tenth,half,one,two,three,four,seven,eleven,eps
C
C === SETS J1 ARRAYS FOR DIRECT INTEGRAL CALLS OF NJSYM
C
   15 FORMAT(3H J1,I6,36I3)
      DO 1 J=1,IHSH
      J1(J)=J1BAR1(J,K)
    1 CONTINUE
      DO 2 J=M4,M6
      J1(J)=J1QN1(J,K)
    2 CONTINUE
      DO 3 J=M7,M8
      J1(J)=J1QN2(J-M3,K)
    3 CONTINUE
      J1(M10)=J1QN1(ISIG,K)
      J1(M12)=J1QN2(ISIGP,K)
      IF(M1) 4,5,4
    4 J1(M9)=J1QN1(IRHO,K)
      GO TO 6
    5 J1(M9)=J1TLD1(K)
    6 IF(M2) 7,8,7
    7 J1(M11)=J1QN2(IRHOP,K)
      GO TO 9
    8 J1(M11)=J1TLD2(K)
C
C     K=2  IMPLIES ANGULAR TERMS   ,   K=3  IMPLIES SPIN TERMS
C
    9 IF(K-2) 11,11,10
   10 J1(M13)=2
      J1(M14)=2
      MLIMIT=M14
      NJ1S=M14
      NJ23S=M5
      GO TO 12
   11 J1(M13)=2*LRHO+1
      J1(M14)=2*LSIG+1
      J1(M15)=2*LRHOP+1
      J1(M16)=2*LSIGP+1
      MLIMIT=M16
      NJ1S=M17
      NJ23S=M18
   12 IF(IBUG1-1) 13,13,16
C
C     PRINT-OUT OF VALUES IN NJSYM  IF IBUG3=1
C
   16 IF(IBUG3.NE.1) WRITE(IWRITE,15)(J1(J),J=1,MLIMIT)
   13 RETURN
      END
c
c-----------------------------------------------------------------------
c                            j 2 3 s p n
c-----------------------------------------------------------------------
c
      SUBROUTINE J23SPN(IRHO,ISIG,IRHOP,ISIGP,JSNDIR)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/MVALUE/M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,
     1     M16,M17,M18,M19,M20
      COMMON/COUPLE/NJ1S,NJ23S,J1(40),J2(12,3),J3(12,3)
      COMMON/HOLD/J2SPIN(33),J3SPIN(33),J2ANG(36),J3ANG(36)
C
C === SET UP THE J2 AND J3 ARRAYS FOR THE DIRECT SPIN INTEGRAL CALL
C     OF NJSYM
C
  303 FORMAT(3H J2,18X,2HJ3)
  304 FORMAT(3I5,I10,2I5)
C
C     HAVE THE J2 AND J3 ARRAYS ALREADY BEEN  SET.  IF NOT, THEN GO TO 2
C
      IF(JSNDIR) 2,2,1
C
C --- SET THIRD ROW OF J2 AND J3
C
    2 IF(IRHO-1) 271,272,271
  271 J2(3,1)=1
      GO TO 273
  272 IF(M1) 274,275,274
  275 J2(3,1)=M10
      GO TO 276
  274 J2(3,1)=M9
      GO TO 276
  273 IF(IRHO-2) 277,278,277
  277 J2(3,2)=2
      GO TO 284
  278 IF(M1) 280,281,280
  280 J2(3,2)=M9
      GO TO 284
  281 J2(3,2)=M10
      GO TO 284
  276 IF(ISIG-2) 277,281,277
  284 J2(3,3)=M4
      IF(IRHOP-1) 285,286,285
  285 J3(3,1)=1
      GO TO 287
  286 IF(M2) 288,289,288
  288 J3(3,1)=M11
      GO TO 290
  289 J3(3,1)=M12
      GO TO 290
  287 IF(IRHOP-2) 291,292,291
  291 J3(3,2)=2
      GO TO 293
  292 IF(M2) 294,295,294
  295 J3(3,2)=M12
      GO TO 293
  294 J3(3,2)=M11
      GO TO 293
  290 IF(ISIGP-2) 291,295,291
  293 J3(3,3)=M7
C
C --- SET ROWS 4,5,.. ETC.
C
      IF(M4-4) 203,202,202
  202 DO 470 J=4,M4
      J2(J,1)=M4 +J-4
      J2(J,3)=M4+J-3
      IF(ISIG+1-J) 471,472,471
  471 IF(M1) 473,474,473
  473 IF(IRHO+1-J) 474,475,474
  474 J2(J,2)=J-1
      GO TO 476
  472 J2(J,2)=M10
      GO TO 476
  475 J2(J,2)=M9
  476 J3(J,1)=M7+J-4
      IF(J-M4 ) 482,483,482
  483 J3(J,3)=J2(J,3)
      GO TO 484
  482 J3(J,3)=M7+J-3
  484 IF(ISIGP+1-J) 477,478,477
  477 IF(M2) 479,480,479
  479 IF(IRHOP+1-J) 480,481,480
  480 J3(J,2)=J-1
      GO TO 470
  478 J3(J,2)=M12
      GO TO 470
  481 J3(J,2)=M11
  470 CONTINUE
C
C --- SET FIRST TWO ROWS, CORRESPONDING TO COUPLING OF INTERACTING
C     ELECTRONS WITHIN THEIR SHELLS
C
  203 J2(2,3)=M10
      J2(1,2) = M13
      J2(2,2) = M14
      J2(1,3) = M9
      IF(M1) 82,83,82
   82 J2(1,1) = IRHO
      J2(2,1) = ISIG
      GO TO 84
   83 J2(1,1) = ISIG
      J2(2,1) = M9
   84 J3(2,3) = M12
      J3(1,2) = M13
      J3(2,2) = M14
      J3(1,3) = M11
      IF(M2) 85,86,85
   85 J3(1,1) = IRHOP
      J3(2,1) = ISIGP
      GO TO 187
   86 J3(1,1) = ISIGP
      J3(2,1) = M11
C
C --- STORE J2,J3 ARRAYS FOR USE IN CALCULATING EXCHANGE INTEGRAL
C
  187 I1=0
      DO 451 J=1,M4
      DO 452 K=1,3
      I1=I1+1
      J2SPIN(I1)=J2(J,K)
      J3SPIN(I1)=J3(J,K)
  452 CONTINUE
  451 CONTINUE
      JSNDIR=1
    3 IF(IBUG1-1) 570,570,6
C
C     PRINT-OUT OF VALUES IN NJSYM  IF IBUG3=1
C
    6 IF(IBUG3-1) 200,570,200
  200 WRITE(IWRITE,303)
      DO 201 J=1,M4
      WRITE(IWRITE,304) (J2(J,K),K=1,3),(J3(J,K),K=1,3)
  201 CONTINUE
  570 RETURN
C
C --- SET J2 AND J3 ARRAYS FROM STORE OF PREVIOUS CALCULATIONS
C
    1 I1=0
      DO 4 J=1,M4
      DO 5 K=1,3
      I1=I1+1
      J2(J,K)=J2SPIN(I1)
      J3(J,K)=J3SPIN(I1)
    5 CONTINUE
    4 CONTINUE
      GO TO 3
      END
c
c------------------------------------------------------------------
c                          m o d j 2 3
c------------------------------------------------------------------
c
      SUBROUTINE MODJ23(K)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/MVALUE/M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,
     1     M16,M17,M18,M19,M20
      COMMON/COUPLE/NJ1S,NJ23S,J1(40),J2(12,3),J3(12,3)
      COMMON/HOLD/J2SPIN(33),J3SPIN(33),J2ANG(36),J3ANG(36)
C
C === MODIFIES THE DIRECT J2 AND J3 ARRAYS FOR EXCHANGE CALL OF NJSYM
C
    7 FORMAT(3H J2,18X,2HJ3)
    8 FORMAT(3I5,I10,2I5)
      GO TO (1,2),K
C
C --- K=1  -  SPIN INTEGRALS
C
    1 MK=M4
      I1=0
      DO 11 J=1,MK
      DO 12 K=1,3
      I1=I1+1
      J2(J,K)=J2SPIN(I1)
      J3(J,K)=J3SPIN(I1)
   12 CONTINUE
   11 CONTINUE
      J3(1,2)=M14
      J3(2,2)=M13
      GO TO 3
C
C --- K=2  -  ANGULAR INTEGRALS
C
    2 MK=M5
      I1=0
      DO 21 J=1,MK
      DO 22 K=1,3
      I1=I1+1
      J2(J,K)=J2ANG(I1)
      J3(J,K)=J3ANG(I1)
   22 CONTINUE
   21 CONTINUE
      J2(1,1)=M15
      J3(1,3)=M16
    3 IF(IBUG1-1) 4,4,9
C
C     PRINT-OUT OF VALUES IN NJSYM  IF IBUG3=1
C
    9 IF(IBUG3-1 ) 5,4,5
    5 WRITE(IWRITE,7)
      DO 6 J=1,MK
      WRITE(IWRITE,8) (J2(J,K),K=1,3),(J3(J,K),K=1,3)
    6 CONTINUE
    4 RETURN
      END
c
c-------------------------------------------------------------------
c                           j 2 3 a n g
c-------------------------------------------------------------------
c
      SUBROUTINE J23ANG(IRHO,ISIG,IRHOP,ISIGP,JANGDI)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/MVALUE/M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,
     1     M16,M17,M18,M19,M20
      COMMON/COUPLE/NJ1S,NJ23S,J1(40),J2(12,3),J3(12,3)
      COMMON/HOLD/J2SPIN(33),J3SPIN(33),J2ANG(36),J3ANG(36)
C
C === SETS UP J2 AND J3 ARRAYS FOR DIRECT ANGULAR INTEGRAL CALL OF NJSYM
C
  303 FORMAT(3H J2,18X,2HJ3)
  304 FORMAT(3I5,I10,2I5)
C
C     HAVE THE J2 AND J3 ARRAYS ALREADY BEEN  SET.  IF NOT, THEN GO TO 2
C
      IF(JANGDI) 2,2,1
C
C --- ROWS 3 TO M4 OF SPIN J2 AND J3 ARE SAME AS ROWS 4 TO (M4+1) OF
C     ANGULAR J2 AND J3
C
    2 I1=6
      DO 103 J=3,M4
      JP1=J+1
      DO 104 K=1,3
      I1=I1+1
      J2(JP1,K)=J2SPIN(I1)
      J3(JP1,K)=J3SPIN(I1)
  104 CONTINUE
  103 CONTINUE
C
C --- SET ROWS 1, 2 AND 3
C
      IF(M1) 105,106,105
  105 J2(3,1)=ISIG
      GO TO 107
  106 J2(3,1)=M9
  107 IF(M2) 109,110,109
  109 J3(3,1)=ISIGP
      GO TO 111
  110 J3(3,1)=M11
  111 J2(2,3)=M9
      J2(2,1)=IRHO
      J2(2,2)=M13
      J2(1,3)=M14
      J2(3,2)=M14
      J2(3,3)=M10
      J2(1,1)=M16
      J2(1,2)=M17
      J3(3,2)=M16
      J3(3,3)=M12
      J3(1,2)=M13
      J3(1,1)=M17
      J3(1,3)=M15
      J3(2,3)= M11
      J3(2,1)=IRHOP
      J3(2,2)=M15
C
C --- STORE J2 AND J3 FOR USE IN CALCULATING THE EXCHANGE TERM
C
      I1=0
      DO 535 J=1,M5
      DO 536 K=1,3
      I1=I1+1
      J2ANG(I1)=J2(J,K)
      J3ANG(I1)=J3(J,K)
  536 CONTINUE
  535 CONTINUE
      JANGDI=1
    3 IF(IBUG1-1) 209,209,206
C
C     PRINT-OUT OF VALUES IN NJSYM  IF IBUG3=1
C
  206 IF(IBUG3-1) 207,209,207
  207 WRITE(IWRITE,303)
      DO 208 J=1,M5
      WRITE(IWRITE,304) (J2(J,K),K=1,3),(J3(J,K),K=1,3)
  208 CONTINUE
  209 RETURN
C
C --- SET J2 AND J3 ARRAYS FROM STORE OF PREVIOUS CALCULATIONS
C
    1 I1=0
      DO 4 J=1,M5
      DO 5 K=1,3
      I1=I1+1
      J2(J,K)=J2ANG(I1)
      J3(J,K)=J3ANG(I1)
    5 CONTINUE
    4 CONTINUE
      GO TO 3
      END
      subroutine bldata
      COMMON/TERMS/NROWS,I(12),J(12),N(171)
      common/const/zero,tenth,half,one two.three,four,seven,eleven,eps
C
C --- READS IN QUANTUM NUMBERS OF TERMS WHICH CAN BE FORMED FROM
C     CONFIGURATIONS  L**Q . ONLY THE FIRST HALF OF THAT PART OF THE
C     TABLE, CORRESPONDING TO A GIVEN  L, IS INCLUDED, BECAUSE OF THE
C     SYMMETRY OF THE TABLE.  E.G. D**7 FORMS THE SAME TERMS AS D**3
C
C     THE ARRAYS I,J,N CORRESPOND TO THE ARRAYS ITAB,JTAB,NTAB
C
      DATA NROWS/12/
      DATA I( 1),I( 2),I( 3),I( 4),I( 5),I( 6)/ 1, 1, 1, 3, 3, 1/
      DATA I( 7),I( 8),I( 9),I(10),I(11),I(12)/ 5, 8,16,16, 1, 1/
      DATA J( 1),J( 2),J( 3),J( 4),J( 5),J( 6)/  0,  3,  6,  9, 18, 27/
      DATA J( 7),J( 8),J( 9),J(10),J(11),J(12)/ 30, 45, 69,117,165,168/
      DATA N(  1),N(  2),N(  3),N(  4),N(  5),N(  6)/ 1, 1, 2, 0, 1, 1/
      DATA N(  7),N(  8),N(  9),N( 10),N( 11),N( 12)/ 1, 3, 2, 0, 1, 1/
      DATA N( 13),N( 14),N( 15),N( 16),N( 17),N( 18)/ 2, 5, 1, 2, 3, 3/
      DATA N( 19),N( 20),N( 21),N( 22),N( 23),N( 24)/ 1, 3, 2, 3, 5, 2/
      DATA N( 25),N( 26),N( 27),N( 28),N( 29),N( 30)/ 3, 1, 4, 1, 5, 2/
      DATA N( 31),N( 32),N( 33),N( 34),N( 35),N( 36)/ 0, 1, 1, 2, 5, 1/
      DATA N( 37),N( 38),N( 39),N( 40),N( 41),N( 42)/ 2, 9, 1, 2, 3, 3/
      DATA N( 43),N( 44),N( 45),N( 46),N( 47),N( 48)/ 2, 7, 3, 1, 5, 2/
      DATA N( 49),N( 50),N( 51),N( 52),N( 53),N( 54)/ 3, 3, 2, 3, 5, 2/
      DATA N( 55),N( 56),N( 57),N( 58),N( 59),N( 60)/ 3, 7, 2, 3, 9, 2/
      DATA N( 61),N( 62),N( 63),N( 64),N( 65),N( 66)/ 3,11, 2, 3, 3, 4/
      DATA N( 67),N( 68),N( 69),N( 70),N( 71),N( 72)/ 3, 7, 4, 0, 1, 1/
      DATA N( 73),N( 74),N( 75),N( 76),N( 77),N( 78)/ 2, 5, 1, 2, 9, 1/
      DATA N( 79),N( 80),N( 81),N( 82),N( 83),N( 84)/ 2, 3, 3, 2, 7, 3/
      DATA N( 85),N( 86),N( 87),N( 88),N( 89),N( 90)/ 4, 1, 1, 4, 5, 1/
      DATA N( 91),N( 92),N( 93),N( 94),N( 95),N( 96)/ 4, 7, 1, 4, 9, 1/
      DATA N( 97),N( 98),N( 99),N(100),N(101),N(102)/ 4,13, 1, 4, 3, 3/
      DATA N(103),N(104),N(105),N(106),N(107),N(108)/ 4, 5, 3, 4, 7, 3/
      DATA N(109),N(110),N(111),N(112),N(113),N(114)/ 4, 9, 3, 4,11, 3/
      DATA N(115),N(116),N(117),N(118),N(119),N(120)/ 4, 5, 5, 1, 5, 2/
      DATA N(121),N(122),N(123),N(124),N(125),N(126)/ 3, 3, 2, 3, 5, 2/
      DATA N(127),N(128),N(129),N(130),N(131),N(132)/ 3, 7, 2, 3, 9, 2/
      DATA N(133),N(134),N(135),N(136),N(137),N(138)/ 3,11, 2, 3, 3, 4/
      DATA N(139),N(140),N(141),N(142),N(143),N(144)/ 3, 7, 4, 5, 1, 2/
      DATA N(145),N(146),N(147),N(148),N(149),N(150)/ 5, 5, 2, 5, 7, 2/
      DATA N(151),N(152),N(153),N(154),N(155),N(156)/ 5, 9, 2, 5,13, 2/
      DATA N(157),N(158),N(159),N(160),N(161),N(162)/ 5, 5, 4, 5, 9, 4/
      DATA N(163),N(164),N(165),N(166),N(167),N(168)/ 5, 1, 6, 1, 7, 2/
      DATA N(169),N(170),N(171)                     / 1, 9, 2/
c
c   set global real constants
c
      data zero,tenth,half,one,two,three,four,seven,eleven,eps/
     1      0.0e 00,0.1e 00,0.5e 00,1.0e 00,2.0e 00,3.0e 00,4.0e 00,
     2      7.0e 00,1.1e 01,1.0e-08/
c
      END
c
c----------------------------------------------------------------------
c                            p r n t w t
c----------------------------------------------------------------------
c
      SUBROUTINE PRNTWT(IRHO,ISIG,IRHOP,ISIGP)
C
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      common/enav/coefct(5),nints,kvalue(5)
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN(19,3,2),
     1,ijful(10)
      common/diagnl/idiag,ja,jb
      COMMON/DIAGNL/IDIAG
      COMMON/MVALUE/M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,
     1     M16,M17,M18,M19,M20
      common/states/ncfg,noccsh(30),nocorb(5,30),nelcsh(5,30),
     1      j1qnrd(9,3,30),maxorb,njcomp(21),ljcomp(21),iajcmp(21)
      common/xation/amult(9),bmult(9),fd1,fd2,fe1,fe2,multd,multe
      COMMON/NJLJ/NRHO,LRHO,NSIG,LSIG,NRHOP,LRHOP,NSIGP,LSIGP
C
C --- PRINTS OUT THE COEFFICIENTS OF SLATER INTEGRALS
C
    1 FORMAT(//23H INTERACTING SHELLS ARE,6X,6H RHO =,a3,6X,6H SIG =,a3,
     16X,7H RHOP =,a3,6X,7H SIGP =,a3//)
    2 format(12x,f18.8,2f21.8,11x,1hf,i1,1h(,a3,1h,,a3,1h))
    3 format(12x,f18.8,2f21.8,11x,1hg,i1,1h(,a3,1h,,a3,1h))
    4 format(12x,f18.8,2f21.8,8x,1hr,i1,1h(,a3,1h,,a3,1h/,a3,1h,,a3,1h))
    5 format(//30x,33h coefficients of slater integrals//16x,17h total e
     1nergy(et),4x,19haverage energy(eav),6x,10h(et - eav),9x,16htype of
     2 integral/)
   31 FORMAT(I5,F16.8,8I5)
   32 FORMAT(6I5)
      jrho=ijful(irho)
      jsig=ijful(isig)
      jrhop=ijful(irhop)
      jsigp=ijful(isigp)
C
C --- DETERMINE THE AVERAGE ENERGY CONTRIBUTIONS IF  IDIAG  IS NON-ZERO
C
      if((kd1.gt.kd2).and.(ke1.gt.ke2)) go to 41
      IF(IDIAG.EQ.0) GO TO 50
      LA=LJ(IRHO)
      LB=LJ(ISIG)
      IF(M1.EQ.0) GO TO 51
      IEQUIV=2
      NMULT=NOSH1(IRHO)*NOSH1(ISIG)
      GO TO 52
   51 IEQUIV=1
      NA=NOSH1(IRHO)
      NMULT=NA*(NA-1)/2
C
C     CALCULATE THE INTERACTION ENERGY
C
   52 CALL INTACT(LA,LB,IEQUIV)
      INTS=1
   50 IF(IBUG1-1) 41,6,7
    7 write(iwrite,1) iajcmp(jrho),iajcmp(jsig),iajcmp(jrhop),
     1   iajcmp(jsigp)
C
C     DEFINITION OF IBUG2 - INITIALLY, IBUG2 IS SET EQUAL TO 2 IN RKWTS.
C     THE FIRST TIME THE PRESENT SUBROUTINE IS ENTERED FOR EACH MATRIX
C     ELEMENT, IBUG2 HAS THIS VALUE.  ONCE FORMAT 5 HAS BEEN WRITTEN,
C     IBUG2 ASSUMES THE VALUE OF IBUG1.  IF IBUG1=0, THERE WILL BE NO
C     PRINT-OUT AT ALL.  IF IBUG1=1, FORMAT5 IS OUTPUT ONLY FOR THE
C     FIRST ENTRY OF PRNTWT, AND THUS THE ONLY PRINT-OUT FOR THE MATRIX
C     ELEMENT AFTER THE FIRST FORMAT 5 IS A LIST OF COEFFICIENTS, AND
C     THE APPROPRIATE SLATER INTEGRALS - FK,GK,RK.   IF IBUG1.GT.1,
C     FORMAT 5 IS OUTPUT FOR EACH SET OF IRHO,ISIG,IRHOP,ISIGP
C
    6 IF(IBUG2-1) 8,8,9
    9 if(ibug.eq.2.or.(ibug1.eq.1.and.ibug4.eq.0)) write(iwrite,5)
      IBUG2=IBUG1
C
C --- DIRECT INTEGRALS
C
    8 if(kd1.gt.kd2) go to 20
      do 11 jk1=kd1,kd2,2
      K=JK1-1
      A=AMULT(JK1)
C
C --- DIVIDE THE WEIGHTS INTO AVERAGE ENERGY AND NON-AVERAGE ENERGY
C     PARTS
C
      IF(IDIAG.NE.0) GO TO 53
C
C     NON-DIAGONAL MATRIX ELEMENT
C
      X=zero
      Y=A
      IF(M19.EQ.0.AND.M20.EQ.0) GO TO 15
      IF((M1+M2).EQ.0) GO TO 16
      GO TO 13
C
C     DIAGONAL MATRIX ELEMENT.  F0 TERM IS THE ONLY ONE WITH K=0
C
   53 IF(K.NE.0) GO TO 57
      X=FLOAT(NMULT)
      Y=A-X
      GO TO 15
C
C     OTHER  FK  INTEGRALS,  ONLY OCCUR IF  RHO=SIG
C
   57 IF(IEQUIV.EQ.1.AND.INTS.LE.NINTS) GO TO 58
   59 X=zero
      Y=A
      GO TO 15
   58 IF(K.NE.KVALUE(INTS)) GO TO 59
      X=NMULT*COEFCT(INTS)
      Y=A-X
      INTS=INTS+1
   15 if(abs(a).ge.eps.or.abs(x).ge.eps) write(iwrite,2) a,x,y,k
     1     iajcmp(jrho),iajcmp(jsig)
      go to 11
   16 if(abs(a).ge.eps) write(iwrite,3) a,x,y,k,iajcmp(jrho),
     1    iajcmp(jrhop)
      go to 11
   13 if(abs(a).ge.eps) write(iwrite,4) a,x,y,k,iajcmp(jrho),
     1    iajcmp(jsig),iajcmp(jrhop),iajcmp(jsigp)
   11 continue
C
C --- EXCHANGE INTEGRALS
C
   20 if(ke1.gt.ke2) go to 41
      DO 21 JK1=KE1,KE2,2
      K=JK1-1
      B=BMULT(JK1)
C
C --- DIVIDE THE WEIGHTS INTO AVERAGE ENERGY AND NON-AVERAGE ENERGY
C     PARTS
C
      IF(IDIAG.NE.0) GO TO 60
C
C     NON-DIAGONAL MATRIX ELEMENT
C
      X=zero
      Y=B
      IF(M19.EQ.0.AND.M20.EQ.0) GO TO 25
      GO TO 23
C
C     DIAGONAL MATRIX ELEMENT
C
   60 IF(INTS.LE.NINTS) GO TO 61
   62 X=zero
      Y=B
      GO TO 25
   61 IF(K.NE.KVALUE(INTS)) GO TO 62
      X=NMULT*COEFCT(INTS)
      Y=B-X
      INTS=INTS+1
   25 if(abs(b).ge.eps.or.abs(x).ge.eps) write(iwrite,3) b,x,y,k,
     1     iajcmp(jrho),iajcmp(jsig)
      go to 21
   23 if(abs(b).ge.eps) write(iwrite,4) b,x,y,k,iajcmp(jrho),
     1     iajcmp(jsig),iajcmp(jsigp),iajcmp(jrhop)
   21 continue
   41 IF(IPUNCH) 40,40,42
C
C --- PUNCH-OUT OF INFORMATION FROM PRNTWT
C
   42 WRITE(IPUNCH,32) MULTD,MULTE,KD1,KD2,KE1,KE2
      IF(MULTD) 44,43,44
   44 DO 45 JK1=KD1,KD2,2
      K=JK1-1
      WRITE(IPUNCH,31) K,AMULT(JK1),NRHO,LRHO,NSIG,LSIG,NRHOP,LRHOP,
     1     NSIGP,LSIGP
   45 CONTINUE
   43 IF(MULTE) 46,40,46
   46 DO 47 JK1=KE1,KE2,2
      K=JK1-1
      WRITE(IPUNCH,31) K,BMULT(JK1),NRHO,LRHO,NSIG,LSIG,NSIGP,LSIGP,
     1     NRHOP,LRHOP
   47 CONTINUE
   40 RETURN
      END
c
c-------------------------------------------------------------------
c                           i n t a c t
c-------------------------------------------------------------------
c
c
c         **************************************************************
c         *                                                            *
c         *  this subroutine contains real constants in the text       *
c         *                                                            *
c         **************************************************************
c
c
c
      SUBROUTINE INTACT(L,LP,IEQUIV)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      common/enav/coefct(5),nints,kvalue(5)
C
C     THIS SUBROUTINE GIVES THE INTERACTION ENERGY BETWEEN TWO SHELLS,
C     ONE WITH ORBITAL ANGULAR MOMENTUM  L , THE OTHER WITH ORBITAL
C     ANGULAR MOMENTUM  LP .   NOTICE THAT THE FIRST TERM OF THIS
C     INTERACTION ENERGY IS ALWAYS   F0(L,LP)   AND THIS IS NOT GIVEN
C     IN THIS SUBROUTINE.   THUS ONLY THE EXTRA TERMS ARE HERE PRODUCED.
C     FOR EQUIVALENT ELECTRONS (IEQUIV = 1) ,  THERE WILL BE  FK
C     INTEGRALS ONLY.   FOR NON-EQUIVALENT ELECTRONS (IEQUIV = 2) ,
C     THERE WILL BE  GK  INTEGRALS ONLY.
C
C     THE EXPRESSIONS FOR THE INTERACTION ENERGIES INVOLVING SHELLS WITH
C     L.LE.3  ARE GIVEN BY  J.C. SLATER , QUANTUM THEORY OF ATOMIC
C     STRUCTURE, VOL. I,  EQUATIONS (14.20)  AND  (14.22).   IN THE LAST
C     OF HIS EQUATIONS  (14.22) ,  A TERM   -1/14 G0(F,FP)  IS OMITTED.
C     THIS IS INCLUDED BELOW.   THE INTERACTION ENERGIES FOR G-ELECTRON
C     SHELLS MAY BE EVALUATED USING HIS EQUATIONS  (13.12), (13.17),
C     (14.19),  AND  (14,21)
C
      IF(L.GT.4.OR.LP.GT.4) GO TO 3
      GO TO (1,2),IEQUIV
C
C === EQUIVALENT ELECTRONS
C
    1 IF(L.NE.LP)  GO TO 4
      GO TO 5
    4 WRITE(IWRITE,11)
   11 FORMAT(85H ERROR IN INTACT - EQUIVALENT ELECTRONS CALLED FOR DIFFE
     1RING ORBITAL ANGULAR MOMENTUM)
      CALL EXIT
    5 IF(L.GT.0) GO TO 12
C
C     S   ELECTRONS
C
      NINTS=0
      RETURN
   12 GO TO (13,14,15,16),L
C
C     P   ELECTRONS
C
   13 NINTS=1
      KVALUE(1)=2
      COEFCT(1)=-0.08
      RETURN
C
C     D   ELECTRONS
C
   14 NINTS=2
      KVALUE(1)=2
      KVALUE(2)=4
      COEFCT(1)=-0.031746032
      COEFCT(2)=-0.031746032
      RETURN
C
C     F   ELECTRONS
C
   15 NINTS=3
      KVALUE(1)=2
      KVALUE(2)=4
      KVALUE(3)=6
      COEFCT(1)=-0.020512821
      COEFCT(2)=-0.013986014
      COEFCT(3)=-0.017930787
      RETURN
C
C     G   ELECTRONS
C
   16 NINTS=4
      KVALUE(1)=2
      KVALUE(2)=4
      KVALUE(3)=6
      KVALUE(4)=8
      COEFCT(1)=-0.015278839
      COEFCT(2)=-0.009519892
      COEFCT(3)=-0.008227067
      COEFCT(4)=-0.011856655
      RETURN
C
C --- NON-EQUIVALENT ELECTRONS
C
    2 IF(L.GT.LP) GO TO 21
      L1=L
      L2=LP
      GO TO 22
   21 L1=LP
      L2=L
   22 L1D=L1+1
      L2D=L2+1
      GO TO (30,40,50,60,70),L1D
   30 NINTS=1
      KVALUE(1)=L2
      GO TO (31,32,33,34,35),L2D
C
C     S - S   INTERACTION
C
   31 COEFCT(1)=-0.5
      RETURN
C
C     S - P   INTERACTION
C
   32 COEFCT(1)=-0.166666667
      RETURN
C
C     S - D   INTERACTION
C
   33 COEFCT(1)=-0.1
      RETURN
C
C     S - F   INTERACTION
C
   34 COEFCT(1)=-0.071428571
      RETURN
C
C     S - G   INTERACTION
C
   35 COEFCT(1)=-0.055555556
      RETURN
   40 NINTS=2
      KVALUE(1)=L2-1
      KVALUE(2)=L2D
      GO TO (41,42,43,44),L2
C
C     P - P   INTERACTION
C
   41 COEFCT(1)=-0.166666667
      COEFCT(2)=-0.066666667
      RETURN
C
C     P - D   INTERACTION
C
   42 COEFCT(1)=-0.066666667
      COEFCT(2)=-0.042857143
      RETURN
C
C     P - F   INTERACTION
C
   43 COEFCT(1)=-0.042857143
      COEFCT(2)=-0.031746032
      RETURN
C
C     P - G   INTERACTION
C
   44 COEFCT(1)=-0.031746032
      COEFCT(2)=-0.025252525
      RETURN
   50 NINTS=3
      KVALUE(1)=L2-2
      KVALUE(2)=L2
      KVALUE(3)=L2+2
      L3=L2-1
      GO TO (51,52,53),L3
C
C     D - D   INTERACTION
C
   51 COEFCT(1)=-0.1
      COEFCT(2)=-0.028571429
      COEFCT(3)=-0.028571429
      RETURN
C
C     D - F   INTERACTION
C
   52 COEFCT(1)=-0.042857143
      COEFCT(2)=-0.019047619
      COEFCT(3)=-0.021645022
      RETURN
C
C     D - G   INTERACTION
C
   53 COEFCT(1)=-0.028571429
      COEFCT(2)=-0.014430014
      COEFCT(3)=-0.017482517
      RETURN
   60 NINTS=4
      KVALUE(1)=L2-3
      KVALUE(2)=L2-1
      KVALUE(3)=L2+1
      KVALUE(4)=L2+3
      L3=L2-2
      GO TO (61,62),L3
C
C     F - F   INTERACTION
C
   61 COEFCT(1)=-0.071428571
      COEFCT(2)=-0.019047619
      COEFCT(3)=-0.012987013
      COEFCT(4)=-0.016650017
      RETURN
C
C     F - G   INTERACTION
C
   62 COEFCT(1)=-0.031746032
      COEFCT(2)=-0.012987013
      COEFCT(3)=-0.009990010
      COEFCT(4)=-0.013597514
      RETURN
C
C     G - G   INTERACTION
C
   70 NINTS=5
      KVALUE(1)=0
      KVALUE(2)=2
      KVALUE(3)=4
      KVALUE(4)=6
      KVALUE(5)=8
      COEFCT(1)=-0.055555556
      COEFCT(2)=-0.014430014
      COEFCT(3)=-0.008991009
      COEFCT(4)=-0.007770008
      COEFCT(5)=-0.011197952
      RETURN
C
C --- IF ANGULAR MOMENTUM VALUES ARE TOO LARGE -----
C
    3 WRITE(IWRITE,6)  L,LP
    6 FORMAT(//47H THE ORBITAL ANGULAR MOMENTUM VALUES, WHICH ARE,2I5,5X
     1,39H ARE TOO LARGE FOR THE CODING OF INTACT//)
      CALL EXIT
      END
c
c-------------------------------------------------------------------
c                           u s e e a v
c-------------------------------------------------------------------
c
      SUBROUTINE USEEAV(IRHO,ISIG)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      common/enav/coefct(5),nints,kvalue(5)
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1     j1qn2(19,3),ijful(10)
      common/states/ncfg,noccsh(30),nocorb(5,30),nelcsh(5,30),
     1     j1qnrd(9,3,30),maxorb,njcomp(21),ljcomp(21),iajcmp(21)
      common/consts/zero,tenth,half,one,two,three,four,seven,eleven,eps
C
C     DETERMINE THE INTERACTION ENERGY
C
      N1=NOSH1(IRHO)
      N2=NOSH2(ISIG)
      jrho=ijful(irho)
      jsig=ijful(isig)
      M1=ISIG-IRHO
      IZERO=0
      ZERO=0.0
      IF(M1.EQ.0) GO TO 1
      IEQUIV=2
      AC2=FLOAT(N1*N2)
      GO TO 2
    1 IEQUIV=1
      AC2=FLOAT(N1*(N1-1)/2)
    2 LA=LJ(IRHO)
      LB=LJ(ISIG)
      CALL INTACT(LA,LB,IEQUIV)
      IF(IBUG1-1) 3,4,7
    3 RETURN
C
C     PRINT OUT RESULTS AS IN SUBROUTINE PRNTWT
C
    7 write(iwrite,10) iajcmp(jrho),iajcmp(jsig),iajcmp(jrho),
     1     iajcmp(jsig)
    4 if(ibug2.gt.1.and.ibug4.eq.0) write(iwrite,5)
      IBUG2=IBUG1
      write(iwrite,6) ac2,ac2,zero,izero,iajcmp(jrho),iajcmp(jsig)
      WRITE(IWRITE,6) IZERO,AC2,AC2,ZERO,IRHO,ISIG
      IF(NINTS.EQ.0) RETURN
      DO 8 N=1,NINTS
      ZA=AC2*COEFCT(N)
      K=KVALUE(N)
      IF(IEQUIV.EQ.1) GO TO 9
      write(iwrite,11) za,za,zero,k,iajcmp(jrho),iajcmp(jsig)
      GO TO 8
    9 write(iwrite,6) za,za,zero,k,iajcmp(jrho),iajcmp(jsig)
    8 CONTINUE
    5 format(//30x,33h coefficients of slater integrals//16x,17h total e
     1nergy(et),4x,19haverage energy(eav),6x,10h(et - eav),9x,16htype of
     2 integral/)
    6 format(12x,f18.8,2f21.8,11x,1hf,i1,1h(,a3,1h,,a3,1h))
   10 format(//23h interacting shells are,6x,6h rho =,a3,6x,6h sig =,a3,
     16x,7h rhop =,a3,6x,7h sigp =,a3//)
   11 format(12x,f18.8,2f21.8,11x,1hg,i1,1h(,a3,1h,,a3,1h))
      RETURN
      END
c
c-----------------------------------------------------------------------
c                           c h o p
c-----------------------------------------------------------------------
c
      SUBROUTINE CHOP
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1     j1qn2(19,3),ijful(10)
      COMMON/REMOVE/ICHOP(10)
      common/diagnl/idiag,ja,jb
C
C --- ZEROIZE THE OUTPUT ARRAY
C
      DO 1 I=1,IHSH
      ICHOP(I)=0
    1 CONTINUE
C
C     NO AVERAGE ENERGY TERMS FOR OFF-DIAGONAL MATRIX ELEMENTS
C
      IF(IDIAG.EQ.0) RETURN
      JSTO=0
      ICOUNT=0
      DO 3 J=1,IHSH
      NFULL=4*LJ(J)+2
      I2=NOSH1(J)
C
C     IS THE SHELL FULL OR EMPTY
C
      IF(I2.EQ.NFULL.OR.I2.EQ.0) GO TO 4
C
C     IF NOT, DOES IT CONTAIN ONLY ONE ELECTRON, OR ONLY ONE =HOLE=
C
      IF(I2.EQ.1.OR.I2.EQ.(NFULL-1)) JSTO=J
      GO TO 3
    4 ICOUNT=ICOUNT+1
C
C     ICHOP  SET UNITY FOR CLOSED SHELLS
C
      ICHOP(J)=1
    3 CONTINUE
C
C     IF ALL BUT ONE SHELL IS CLOSED, AND THIS CONTAINS ONE ELECTRON OR
C     =HOLE= , THEN IT CAN BE TREATED PURELY BY AVERAGE ENERGY
C
      IF(ICOUNT.NE.(IHSH-1).OR.JSTO.EQ.0) RETURN
      ICHOP(JSTO)=1
      RETURN
      END
c
c----------------------------------------------------------------------
c                           r e d u c e
c----------------------------------------------------------------------
c
      SUBROUTINE REDUCE(IRHO,ISIG,IRHOP,ISIGP,LESSEN)
      DIMENSION LEAVE(10)
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1     j1qn2(19,3),ijful(10)
C
C     THIS SUBROUTINE REMOVES SPECTATOR SINGLET  S  SHELLS WHICH HAVE
C     NO EFFECT IN ANGULAR OR SPIN INTEGRALS
C
C     LMIN  INITIALLY SET LARGE
C
      LMIN=99
      ICOUNT=0
      DO 1 I=1,IHSH
C
C     NO INTERACTING SHELL MAY BE REMOVED
C
      IF(I.EQ.IRHO.OR.I.EQ.ISIG.OR.I.EQ.IRHOP.OR.I.EQ.ISIGP) GO TO 2
C
C     IF A SPECTATOR SHELL HAS   SINGLET  S   COUPLING ON BOTH SIDES OF
C     THE MATRIX ELEMENT,  IT MAY, IN GENERAL,  BE REMOVED, AS IT HAS NO
C     EFFECT IN FANO
C
      IF(J1QN1(I,1).EQ.0.AND.J1QN2(I,1).EQ.0) GO TO 7
    2 ICOUNT=ICOUNT+1
      LEAVE(ICOUNT)=I
      GO TO 1
    7 IF(LJ(I).GE.LMIN) GO TO 1
      LMIN=LJ(I)
      ILMIN=I
    1 CONTINUE
      IF(ICOUNT.EQ.IHSH) GO TO 8
C
C     IF A CHANGE IN THE COMMON BLOCK  MEDEFN  IS TO BE MADE,
C     ITS PRESENT SITUATION MUST BE PRESERVED BY A CALL OF MEKEEP
C
      CALL MEKEEP(IRHO,ISIG,IRHOP,ISIGP)
C
C     IF ONLY ONE SHELL WOULD BE LEFT IN THIS WAY, THE ONE, DESTINED
C     FOR REMOVAL, WITH THE LOWEST L-VALUE MUST BE RETAINED TO DEFINE A
C     COUPLING
C
      IF(ICOUNT.EQ.1) GO TO 10
C
C --- MODIFY THE COMMON BLOCK  MEDEFN
C
   13 continue
      DO 3 I=1,ICOUNT
      J=LEAVE(I)
      IF(J.EQ.IRHO) IRHO=I
      IF(J.EQ.ISIG) ISIG=I
      IF(J.EQ.IRHOP) IRHOP=I
      IF(J.EQ.ISIGP) ISIGP=I
      NJ(I)=NJ(J)
      LJ(I)=LJ(J)
      NOSH1(I)=NOSH1(J)
      NOSH2(I)=NOSH2(J)
      DO 4 K=1,3
      J1QN1(I,K)=J1QN1(J,K)
      J1QN2(I,K)=J1QN2(J,K)
    4 CONTINUE
    3 CONTINUE
      ISUBH=IHSH-1
      DO 5 I=2,ICOUNT
      J=LEAVE(I)
      II=ICOUNT+I-1
      IJ=ISUBH+J
      DO 6 K=1,3
      J1QN1(II,K)=J1QN1(IJ,K)
      J1QN2(II,K)=J1QN2(IJ,K)
    6 CONTINUE
    5 CONTINUE
      IHSH=ICOUNT
      GO TO 20
C
C     THIS SITUATION ONLY OCCURS IF IRHO=ISIG=IRHOP=ISIGP
C
   10 J=LEAVE(1)
      IRHO = 2
      ISIG = 2
      IRHOP = 2
      ISIGP = 2
      WRITE(IWRITE,35)
      WRITE(IWRITE,40) ((J1QN1(J,K),K=1,3),J=1,I2HSH)
      WRITE(IWRITE,36)
      WRITE(IWRITE,40) ((J1QN2(J,K),K=1,3),J=1,I2HSH)
   35 FORMAT(/35H NEW DEFINITION OF COUPLING SCHEMES/38H FOR THIS SET OF
     1  RHO, SIG, RHOP, SIGP//10X,48H L.H.S. OF HAMILTONIAN MATRIX ELEME
     2NT DEFINED BY)
   36 FORMAT(10X,48H R.H.S. OF HAMILTONIAN MATRIX ELEMENT DEFINED BY)
   40 FORMAT(10X,6H J1QN ,9(I5,2I3))
C
C     LESSEN = 0   IF NO CHANGE IN MEDEFN
C            = 1   OTHERWISE
C
    9 LESSEN=1
      RETURN
    8 LESSEN=0
      RETURN
      END
c
c------------------------------------------------------------------------
c                             m e k e e p
c------------------------------------------------------------------------
c
      SUBROUTINE MEKEEP(IRHO,ISIG,IRHOP,ISIGP)
      COMMON/MEDEFN/J(165)
      COMMON/STORE/I(165),I1,I2,I3,I4
C
C     STORES THE COMMON BLOCK MEDEFN , AND IRHO,ISIG,IRHOP,ISIGP
C
      DO 1 K=1,155
      I(K)=J(K)
    1 CONTINUE
      I1=IRHO
      I2=ISIG
      I3=IRHOP
      I4=ISIGP
      RETURN
      END
c
c-------------------------------------------------------------------
c                          m e r e s t
c-------------------------------------------------------------------
c
      SUBROUTINE MEREST(IRHO,ISIG,IRHOP,ISIGP)
      COMMON/MEDEFN/J(165)
      COMMON/STORE/I(165),I1,I2,I3,I4
C
C     RESTORES THE COMMON BLOCK MEDEFN, AND IRHO,ISIG,IRHOP,ISIGP
C
      DO 1 K=1,155
      J(K)=I(K)
    1 CONTINUE
      IRHO=I1
      ISIG=I2
      IRHOP=I3
      ISIGP=I4
      RETURN
      END
c
c----------------------------------------------------------------------
c                             h o w t s
c----------------------------------------------------------------------
c
      SUBROUTINE H0WTS(ISIG,ISIGP,TIMES,ICAL)
C
      DIMENSION L6(40),L7(80),L8(40),LW(6,20)
      COMMON/CONSTS/ZERO,TENTH,HALF,ONE,TWO,THREE,FOUR,SEVEN,ELEVEN,EPS
      COMMON/COUPLE/NJ1S,NJ23S,J1(40),J2(12,3),J3(12,3)
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/HOLD/J2STO(33),J3STO(33),J2ANG(36),J3ANG(36)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1     J1QN2(19,3),IJFUL(10)
      COMMON/MVALUE/M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,
     1     M16,M17,M18,M19,M20
  303 FORMAT(7H ISIG =,I3,8H ISIGP =,I3)
  306 FORMAT(5H J1 =,I8,36I3)
  307 FORMAT(3H J2,18X,2HJ3)
  308 FORMAT(3I5,I10,2I5)
  309 FORMAT(8H TIMES =,F10.6,8H RECUP =,F10.6)
  310 FORMAT(8H TIMES =,F10.6,8H IDELP =,I3)
C
C --- OFF-DIAGONAL ONE-ELECTRON HAMILTONIAN MATRIX ELEMENT
C
      ICAL=0
      CALL SETM
      ICOUNT=0
C
C     TEST THAT FINAL ANGULAR MOMENTA ARE EQUAL
C
      DO 8 K=2,3
      IF(J1QN1(M6,K).NE.J1QN2(M6,K)) GO TO 7
    8 CONTINUE
C
C --- DETERMINE INTERACTING SHELLS,  ISIG ON L.H.S., ISIGP ON R.H.S.,
C     FOR NON-ZERO ONE-ELECTRON MATRIX ELEMENT,  N-1  ELECTRONS MUST BE
C     COMMON TO BOTH SIDES.  THUS THE SUM OF  N(I) = NOSH1(I)-NOSH2(I),
C     I=1,IHSH   MUST BE EQUAL TO  0  OR  2 .   THUS AT NO STAGE CAN
C     N(I) BE GREATER THAN  1 .  IF THIS SUM IS ZERO, THE TWO
C     CONFIGURATIONS ARE MADE UP FROM THE SAME ELECTRONS, WITH TWO
C     DIFFERENT COUPLING SCHEMES.  SINCE THE SPHERICAL HARMONICS ARE
C     EIGENFUNCTIONS OF  DEL**2 ,  THE ORTHOGONALITY OF THE TWO COUPLING
C     SCHEMES WILL BE MAINTAINED AND ORTHOGONALITY GIVES A ZERO RESULT.
C
      DO 9 I=1,IHSH
      N=NOSH1(I)-NOSH2(I)
      IF(IABS(N).GT.1) GO TO 7
      IF(N) 11,9,12
   11 ISIGP=I
      GO TO 13
   12 ISIG=I
   13 ICOUNT=ICOUNT+1
    9 CONTINUE
      IF(ICOUNT.NE.2) GO TO 7
      IF(IBUG4.LT.2) GO TO 92
      WRITE(IWRITE,303) ISIG,ISIGP
   92 LSIG=LJ(ISIG)
      LSIGP=LJ(ISIGP)
C
C     THE ANGULAR MOMENTUM OF THE INTERACTING ELECTRONS MUST BE EQUAL
C
      IF(LSIG-LSIGP) 7,93,7
C
C     THE SPECTATOR SHELLS MUST HAVE MATCHING QUANTUM NUMBERS
C
   93 DO 16 J=1,IHSH
      IF(J.EQ.ISIG.OR.J.EQ.ISIGP) GO TO 16
      DO 19 K=1,3
      IF(J1QN1(J,K).NE.J1QN2(J,K)) GO TO 7
   19 CONTINUE
   16 CONTINUE
C
C --- TEST ON TRIANGULAR CONDITIONS
C
      IN3=2*LSIG
      DO 20 K=2,3
      IN1=J1QN1(ISIG,K)
      IN2=J1QN2(ISIG,K)
      IN4=J1QN1(ISIGP,K)
      IN5=J1QN2(ISIGP,K)
      IF(IN1.GT.(IN2+IN3).OR.IN1.LT.IABS(IN2-IN3)) GO TO 7
      IF(IN4.GT.(IN5+IN3).OR.IN4.LT.IABS(IN5-IN3)) GO TO 7
      IN3=1
   20 CONTINUE
C
C --- CALCULATE FRACTIONAL PARENTAGE COEFFICIENTS
C
      TIMES=ONE
      IF(LSIG.EQ.0) GO TO 26
      N=NOSH1(ISIG)
      IVI=J1QN1(ISIG,1)
      ILI=(J1QN1(ISIG,2)-1)/2
      ISI=J1QN1(ISIG,3)
      IVJ=J1QN2(ISIG,1)
      ILJ=(J1QN2(ISIG,2)-1)/2
      ISJ=J1QN2(ISIG,3)
      CALL CFP(LSIG,N,IVI,ILI,ISI,IVJ,ILJ,ISJ,COEFP)
      TIMES=TIMES*COEFP
      IF(ABS(TIMES).LT.EPS) GO TO 7
      N=NOSH2(ISIGP)
      IVI=J1QN2(ISIGP,1)
      ILI=(J1QN2(ISIGP,2)-1)/2
      ISI=J1QN2(ISIGP,3)
      IVJ=J1QN1(ISIGP,1)
      ILJ=(J1QN1(ISIGP,2)-1)/2
      ISJ=J1QN1(ISIGP,3)
      CALL CFP(LSIG,N,IVI,ILI,ISI,IVJ,ILJ,ISJ,COEFP)
      TIMES=TIMES*COEFP
      IF(ABS(TIMES).LT.EPS) GO TO 7
C
C --- SET UP  J2  AND  J3  ARRAYS
C
   26 M1=IHSH-2
      M2=M6-2
      J2(1,1)=ISIG
      J2(1,2)=M11
      J2(1,3)=M9
      J3(1,1)=ISIGP
      J3(1,2)=M11
      J3(1,3)=M10
      IF(ISIG.EQ.1) GO TO 29
      J2(2,1)=1
      GO TO 30
   29 J2(2,1)=M9
   30 IF(ISIG.EQ.2) GO TO 32
      J2(2,2)=2
      GO TO 33
   32 J2(2,2)=M9
   33 J2(2,3)=M4
      IF(ISIGP.EQ.1) GO TO 35
      J3(2,1)=1
      GO TO 36
   35 J3(2,1)=M10
   36 IF(ISIGP.EQ.2) GO TO 38
      J3(2,2)=2
      GO TO 39
   38 J3(2,2)=M10
   39 J3(2,3)=M7
      IF(IHSH.LT.3) GO TO 40
      DO 42 J=3,IHSH
      J2(J,1)=M1+J
      J2(J,3)=M1+J+1
      J3(J,1)=M2+J
      IF(J.EQ.IHSH) GO TO 44
      J3(J,3)=M2+J+1
      GO TO 45
   44 J3(J,3)=M1+J+1
   45 IF(J.EQ.ISIG) GO TO 47
      J2(J,2)=J
      GO TO 48
   47 J2(J,2)=M9
   48 IF(J.EQ.ISIGP) GO TO 50
      J3(J,2)=J
      GO TO 42
   50 J3(J,2)=M10
   42 CONTINUE
C
C --- STORE  J2  AND  J3  ARRAYS FOR USE IN SPIN RECOUPLING COEFFICIENT
C
   40 I1=0
      DO 51 J=1,IHSH
      DO 52 K=1,3
      I1=I1+1
      J2STO(I1)=J2(J,K)
      J3STO(I1)=J3(J,K)
   52 CONTINUE
   51 CONTINUE
C
C --- ORBITAL RECOUPLING COEFFICIENT
C
      J1(M11)=LSIG+LSIG+1
      K=2
C
C --- SET  J1  ARRAY
C
   64 DO 53 J=1,IHSH
      IF(ISIG.EQ.J) GO TO 55
      J1(J)=J1QN1(J,K)
      GO TO 53
   55 J1(J)=J1QN2(ISIG,K)
   53 CONTINUE
      DO 56 J=M4,M6
      J1(J)=J1QN1(J,K)
   56 CONTINUE
      DO 57 J=M7,M8
      J1(J)=J1QN2(J-M3,K)
   57 CONTINUE
      J1(M9)=J1QN1(ISIG,K)
      J1(M10)=J1QN2(ISIGP,K)
      NJ1S=M11
      NJ23S=M4
      IF(IBUG4.LT.2.OR.IBUG3.EQ.1) GO TO 77
      WRITE(IWRITE,306) (J1(J),J=1,M11)
      WRITE(IWRITE,307)
      DO 80 J=1,IHSH
      WRITE(IWRITE,308) (J2(J,KL),KL=1,3),(J3(J,KL),KL=1,3)
   80 CONTINUE
C
C --- CALCULATE RECOUPLING COEFFICIENT
C
   77 CALL NJSYM(L6C,L7C,L8C,LWC,L6,L7,L8,LW,RECUP)
      TIMES=TIMES*RECUP
      IF(IBUG4.LT.2) GO TO 58
      WRITE(IWRITE,309) TIMES,RECUP
   58 IF(ABS(TIMES).LT.EPS) GO TO 7
C
C --- SPIN RECOUPLING COEFFICIENT
C
      IF(K.EQ.3) GO TO 60
      J1(M11 )=2
      K=3
      I1=0
      DO 62 J=1,IHSH
      DO 63 KK=1,3
      I1=I1+1
      J2(J,KK)=J2STO(I1)
      J3(J,KK)=J3STO(I1)
   63 CONTINUE
   62 CONTINUE
      GO TO 64
C
C --- INCLUDE MULTIPLICATIVE FACTORS
C
   60 IDELP=0
      IF(ISIG-ISIGP) 65,70,66
   65 JSIG=ISIG+1
      DO 67 J=JSIG,ISIGP
      IDELP=IDELP+NOSH1(J)
   67 CONTINUE
      GO TO 70
   66 JSIGP=ISIGP+1
      DO 68 J=JSIGP,ISIG
      IDELP=IDELP+NOSH2(J)
   68 CONTINUE
   70 TIMES=TIMES*(-ONE)**IDELP*SQRT(FLOAT(NOSH1(ISIG)*NOSH2(ISIGP)))
      ICAL=1
      IF(IBUG4.LT.2) GO TO 7
      WRITE(IWRITE,310) TIMES,IDELP
    7 RETURN
      END
c
c----------------------------------------------------------------------
c                             s e t m 
c----------------------------------------------------------------------
c
      SUBROUTINE SETM
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1     J1QN2(19,3),IJFUL(10)
      COMMON/MVALUE/M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,
     1     M16,M17,M18,M19,M20
C
C --- SET CONSTANTS USEFUL IN INNER SUBROUTINES
C
      M3=IHSH-1
      M4=IHSH+1
      M5=IHSH+2
      M6=2*IHSH-1
      M7=M6+1
      M8=M3+M6
      M9=M8+1
      M10=M8+2
      M11=M8+3
      M12=M8+4
      M13=M8+5
      M14=M8+6
      M15=M8+7
      M16=M8+8
      M17=M8+9
      M18=IHSH+3
      RETURN
      END
c
c-----------------------------------------------------------------------
c                            d h o
c-----------------------------------------------------------------------
c
      SUBROUTINE DH0
      COMMON/CONSTS/ZERO,TENTH,HALF,ONE,TWO,THREE,FOUR,SEVEN,ELEVEN,EPS
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1     J1QN2(19,3),IJFUL(10)
      COMMON/STATES/NCFG,NOCCSH(30),NOCORB(5,30),NELCSH(5,30),
     1     J1QNRD(9,3,30),MAXORB,NJCOMP(21),LJCOMP(21),IAJCMP(21)
  300 FORMAT(/35X,34H COEFFICIENTS OF VARIOUS INTEGRALS//16X,17H TOTAL E
     1NERGY(ET),4X,19HAVERAGE ENERGY(EAV),6X,10H(ET - EAV),9X,16HTYPE OF
     2 INTEGRAL/)
  311 FORMAT(12X,F18.8,2F21.8,11X,3HI (,A3,1H,,A3,1H))
      IF(IBUG4.NE.0) WRITE(IWRITE,300)
      DO 302 J=1,IHSH
      IF(NOSH1(J).EQ.0) GO TO 302
      JSIG=IJFUL(J)
      X=NOSH1(J)
      WRITE(IWRITE,311) X,X,ZERO,IAJCMP(JSIG),IAJCMP(JSIG)
  302 CONTINUE
      RETURN
      END
c
c-----------------------------------------------------------------------
c                              o d h o
c-----------------------------------------------------------------------
c
      SUBROUTINE ODH0(ISIG,ISIGP,Y,ICAL)
      COMMON/COMCHF/LOCATE(21)
      COMMON/CONSTS/ZERO,TENTH,HALF,ONE,TWO,THREE,FOUR,SEVEN,ELEVEN,EPS
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/DIAGNL/IDIAG,JA,JB
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1     J1QN2(19,3),IJFUL(10)
      COMMON/PUNCH1/YL(100),NL,JL1(100),JL2(100)
      COMMON/STATES/NCFG,NOCCSH(30),NOCORB(5,30),NELCSH(5,30),
     1     J1QNRD(9,3,30),MAXORB,NJCOMP(21),LJCOMP(21),IAJCMP(21)
  300 FORMAT(/35X,34H COEFFICIENTS OF VARIOUS INTEGRALS//16X,17H TOTAL E
     1NERGY(ET),4X,19HAVERAGE ENERGY(EAV),6X,10H(ET - EAV),9X,16HTYPE OF
     2 INTEGRAL/)
  311 FORMAT(12X,F18.8,2F21.8,11X,3HI (,A3,1H,,A3,1H))
      IF(IBUG4.NE.0) WRITE(IWRITE,300)
      IF(ICAL.EQ.0) RETURN
      JSIG=IJFUL(ISIG)
      JSIGP=IJFUL(ISIGP)
      WRITE(IWRITE,311) Y,ZERO,Y,IAJCMP(JSIG),IAJCMP(JSIGP)
      IF(IPUNCH.EQ.0) RETURN
      KSIG=LOCATE(JSIG)
      KSIGP=LOCATE(JSIGP)
      NL=NL+1
      YL(NL)=-Y
      JL1(NL)=100*KSIG+JA
      JL2(NL)=100*KSIGP+JB
      RETURN
      END
c
c---------------------------------------------------------------------
c                             c f g t s t
c---------------------------------------------------------------------
c
      SUBROUTINE CFGTST
C
C     THIS SUBROUTINE CHECKS ALL THE CONFIGURATION SET TO ENSURE THAT
C     IT SATISFIES
C        (1)  THE SUBSHELLS ARE IN THE CORRECT ORDER
C        (2)  NO SUBSHELL HAS TOO MANY (.GT.2*(2*L+1))  ELECTRONS
C        (3)  THE ELECTRONS IN ANY ONE SUBSHELL ARE COUPLED TO FORM AN
C             ALLOWED TRIAD OF QUANTUM NUMBERS
C        (4)  THE TRIADS COUPLE TOGETHER IN AN ALLOWED WAY
C
C     IN THE EVENT OF AN ERROR, THE PROGRAM HALTS AT THE COMPLETION
C     OF THE CHECKING.  ANY NUMBER OF S, P, D  ELECTRONS ARE ALLOWED,
C     (BUT .LE.2*(2*L+1)), BUT ONLY UP TO TWO  F  OR  G  ELECTRONS.
C     NO ELECTRONS FOR  L.GT.4  ARE ALLOWED
C
      DIMENSION ITABA(2),JTABA(2),NTABA(48)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
      COMMON/STATES/NCFG,NOCCSH(30),NOCORB(5,30),NELCSH(5,30),
     1     J1QNRD(9,3,30),MAXORB,NJCOMP(21),LJCOMP(21),IAJCMP(21)
      COMMON/TERMS/NROWS,ITAB(12),JTAB(12),NTAB(171)
      DATA ITABA(1),ITABA(2)/7,9/
      DATA JTABA(1),JTABA(2)/0,21/
      DATA NTABA(1),NTABA(2),NTABA(3),NTABA(4),NTABA(5),NTABA(6),
     1     NTABA(7),NTABA(8),NTABA(9),NTABA(10),NTABA(11),NTABA(12),
     2     NTABA(13),NTABA(14),NTABA(15),NTABA(16),NTABA(17),NTABA(18),
     3     NTABA(19),NTABA(20),NTABA(21),NTABA(22),NTABA(23),NTABA(24),
     4     NTABA(25),NTABA(26),NTABA(27),NTABA(28),NTABA(29),NTABA(30),
     5     NTABA(31),NTABA(32),NTABA(33),NTABA(34),NTABA(35),NTABA(36),
     6     NTABA(37),NTABA(38),NTABA(39),NTABA(40),NTABA(41),NTABA(42),
     7     NTABA(43),NTABA(44),NTABA(45),NTABA(46),NTABA(47),NTABA(48)/
     8     2,3,3,2,7,3,2,11,3,0,1,1,2,5,1,2,9,1,2,13,1,
     9     2,3,3,2,7,3,2,11,3,2,15,3,0,1,1,2,5,1,2,9,1,2,13,1,2,17,1/
    5 FORMAT(/38H THE TRIAD OF QUANTUM NUMBERS OF SHELL,I3,17H IN CONFIG
     1URATION,I3,24H IS NOT A RECOGNIZED SET)
    7 FORMAT(/23H THE INCLUSION OF SHELL,I3,17H IN CONFIGURATION,I3,38H
     1RESULTS IN AN ILLEGAL COUPLING SCHEME)
    9 FORMAT(/28H THE SHELLS IN CONFIGURATION,I3,24H ARE INCORRECTLY ORD
     1ERED)
   12 FORMAT(//41H CONFIGURATION DATA WRONG, PROGRAM HALTED//)
   15 FORMAT(/17H IN CONFIGURATION,I3,7H, SHELL,I3,28H CONTAINS TOO MANY
     1 ELECTRONS)
   17 FORMAT(/14H CONFIGURATION,I3,81H INCLUDES A SHELL OF ANGULAR MOMEN
     1TUM GREATER THAN 2 WITH MORE THAN TWO ELECTRONS)
C
      IALLOW=1
      DO 1 I=1,NCFG
      N=NOCCSH(I)
      DO 2 J=1,N
      NA=NOCORB(J,I)
      IF(J.EQ.1) GO TO 3
C
C     CHECK THE ORDERING OF THE SUBSHELLS
C
      IF(NA.GT.NB) GO TO 3
      WRITE(IWRITE,9) I
      IALLOW=0
    3 NB=NA
      LQU=LJCOMP(NA)
      NC=NELCSH(J,I)
C
C     CHECK THAT THERE ARE NO MORE THAN TWO F OR G ELECTRONS
C
      IF(LQU.GT.2.AND.NC.GT.2) GO TO 16
C
C     CHECK THAT THERE ARE NOT TOO MANY ELECTRONS IN EACH SUBSHELL
C
      NQUMAX=4*LQU+2
      IF(NC.GT.NQUMAX) GO TO 8
C
C     CHECK THAT THE ELECTRONS IN EACH SUBSHELL ARE COUPLED TO
C     ALLOWED TRIADS
C
      JA=J1QNRD(J,1,I)
      JB=J1QNRD(J,2,I)
      JC=J1QNRD(J,3,I)
      NROW=NTAB2(NC,LQU+1)
      IF(NROW.EQ.0) GO TO 19
      I1=ITAB(NROW)
      I2=JTAB(NROW)
      DO 4 IA=1,I1
      I3=I2+3*IA-1
      IF(JB.NE.NTAB(I3)) GO TO 4
      I3=I3+1
      IF(JC.NE.NTAB(I3)) GO TO 4
      I3=I3-2
      IF(JA.EQ.NTAB(I3)) GO TO 13
    4 CONTINUE
   14 WRITE(IWRITE,5) J,I
      IALLOW=0
      GO TO 13
C
C     TWO ELECTRONS IN AN F- OR G-SHELL
C
   19 I4=LQU-2
      I1=ITABA(I4)
      I2=JTABA(I4)
      DO 20 IA=1,I1
      I3=I2+3*IA-1
      IF(JB.NE.NTABA(I3)) GO TO 20
      I3=I3+1
      IF(JC.NE.NTABA(I3)) GO TO 20
      I3=I3-2
      IF(JA.EQ.NTABA(I3)) GO TO 13
   20 CONTINUE
      GO TO 14
   13 IF(J.EQ.1) GO TO 2
C
C     CHECK ON COUPLING ON OF THIS TRIAD
C
      J2=N+J-1
      IF(J.EQ.2) GO TO 10
      J1=J2-1
      GO TO 11
   10 J1=1
   11 JD=J1QNRD(J1,2,I)
      JE=J1QNRD(J1,3,I)
      JF=J1QNRD(J2,2,I)
      JG=J1QNRD(J2,3,I)
      IF(JF.GT.(JB+JD).OR.JF.LT.IABS(JB-JD)) GO TO 6
      IF(JG.GT.(JC+JE).OR.JG.LT.IABS(JC-JE)) GO TO 6
      GO TO 2
   16 WRITE(IWRITE,17) I
      IALLOW=0
      GO TO 13
    8 WRITE(IWRITE,15) I,J
      IALLOW=0
      GO TO 13
    6 WRITE(IWRITE,7) J,I
      IALLOW=0
    2 CONTINUE
    1 CONTINUE
      IF(IALLOW.EQ.1) RETURN
      WRITE(IWRITE,12)
      CALL EXIT
      END
c
c----------------------------------------------------------------------
c                               n t a b s 2
c----------------------------------------------------------------------
c
      FUNCTION NTAB2(NELCTS,K)
C
C     THIS FUNCTION GIVES THE ROW OF NTAB FOR TERMS FORMED FROM
C     (K-1)**NELCTS
C     IF THERE IS MORE THAN ONE ELECTRON IN AN F OR G SHELL, THE VALUE
C     OF THE FUNCTION IS ZERO
C
      COMMON/INFORM/IREAD,IWRITE,IPUNCH
   10 FORMAT(30H THE ANGULAR MOMENTUM VALUE IS,I3,45H WHICH IS LARGER TH
     1AN THIS CODE CAN DEAL WITH//24H PROGRAM HALTED IN NTAB2///)
      IF(K.LE.5) GO TO 1
      K1=K-1
      WRITE(IWRITE,10) K1
      CALL EXIT
    1 IF(NELCTS.GT.0) GO TO 2
    8 NTAB2=2
      RETURN
    2 GO TO (3,4,5,6,7),K
C
C     S ELECTRONS
C
    3 NTAB2=NELCTS
      RETURN
C
C     P ELECTRONS
C
    4 IF(NELCTS.GT.3) NELCTS=6-NELCTS
      IF(NELCTS.EQ.0) GO TO 8
      NTAB2=NELCTS+2
      RETURN
C
C     D ELECTRONS
C
    5 IF(NELCTS.GT.5) NELCTS=10-NELCTS
      IF(NELCTS.EQ.0) GO TO 8
      NTAB2=NELCTS+5
      RETURN
C
C     F ELECTRONS
C
    6 IF(NELCTS.GT.1) GO TO 9
      IF(NELCTS.EQ.0) GO TO 8
      NTAB2=11
      RETURN
C
C     G ELECTRONS
C
    7 IF(NELCTS.GT.1) GO TO 9
      IF(NELCTS.EQ.0) GO TO 8
      NTAB2=12
      RETURN
    9 NTAB2=0
      RETURN
▶EOF◀