C PROGRAM TO COMPUTE PRESSURE BROADENING CROSS SECTIONS, C SIG(JA,JB;JA1,JB1;K) <==> SIG(VA,JA,VB,JB;VA,JA1,VB,JB1;K) C FROM S-MATRICES SAVED ON TWO (2) TAPES BY SCATTERING PROG. C EACH TAPE HAS S-MATRICES FROM A DIFFERENT VIBRAITONAL LEVEL C MOLSCAT, VERSION 11 (UNFORMATTED SAVE TAPE) COMPATIBLE. C UPDATED FOR VERSION 14 FORMAT JUL 94 C C ------------------------------------------------------------------ C C NAMELIST &CNTROL PARAMETERS --- C NLPRBR (EQUIV IFLS), LINE, and LTYPE ARE MOLSCAT &INPUT VARIABLES C TO DESCRIBE THE CROSS SECTIONS (SEE MOLSCAT DOCUMENTATION) C IIN(I),I=1,2 ARE INPUT TAPES (DEFAULT IS 10, 11) C parameters to control printing: C JSTEPZ - IF > 0 CONTRIBUTION FROM EVERY JSTEPZ'TH JTOT ONLY. C JMOD - PRINTS ACCUMULATED PRBR SIGS ONLY FOR MOD(JTOT,JMOD)=JMOD C JPRINT - SUPPRESSES PRINTING OF PRBR SIGS FOR JTOT NQN=2 C CHANGES THIS TO ITYPE=10*N+2 ==> NQN=3 IF (ITYPE1.EQ.ITYPE2 .AND. NQN1.EQ.NQN2 .AND. NQN1.EQ.2 .AND. 1 MOD(ITYPE1,10).EQ.1. AND. ABS(URED1-URED2).LE.TOL) GO TO 1200 WRITE(6,621) 621 FORMAT(//' ***** TERMINAL ERROR: ITYPE, NQN, OR URED MISMATCHED', 1 ' OR ILLEGAL.') STOP 1200 NLEV=NLEV1+NLEV2 NQN=3 ITYPE=ITYPE1+1 NSQ=NLEV*NQN IF (NSQ.LE.MXLVQN) GO TO 1201 WRITE(6,619) NSQ,MXLVQN 1201 DO 1202 I=1,NLEV1 JLEV(I)=JLEV1(I) JLEV(NLEV+I)=IVIB(1) 1202 JLEV((2*NLEV)+I)=JLEV1(NLEV1+I) I2=0 DO 1203 I=NLEV1+1,NLEV I2=I2+1 JLEV(I)=JLEV2(I2) JLEV(NLEV+I)=IVIB(2) 1203 JLEV((2*NLEV)+I)=JLEV2(NLEV2+I2)+NLEV1 DO 1204 I=1,NLEV 1204 WRITE(6,601) I,(JLEV(NLEV*(K-1)+I),K=1,NQN) NLEVEL=NLVL1+NLVL2 IF (NLEVEL.LE.MXLEV) GO TO 1205 WRITE(6,699) NLEVEL,MXLEV STOP 1205 DO 1206 I=1,NLVL1 1206 ELEVEL(I)=ELVL1(I)+VSHIFT(1) DO 1207 I=1,NLVL2 1207 ELEVEL(NLVL1+I)=ELVL2(I)+VSHIFT(2) WRITE(6,603) NLEVEL,(ELEVEL(I),I=1,NLEVEL) NNRG=NNRG1+NNRG2 IF (NNRG.LE.MXNRG) GO TO 1211 WRITE(6,618) NNRG,MXNRG STOP 1211 DO 1212 I=1,NNRG1 1212 ENERGY(I)=ENERG1(I)+VSHIFT(1) DO 1213 I=1,NNRG2 1213 ENERGY(NNRG1+I)=ENERG2(I)+VSHIFT(2) WRITE(6,602) NNRG,(ENERGY(I),I=1,NNRG) C * C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * C SET UP FOR PRESSURE BROAD.; CALL PRBRIN TO PROCESS &CNTROL DATA * C * ILSU=11 DO 1220 I=1,MXCH 1220 NBASIS(I)=I C IF LSHIFT=0, GO DIRECTLY TO PRBRIN; OTHERWISE MODIFY LINE() IF (LSHIFT.LE.0) GO TO 1230 IF (LSHIFT.EQ.1 .OR. LSHIFT.EQ.2) THEN WRITE(6,622) LSHIFT,CA(LSHIFT),NLEV1 622 FORMAT(//' INPUT LSHIFT =',I4/' INPUT LINE() VALUES FOR J',A1/ 1 6X,' WILL BE SHIFTED BY',I3,' TO REQUEST 2ND VIB. LEVEL') IF (NLPRBR.LE.0) THEN WRITE(6,623) 623 FORMAT(/' ***** NO LINES REQUESTED BY NLPRBR OR IFLS') STOP ENDIF NL=0 DO 1221 I=1,NLPRBR WRITE(6,624) (LINE(NL+K),K=1,4) 624 FORMAT(/' LINE() =',4I4,' ======>') LINE(NL+LSHIFT)=LINE(NL+LSHIFT)+NLEV1 LINE(NL+LSHIFT+2)=LINE(NL+LSHIFT+2)+NLEV1 WRITE(6,625) (LINE(NL+K),K=1,4) 625 FORMAT(34X,4I4) 1221 NL=NL+4 ELSE WRITE(6,626) LSHIFT 626 FORMAT(//' ***** TERMINAL ERROR. ILLEGAL LSHIFT =',I6) STOP ENDIF C *** 1230 CALL PARMPR(JSTEPZ,JMOD,JPRINT) C *** CALL PRBRIN(IFLS,LINE,LTYPE,MXLN,ILSU,NNRG,ENERGY,NNRG,IFEGEN, 1 JLEV,PRNTLV) C C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * C * C START INPUT OF JTOT'S (ALTERNATE TAPES) AND ENERGIES * C * JSTEPX=-1 JTOLD=-1 INFROM=1 EOF(1)=.FALSE. EOF(2)=.FALSE. ISVD=0 C 2000 IT=IIN(INFROM) IF (LFMT) THEN READ(IT,103,END=9000) JTOT,INRG,ECHK,IEXCH,WT,M ELSE IF (IP.LT.14) THEN READ(IT,END=9000) JTOT,INRG,ECHK,IEXCH,WT,M ELSE READ(IT,END=9000) JTOT,INRG,ECHK,IEXCH,WT,M,NOPEN ENDIF ENDIF IF (JTOT.LT.0) THEN C PROCESS CHKPT/RESTART MARKERS (FROM EARLY VERISONS OF MOLSCAT) WRITE(6,698) JTOT 698 FORMAT(/' * * * NOTE. ROLLOUT MARKER ENCOUNTERED:',I6) GO TO 2000 ENDIF ECHK=ECHK+VSHIFT(INFROM) IF (INFROM.EQ.2) INRG=INRG+NNRG1 C COUPLED STATES CASES NEED MVALUE; SET ACCORDING FOR MPLMIN=.T. MVALUE=M-1 IF (PRNTLV.GE.3) WRITE(6,662) INFROM,JTOT,M,INRG,ECHK,IEXCH,WT 662 FORMAT(' TAPE-',I1,' JTOT=',I4,'.',I2,' ENERGY(',I3,')=',F10.3, 1 ' IEX=',I2,' WT=',F7.3) C C SEE IF THIS IS A NEW (OR THE FIRST) JTOT. IF (JTOT.EQ.JTOLD.OR.JTOLD.EQ.-1) GO TO 2011 C NEW JTOT: DETERMINE/CHECK JSTEP JSTEP=JTOT-JTOLD IF (JSTEP.EQ.JSTEPX) GO TO 2911 IF (JSTEPX.EQ.-1) GO TO 2912 WRITE(6,691) JSTEP,JSTEPX 691 FORMAT('0 ***** ERROR. JSTEP INCONSISTENCY. CURRENT, OLD',2I4) C JSTEP=0 2912 JSTEPX=JSTEP 2911 IF (INFROM.EQ.2) GO TO 2913 C C NEW JTOT ON TAPE-1. IF (EOF(2)) GO TO 2913 C UNLESS WE'VE HIT EOF ON TAPE-2, SAVE PARMS FROM 1 & READ TAPE-2 C ISVD=0 => WE HAVE NOT YET READ A JTOT RECORD IF (ISVD.EQ.0) THEN JTSV=JTOT INSV=INRG ECHSV=ECHK IEXSV=IEXCH WTSV=WT MSV=M ISVD=INFROM INFROM=2 GO TO 2000 C ISVD=2 => WE HAVE ALREADY READ A JTOT RECORD ELSEIF (ISVD.EQ.2) THEN C IF (ISVD.EQ.2) THEN CALL IXCH(JTSV,JTOT) CALL IXCH(INSV,INRG) CALL IXCH(IEXSV,IEXCH) CALL IXCH(MSV,M) CALL DXCH(ECHSV,ECHK) CALL DXCH(WTSV,WT) ISVD=INFROM INFROM=2 IT=IIN(INFROM) GO TO 2011 ELSE WRITE(6,628) INFROM, JTOT STOP ENDIF C C WE HAVE NOW FINISHED A JTOT FROM BOTH TAPES. C PRINT CROSS SECTINS (ON JMOD AND JPRINT CRITERIA) 2913 WRITE(6,617) JTOLD 617 FORMAT(/' **** **** **** ACCUMULATED THROUGH JTOT =',I4) C SKIP OUTPUT IF JTOT (I.E., JTOLD) WAS SKIPPED FOR JSTEPZ IF (JSTEPZ.LE.1) GO TO 2920 IF (JTOLD-JSTEPZ*(JTOLD/JSTEPZ).EQ.0) GO TO 2920 WRITE(6,627) JSTEPZ 627 FORMAT(' **** **** **** JTOT SKIPPED BECAUSE OF JSTEPZ =',I4) GO TO 2012 2920 IF (JTOLD-JMOD*(JTOLD/JMOD).NE.0.AND.JTOLD.LE.JPRINT) GO TO 2012 IF (PRNTLV.GE.2) CALL PRBOUT(JPB(JSTEP,JSTEPZ)) C C SEE IF WE GOT HERE BECAUSE OF EOF(2) ==> INFROM=1 2012 IF (INFROM.EQ.1) GO TO 2011 C IF THERE IS NO MORE ON TAPE-1, CONTINUE READING TAPE-2 IF (EOF(1)) GO TO 2011 C OTHERWISE, WE SHOULD SAVE TAPE-2 VALUES, RESTORE TAPE-1 VALUES C AND CONTINUE INPUT FROM TAPE-1 IF (ISVD.NE.1) THEN WRITE(6,628) INFROM, JTOT 628 FORMAT(/' ***** ERROR. NO SAVED JTOT RECORD FOR TAPE',I4, 1 ', JTOT =',I4) STOP ENDIF CALL IXCH(JTSV,JTOT) CALL IXCH(INSV,INRG) CALL IXCH(IEXSV,IEXCH) CALL IXCH(MSV,M) CALL DXCH(ECHSV,ECHK) CALL DXCH(WTSV,WT) ISVD=INFROM INFROM=1 IT=IIN(INFROM) C 2011 JTOLD=JTOT C BELOW CHECKS THAT ENERGY(INRG) CORRESPONDS WITH HEADER RECORD. . . IF (ABS((ECHK-ENERGY(INRG))/ECHK).LE.TOL) GO TO 2002 WRITE(6,697) INRG,ECHK 697 FORMAT(/' ***** WARNING. FOR ',I4,'-TH ENERGY, ECHECK =',D16.8) C C CONTINUE WITH INPUT OF CHANNEL BASIS AND S-MATRICES 2002 IF (LFMT) THEN READ(IT,104,END=9009) NOPEN,(J(I),L(I),WVEC(I),I=1,NOPEN) ELSE IF (IP.LT.14) THEN READ(IT,END=9009) NOPEN,(J(I),L(I),WVEC(I),I=1,NOPEN) ELSE READ(IT,END=9009) (J(I),L(I),WVEC(I),I=1,NOPEN) ENDIF ENDIF IF (NOPEN.LE.MXCH) GO TO 2003 WRITE(6,696) MXCH,INFROM,JTOT,INRG 696 FORMAT(/' ***** ERROR. NO. OPEN CHANNELS EXCEEDS MXCH =',I4, 1 ' FOR TAPE,JTOT,INRG =',3I5) 2003 NSQ=NOPEN*NOPEN IF (INFROM.EQ.1) GO TO 2005 C FOR 2ND TAPE, SHIFT LEVEL VALUES, J(), BY NLEV1 DO 2004 I=1,NOPEN 2004 J(I)=J(I)+NLEV1 C 2005 IF (LFMT) THEN READ(IT,105) (SREAL(I),I=1,NSQ) READ(IT,105) (SIMAG(I),I=1,NSQ) ELSE CALL SREAD(IT,NOPEN,SREAL,IEND) CALL SREAD(IT,NOPEN,SIMAG,IEND) IF (IEND.NE.0) THEN WRITE(6,644) IT 644 FORMAT(' ***** UNEXPECTED EOF FOUND BY SREAD ON FILE' 1 ,I4) GO TO 9000 ENDIF ENDIF C C SHOULD WE SKIP CALLING PRBR FROM THESE OWING TO JSTEPZ ? IF (JSTEPZ.LE.1) GO TO 4000 IF (JTOT-JSTEPZ*(JTOT/JSTEPZ).EQ.0) GO TO 4000 IF (PRNTLV.GE.2) WRITE(6,693) JTOT,INRG,M,JSTEPZ 693 FORMAT(' JTOT,INRG,M =',3I4,' SKIPPED DUE TO JSTEPZ =',I4) GO TO 2000 C C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * C PROCESS THIS SET OF S-MATRICES FOR PRESSURE BROADENING CROSS SECT* C 4000 CONTINUE CALL PRBR(JTOT,M,NOPEN,INRG,RM,NBASIS,J,L,WVEC,SREAL,SIMAG,IC,IL, 1 IC1,IL1, 2 JLEV,MXPAR,WT,PRNTLV,ILSU) C C GO BACK FOR ANOTHER JTOT,INRG,MVAL SET ... GO TO 2000 C C UNEXPECTED EOF READING NOPEN, ... RECORD 9009 WRITE(6,645) IT 645 FORMAT(' ***** UNEXPECTED EOF READING LEV,L,WV ON TAPE',I4) C C END OF FILE ON UNIT IIN(INFROM) 9000 WRITE(6,695) INFROM,IIN(INFROM) 695 FORMAT(/' ***** END OF FILE TAPE',I2,', ON UNIT(',I3,').') EOF(INFROM)=.TRUE. C SEE IF WE'VE REACHED EOF ON OTHER TAPE ALSO. IF (EOF(3-INFROM)) GO TO 2006 IF (ISVD.EQ.3-INFROM) THEN CALL IXCH(JTSV,JTOT) CALL IXCH(INSV,INRG) CALL IXCH(IEXSV,IEXCH) CALL IXCH(MSV,M) CALL DXCH(ECHSV,ECHK) CALL DXCH(WTSV,WT) ISVD=INFROM INFROM=3-INFROM IT=IIN(INFROM) GO TO 2011 ELSE WRITE(6,692) INFROM,ISVD 692 FORMAT(/' ***** ERROR. INFROM,ISVD =',2I6) ENDIF INFROM=3-INFROM GO TO 2000 C 2006 WRITE(6,617) JTOT CALL PRBOUT(JPB(JSTEP,JSTEPZ)) CALL DACLOS C STOP END SUBROUTINE CHKSTR C DUMMY VERSION FOR PRBRVIB.V14 C PRBR GETS TEMP STORAGE VIA /MEMORY/ FOR PRBR3; NOT IMPLEMENTED HERE C THIS ROUTINE WILL TRAP AND STOP; ITYPE=3 ONLY WRITE(6,*) ' *** CHKSTR CALLED. NOT USED BY PRBRVIB' WRITE(6,*) ' *** CANNOT HANDLE ITYPE=3' STOP END SUBROUTINE PRBR(JTOT,M,N,INRG,RM, 1 NBASIS,LEV,L,WVEC,SREAL,SIMAG,IC,IL,IC1,IL1, 2 JLEV,MXPAR,WGHT,PRINT,ILSU) IMPLICIT DOUBLE PRECISION (A-H,O-Z) SAVE C C *** AUG 76 NEW COUPLED STATES TREATMENT (KOURI ET AL.) C *** JUL 86 (CCP6 VERSION 9) MOD 26 AUG 86 TO GET MXREC PROPERLY. C *** AND MOD 21 OCT 86 : EDIFMX C *** OCT 86 VERSION FOR 'OFF-DIAGONAL' CROSS SECTIONS C *** JAN 87 CHANGES TO GET MPLMIN HANDLING CORRECT FOR ITYPE=25,26 C *** AND ADD JSTEP TO ENTRY PRBOUT (REQUIRES CHANGE IN DRIVER) C *** MAR 87 CORRECTIONS FOR ITYPE=26 C *** DEC 88 INCLUDE ITYPE=7 AND Q=0 C *** MAR 89 HAS 'IN-CORE' D.A. SIMULATION C *** (NEED SUBROUTINE DASIZE/ENTRIES DARD1,DARD2,DAWR1,DAWR2) C *** JUL 92 REMOVES ALL REFERENCES TO LCSOLD (OLD, INCORRECT, C *** FORMULATION FOR COUPLED STATES: SEE, E.G., C *** GREEN, ET AL. JCP, 66, 1409 (1977)) C *** CALLS TO ENTRIES (IN PRBR3) ALSO HAVE BEEN TRAPPED THERE. C *** JUN 93 FIXES BUG IN PRBR3 AND USES /MEMORY/ TO ELIMINATE LIMITS. C *** AUG 94 V14: ENTRY PRBCNT ADDED AND COMMON CMBASE CHANGED C C CALCULATES SIGMA(JA1,JB1;JA,JB;K) C WHERE A/B INDICATE INITIAL/FINAL SPECTRAL LINES, C A1/B1 ARE AFTER COLLISION, AND K IS TENSOR ORDER C SEE, E.G., SHAFER AND GORDON, JCP 58, 5422 (1973). C C SUPPOSED TO BE UPWARD COMPATIBLE IF LDIAG=.TRUE.: C LDIAG=.TRUE. TAKES *OLD* INPUT LINE=LEVA,LEVB, LEVA,LEVB, ... , C AND SETS LEVA1=LEVA, LEVB1=LEVB FOR ALL LINES. C LDIAG=.FALSE. INPUT IS LINE=LEVA,LEVB,LEVA1,LEVB1, C LEVA,LEVB,LEVA1,LEVB1, ... C N.B. LDIAG FORCED TO TRUE FOR ITYPE=3 CALCULATIONS. C C ENTRY PRBRIN ACCEPTS &INPUT DATA AND SETS UP PRES. BROAD. CALC. C ENTRY PRBOUT PRINTS OUT ACCUMULATED SIGR, SIGI. C ENTRY PRBCNT FINDS WHETHER AN S-MATRIX WILL BE USED FOR PB CALC C C PRBR SPECIFICATIONS -------------------------------------- C DIMENSION NBASIS(1),LEV(1),L(1),IC(1),IL(1),IC1(1),IL1(1), 1 JLEV(NLEV,NQN) DIMENSION WVEC(1),SREAL(1),SIMAG(1) C C JTOT IS TOTAL ANGULAR MOMENTUM C M = 0 FOR LAST PARITY STEP AT THIS JTOT. C N IS NUMBER OF OPEN CHANNELS, DETERMINES DIMENSION OF VECTORS. C INRG IS INDEX FOR ENERGY VALUES C RM IS SCALING FACTOR FOR RADIAL WAVEFUNCTION. C NBASIS (I) POINTS TO LEV,L VALUES FOR ITH OPEN CHANNEL. C LEV IS VECTOR OF BASIS SET LEVELS C L IS VECTOR OF BASIS ORBITAL ANGULAR MOMENTA. C WVEC IS VECTOR OF WAVEVECTORS C SREAL(N,N) IS REAL PART OF S MATRIX. C SIMAG(N,N) IS IMAGINARY PART OF S MATRIX. C LOGICAL ITYPE3,EPM,LCSNEW,MPLMIN,LCSSYM INTEGER JT(2) C C PRBRIN SPECIFICATIONS ------------------------------------ C INTEGER NLPRBR,MXLN,LINE(MXLN),ILSU,NNRG,PRINT,MXNRG,IFEGEN INTEGER T(MXLN) DIMENSION ENERGY(NNRG) C C NLPRBR =0 FOR NO LINE SHAPE CALC. C =N (GT.0) GIVES NO. OF LINES FOR WHICH TO COMPUTE L.S. C LINE(4*I-3),... ,I=1,NLPRBR IS LEVEL DATA FOR LINES. C ILSU (NOW REDUNDANT) WAS DIRECT ACCESS FILE FOR WORKING STORAGE C ENERGY(NNRG) ARE ENERGIES AT WHICH S MATRIX IS CALCULATED. C MXNRG IS MAXIMUM DIMENSION OF ENERGY ARRAY C IFEGEN .GT. 0 REQUESTS GENERATION OF ADDITIONAL ENERGY VALUES. C PRINT IS INTEGER PRINT CONTROL. C LOGICAL NOCALC,PF,NDEBUG LOGICAL LDIAG,EXISTS,LDIAGX CHARACTER*8 PTP(3) C STORAGE DIMENSIONED FOR NO. OF LINES = MAXLN. DIMENSION LN(400,9) DIMENSION EREL(400),SIGR(400),SIGI(400) DIMENSION P(2),PRTY(4) C C INFORMATION ORIGINALLY PASSED AS ENTRY PRBRBS, NOW IN COMMON C COMMON /CMBASE/ ROTI(12),ELEVEL(1000),EMAX,WT(2),SPNUC, 1 NLEVEL,JLEVEL(4000),MISC(26),JHALF,IDENT,MXJL,MXEL COMMON /PRBASE/ ITYPE,NQN,NLEV,MVALUE,IEXCH,MPLMIN COMMON /ASSVAR/ IDA C C NLEV AND NLEVEL ARE NO. OF LEVELS IN BASIS SET. C JLEV AND JLEVEL ARE QUANTUM NUMBERS FOR THESE LEVELS. C ELEVEL ARE ENERGIES OF THESE LEVELS. C C DYNAMIC STORAGE COMMON BLOCK ... COMMON /MEMORY/ MX,IXNEXT,NIPR,IVLFL,X(1) C C --- DATA INITIALIZATIONS --- C DATA PTP/' Q = 0 ',' DIPOLE ',' RAMAN '/ DATA P/1.D0,-1.D0/, PRTY/1.D0,-1.D0,-1.D0,1.D0/ C *** BELOW REPLACES JMH'S CRITERION OF 1.D-10 FOR ENERGY DIFFERENCE C *** SMALLER VALUE MAY BE NEEDED FOR RESONANCE CALCULATIONS. DATA EDIFMX/5.D-6/ C FOR COMPATBILITY WITH OLD INPUT, SET LDIAG=.TRUE. DATA LDIAGX/.FALSE./ C IF NDEBUG .EQ. .FALSE. CHECK FOR 'IMPOSSIBLE' NUMBERS OF MATCHES. DATA NDEBUG/.FALSE./ C DIMENSION LIMITATION ... DATA MAXLN/400/ C FOR CHECKING OVER-WRITE OF "DA FILE" DATA JCHKSV/-1/ C C STATEMENT FUNCTION (LOGICAL) EXISTS(I) = I.GT.0 .AND. I.LE.NLEVEL C C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * C IF (NOCALC) RETURN IF (JCHKSV.EQ.-1) JCHKSV=JTOT DO 3000 IA=1,2 C IA=1 CHECKS FOR USE OF THIS JTOT,INRG WITH J(ALPHA). C IA=2 FOR J(BETA). IB=3-IA C FIND LINES, I, WHICH USE THIS INRG, JTOT S MATRIX. IKEEP=0 DO 3100 I=1,NLINE IF (LN(I,IA+3).NE.INRG) GO TO 3100 K=LN(I,3) JDIFMX=K IF (LCSNEW) JDIFMX=0 JDM=MAX(JDM,JDIFMX) IF (ITYPE3) GO TO 3211 C FOR ITYPE=1,2,5 GET J-VALUE FROM 1ST COL OF JLEV. JA=JLEV(LN(I,1),1) JB=JLEV(LN(I,2),1) JA1=JLEV(LN(I,8),1) JB1=JLEV(LN(I,9),1) C PARITY FACTOR FOR CS WITH MPLMIN; THIS IS NORMALLY +1. F3PJ=PARITY(JA+JA1+JB+JB1) C FIND BASIS FNS. CORRESPONDING TO JA/JA1 (JB/JB1) AND GET L VALUES. C ROWS=>JA1,IC1,IL1 COLS=>JA,IC,IL C FOR DIAG CASE (JA=JA1), IC/IC1 AND IL/IL1 HAVE SAME VALUES. NLVAL=0 NLVAL1=0 DO 3200 II=1,N JJ=NBASIS(II) IF (LEV(JJ).NE.LN(I,IA)) GO TO 3201 NLVAL=NLVAL+1 IC(NLVAL)=II IL(NLVAL)=L(JJ) 3201 IF (LEV(JJ).NE.LN(I,IA+7)) GO TO 3200 NLVAL1=NLVAL1+1 IC1(NLVAL1)=II IL1(NLVAL1)=L(JJ) 3200 CONTINUE GO TO 3212 C C FOR ITYPE=3 GET J-VALUE FROM JLEVEL. RECALL J1,J2 PACKED IN ORDER C 3211 JA=JLEVEL(2*LN(I,1)-1) JB=JLEVEL(2*LN(I,2)-1) C BELOW MAY BE NEEDED FOR COMPATIBILITY IN OFF-DIAG CODE JA1=JA JB1=JB C ALLOCATE TEMPORARY STORAGE FOR SR,SI,TR,JBAR,ISTB,NBLK,LVAL NSQ=N*N NINT=(N+NIPR-1)/NIPR IT1=IXNEXT IT2=IT1+NSQ IT3=IT2+NSQ IT4=IT3+NSQ IT5=IT4+NINT IT6=IT5+NINT IT7=IT6+NINT IXNEXT=IT7+NINT C WRITE(6,*) ' IT1-IT7,IXNEXT',IT1,IT2,IT3,IT4,IT5,IT6,IT7,IXNEXT NUSED=0 CALL CHKSTR(NUSED) CALL PRBR3(N,SREAL,SIMAG,JTOT,NLEV,NQN,JLEV,NBASIS,LEV,L,NPACK, 1 LN(I,IA),NLVAL,IC,IL, 2 X(IT1),X(IT2),X(IT3),X(IT4),X(IT5),X(IT6),X(IT7)) C N.B. ONLY SR,SI NEED TO BE KEPT, IXNEXT COULD BE REDUCED HERE ... C IXNEXT=IT3 C>>SG 1 JUN 93: NLVAL1,IL1,IC1 MUST BE ALSO BE SET (CF. DIAGONAL CASE). NLVAL1=NLVAL DO 3311 II=1,NLVAL IL1(II)=IL(II) 3311 IC1(II)=IC(II) C<