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

⟦66cc101a6⟧ TextFile

    Length: 71424 (0x11700)
    Types: TextFile
    Names: »per«, »per11«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦this⟧ »per« 
        └─⟦this⟧ »per11« 

TextFile

c   program 11 aakp
c
c   aakpreduced tensor matrix elements 2. a new version af aakf (reduced
c   tensor matrix elements) adapted to spectroscopic notation, with
c   inclusion of the evaluation of matrix elements of tensor products,
c   and checking of the input data. k.m.s. saxena
c   ref. in comp. phys. commun. 9 (1975) 370 and
c           comp. phys. commun. 13 (1977) 231 and
c           comp. phys. commun. 13 (1977) 289 and
c           comp. phys. commun. 16 (1978) 57.
c
C
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C  *                                                                 *
C  *   FABUARY 1975                                                  *
C  *                                                                 *
C  *   A NEW VERSION OF THE PROGRAM (ORIGIONALLY WRITTEN BY ROBB,    *
C  *   W.D.) TO EVALUATE THE REDUCED MATRIX ELEMENTS OF SUMMATIONS   *
C  *   OF ONE-PARTICLE TENSOR OPERATORS.                             *
C  *                                                                 *
C  *                                                                 *
C  *   BY                                                            *
C  *                                                                 *
C  *                                                                 *
C  *   C. FROESE FISCHER AND K.M.S. SAXENA                           *
C  *                                                                 *
C  *   DEPARTMENT OF APPLIED MATHEMATICS                             *
C  *   UNIVERSITY OF WATERLOO, WATERLOO, ONTARIO  N2L 3G1            *
C  *   C A N A D A.                                                  *
C  *                                                                 *
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C *                                                                   *
C *           THE PURPOSE OF THE PRESENT VERSION IS TWO-FOLD. FIRSTLY *
C * THE FORMATS OF THE INPUT-DATA AND THE PRINTED-OUTPUT ARE CHANGED  *
C * TO MORE READABLE AND COMPACT SPECTROSCOPIC NOTATION. SECONDLY, IT *
C * MODIFIES THE PUNCHED-OUTPUT FORMATS SO THAT THE PUNCHED RESULTS   *
C * CAN BE DIRECTLY READ AND USED BY OTHER PROGRAMS SUCH AS A TRANSI- *
C * TION PROBABILITY PROGRAM.                                         *
C *                                                                   *
C *           THE PRESENT VERSION IS AN IBM S360 DOUBLE-PRECISION     *
C * PROGRAM AND USES THE FOLLOWING CPC LIBRARY PROGRAMS, WHICH, FOR   *
C * THE PRESENT USE, HAVE ALL BEEN CONVERTED TO DOUBLE-PRECISION      *
C * PROGRAMS.                                                         *
C *                                                                   *
C *  (1) ACQB, THE P-SHELL CFP PROGRAM: ALLISON (CPC V1(1969)15).     *
C *  (2) ACRN, THE NEW D-SHELL CFP PROGRAM: CHIVERS (CPC V6(1973)88). *
C *  (3) AAGD, THE NJSYM PROGRAM: BURKE (CPC V1(1970)241), ADAPTED    *
C *            FOR WEIGHTS USING AAGD0001: HIBBERT (CPC V2(1971)180), *
C *            WITH AAGD0002: GRANT (CPC V5(1973)161) FOR IMPROVED    *
C *            RACAH COEFFICIENT ROUTINE, AND WITH THE CORRECTION     *
C *            AAGD000A: CPC V2(1971)173.                             *
C *                                                                   *
C *           IT IS TO BE NOTED HERE THAT THE ORIGIONAL VERSION OF    *
C * THIS PROGRAM DUE TO ROBB DID NOT USE THE ADAPTATION AAGD0002 OF   *
C * GRANT FOR AN IMPROVED RACAH COEFFICIENT ROUTINE.                  *
C *                                                                   *
C *           IT MAY ALSO BE NOTED HERE THAT THE RECENTLY PUBLISHED   *
C * CORRECTIONS (DUE TO HIBBERT, 1975) TO THE ROBB'S PROGRAM HAVE     *
C * BEEN INCLUDED IN THIS PRESENT VERSION.                            *
C *                                                                   *
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C *                                                                   *
C * CONVERSION TO SINGLE-PRECISION:-                                  *
C * ==============================                                    *
C *                                                                   *
C *           AS HAS BEEN SAID ABOVE THIS PROGRAM IS AN IBM S360      *
C * DOUBLE-PRECISION PROGRAM.  HOWEVER, ON COMPUTERS WITH A WORD      *
C * LENGTH OF 48 BITS OR MORE IT SHOULD BE USED IN SINGLE-PRECISION   *
C * ONLY. IN ORDER TO CONVERT THIS PROGRAM TO A SINGLE-PRECISION      *
C * PROGRAM THE FOLLOWING SHOULD BE DONE:                             *
C *                                                                   *
C *  (1) REMOVE ALL 'IMPLICIT REAL*8(A-H,O-Z)' CARDS.                 *
C *  (2) REMOVE '*8' FROM THE FUNCTION DEFINITION CARDS, FOR          *
C *      EXAMPLE, 'REAL FUNCTION TRITST*8(I,J)' WILL BE REPLACED      *
C *      BY 'REAL FUNCTION TRITST(I,J)'                               *
C *  (3) CHANGE SYSTEM FUNCTION NAMES 'DSQRT','DABS','DFLOAT', ETC.   *
C *      TO 'SQRT','ABS','FLOAT', ETC.                                *
C *  (4) CHANGE DOUBLE PRECISION CONSTANTS TO SINGLE PRECISION        *
C *      CONTANTS.                                                    *
C *  (5) CHANGE D-FORMAT CODES TO E-FORMAT CODES.                     *
C *  (6) WHEN USING THE SINGLE-PRECISION VERSION OF THIS PROGRAM,     *
C *      THE OTHER CPC LIBRARY PROGRAMS (ACQB,ACRN, AND AAGD ETC.)    *
C *      USED, OBVIOUSLY, NEED NOT BE CONVERTED TO DOUBLE-PRECISION   *
C *      PROGRAMS.                                                    *
C *                                                                   *
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C *                                                                   *
C *  THE PROGRAM STRUCTURE:-                                          *
C *  =====================                                            *
C *                                                                   *
C *            THE PROGRAM STRUCTURE REMAINS ESSENTIALLY THE SAME AS  *
C *  IN THE ORIGIONAL VERSION OF THE PROGRAM EXCEPT FOR THE FACT THAT *
C *  THE SUBROUTINE 'PRTCON' HAS BEEN PULLED OUT AND THE INPUT-DATA   *
C *  READ FOR THE INITIAL- AND THE FINAL-STATE IN THE SUBROUTINES     *
C *  'GSTATE' AND 'ESTATE' RESPECTIVELY IS NOW PRINTED IN THESE VERY  *
C *  SUBROUTINES IMMEDIATELY AFTER IT IS READ.                        *
C *                                                                   *
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C *                                                                   *
C *  MODIFICATIONS TO THE COMMON BLOCKS:-                             *
C *  ==================================                               *
C *                                                                   *
C *            THE COMMON BLOCK /STATEM/ HAS BEEN ENLARGED TO INCLUDE *
C *  THE FOLLOWING FIVE ADDITIONAL VARIABLES.                         *
C *                                                                   *
C *   (1) MMCORB(J,I),J=1,MOCCSH(I),I=1,MCFG, WHICH CONTAINS THE 3    *
C *                                           CHARACTER ALPHANUMERIC  *
C *                                           LABELS SUCH AS '1S ',   *
C *                                           '2P ','2P1', ETC. FOR   *
C *                                           THE OCCUPIED SHELLS IN  *
C *                                           THE MCFG INITIAL-STATE  *
C *                                           CONFIGURATIONS.         *
C *   (2) KKCORB(J,I),J=1,KOCCSH(I),I=1,KCFG, WHICH CONTAINS THE 3    *
C *                                           CHARACTER ALPHANUMERIC  *
C *                                           LABELS SUCH AS '1S ',   *
C *                                           '2P ','2P1', ETC. FOR   *
C *                                           THE OCCUPIED SHELLS IN  *
C *                                           THE KCFG FINAL-STATE    *
C *                                           CONFIGURATIONS.         *
C *   (3) IAJCMP(I),I=1,MAXOR, WHICH CONTAINS THE THREE CHARACTER     *
C *                            ALPHANUMERIC LABELS SUCH AS '1S ',     *
C *                            '2P ','2P1', ETC. OF ALL THE MAXOR     *
C *                            SHELLS INVOLVED IN THE INITIAL- AND    *
C *                            FINAL-STATES.                          *
C *   (4) LOCATE(I),I=1,MAXOR, WHICH CONTAINS THE EXTERNAL INDICES,   *
C *                            IF ANY, OF THE MAXOR SHELLS WHICH      *
C *                            ARE STORED IN IAJCMP. THESE INDICES    *
C *                            ARE USED ONLY WHEN THE PUNCHED OUTPUT  *
C *                            IS PRODUCED.                           *
C *   (5) JAJCMP(I,J),I=1,MAXOR,J=1,3, WHICH CONTAINS THE INDIVIDUAL  *
C *                                    THREE CHARACTERS OF EACH OF    *
C *                                    THE MAXOR LABELS OF THE SHELLS *
C *                                    STORED IN IAJCMP(I),I=1,MAXOR. *
C *                                                                   *
C *            THE COMMON BLOCK /MEDFN/ HAS BEEN ENLARGED TO INCLUDE  *
C *  THE FOLLOWING TWO ADDITIONAL VARIABLES.                          *
C *                                                                   *
C *   (1) IJFUL(I),I=1,IHSH, AND                                      *
C *   (2) JIFUL(I),I=1,IHSH, WHICH FOR A PARTICULAR MATRIX ELEMENT    *
C *                          CORRESPONDING TO A PAIR OF CONFIGU-      *
C *                          RATIONS (ONE FROM THE INITIAL-STATE      *
C *                          AND THE OTHER FROM THE FINAL-STATE)      *
C *                          STORE THE INDICES OF THE IHSH OCCUPIED   *
C *                          SHELLS, IN IJFUL ARRAY ACCORDING TO      *
C *                          THE NATURAL ORDERING OF THE MAXOR        *
C *                          SHELLS AND IN JIFUL ARRAY ACCORDING      *
C *                          TO THE EXTERNAL ORDERING(GIVEN BY THE    *
C *                          VARIABLE LOCATE) OF THE MAXOR SHELLS.    *
C *                                                                   *
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C *                                                                   *
C *  NEW COMMON BLOCKS:-                                              *
C *  =================                                                *
C *                                                                   *
C *            THE FOLLOWING NEW COMMON BLOCKS HAVE BEEN ADDED IN     *
C *  THE PRESENT NEW VERSION.                                         *
C *                                                                   *
C *   (1) /SYMM/LANK,LSYM(10)                                         *
C *                                                                   *
C *            THIS CONTAINS A BLANK CHARACTER ' ' (LANK) AND THE     *
C *       CHARACTERS 'S','P',..,'M' (LSYM), WHICH REPRESENT THE SPEC- *
C *       TROSCOPIC SYMMETRY SYMBOLS, ALL IN A1 FORMAT.               *
C *                                                                   *
C *   (2) /NVALUE/NVAL(9)                                             *
C *                                                                   *
C *            THIS CONTAINS THE CHARACTERS '1','2',..,'9', ALL IN    *
C *       A1 FORMAT, REPRESENTING THE NATURAL NUMBERS ONE TO NINE.    *
C *                                                                   *
C *   (3) /SPINP/ISPINT,ISPINS                                        *
C *                                                                   *
C *            THIS CONTAINS THE CHARACTERS 'T' (ISPINT) AND 'S'      *
C *       (ISPINS), BOTH IN A1 FORMAT, REPRESENTING THE SPIN-         *
C *       INDEPENDENT AND SPIN-DEPENDENT TENSOR OPERATORS.            *
C *                                                                   *
C *   (4) /ACFG/ICFG(12)                                              *
C *                                                                   *
C *            THIS CONTAINS THE FOUR CHARACTER STRINGS SUCH AS       *
C *       'S(1)','P(3)','D(5)', ETC., ALL IN A4 FORMAT,REPRESENTING   *
C *       THE VARIOUS BASIC SINGLE-SHELL CONFIGURATIONS.              *
C *                                                                   *
C *   (5) /PARAM/ZERO,EPSILO,HALF,ONE                                 *
C *                                                                   *
C *            THIS CONTAINS THE FLOATING POINT DOUBLE-PRECISION      *
C *       CONSTANTS 0.D0(ZERO), 1.D-08(EPSILO), 0.5D0(HALF), AND      *
C *       1.D0(ONE).                                                  *
C *                                                                   *
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C *                                                                   *
C *  NEW ARRAYS:-                                                     *
C *  ==========                                                       *
C *                                                                   *
C *            THE FOLLOWING NEW ARRAYS HAVE BEEN ADDED IN THE        *
C *  PRESENT NEW VERSION.                                             *
C *                                                                   *
C *   (1) ARRAY M1QN(19) IN SUBROUTINE 'GSTATE':-                     *
C *                                                                   *
C *            THIS ARRAY TEMPORARILY STORES THE SYMMETRY SYMBOLS     *
C *       (SUCH AS 'S','P','D', ETC.) FOR THE INTERMEDIATE STATES     *
C *       OF THE COUPLING SCHEME  OF ONE INITIAL-STATE CONFIGURA-     *
C *       TION AT A TIME.                                             *
C *                                                                   *
C *   (2) ARRAY K1QN(19) IN SUBROUTINE 'ESTATE':-                     *
C *                                                                   *
C *            THIS IS AN ARRAY FOR THE FINAL-STATE AND IS SIMILAR    *
C *       TO THE ARRAY M1QN DESCRIBED ABOVE.                          *
C *                                                                   *
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C *                                                                   *
C *  INPUT DATA ORGANIZATION FOR THE PRESENT NEW VERSION:-            *
C *  ===================================================              *
C *                                                                   *
C *            FOR EACH RUN CONSISTING OF SEVERAL CASES THE INPUT     *
C *  DATA (THE DEFINITION OF THE VARIABLES BEING THE SAME AS IN THE   *
C *  ORIGIONAL VERSION, UNLESS OTHERWISE STATED) IS ORGANIZED AS      *
C *  FOLLOWS:                                                         *
C *                                                                   *
C *   (1) NCASES,IREAD,IWRITE                                         *
C *       IN FORMAT(18(1X,I3)).                                       *
C *                                                                   *
C *            THIS DATA CARD IS READ FROM THE CARD-INPUT CHANNEL OF  *
C *       THE INSTALLATION WHICH IS SET IN THE MAIN PROGRAM BY A FOR- *
C *       TRAN STATEMENT(CARD AAKP0431) OF THE TYPE 'IREAD=5'.        *
C *                                                                   *
C *            NOTE THAT THE VALUE OF 'IREAD' READ HERE REDEFINES THE *
C *       INPUT CHANNEL FOR THE REST OF THE INPUT DATA WHICH FOLLOWS. *
C *                                                                   *
C *   (2) FOR EACH CASE(ICASE=1,NCASES) THE FOLLOWING IS READ NOW.    *
C *    :                                                              *
C *    :..(A) KA,ISPIN,MAXOR,IPUNCH,IBUG1,IBUG3,NBUG6                 *
C *    :      IN FORMAT(18(1X,I3)).                                   *
C *    :                                                              *
C *    :           HERE 'MAXOR' IS THE TOTAL NUMBER OF THE SHELLS     *
C *    :      INVOLVED IN CONFIGURATIONS DEFINING BOTH THE INITIAL-   *
C *    :      AND/OR THE FINAL-STATES. THE MAXIMUM ALLOWED VALUE      *
C *    :      OF MAXOR IS 21.                                         *
C *    :                                                              *
C *    :           THE VALUES FOR NO PUNCHING AND NO DEBUGGING ARE    *
C *    :      A ZERO FOR EACH OF IPUNCH,IBIG1,IBUG3, AND NBUG6.       *
C *    :      THUS, WHEN THESE ZERO VALUES APPLY, ONLY THE FIRST      *
C *    :      THREE VARIABLES NEED BE PUNCHED, BECAUSE A BLANK CHAR-  *
C *    :      ACTER IS READ AS A ZERO.                                *
C *    :                                                              *
C *    :..(B) IAJCMP(I),I=1,MAXOR                                     *
C *    :      IN FORMAT(18(1X,A3)).                                   *
C *    :                                                              *
C *    :           HERE IAJCMP(I) IS THE THREE CHARACTER ALPHANUMERIC *
C *    :      LABEL (SUCH AS 2P1, WHERE '1' IS JUST AS A SUBSCRIPT)   *
C *    :      OF THE I-TH SHELL.                                      *
C *    :                                                              *
C *    :           IT MAY BE NOTED HERE THAT THESE LABELS NEED NOT    *
C *    :      ALWAYS HAVE A THIRD CHARACTER, DENOTING THE SUBSCRIPT   *
C *    :      OF THE SHELL, AS A NON-BLANK CHARACTER. IF FOR A SHELL  *
C *    :      A SUBSCRIPT IS REDUNDANT, IT MAY BE A BLANK CHARACTER,  *
C *    :      SUCH AS IN '2P '. ALTERNATIVELY, IN A CASE LIKE THIS,   *
C *    :      ONE CAN ASWELL RIGHT-ADJUST THE LABEL AS ' 2P'.         *
C *    :                                                              *
C *    :..(C) JAJCMP(I,1),JAJCMP(I,2),JAJCMP(I,3),I=1,MAXOR           *
C *    :      IN FORMAT(18(1X,3A1)).                                  *
C *    :                                                              *
C *    :           HERE JAJCMP(I,1),JAJCMP(I,2),AND JAJCMP(I,3) ARE   *
C *    :      THE INDIVIDUAL CHARACTERS (SUCH AS '2', 'P', AND '1'    *
C *    :      IN 2P1) OF THE THREE CHARACTER LABEL OF THE I-TH SHELL. *
C *    :      THESE ARE USED TO DETERMINE THE ARRAY NJCOMP(I) AND THE *
C *    :      ARRAY LJCOMP(I).                                        *
C *    :                                                              *
C *    :           IT MAY BE NOTED HERE THAT IN (C) WE ACTUALLY READ  *
C *    :      A DUPLICATE OF THE CARD READ IN (B) ABOVE. SUCH A DUP-  *
C *    :      LICATION CAN BE AVOIDED BY USING A FEATURE LIKE REREAD  *
C *    :      OR BACKSPACE, IF THAT IS AVAILABLE AT THE INSTALLATION  *
C *    :      WHERE THIS PROGRAM IS USED.                             *
C *    :                                                              *
C *    :..(D) LOCATE(I),I=1,MAXOR                                     *
C *    :      IN FORMAT(18(1X,I3)).                                   *
C *    :                                                              *
C *    :           THIS CARD IS READ ONLY IF 'IPUNCH' READ ABOVE IN   *
C *    :      (A) IS NOT ZERO, LOCATE(I) DENOTING THE EXTERNAL INDEX  *
C *    :      OF THE I-TH SHELL WITH WHICH IT WILL BE REFERRED TO     *
C *    :      IN THE PUNCHED INFORMATION.                             *
C *    :                                                              *
C *    :..(E)      WE NOW READ THE FOLLOWING (IN THE SUBROUTINE       *
C *    :   :  GSTATE) FOR THE INITIAL-STATE CONSIDERED.               *
C *    :   :                                                          *
C *    :   :..(E1) MCFG                                               *
C *    :   :       IN FORMAT(18(1X,I3)).                              *
C *    :   :                                                          *
C *    :   :            'MCFG' IS THE TOTAL NUMBER OF CONFIGURATIONS  *
C *    :   :       IN THE INITIAL-STATE, ITS MAXIMUM ALLOWED VALUE    *
C *    :   :       BEING 30.                                          *
C *    :   :                                                          *
C *    :   :..(E2) MOCCSH(I),I=1,MCFG                                 *
C *    :   :       IN FORMAT(18(1X,I3)).                              *
C *    :   :                                                          *
C *    :   :            MOCCSH(I) IS THE NUMBER OF OCCUPIED SHELLS IN *
C *    :   :       THE I-TH INITIAL-STATE CONFIGURATION. THE MAXIMUM  *
C *    :   :       ALLOWED VALUE OF ANY MOCCSH(I) IS 10.              *
C *    :   :                                                          *
C *    :   :..(E3)      FOR EACH OF THE INITIAL-STATE CONFIGURATIONS  *
C *    :   :   :   (I=1,MCFG) WE NOW READ THE FOLLOWING:              *
C *    :   :   :                                                      *
C *    :   :   :...(E3.1) MMCORB(J,I),MELCSH(J,I),J=1,MOCCSH(I)       *
C *    :   :   :          IN FORMAT(5(1X,A3,1H(,I2,1H))).             *
C *    :   :   :                                                      *
C *    :   :   :               HERE MMCORB(J,I) IS THE LABEL (SUCH    *
C *    :   :   :          AS 2P1) OF THE J-TH OCCUPIED SHELL IN       *
C *    :   :   :          THE I-TH INITIAL-STATE CONFIGURATION AND    *
C *    :   :   :          MELCSH(J,I) IS THE NUMBER OF ELECTRONS      *
C *    :   :   :          IN THIS SHELL.                              *
C *    :   :   :                                                      *
C *    :   :   :               THE ARRAY MMCORB(J,I) IS USED IN THE   *
C *    :   :   :          PROGRAM TO DETERMINE THE ARRAY MOCORB(J,I). *
C *    :   :   :                                                      *
C *    :   :   :...(E3.2) M1QNRD(J,3,I),M1QN(J),M1QNRD(J,1,I),J=1,M   *
C *    :   :   :          IN FORMAT(9(1X,4X,I1,A1,I1)),               *
C *    :   :   :          WHERE M=2*MOCCSH(I)-1                       *
C *    :   :   :                                                      *
C *    :   :   :               HERE WE READ THE COUPLING OF THE CON-  *
C *    :   :   :          FIGURATION JUST READ ABOVE IN (E3.1). FIRST *
C *    :   :   :          THE STATES OF THE EACH OCCUPIED SHELLS AND  *
C *    :   :   :          THEN THE STATES ARISING OUT OF THE COUPL-   *
C *    :   :   :          ING OF THESE SHELL-STATES FROM LEFT TO      *
C *    :   :   :          RIGHT ARE READ, EACH IN TERMS OF THREE VA-  *
C *    :   :   :          RIABLES: INTEGER M1QNRD(J,3,I), ALPHAMERIC  *
C *    :   :   :          M1QN(J), AND INTEGER M1QNRD(J,1,I).         *
C *    :   :   :                                                      *
C *    :   :   :               M1QNRD(J,3,I) REPRESENTS THE MULTIPLI- *
C *    :   :   :          CITY (2S+1 VALUE, S BEING THE SPIN QUANTUM  *
C *    :   :   :          NUMBER), M1QNRD(J,1,I) REPRESENTS THE SENI- *
C *    :   :   :          ORITY, AND M1QN(J) REPRESENTS THE SYMMETRY  *
C *    :   :   :          (SUCH AS 'S','P', ETC.) OF THE J-TH INTER-  *
C *    :   :   :          MEDIATE STATE OF THE COUPLING SCHEME READ.  *
C *    :   :   :          THE VALUES OF THE L QUANTUM NUMBER OF THESE *
C *    :   :   :          INDIVIDUAL STATES ARE EVALUATED FROM THE    *
C *    :   :   :          THE SYMBOL M1QN OF THE STATES AND THESE     *
C *    :   :   :          ARE STORED IN M1QNRD(J,2,I).                *
C *    :   :   :                                                      *
C *    :   :   :..................................................... *
C *    :   :                                                          *
C *    :   :......................................................... *
C *    :                                                              *
C *    :                                                              *
C *    :..(F)      WE NOW READ (IN THE SUBROUTINE ESTATE) THE DATA    *
C *    :   :  AS BELOW FOR THE FINAL-STATE CONSIDERED. THIS DATA IS   *
C *    :   :  SIMILAR TO THE ONE READ IN (E) ABOVE FOR THE INITIAL    *
C *    :   :  STATE AND THEREFORE THE FULL EXPLANATION IS NOT RE-     *
C *    :   :  PEATED BELOW. HOWEVER, IT MAY BE REMARKED HERE THAT     *
C *    :   :  THE VARIABLES KCFG, KOCCSH, KKCORB, KELCSH, KOCORB,     *
C *    :   :  K1QNRD, AND K1QN DEALT BELOW HAVE THE SIMILAR MEANING   *
C *    :   :  AND USEFULNESS AS THE VARIABLES MCFG, MOCCSH, MMCORB,   *
C *    :   :  MELCSH, MOCORB, M1QNRD, AND M1QN FOR THE INITIAL        *
C *    :   :  STATE CONSIDERED IN (E) ABOVE. IT MAY ALSO BE NOTED     *
C *    :   :  THAT THE MAXIMIM VALUES ALLOWED FOR KCFG AND ANY OF     *
C *    :   :  OF KOCCSH(I)'S ARE SAME AS THOSE OF MCFG AND ANY OF     *
C *    :   :  MOCCSH(I)'S IN (E) ABOVE.                               *
C *    :   :                                                          *
C *    :   :..(F1) KCFG                                               *
C *    :   :       IN FORMAT(18(1X,I3)).                              *
C *    :   :                                                          *
C *    :   :..(F2) KOCCSH(I),I=1,KCFG                                 *
C *    :   :       IN FORMAT(18(1X,I3)).                              *
C *    :   :                                                          *
C *    :   :..(F3)      FOR EACH OF THE FINAL-STATE CONFIGURATIONS    *
C *    :   :   :   (I=1,KCFG) WE NOW READ THE FOLLOWING:              *
C *    :   :   :                                                      *
C *    :   :   :...(F3.1) KKCORB(J,I),KELCSH(J,I),J=1,KOCCSH(I)       *
C *    :   :   :          IN FORMAT(5(1X,A3,1H(,I2,1H))).             *
C *    :   :   :                                                      *
C *    :   :   :...(F3.2) K1QNRD(J,3,I),K1QN(J),K1QNRD(J,1,I),J=1,M   *
C *    :   :   :          IN FORMAT(9(1X,4X,I1,A1,I1)),               *
C *    :   :   :          WHERE M=2*KOCCSH(I)-1                       *
C *    :   :   :                                                      *
C *    :   :   :..................................................... *
C *    :   :                                                          *
C *    :   :......................................................... *
C *    :                                                              *
C *    :............................................................. *
C *                                                                   *
C  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C
C-----------------------------------------------------------------------
C
C *** M A I N
C
C-----------------------------------------------------------------------
C
c
      program main external bldata
c
c     IMPLICIT REAL*8(A-H,O-Z)
      DIMENSION NJCOMP(21),LJCOMP(21),VSHELL(20)
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6,IBUG7,IBUG8,IBUG9
      COMMON/DIMEN/KFL1,KFL2,KFL3,KFL4,KFL5,KFL6
      COMMON/INFORM/ IREAD,IWRITE,IPUNCH,icheck
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3),
     1J1QN2(19,3),IJFUL(10),JIFUL(10)
      COMMON/NBUG/NBUG1,NBUG2,NBUG3,NBUG4,NBUG5,NBUG6,NBUG7,NBUG8,NBUG9
      COMMON/STATEM/MOCCSH(30),KOCCSH(30),MOCORB(10,30),KOCORB(10,30),
     1MELCSH(10,30),KELCSH(10,30),M1QNRD(19,3,30),K1QNRD(19,3,30),MAXOR
     2,MMCORB(10,30),KKCORB(10,30),IAJCMP(21),LOCATE(21),JAJCMP(21,3)
      COMMON/SYMM/LANK,LSYM(10)
      COMMON/NVALUE/NVAL(9)
      COMMON/SPINP/ISPINT,ISPINS
      COMMON/PARAM/ZERO,EPSILO,HALF,ONE
 615  format(/16h DATA CHECKING: ,
     1/16H DATA CHECKING: ,23HTOTAL NUMBER OF ERRORS=,I3,
     2/16H DATA CHECKING: /16H DATA CHECKING:
     3,27HPROCEEDING TO THE NEXT CASE/16H DATA CHECKING:               )
    1 FORMAT(18(1X,I3))
    3 FORMAT(31X,F12.8,I5,I5,5X,1H<,A3,2H//,A1,1H(,I1,3H)//,A3,2H >)
    5 FORMAT(F13.8,3HRI(,2I2,1H,,2I2,1H))
   55 FORMAT(1H*)
  555 FORMAT( ///32X,40HNUMBER OF TERMS IN THE ABOVE SUMMATIONS=,I3)
    6 FORMAT(//9H KA     =,I3,38H (ORDER OF SPACE DEPENDENT TENSOR)    /
     1         9H KB     =,I3,38H (ORDER OF SPIN  DEPENDENT TENSOR)    /
     1         9H ISPIN  =,I3,38H (=0 ,SPACE-DEPENDENT SINGLE TENSOR   /
     1         9H         ,3X,38H  =1 ,SPIN- DEPENDENT SINGLE TENSOR   /
     1         9H         ,3X,38H  =2 ,SIMPLE PRODUCT OF ABOVE TENSORS)/
     2         9H IPUNCH =,I3,38H (PUNCHED OUTPUT UNIT)                /
     3         9H IBUG1  =,I3,38H (DEBUG FOR COEFF. OF FP IN CFP PROG.)/
     4         9H IBUG3  =,I3,38H (DEBUG IN RECOUPLING PACKAGE)        /
     5         9H NBUG6  =,I3,38H (DEBUG IN TENSOR PACKAGE)            )
    7 FORMAT(1H1,37X,29H ********************    CASE,I2,25H     ********
     1*************)
    8 FORMAT(/////9H NCASES =,I3,33H (THE NUMBER OF CASES CONSIDERED)/
     1            9H IREAD  =,I3,33H (DATA INPUT UNIT)               /
     2            9H IWRITE =,I3,33H (PRINTED OUTPUT UNIT)           //)
    9 FORMAT(18(1X,A3))
   23 FORMAT(/10H THERE ARE,I3,21H ORBITALS AS FOLLOWS://5X,9HORBITALS:,
     1 20X,21(1X,A3))
   11 FORMAT(18(1X,3A1))
   24 FORMAT(5X,11HN,L VALUES: ,18X,21(2X,2I1))
  241 FORMAT(5X,29HORDER USED IN PUNCHED OUTPUT: ,21(1X,I3))
    2 FORMAT(1H1,41X,3HSUM/19H < INITIAL STATE //,A1,1H(,I1,78H)// FINAL
     1 STATE > = OVER  COEFF * WEIGHT(INITIAL,I) * WEIGHT(FINAL,J) * < N
     2L//,A1,1H(,I1,8H)//N'L'>)
    4 FORMAT(             42X,3HI,J///36X,28HCOEFF      I    J     < NL//
     1,A1,1H(,I1,8H)//N'L'>//)
   33 FORMAT(31X,F12.8,I5,I5,5X,1H<,A3,1H/,A1,1H(,I1,2H).,A1,1H(,I1,2H)/
     1,A3,2H >)
   22 FORMAT(1H1,44X,3HSUM/18H < INITIAL STATE /,A1,1H(,I1,2H).,A1,1H(,
     1I1,76H)/ FINAL STATE > = OVER COEFF  * WEIGHT(INITIAL,I) * WEIGHT(
     2FINAL,J) * < NL/,A1,1H(,I1,2H).,A1,1H(,I1,7H)/N'L'>)
   44 FORMAT(             45X,3HI,J///36X,27HCOEFF      I    J     < NL/
     1,A1,1H(,I1,2H).,A1,1H(,I1,7H)/N'L'>//)
c
c     set input and output channels
c
      zone readf(150,1,stderror)
      zone writef(150,1,stderror)
      zone punchf(150,1,stderror)
      call zassign(readf,1)
      call zassign(writef,7)
      call zassign(punchf,8)
      call open(readf,4,'readf',0)
      call open(writef,4,'writef',0)
      call open(punchf,4,'punchf',0)
      iread=1
c
      KFL1=0
      READ(IREAD,1) NCASES,IREAD,IWRITE
C
C      PRINT OUT TABLE OF TERMS
C
      CALL TMSOUT
C
C     READ IN THE NUMBER OF DATA SETS AND THE GENERAL DATA
C
      WRITE(IWRITE,8) NCASES,IREAD,IWRITE
      DO 1000 ICASE=1,NCASES
      WRITE(IWRITE,7) ICASE
      READ(IREAD,1) KA,kb,ISPIN,MAXOR,IPUNCH,IBUG1,IBUG3,NBUG6
      WRITE(IWRITE,6) KA,kb,ISPIN,IPUNCH,IBUG1,IBUG3,NBUG6
      READ(IREAD,9) (IAJCMP(I),I=1,MAXOR)
      WRITE(IWRITE,23) MAXOR ,(IAJCMP(I),I=1,MAXOR )
      READ(IREAD,11)((JAJCMP(I,J),J=1,3),I=1,MAXOR )
      DO 60 I=1,MAXOR
      J=3
      IF(JAJCMP(I,1).NE.LANK) J=2
      DO 59 JJ=1,9
      IF(JAJCMP(I,J)  .EQ.LSYM(JJ)) LJCOMP(I)=JJ-1
   59 IF(JAJCMP(I,J-1).EQ.NVAL(JJ)) NJCOMP(I)=JJ
   60 CONTINUE
      WRITE(IWRITE,24) (NJCOMP(I),LJCOMP(I),I=1,MAXOR)
      IF(IPUNCH.EQ.0) GO TO 65
      READ(IREAD,1)    (LOCATE(I),I=1,MAXOR)
      WRITE(IWRITE,241)(LOCATE(I),I=1,MAXOR)
  65  CONTINUE
C
C     READ IN INITIAL STATE CONFIGURATIONS ETC. AND PRINT THEM.
C
      CALL GSTATE(MCFG)
C
C     READ IN FINAL STATE CONFIGURATIONS ETC. AND PRINT THEM.
C
      CALL ESTATE(KCFG)
C
C     IF ERROR WAS FOUND IN THE INPUT DATA, JUMP TO THE NEXT CASE
C
      IF(ICHECK.EQ.0) GO TO 616
      WRITE(IWRITE,615) ICHECK
      GO TO 1000
C
C     CALCULATE THE ELEMENTS OF VSHELL
C
 615  IF(ISPIN.EQ.0) WRITE(IWRITE,2) ISPINT,KA,ISPINT,KA
      IF(ISPIN.EQ.0) WRITE(IWRITE,4) ISPINT,KA
      IF(ISPIN.EQ.1) WRITE(IWRITE,2) ISPINS,KB,ISPINS,KB
      IF(ISPIN.EQ.1) WRITE(IWRITE,4) ISPINS,KB
      IF(ISPIN.EQ.2)WRITE(IWRITE,22) ISPINT,KA,ISPINS,KB
     1                              ,ISPINT,KA,ISPINS,KB
      IF(ISPIN.EQ.2)WRITE(IWRITE,44) ISPINT,KA,ISPINS,KB
      NTERMS=0
      DO 10 JI=1,MCFG
      DO 20 JF=1,KCFG
C
C     SET UP THE OCCUPATION AND COUPLING ARRAYS
C
      CALL SETUPE(JI,JF,NJCOMP,LJCOMP)
C
C     CALL THE MAIN ROUTINE - TENSOR
C
      CALL TENSOR(KA,kb,ISPIN,IRHO,ISIG,VSHELL)
      IF(IRHO.EQ.ISIG) GO TO 30
      IF(abs(VSHELL(1)).LE.EPSILO) GO TO 20
      JRHO=IJFUL(IRHO)
      JSIG=IJFUL(ISIG)
      KRHO=JIFUL(IRHO)
      KSIG=JIFUL(ISIG)
      IF(ISPIN.EQ.0) WRITE(IWRITE,3) VSHELL(1),JI,JF,IAJCMP(JRHO),ISPINT
     1,ka,IAJCMP(JSIG)
      IF(ISPIN.NE.1) WRITE(IWRITE,3) VSHELL(1),JI,JF,IAJCMP(JRHO),ISPINS
     1,kb,IAJCMP(JSIG)
      if(ispin.eq.2)write(iwrite,33) vshell(1),j1,jf,iajcmp(jrho),ispint
     1,ka,ispins,kb,iajcmp(jsig)
C
C     PRINT OUT THE RESULTS AND OUTPUT THEM ON CHANNEL IPUNCH IF IPUNCH
C     IS NOT EQUAL TO ZERO.
C
      NTERMS=NTERMS+1
      IF(IPUNCH.NE.0) WRITE(IPUNCH,5) VSHELL(1),KRHO,JI,KSIG,JF
      GO TO 20
   30 DO 40 IS=1,IHSH
      IF(abs(VSHELL(IS)).LE.EPSILO)GO TO 40
      JRHO=IJFUL(IS)
      KRHO=JIFUL(IS)
      IF(ISPIN.EQ.0) WRITE(IWRITE,3)VSHELL(IS),JI,JF,IAJCMP(JRHO),ISPINT
     1,KA,IAJCMP(JRHO)
      IF(ISPIN.NE.1) WRITE(IWRITE,3)VSHELL(IS),JI,JF,IAJCMP(JRHO),ISPINS
     1,kb,IAJCMP(JRHO)
      if(ispin.eq.2)write(iwrite,33)vshell(is),j1,jf,iajcmp(jrho),ispint
     1,ka,ispins,kb,iajcmp(jrho)
      NTERMS=NTERMS+1
      IF(IPUNCH.NE.0) WRITE(IPUNCH,5) VSHELL(IS),KRHO,JI,KRHO,JF
   40 CONTINUE
   20 CONTINUE
   10 CONTINUE
      WRITE(IWRITE,555) NTERMS
      IF(IPUNCH.NE.0) WRITE(IPUNCH,55)
 1000 CONTINUE
      RETURN
      END
c 
c-------------------------------------------------------------------
c                             t e n s o r
c-------------------------------------------------------------------
c
      SUBROUTINE TENSOR(KA,kb,ISPIN,IRHO,ISIG,VSHELL)
C
C     W. D. ROBB   -   NOVEMBER 1971
C
C **********************************************************************
C
C     A ROUTINE FOR THE EVALUATION OF ANGULAR AND SPIN FACTORS IN THE
C     REDUCED MATRIX ELEMENT OF ANY ONE-ELECTRON TENSOR OPERATOR BETWEEN
C     ARBITRARILY COUPLED L-S CONFIGURATIONS
C
C***********************************************************************
C
C     **  NOTE THAT THE DEFINITIONS OF TENSOR OPERATORS USED ARE THOSE
C     OF FANO AND RACAH, IRREDUCIBLE TENSORIAL SETS, ACADEMIC PRESS 1959
C
C***********************************************************************
C
C                       DIMENSION STATEMENTS
C
c     IMPLICIT REAL*8(A-H,O-Z)
      DIMENSION L6(40),L7(80),L8(40),LW(6,20),J2STO(10,3),J3STO(10,3),JM
     1EM(5),VSHELL(20)
C
C                       COMMON BLOCKS
C
      COMMON/COUPLE/MN1,M0,J1(40),J2(12,3),J3(12,3)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH,icheck
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH1(10),NOSH2(10),J1QN1(19,3)
     1,J1QN2(19,3),IJFUL(10),JIFUL(10)
      COMMON/NBUG/NBUG1,NBUG2,NBUG3,NBUG4,NBUG5,NBUG6,NBUG7,NBUG8,NBUG9
      common/terms/nrows,itab(14),jtab(14),ntab(219),ntab1(10,5),
     1      ntab2(11,5)
      COMMON/PARAM/ZERO,EPSILO,HALF,ONE
C
  203 FORMAT(//7H NJ,LJ ,10(I6,I3))
  204 FORMAT(//6H NOSH ,10I4)
  205 FORMAT(//6H J1QN ,30I3)
  208 FORMAT(// 23H PARENT TERMS NOT FOUND//)
  209 FORMAT(//3H J1)
  210 FORMAT(24I5)
  211 FORMAT(24H J2                   J3)
  212 FORMAT(3I5,I10,2I5)
  213 FORMAT(///26H ORBITAL RECOUPLING COEFF=,E20.8)
  214 FORMAT(///23H SPIN RECOUPLING COEFF=,E20.8//)
  215 FORMAT(/28H THE CONTRIBUTION FROM SHELL,I2,3H IS,F15.8)
  216  FORMAT(//21H THIS IS NOT A PARENT)
  217 FORMAT(///8H VSHELL=,8F15.8)
  218 FORMAT(//24H FRACTIONAL PARENT TERMS,I2)
  219 FORMAT(//49H THE CONTRIBUTION FROM FRACTIONAL PARENTAGE TERMS,I2,
     1 3H IS,F15.8)
  220 FORMAT(//6H SHELL,I2)
  313 FORMAT(19H SPECTATOR SUBSHELL,I3,69H HAS DIFFERENT QUANTUM NUMBERS
     1 ON THE TWO SIDES OF THE MATRIX ELEMENT/)
C
      AJF=ONE
      RML = ZERO
      RPL = ZERO
      NTOT=0
      DO 100 IS=1,IHSH
      VSHELL(IS)=ZERO
  100 CONTINUE
      IHSHP1=IHSH+1
      I2HSH=IHSH*2-1
C
C     PRINT OUT THE OCCUPATION AND COUPLING ARRAYS
C
      IF(NBUG6-1) 101,2,101
    2 WRITE(IWRITE,203) (NJ(I),LJ(I),I=1,IHSH)
      WRITE(IWRITE,204)(NOSH1(J),J=1,IHSH)
      WRITE(IWRITE,204)(NOSH2(J),J=1,IHSH)
      WRITE(IWRITE,205) ((J1QN1(J,K),K=1,3),J=1,I2HSH)
      WRITE(IWRITE,205) ((J1QN2(J,K),K=1,3),J=1,I2HSH)
C
C      TEST FOR AT MOST ONE ELECTRON DIFFERENCE IN CONFIGURATIONS
C
  101 NOSHUM=0
      DO 102 K=1,IHSH
      NOSHUM=NOSHUM+IABS(NOSH1(K)-NOSH2(K))
  102 CONTINUE
      IF(NOSHUM-2) 103,103,183
C
C     TEST FOR TRIANGLE RELATION BETWEEN KA AND TOTAL ANGULAR MOMENTA
C
  103 IF(ISPIN.EQ.0) GO TO 198
      K=3
      kc=kb
      if(ispin.eq.2) goto 199
      IF(J1QN1(I2HSH,2).NE.J1QN2(I2HSH,2)) GO TO 183
      GO TO 199
  198 K=2
      kc=ka
      IF(J1QN1(I2HSH,3).NE.J1QN2(I2HSH,3)) GO TO 183
  199 LB=J1QN1(I2HSH,K)-1
      NB=J1QN2(I2HSH,K)-1
      mb=kc+kc
      BTST=TRITST(MB,LB,NB)
      IF(BTST.GT.EPSILO) GO TO 183
      if(k.eq.2.or.ispin.lt.2) goto 104
      k=2
      kc=ka
      goto 199
 104  continue
C
C      DETERMINE IRHO AND ISIGMA, THE NUMBERS OF THE OCCUPIED SHELLS
C
      IRHO=0
      ISIG=0
      DO 105 J=1,IHSH
      NX=NOSH1(J)-NOSH2(J)+2
      GO TO (107,105,106),NX
  107 ISIG=J
      GO TO 105
  106 IRHO=J
  105 CONTINUE
      IF(IRHO.NE.0 ) GO TO 108
      IRHO=1
      ISIG=1
  108 MEMR = IRHO
C
C     THE BEGINNING OF THE LOOP OVER ALL SHELLS
C
  109 IF(IRHO.NE.ISIG) GO TO 309
      IF(NBUG6-1) 309,4,309
    4 WRITE(IWRITE,220) IRHO
  309 NTOT=NTOT+1
      L1=LJ(IRHO)+1
      L2=LJ(ISIG)+1
      AJF=DFLOAT(J1QN1(I2HSH,2))/DFLOAT(2*LJ(IRHO)+1)
      if(ispin.eq.1) ajf=float(j1qn1(i2hsh,3))*half
      if(ispin.eq.2) ajf=ajf*float(j1qn1(i2hsh,3))*half
C
C     CHECK THE DIAGONAL CHARACTER OF THE QUANTUM NUMBERS OF SPACTATOR
C     SHELLS
C
      DO 255 J=1,IHSH
      IF(J.EQ.IRHO.OR.J.EQ.ISIG) GO TO 255
      DO 256 KK=1,3
      IF(J1QN1(J,KK).NE.J1QN2(J,KK)) GO TO 257
  256 CONTINUE
  255 CONTINUE
      GO TO 258
  257 IF(NBUG6.EQ.1) WRITE(IWRITE,313) J
      IF(IRHO.NE.ISIG) GO TO 190
      GO TO 189
  258 IF(IRHO-ISIG) 120,111,120
C
C     FIND THE PARENT TERMS GIVEN BY ALLOWED J VALUES IN NTAB WITH IRHO
C
  111 NELCTS=NOSH1(IRHO)
      K1=NTAB1(NELCTS,L1)
      KK1=ITAB(K1)
      DO 112 JJ1=1,KK1
      IJK1=3*(JJ1-1)+JTAB(K1)
      DO 113 K=2,3
      IJKK=IJK1+K
      IF(K.EQ.3) GO TO 114
      LA=NTAB(IJKK)
      MA=2*LJ(IRHO)+1
      NA=J1QN1(IRHO,K)
      GO TO 115
  114 LA=NTAB(IJKK)-1
      MA=1
      NA=J1QN1(IRHO,K)-1
  115 ATST=TRITST(LA,MA,NA)
      IF(ATST.GT.EPSILO) GO TO 116
      IF(K-3) 113,118,113
  116 JMEM(JJ1)=0
      GO TO 112
  118 JMEM(JJ1)=1
  113 CONTINUE
  112 CONTINUE
C
C     PARENTAGE CHECK
C
  120 IF(IRHO-ISIG) 121,127,121
  121 NELCTS=NOSH1(IRHO)
      K1=NTAB1(NELCTS,L1)
      NELCTS=NOSH2(ISIG)
      K2=NTAB1(NELCTS,L2)
      KK1=ITAB(K1)
      KK2=ITAB(K2)
      DO 122 JJ1=1,KK1
      IJK1=3*(JJ1-1)+JTAB(K1)
      DO 123 K=2,3
      IJKK=IJK1+K
      MSAM1=NTAB(IJKK)-J1QN2(IRHO,K)
      IF(MSAM1.NE.0) GO TO 122
      IF(K.EQ.3) GO TO 124
  123 CONTINUE
  122 CONTINUE
      IF(NBUG6-1) 192,7,192
    7 WRITE(IWRITE,208)
      GO TO 192
  124 DO 125 JJ2=1,KK2
      IJK2=3*(JJ2-1)+JTAB(K2)
      DO 126 K=2,3
      IJKK=IJK2+K
      MSAM2=NTAB(IJKK)-J1QN1(ISIG,K)
      IF(MSAM2.NE.0) GO TO 125
      IF(K.EQ.3) GO TO 127
  126 CONTINUE
  125 CONTINUE
      IF(NBUG6-1) 192,8,192
    8 WRITE(IWRITE,208)
      GO TO 192
C
C     SET  J2  AND  J3 .  SAME FOR  L  AND  S
C
  127 M1=IHSH-2
      M2=2*M1+1
      M3=3*IHSH-1
      M4=M3+1
      M5=M3+2
      M10=M5+1
      MN1=M10+1
      J2(1,1)=M10
      J2(1,2)=MN1
      J2(1,3)=M5
      J2(2,1)=IRHO
      J2(2,2)=M5
      J2(2,3)=M3
      J3(1,1)=ISIG
      J3(1,2)=M10
      J3(1,3)=M4
      IF(IRHO-1) 128,129,128
  129 J2(3,1)=M3
      GO TO 130
  128 J2(3,1)=1
  130 IF(IRHO-2) 131,132,131
  132 J2(3,2)=M3
      GO TO 133
  131 J2(3,2)=2
  133 J2(3,3)=IHSHP1
      IF(ISIG-1) 134,135,134
  135 J3(2,1)=M4
      GO TO 136
  134 J3(2,1) = 1
  136 IF(ISIG-2) 137,138,137
  138 J3(2,2)=M4
      GO TO 139
  137 J3(2,2)=2
  139 J3(2,3)=2*IHSH
      IF(IHSH-3) 149,140,140
  140 DO 148 J=4,IHSHP1
      L=J-1
      J2(J,1)=M1+L
      J2(J,3)=M1+J
      J3(L,1)=M2+L
      J3(L,3)=M2+J
      IF(IRHO-L) 142,143,142
  143 J2(J,2)=M3
      GO TO 144
  142 J2(J,2)=L
  144 IF(ISIG-L) 145,146,145
  146 J3(L,2)=M4
       GO TO 148
  145 J3(L,2)=L
  148 CONTINUE
  149 M6=IHSHP1
      J3(M6,1)=M3-1
      J3(M6,2)=MN1
      J3(M6,3)=I2HSH
      IF(IHSH-1) 450,451,450
  451 J3(M6,1) = M4
      J3(M6,3) = M3
  450 DO 150 J=1,IHSHP1
      DO 151 K=1,3
      J2STO(J,K)=J2(J,K)
      J3STO(J,K)=J3(J,K)
  151 CONTINUE
  150 CONTINUE
C
C     RECOUPLING COEFFICIENTS
C
      JMEM1=J1QN1(IRHO,1)
      JMEM2=J1QN1(IRHO,2)
      JMEM3=J1QN1(IRHO,3)
      JMEM4=J1QN2(ISIG,1)
      JMEM5=J1QN2(ISIG,2)
      JMEM6=J1QN2(ISIG,3)
      IF(IRHO-ISIG) 154,152,154
C
C     BEGINNING OF LOOP OVER ALL PARENT TERMS
C
  152 JJ1=1
 1152 IF(NBUG6-1) 12,11,12
   11 WRITE(IWRITE,218) JJ1
   12 IF(JMEM(JJ1).EQ.1) GO TO 153
      IF(NBUG6-1) 186,16,186
   16 WRITE(IWRITE,216)
      GO TO 186
  153 IJK1=3*(JJ1-1)+JTAB(K1)
      NI1=NTAB(IJK1+1)
      NI2=NTAB(IJK1+2)
      NI3=NTAB(IJK1+3)
      J1QN2(IRHO,1)=NI1
      J1QN1(ISIG,1)=NI1
      J1QN2(IRHO,2)=NI2
      J1QN1(ISIG,2)=NI2
      J1QN2(IRHO,3)=NI3
      J1QN1(ISIG,3)=NI3
  154 K=2
      M7=M3-IHSH
      M9=M7+1
      M11=M3-1
      M12=IHSH-1
      RECUPS=ONE
      M0=M6+1
C
C     SET UP THE J1 ARRAY FOR THE ANGULAR AND SPIN RECOUPLING
C     COEFFICIENTS
C
  155 IF(K-3) 156,157,157
  156 J1(M5)=2*LJ(IRHO)+1
      J1(M10)=2*LJ(ISIG)+1
      J1(MN1)=2*KA+1
      IF(ISPIN.eq.1) J1(MN1)=1
      J1(M3)=JMEM2
      J1(M4)=JMEM5
      IF(IRHO.EQ.ISIG) GO TO 158
      J1(M3)=J1QN1(IRHO,K)
      J1(M4)=J1QN2(ISIG,K)
      GO TO 158
  157 J1(M5)=2
      J1(M10)=2
      j1(mn1)=kb+kb+1
      if(ispin.eq.1) j1(mn1)=1
      J1(M3)=JMEM3
      J1(M4)=JMEM6
      IF(IRHO.EQ.ISIG) GO TO 158
      J1(M3)=J1QN1(IRHO,K)
      J1(M4)=J1QN2(ISIG,K)
  158 DO 161 J=1,IHSH
      IF(IRHO-J) 160,159,160
  159 J1(J)=J1QN2(IRHO,K )
      GO TO 161
  160 J1(J)=J1QN1(J,K)
  161 CONTINUE
      IF(IHSH.EQ.1) GO TO 197
      DO 162 J=M6,M7
      J1(J)=J1QN1(J,K)
  162 CONTINUE
      DO 163 J=M9,M11
      JM12=J-M12
      J1(J)=J1QN2(JM12,K)
  163 CONTINUE
C
C     PRINT OUT THE J1,J2 AND J3 ARRAYS
C
  197 IF(NBUG6-1) 304,9,304
    9 IF(K-3) 165,164,164
  165 IF(NBUG6-1) 304,17,304
   17 WRITE(IWRITE,209)
      WRITE(IWRITE,210) (J1(J),J=1,MN1)
      WRITE(IWRITE,211)
      DO 166 I=1,IHSHP1
      WRITE(IWRITE,212) ((J2(I,J),J=1,3),(J3(I,J),J=1,3))
  166 CONTINUE
  304 CONTINUE
C
C     EVALUATE ORBITAL AND SPIN RECOUPLING COEFFICIENTS
C
  164 CALL NJSYM(J6C,J7C,J8C,JWC,L6,L7,L8,LW,RECUP)
      RECUPS=RECUPS*RECUP
      IF(K-3) 167,170,170
  167 IF(NBUG6-1) 305,18,305
   18 WRITE(IWRITE,213) RECUP
  305 CONTINUE
  170 K=K+1
      DO 168 J=1,IHSHP1
      DO 169 KK=1,3
      J2(J,KK)=J2STO(J,KK)
      J3(J,KK)=J3STO(J,KK)
  169 CONTINUE
  168 CONTINUE
      IF(K.EQ.3) GO TO 155
      IF(NBUG6-1) 306,19,306
   19 WRITE(IWRITE,214) RECUP
C
C     FIRST FRACTIONAL PARENTAGE COEFFICIENT
C
  306 LIJ=LJ(IRHO)
      COEFP=ONE
      IF(LIJ) 171,272,171
  171 N=NOSH1(IRHO)
      IV1=JMEM1
      IL1=(JMEM2-1)/2
      IS1= JMEM3
      IV2=J1QN2(IRHO,1)
      IL2=(J1QN2(IRHO,2)-1 )/2
      IS2=J1QN2(IRHO,3)
      CALL CFP(LIJ,N,IV1,IL1,IS1,IV2,IL2,IS2,COEFP)
      RECUPS=RECUPS*COEFP
  272 IF(IRHO-ISIG) 172,173,172
  172 IF(abs(RECUPS).LT.EPSILO)GO TO 183
C
C     SECOND FRACTIONAL PARENTAGE COEFFICIENT
C
  173 LIJ=LJ(ISIG)
      COEFP=ONE
      IF(LIJ) 176,176,174
  174 N=NOSH2(ISIG)
      IV1=JMEM4
      IL1=(JMEM5-1)/2
      IS1=JMEM6
      IV2=J1QN1(ISIG,1)
      IL2=(J1QN1(ISIG,2)-1)/2
      IS2=J1QN1(ISIG,3)
      CALL CFP(LIJ,N,IV1,IL1,IS1,IV2,IL2,IS2,COEFP)
  176 RECUPS=RECUPS*COEFP
      IF(abs(RECUPS).LT.EPSILO.AND.IRHO.NE.ISIG)GO TO 183
C
C     PERMUTATION FACTOR
C
      IDELP=2
      IF(IRHO-ISIG) 177,181,179
  177 JRHO = IRHO+1
      DO 178 J=JRHO,ISIG
  178 IDELP=IDELP+NOSH1(J)
      GO TO 181
  179 JSIG = ISIG+1
      DO 180 J=JSIG,IRHO
  180 IDELP = IDELP+NOSH2(J)
  181 MINUS=(-1)**IDELP
C
C     MULTIPLICATIVE FACTOR
C
      IF(IRHO-ISIG) 182,185,182
  182 SQRN=sqrt(float(NOSH1(IRHO)*NOSH2(ISIG)))
      VALML=SQRN*RECUPS*float(MINUS)
      GO TO 184
  183 VALML = ZERO
  184 RML = RML+VALML
C
C     RESULT STORED IN VSHELL
C
      IF(NTOT.EQ.0) NTOT=1
      VSHELL(NTOT)=RML*sqrt(AJF)
      GO TO 190
  185 VALUML=RECUPS
      IF(NBUG6.NE.0) WRITE(IWRITE,219) JJ1,VALUML
      RPL = RPL+VALUML
  186 IF(IRHO.NE.ISIG)GO TO 1186
      JJ1=JJ1+1
      IF(JJ1.LE.KK1)GO TO 1152
 1186 J1QN1(IRHO,1)=JMEM1
      J1QN1(IRHO,2)=JMEM2
      J1QN1(IRHO,3)=JMEM3
      J1QN2(ISIG,1)=JMEM4
      J1QN2(ISIG,2)=JMEM5
      J1QN2(ISIG,3)=JMEM6
      ANL=float(NOSH1(IRHO))*RPL
C
C      RESULTS STORED IN VSHELL
C
      IF(NTOT.EQ.0) NTOT=1
      VSHELL(NTOT)=ANL*sqrt(AJF)
      IF(NBUG6-1) 189,196,189
  196 WRITE(IWRITE,215) IRHO,ANL
  189 IRHO=IRHO+1
      ISIG=ISIG+1
      RPL=ZERO
      IF(IRHO-IHSH) 109,109,190
  190 IF(NBUG6-1) 192,13,192
   13 WRITE(IWRITE,217) (VSHELL(N),N=1,NTOT)
  192 RETURN
      END
c
c---------------------------------------------------------------------
c                          e s t a t e
c---------------------------------------------------------------------
c
      SUBROUTINE ESTATE(KCFG)
C
      COMMON/INFORM/ IREAD,IWRITE,IPUNCH,icheck
      COMMON/STATEM/MOCCSH(30),KOCCSH(30),MOCORB(10,30),KOCORB(10,30),
     1MELCSH(10,30),KELCSH(10,30),M1QNRD(19,3,30),K1QNRD(19,3,30),MAXOR
     2,MMCORB(10,30),KKCORB(10,30),IAJCMP(21),LOCATE(21),JAJCMP(21,3)
      DIMENSION K1QN(19)
      COMMON/SYMM/LANK,LSYM(10)
      COMMON/TERMS/NROWS,ITAB(14),JTAB(14),NTAB(219),NTAB1(10,5),
     1             NTAB2(11,5)
      DIMENSION LJCOMP(21)
C
C      DATA DEFINING THE EXCITED STATE IS READ IN AND PRINTED OUT.
C
 611  format(/16h DATA CHECKING: ,
     1/16H DATA CHECKING: ,12HERROR NUMBER,I2,15H, CONFIGURATION,I3,7H,
     2SHELL,A3,54H  :  WRONG ORDERING OF SHELLS
     3/16H DATA CHECKING:                                             )
 612  format(/16h DATA CHECKING: ,
     1/16H DATA CHECKING: ,12HERROR NUMBER,I2,15H, CONFIGURATION,I3,7H,
     2SHELL,A3,54H  :  NUMBER OF ELECTRONS MORE THAN ALLOWED
     3/16H DATA CHECKING:                                             )
 613  format(/16h DATA CHECKING: ,
     1/16H DATA CHECKING: ,12HERROR NUMBER,I2,15H, CONFIGURATION,I3,7H,
     2SHELL,A3,54H  :  STATE GENERATED IS WRONG
     3/16H DATA CHECKING:                                             )
 614  FORMAT(/16H DATA CHECKING:
     1/16H DATA CHECKING: ,12HERROR NUMBER,I2,15H, CONFIGURATION,I3,7H,
     2SHELL,A3,54H  :  COUPLING ON THIS SHELL IS WRONG
     3/16H DATA CHECKING:                                             )
    1 FORMAT(18(1X,I3))
    5 FORMAT(5(1X,A3,1H(,I2,1H)))
    6 FORMAT(9(1X,4X,I1,A1,I1))
   24 FORMAT(//29H FINAL STATE CONFIGURATIONS:-)
   25 FORMAT(/5H     ,I3,3H.  ,10(1X,A3,1H(,I2,1H)))
   26 FORMAT(11X,10(1X,4X,I1,A1,I1))
   27 FORMAT(22X,9(1X,4X,I1,A1,I1))
   29 FORMAT(  29H --------------------------  /)
      WRITE(IWRITE,24)
      WRITE(IWRITE,29)
      READ(IREAD,1) KCFG
      READ(IREAD,1) (KOCCSH(I),I=1,KCFG)
      DO 2 I=1,KCFG
      N=KOCCSH(I)
      READ(IREAD,5)        (KKCORB(J,I),KELCSH(J,I),J=1,N)
      WRITE(IWRITE,25) I,(KKCORB(J,I),KELCSH(J,I),J=1,N)
      DO 61 J=1,N
      DO 61 JJ=1,MAXOR
   61 IF(KKCORB(J,I).EQ.IAJCMP(JJ)) KOCORB(J,I)=JJ
      M=2*N-1
      N1=N+1
      READ(IREAD,6)    (K1QNRD(J,3,I),K1QN(J),K1QNRD(J,1,I),J=1,M)
      WRITE(IWRITE,26) (K1QNRD(J,3,I),K1QN(J),K1QNRD(J,1,I),J=1,N)
      IF(N.EQ.1) GO TO 64
      WRITE(IWRITE,27) (K1QNRD(J,3,I),K1QN(J),K1QNRD(J,1,I),J=N1,M)
   64 CONTINUE
      DO 62 J=1,M
      DO 62 JJ=1,10
   62 IF(K1QN(J).EQ.LSYM(JJ)) K1QNRD(J,2,I)=2*JJ-1
C
C --- CHECK THE INPUT DATA OF THE CONFIGURATIONS(COUPLINGS) FOR ERRORS,
C --- IF ANY. ICHECK = THE NUMBER OF THE ERRORS FOUND IN THE DATA.
C
      DO 1013 I=1,MAXOR
      J=3
      IF(JAJCMP(I,1).NE.LANK) J=2
      DO 1012 JJ=1,9
 1012 IF(JAJCMP(I,J).EQ.LSYM(JJ)) LJCOMP(I)=JJ-1
 1013 CONTINUE
      DO 1021 I=1,KCFG
      N=KOCCSH(I)
      JORB0=0
      DO 1020 J=1,N
      JORB=KOCORB(J,I)
      LORB=LJCOMP(JORB)
      NELACT=KELCSH(J,I)
      NELMAX=4*LORB+2
      IF(LORB.GE.3) NELMAX=2
      NROW=NTAB2(NELACT+1,LORB+1)
      NST=ITAB(NROW)
      JT1=JTAB(NROW)
      IS1=K1QNRD(J,3,I)
      IL1=K1QNRD(J,2,I)
      IV1=K1QNRD(J,1,I)
      IF(J.EQ.1) GO TO 1014
      J2=1
      J3=N+1
      IF(J.EQ.2) GO TO 1014
      J2=N+J-2
      J3=J2+1
C
C --- CHECKING THE ORDERING OF THE J-TH SHELL
C
 1014 IF(JORB.GT.JORB0) GO TO 1015
      ICHECK=ICHECK+1
      WRITE(IWRITE,611) ICHECK,I,IAJCMP(JORB)
C
C ---- CHECKING THE NUMBER OF ELECTRONS IN THE J-TH SHELL
C
 1015 IF(NELACT.LE.NELMAX) GO TO 1016
      ICHECK=ICHECK+1
      WRITE(IWRITE,612) ICHECK,I,IAJCMP(JORB)
      GO TO 1018
C
C --- CHECKING THE STATE PRODUCED BY THE J-TH SHELL
C
 1016 DO 1017 IST=1,NST
      IF(IS1.NE.NTAB(JT1+3)) GO TO 1017
      IF(IL1.NE.NTAB(JT1+2)) GO TO 1017
      IF(IV1.EQ.NTAB(JT1+1)) GO TO 1018
 1017 JT1=JT1+3
      ICHECK=ICHECK+1
      WRITE(IWRITE,613) ICHECK,I,IAJCMP(JORB)
C
C --- CHECK THE COUPLING ON THE J-TH SHELL
C
 1018 IF(J.EQ.1) GO TO 1020
      IS2=K1QNRD(J2,3,I)
      IL2=K1QNRD(J2,2,I)
      IS3=K1QNRD(J3,3,I)-1
      IL3=K1QNRD(J3,2,I)-1
      IF(IS3.GT.(IS1+IS2-2).OR.IS3.LT.(IABS(IS1-IS2))) GO TO 1019
      IF(IL3.GT.(IL1+IL2-2).OR.IL3.LT.(IABS(IL1-IL2))) GO TO 1019
      GO TO 1020
 1019 ICHECK=ICHECK+1
      WRITE(IWRITE,614) ICHECK,I,IAJCMP(JORB)
 1020 JORB0=JORB
 1021 CONTINUE
    2 CONTINUE
      RETURN
      END
c
c----------------------------------------------------------------------
c                             g s t a t e
c----------------------------------------------------------------------
c
      SUBROUTINE GSTATE(MCFG)
C
      COMMON/INFORM/ IREAD,IWRITE,IPUNCH,icheck
      COMMON/STATEM/MOCCSH(30),KOCCSH(30),MOCORB(10,30),KOCORB(10,30),
     1MELCSH(10,30),KELCSH(10,30),M1QNRD(19,3,30),K1QNRD(19,3,30),MAXOR
     2,MMCORB(10,30),KKCORB(10,30),IAJCMP(21),LOCATE(21),JAJCMP(21,3)
      DIMENSION M1QN(19)
      COMMON/SYMM/LANK,LSYM(10)
      COMMON/TERMS/NROWS,ITAB(14),JTAB(14),NTAB(219),NTAB1(10,5),
     1             NTAB2(11,5)
      DIMENSION LJCOMP(21)
c
c      data defining the ground state is read in and printed out.
c
 611  format(/16h DATA CHECKING: ,
     1/16H DATA CHECKING: ,12HERROR NUMBER,I2,15H, CONFIGURATION,I3,7H,
     2SHELL,A3,54H  :  WRONG ORDERING OF SHELLS
     3/16H DATA CHECKING:                                             )
 612  format(/16h DATA CHECKING: ,
     1/16H DATA CHECKING: ,12HERROR NUMBER,I2,15H, CONFIGURATION,I3,7H,
     2SHELL,A3,54H  :  NUMBER OF ELECTRONS MORE THAN ALLOWED
     3/16H DATA CHECKING:                                             )
 613  format(/16h DATA CHECKING: ,
     1/16H DATA CHECKING: ,12HERROR NUMBER,I2,15H, CONFIGURATION,I3,7H,
     2SHELL,A3,54H  :  STATE GENERATED IS WRONG
     3/16H DATA CHECKING:                                             )
 614  format(/16h DATA CHECKING: ,
     1/16H DATA CHECKING: ,12HERROR NUMBER,I2,15H, CONFIGURATION,I3,7H,
     2SHELL,A3,54H  :  COUPLING ON THIS SHELL IS WRONG
     3/16H DATA CHECKING:                                             )
    1 FORMAT(18(1X,I3))
    5 FORMAT(5(1X,A3,1H(,I2,1H)))
    6 FORMAT(9(1X,4X,I1,A1,I1))
   24 FORMAT(//31H INITIAL STATE CONFIGURATIONS:-)
   25 FORMAT(/5H     ,I3,3H.  ,10(1X,A3,1H(,I2,1H)))
   26 FORMAT(11X,10(1X,4X,I1,A1,I1))
   27 FORMAT(22X,9(1X,4X,I1,A1,I1))
   28 FORMAT(  31H ----------------------------  /)
      WRITE(IWRITE,24)
      WRITE(IWRITE,28)
      READ(IREAD,1) MCFG
      READ(IREAD,1) (MOCCSH(I),I=1,MCFG)
      DO 2 I=1,MCFG
      N=MOCCSH(I)
      READ(IREAD,5)        (MMCORB(J,I),MELCSH(J,I),J=1,N)
      WRITE(IWRITE,25) I,(MMCORB(J,I),MELCSH(J,I),J=1,N)
      DO 61 J=1,N
      DO 61 JJ=1,MAXOR
   61 IF(MMCORB(J,I).EQ.IAJCMP(JJ)) MOCORB(J,I)=JJ
      M=2*N-1
      N1=N+1
      READ(IREAD,6)    (M1QNRD(J,3,I),M1QN(J),M1QNRD(J,1,I),J=1,M)
      WRITE(IWRITE,26) (M1QNRD(J,3,I),M1QN(J),M1QNRD(J,1,I),J=1,N)
      IF(N.EQ.1) GO TO 64
      WRITE(IWRITE,27) (M1QNRD(J,3,I),M1QN(J),M1QNRD(J,1,I),J=N1,M)
   64 CONTINUE
      DO 62 J=1,M
      DO 62 JJ=1,10
   62 IF(M1QN(J).EQ.LSYM(JJ)) M1QNRD(J,2,I)=2*JJ-1
C
C --- CHECK THE INPUT DATA OF THE CONFIGURATIONS(COUPLINGS) FOR ERRORS,
C --- IF ANY. ICHECK = THE NUMBER OF THE ERRORS FOUND IN THE DATA.
C
      DO 1013 I=1,MAXOR
      J=3
      IF(JAJCMP(I,1).NE.LANK) J=2
      DO 1012 JJ=1,9
 1012 IF(JAJCMP(I,J).EQ.LSYM(JJ)) LJCOMP(I)=JJ-1
 1013 CONTINUE
      ICHECK=0
      DO 1021 I=1,MCFG
      N=MOCCSH(I)
      JORB0=0
      DO 1020 J=1,N
      JORB=MOCORB(J,I)
      LORB=LJCOMP(JORB)
      NELACT=MELCSH(J,I)
      NELMAX=4*LORB+2
      IF(LORB.GE.3) NELMAX=2
      NROW=NTAB2(NELACT+1,LORB+1)
      NST=ITAB(NROW)
      JT1=JTAB(NROW)
      IS1=M1QNRD(J,3,I)
      IL1=M1QNRD(J,2,I)
      IV1=M1QNRD(J,1,I)
      IF(J.EQ.1) GO TO 1014
      J2=1
      J3=N+1
      IF(J.EQ.2) GO TO 1014
      J2=N+J-2
      J3=J2+1
C
C --- CHECKING THE ORDERING OF THE J-TH SHELL
C
 1014 IF(JORB.GT.JORB0) GO TO 1015
      ICHECK=ICHECK+1
      WRITE(IWRITE,611) ICHECK,I,IAJCMP(JORB)
C
C ---- CHECKING THE NUMBER OF ELECTRONS IN THE J-TH SHELL
C
 1015 IF(NELACT.LE.NELMAX) GO TO 1016
      ICHECK=ICHECK+1
      WRITE(IWRITE,612) ICHECK,I,IAJCMP(JORB)
      GO TO 1018
C
C --- CHECKING THE STATE PRODUCED BY THE J-TH SHELL
C
 1016 DO 1017 IST=1,NST
      IF(IS1.NE.NTAB(JT1+3)) GO TO 1017
      IF(IL1.NE.NTAB(JT1+2)) GO TO 1017
      IF(IV1.EQ.NTAB(JT1+1)) GO TO 1018
 1017 JT1=JT1+3
      ICHECK=ICHECK+1
      WRITE(IWRITE,613) ICHECK,I,IAJCMP(JORB)
C
C --- CHECK THE COUPLING ON THE J-TH SHELL
C
 1018 IF(J.EQ.1) GO TO 1020
      IS2=M1QNRD(J2,3,I)
      IL2=M1QNRD(J2,2,I)
      IS3=M1QNRD(J3,3,I)-1
      IL3=M1QNRD(J3,2,I)-1
      IF(IS3.GT.(IS1+IS2-2).OR.IS3.LT.(IABS(IS1-IS2))) GO TO 1019
      IF(IL3.GT.(IL1+IL2-2).OR.IL3.LT.(IABS(IL1-IL2))) GO TO 1019
      GO TO 1020
 1019 ICHECK=ICHECK+1
      WRITE(IWRITE,614) ICHECK,I,IAJCMP(JORB)
 1020 JORB0=JORB
 1021 CONTINUE
    2 CONTINUE
      RETURN
      END
c
c-------------------------------------------------------------------
c                              s e t u p e
c-------------------------------------------------------------------
c
      SUBROUTINE SETUPE(JA,JB,NJCOMP,LJCOMP)
C
      DIMENSION NJCOMP(21),LJCOMP(21)
      COMMON/MEDEFN/IHSH,NJ(10),LJ(10),NOSH(10,2),J1QN(19,3,2),IJFUL(10)
     1,JIFUL(10)
      COMMON/STATEM/MOCCSH(30),KOCCSH(30),MOCORB(10,30),KOCORB(10,30),
     1MELCSH(10,30),KELCSH(10,30),M1QNRD(19,3,30),K1QNRD(19,3,30),MAXOR
     2,MMCORB(10,30),KKCORB(10,30),IAJCMP(21),LOCATE(21),JAJCMP(21,3)
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
      J1=0
      J2=0
      IHSH=0
      I2HSH=-1
      IA=MOCCSH(JA)
      IB=KOCCSH(JB)
C
C --- TEST ON WHETHER LIMIT OF I1 HAS BEEN REACHED
C
    1 IF(I1-MAXOR ) 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-MOCORB(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-KOCORB(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 IF(I.GE.2) GO TO 38
      NOSH(IHSH,I)=MELCSH(IC,JC)
      DO 20 K=1,3
      J1QN(IHSH,K,I)=M1QNRD(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=MOCCSH(JC)+IC-1
   28 J1QN(I2HSH,K,I)=M1QNRD(I2,K,JC)
   20 CONTINUE
      GO TO 22
   38 NOSH(IHSH,I)=KELCSH(ICE,JCE)
      DO 30 K=1,3
      J1QN(IHSH,K,I)=K1QNRD(ICE,K,JCE)
      IF(IHSH.LE.1) GO TO 30
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
      IF(ICE.GT.1) GO TO 31
      I2=1
      IF(K.NE.1) GO TO 32
      J1QN(I2HSH,1,I)=0
      GO TO 30
  31  I2=KOCCSH(JCE)+ICE-1
  32  J1QN(I2HSH,K,I)=K1QNRD(I2,K,JCE)
   30 CONTINUE
   22 IF(I-2) 23,24,24
   23 NC=NB
      I=2
      ICE=J2
      JCE=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
      JIFUL(IHSH)=LOCATE(I1)
C
C --- RETURN TO 1  TO SEE IF MAXORB HAS BEEN REACHED
C
      GO TO 1
  100 RETURN
      END
c
c--------------------------------------------------------------------
c                              t r i t s t
c--------------------------------------------------------------------
c
      REAL FUNCTION TRITST(L,M,N)
c     IMPLICIT REAL*8(A-H,O-Z)
      COMMON/PARAM/ZERO,EPSILO,HALF,ONE
C
C      IF  TRITST=ONE   THE TRIANGLE RELATION IS NOT SATISFIED
C      IF  TRITST=ZERO  THE TRIANGLE RELATION IS SATISFIED
C
      LMN=IABS(L-M)
      LM=L+M
      IF(N-LMN) 1,2,2
    2 IF(LM-N) 1,3,3
    3 TRITST=ZERO
      RETURN
    1 TRITST=ONE
      RETURN
      END
c
c---------------------------------------------------------------------
c                             t m s o u t
c---------------------------------------------------------------------
c

      SUBROUTINE TMSOUT
      COMMON/INFORM/IREAD,IWRITE,IPUNCH,icheck
      common/terms/nrows,itab(14),jtabs(14),ntabs(219),ntab1(10,5),
     1   ntab2(11,5)
      DIMENSION LLSYM(46)
      COMMON/SYMM/LANK,LSYM(10)
      COMMON/ACFG/ICFG(14)
C
C --- PRINT-OUT OF TABLE OF TERMS, SET IN BLOCK DATA
C
    1 FORMAT(1H1,41X23HTABLE OF POSSIBLE TERMS //4x,62H CONFIGURATION
     1N TERMS(MULTIPLICITY,SYMMETRY, AND SENIORITY) /)
    4 FORMAT(/9X,A4,10X,16(I1,A1,I1,2X))
      WRITE(IWRITE,1)
      DO 5 I=1,NROWS
      JI=JTAB(I)
      JJ=3*ITAB(I)
      JI1=JI+1
      JI2=JI1+1
      DO 2 J=1,JJ,3
      LP=(NTAB(JI1+J )+1)/2
    2 LLSYM(J)=LSYM(LP)
      WRITE(IWRITE,4)ICFG(I),(NTAB(JI2+J),LLSYM(J),NTAB(JI+J),J=1,JJ,3)
    5 CONTINUE
      RETURN
      END
c
c-----------------------------------------------------------------
c                           c f p
c-----------------------------------------------------------------
      SUBROUTINE CFP(LIJ,N,IVI,ILI,ISI,IVJ,ILJ,ISJ,COEFP)
c     IMPLICIT REAL*8(A-H,O-Z)
      COMMON/INFORM/IREAD,IWRITE,IPUNCH,icheck
      COMMON/DEBUG/IBUG1,IBUG2,IBUG3,IBUG4,IBUG5,IBUG6
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,7,6
    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     IMPLICIT REAL*8(A-H,O-Z)
      COMMON/PARAM/ZERO,EPSILO,HALF,ONE
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                             b l d a t a
c----------------------------------------------------------------
      subroutine bldata
c
c     IMPLICIT REAL*8(A-H,O-Z)
      common/terms/nrows,i(14),j(14),n(219),n1(10,5),n2(11,5)
      COMMON/SYMM/LANK,LSYM(10)
      COMMON/NVALUE/NVAL(9)
      COMMON/SPINP/ISPINT,ISPINS
      COMMON/ACFG/ICFG(14)
      COMMON/PARAM/ZERO,EPSILO,HALF,ONE
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/14/
      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, 7/
      data i(13),i(14)/ 1, 9/
      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 j(13),j(14)/ 189, 192/
      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),N(172),N(173),N(174)/ 2, 3, 3, 2, 7, 3/
      DATA N(175),N(176),N(177),N(178),N(179),N(180)/ 2,11, 3, 0, 1, 1/
      DATA N(181),N(182),N(183),N(184),N(185),N(186)/ 2, 5, 1, 2, 9, 1/
      DATA N(187),N(188),N(189),N(190),N(191),N(192)/ 2,13, 1, 1, 9, 2/
      DATA N(193),N(194),N(195),N(196),N(197),N(198)/ 2, 3, 3, 2, 7, 3/
      DATA N(199),N(200),N(201),N(202),N(203),N(204)/ 2,11, 3, 2,15, 3/
      DATA N(205),N(206),N(207),N(208),N(209),N(210)/ 0, 1, 1, 2, 5, 1/
      DATA N(211),N(212),N(213),N(214),N(215),N(216)/ 2, 9, 1, 2,13, 1/
      DATA N(217),N(218),N(219)                     / 2,17, 1         /
      DATA N1( 1,1),N1( 1,2),N1( 1,3),N1( 1,4),N1( 1,5)/2,2, 2, 2, 2/
      DATA N1( 2,1),N1( 2,2),N1( 2,3),N1( 2,4),N1( 2,5)/1,3, 6,11,13/
      DATA N1( 3,1),N1( 3,2),N1( 3,3),N1( 3,4),N1( 3,5)/0,4, 7, 0, 0/
      DATA N1( 4,1),N1( 4,2),N1( 4,3),N1( 4,4),N1( 4,5)/0,5, 8, 0, 0/
      DATA N1( 5,1),N1( 5,2),N1( 5,3),N1( 5,4),N1( 5,5)/0,4, 9, 0, 0/
      DATA N1( 6,1),N1( 6,2),N1( 6,3),N1( 6,4),N1( 6,5)/0,3,10, 0, 0/
      DATA N1( 7,1),N1( 7,2),N1( 7,3),N1( 7,4),N1( 7,5)/0,0, 9, 0, 0/
      DATA N1( 8,1),N1( 8,2),N1( 8,3),N1( 8,4),N1( 8,5)/0,0, 8, 0, 0/
      DATA N1( 9,1),N1( 9,2),N1( 9,3),N1( 9,4),N1( 9,5)/0,0, 7, 0, 0/
      DATA N1(10,1),N1(10,2),N1(10,3),N1(10,4),N1(10,5)/0,0, 6, 0, 0/
      DATA N2( 1,1),N2( 1,2),N2( 1,3),N2( 1,4),N2( 1,5)/2,2, 2, 2, 2/
      DATA N2( 2,1),N2( 2,2),N2( 2,3),N2( 2,4),N2( 2,5)/1,3, 6,11,13/
      DATA N2( 3,1),N2( 3,2),N2( 3,3),N2( 3,4),N2( 3,5)/2,4, 7,12,14/
      DATA N2( 4,1),N2( 4,2),N2( 4,3),N2( 4,4),N2( 4,5)/0,5, 8, 0, 0/
      DATA N2( 5,1),N2( 5,2),N2( 5,3),N2( 5,4),N2( 5,5)/0,4, 9, 0, 0/
      DATA N2( 6,1),N2( 6,2),N2( 6,3),N2( 6,4),N2( 6,5)/0,3,10, 0, 0/
      DATA N2( 7,1),N2( 7,2),N2( 7,3),N2( 7,4),N2( 7,5)/0,2, 9, 0, 0/
      DATA N2( 8,1),N2( 8,2),N2( 8,3),N2( 8,4),N2( 8,5)/0,0, 8, 0, 0/
      DATA N2( 9,1),N2( 9,2),N2( 9,3),N2( 9,4),N2( 9,5)/0,0, 7, 0, 0/
      DATA N2(10,1),N2(10,2),N2(10,3),N2(10,4),N2(10,5)/0,0, 6, 0, 0/
      DATA N2(11,1),N2(11,2),N2(11,3),N2(11,4),N2(11,5)/0,0, 2, 0, 0/
      DATA LANK,ISPINT,ISPINS/1H ,1HT,1HS/
      DATA LSYM(1),LSYM(2),LSYM(3),LSYM(4),LSYM(5),LSYM(6),LSYM(7)
     1    ,LSYM(8),LSYM(9),LSYM(10)/1HS,1HP,1HD,1HF,1HG,1HH,1HI,1HK,1HL
     2    ,1HM/
      DATA NVAL(1),NVAL(2),NVAL(3),NVAL(4),NVAL(5),NVAL(6),NVAL(7)
     1    ,NVAL(8),NVAL(9)/1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9/
      DATA ICFG(1),ICFG(2),ICFG(3),ICFG(4),ICFG(5),ICFG(6),ICFG(7)
     1    ,ICFG(8),ICFG(9),ICFG(10),ICFG(11),ICFG(12),ICFG(13),ICFG(14)/
     2     4HS(1),4HS(2),4HP(1),4HP(2),4HP(3),4HD(1),4HD(2),4HD(3),
     3     4HD(4),4HD(5),4HF(1),4HF(2),4HG(1),4HG(2)/
      data zero,epsilo,half,one/0.e0,1.e-08,0.5e0,1.e0/
      END
C
C --- INSERT HERE THE FOLLOWING CPC LIBRARY PROGRAMS WITH APPROPRIATE
C     CHANGES TO DOUBLE PRECISION FOR IBM S360 COMPUTER.
C
C      (1) ACQB, THE P-SHELL CFP PROGRAM: ALLISON (CPC V1(1969)15).
C      (2) ACRN, THE NEW D-SHELL CFP PROGRAM: CHIVERS (CPC V6(1973)88).
C      (3) AAGD, THE NJSYM PROGRAM: BURKE (CPC V1(1970)241), ADAPTED
C                FOR WEIGHTS USING AAGD0001: HIBBERT (CPC V2(1971)180)
C                WITH AAGD0002: GRANT (CPC V5(1973)161) FOR IMPROVED
C                RACAH COEFFICIENT ROUTINE.
C
C ---       NOTE THAT THE CORRECTION AAGD000A: CPC V2(1971)173 IS ALSO
C           TO BE APPLIED TO AAGD. ALSO NOTE THE THE ADAPTATION
C           AAGD0002 OF GRANT WAS NOT APPLIED TO AAGD WHEN IT WAS
C           USED BY ROBB IN THE PREVIOUS VERSION OF THIS PROGRAM.
▶EOF◀