+ MACRO SPECIFICATIONS FOR PROGRAMS COLALG/RADALG AND DSTWAV. UCL'75 + LATEST UPDATES '83JUN06 AND '85APR27. ˆˆJILA'77 & UCL'78. + + + 1 SWITCHES AND SPECIFICATION SECTION + + + PROG = ... ETC MUST PRECEDE -- DO THEN CONCATENATE WITH THIS DATA + PROGRAM OPTIONS: COLALG, RADALG (ALSO FOR COBALG), DSTWAV; + SPECIFY RADALG TO CREATE RADALG EXTENDABLE COLALG * WC=WR=WX = '+ ' * IF(PROG.EQ.'COLALG') WC = ' ' * IF(PROG.NE.'COLALG') WX = ' ' * IF(PROG.EQ.'RADALG') WR = ' ' * IF(PROG.EQ.'') PROG='DSTWAV' + * DATE = '87/04/28' + TIMES, RESTART, DIEL, NAG AND TFORMAT ARE ON UNLESS DECLARED 'OFF' + SO IS PACK (BUT IT IS ALWAYS OFF IF MACHINE IS IBM OR DFT). + + MACHINE SPECIFICATION (CDC,CRA,DFT,IBM) --- 'DFT'=DEFAULT * NDUM = '&S(MACHINE,1,3)' * MACHINE = 'DFT' * IF(NDUM.EQ.'CDC') MACHINE=NDUM * IF(NDUM.EQ.'CRA') MACHINE=NDUM * IF(NDUM.EQ.'IBM') MACHINE=NDUM + + PRECISION SPECIFICATION (DOUBLE IF SO DECLARED OR AS IBM DEFAULT) * NDUM = 'SINGLE' * IF(MACHINE.EQ.'IBM') NDUM = 'DOUBLE' * IF(PRECSN.EQ.'') PRECSN = NDUM * IF(PRECSN.NE.'DOUBLE') PRECSN='SINGLE' + + DIELECTRONIC EXTENSION IN SR.TWOTWO -- PROG COLALG ONLY * D = ' ' * IF(DIEL.EQ.'OFF') D = 'CIEL' + + RESTART FACILITY IN SR.ONETWO, R='+ ' TURNS IT OFF * R=S=T = ' ' * IF(MACHINE.NE.'IBM') S='+ ' * IF(MACHINE.EQ.'IBM') T='+ ' * IF(RESTART.EQ.'OFF') R=S=T = '+ ' + + O, AND P AND Q FORM A SWITCH (P ARE PACKING INSTRUCTIONS FOR QRL) * IF(MACHINE.EQ.'IBM') PACK='OFF' * IF(MACHINE.EQ.'DFT') PACK='OFF' * O=P=Q=U=V=X=Y = '+ ' * IF(PACK.EQ.'OFF') O=' ' * IF(PACK.NE.'OFF') P=' ' * IF(PACK.NE.'OFF') Q='C ' * IF(R.EQ.' ') U=O * IF(R.EQ.' ') V=P * O0 = O * IF(MACHINE.EQ.'IBM') O0 = '+ ' * IF(MACHINE.EQ.'CDC') X=P * IF(MACHINE.EQ.'CRA') Y=P + + NAG-SWITCH, FOR USING NAG LIBRARY INSTEAD OF JACORD IN SR.VCE * J=N=' ' * IF(NAG.EQ.'OFF') N='+NAG' * IF(NAG.NE.'OFF') J='+JAC' + + SWITCH CT/CX FOR T OR X FORMAT * CT=CX = '+ ' * IF(TFORMAT.NE.'OFF') CT = ' ' * IF(TFORMAT.EQ.'OFF') CX = ' ' + LONDON TO BOULDER(TB), BOULDER TO LONDON(TL) TRANSPORT SWITCH + -- REQUIRED BY PGM.COLALG, UNTIL LEFTOVER IN SR.TWO REMOVED; JUN78 * TB = ' ' + + + 2 ARRAY SIZE SPECIFICATION SECTION -- SETTINGS IMPLY MAXIMUM + + + MAXCF = 51 11 25 120 + = NUMBER OF CONFIGURATIONS -- + COLLISION PROBLEM REQUIRES ADDITIONAL LOCATIONS + (1 FOR BUFFER, AND 1 FOR EACH B-CHANNEL OF BIGGEST SLP). * IF(MAXCF.EQ.'') MAXCF =201 + MAXGR = 15 7 + = NUMBER OF DISTINCT ORBITALS (NL) OF THE TARGET * IF(MAXGR.EQ.'') MAXGR = 30 + MAXEL0 = 12 + = NUMBER OF VALENCE ELECTRONS + 1 COLLIDING ELECTRON * IF(MAXEL0.EQ.'') MAXEL0 = 18 + MXCL=NCEL = 28 44 + = NUMBER OF CORE ELECTRONS * IF(NCEL.EQ.'') NCEL=MXCL '87MAR24 * IF(MXCL.EQ.'') MXCL=NCEL = 100 + MAXAD = 2299 999 7619 + = NUMBER OF DISTINCT H-MATRIX ELEMENTS INVOLVED IN + COMPLETE PROBLEM (TARGET AND COLLISION) * IF(MAXAD.EQ.'') MAXAD =199999 + MAXRK = 4300 2000 1700 17000 + = NUMBER OF SLATER EXPANSION COEFFICIENTS * IF(MAXRK.EQ.'') MAXRK =197000 + MAXRL = 3000 1500 800 6000 + = NUMBER OF ONE- AND TWO-BODY SLATER INTEGRALS * IF(MAXRL.EQ.'') MAXRL =45000 + MAXDC = 2100 3200 + = NUMBER OF VECTOR COUPLING COEFFICIENTS + (FOR TARGET PLUS BIGGEST INTERMEDIATE SL; A FEW HUNDRED + ADDITIONAL BUFFER LOCATIONS WILL SPEED UP SR.ONETWO). * IF(MAXDC.EQ.'') MAXDC =199000 + MAXST0 = 700 + = NUMBER OF SLATER STATES (TARGET PLUS BIGGEST SL) * IF(MAXST0.EQ.'') MAXST0 = 70000 + MXELST=MDELST = 1920 + = (MAX.NO. OF SLATER STATES) * (MAX.NO. OF VALENCE EL'S +1) * IF(MDELST.EQ.'') MDELST=MXELST * IF(MXELST.EQ.'') MXELST=MDELST * IF(MXELST.EQ.'') MXELST=MDELST =70020 + MAXT = 26 + = NUMBER OF TARGET TERMS, INCLUDING CORRELATION TERMS * IF(MAXT.EQ.'') MAXT = 200 + MAXD1 = NO. OF SLATER STATES ASSOCIATED WITH EACH TERM IN THE + STRUCTURE PROBLEM. MAXD2 = NO. OF SLATER STATES ASSOCIATED WITH + EACH STATE OF TOTAL S AND TOTAL L IN THE BOUND CHANNEL (N+1) + ELECTRON PROBLEM. MAXD3 = NO. OF TARGET TERMS WITH SAME VALUE SL * IF(MAXD1.EQ.'') MAXD1 = 320 * IF(MAXD2.EQ.'') MAXD2 = 320 * IF(MAXD3.EQ.'') MAXD3 = 200 + MAXU = 230 + = TOTAL NO. OF ELEMENTS IN THE TRANSFORMATION MATRICES + WHICH DIAGONALISE THE HAMILTONIAN OF THE TARGET PROBLEM. * IF(MAXU.EQ.'') MAXU = 83000 + MAXSL = 18 + = NUMBER OF SL STATES IN TARGET PROBLEM + NUMBER OF STATES + SL IN THE COLLISION PROBLEM. * IF(MAXSL.EQ.'') MAXSL = 199 + MAXHAR = 58 + = NUMBER OF DISTINCT (D.W.) RADIAL FUNCTIONS IN ALL INTER- + MEDIATE COLLISIONAL STATES SL CONSIDERD, FOR ONE GIVEN INCIDENT + ENERGYK1**2 -- GE THE NUMBER OF FREE CHANNELS IN THE LARGEST SL. * IF(MAXHAR.EQ.'') MAXHAR = 2200 + MAXCH = 90 150 + - GE TOTAL NUMBER OF CHANNELS (FREE AND BOUND) IN LARGEST SL * IF(MAXCH.EQ.'') MAXCH = MXFCH+MXBCH + - IF ONE CHOOSES TO SPECIFY NUMBER OF FREE AND BOUND CHANNELS; BUT + - THIS MUST BE INCREMENTED BY THE NUMBER OF CORRELATION CHANNELS. * IF(MAXCH.EQ.0) MAXCH =200 * MAXCH=((MAXCH+1)/2)*2 + MDIMAT = 40 37 + - GE LARGEST NUMBER OF FREE OR BOUND CHANNELS IN ANY S L PI * IF(MDIMAT.EQ.'') MDIMAT = (MAXCH+1)/2 + -IS A LOWER LIMIT COMPATIBLE WITH MAXCH CHANNELS; MXHCA AND MAXREL + WILL DEFAULT ON UPPER ESTIMATE BASED ON THE VALUE FOR MDIMAT: * NDUM = (MDIMAT+1)*MDIMAT + MXHCA = 782 350 200 2585 3339 + - GE MAX(MXBCH*MXFCH,(MXFCH+1)*MXFCH)) IN SR TWOTWO/DSTWAV, + - GE MXBCH**2 = NUMBER OF ELEMENTS OF 'CURLED H' IN "/COLALG * IF(MXHCA.EQ.'') MXHCA = NDUM + MAXREL SHOULD BE CHOSEN SUCH THAT MAXREL.GE.NCN*(NCN+1)/2, WHERE + NCN = TOTAL NO. OF CHANNELS (BOTH FREE AND BOUND) ASSOCIATED WITH + ANY PARTICULAR TOTAL SL, E.G.= 770 2016 5252 6786 * IF(MAXREL.EQ.'') MAXREL = NDUM * IF(MAXRC.EQ.'') MAXRC = 36 + ALLOCATES QUANTUM NUMBER BUFFER SPACE IN SR TWOTWO. + MAXE = 200 400 600 120 360 240 + = NUMBER OF SUPPORTING POINTS FOR RADIAL FUNCTIONS * IF(MAXE.EQ.'') MAXE = 800 * IF(MAXF.EQ.'') MAXF = 600 + MAXF - SIZE OF FACTORIAL ARRAYS (FOR SR'S VCC, SJS, DELTA) .LE.188, + .GE.(TARGET-L-MAX + PARTIAL-WAVE-L-MAX +1)*4 NEEDED. * IF(MXL.EQ.'') MXL = 4 + - SPECIFIES TIME-SAVING ALGEBRAIC TABLES OF SIZE (MXL+1)**5 -- + CHOOSE (MXL+1)**5 CLOSE TO 3*MAX0(MAXD1,MAXD2)**2 + (CLOSE TO 2*MAX0(...)**2+MAX0(...) IF NAG IS ON) + - WILL DEFAULT TO SUCH VALUE, BUT YOU MIGHT WANT SOMETHING BIGGER, + ALTHOUGH THIS CAN BECOME VERY EXPENSIVE IN STORAGE (EQ MXL1**5). + -- IF NECESSARY MACRO WILL ADD DUMMY LDM TO VCA IN /COMFCT/: + DIMENSIONS IN MICHAEL JONES' PHOTOIONIZATION SECTION -- PGM.RADALG + MXME = 500 770 1008 3008 * IF(MXME.EQ.'') MXME = 3008 * IF(MXADF.EQ.'') MXADF = 66 + NUMBER OF RADIATIVE ALGEBRA COEFFICIENTS MAXGF AND MAXGC + MAXGF = 50 120 * IF(MAXGF.EQ.'') MAXGF = 120 + MAXGC = 100 150 350 * IF(MAXGC.EQ.'') MAXGC = 350 + NUMBER OF MULTIPOLE INTEGRALS * IF(MAXIN.EQ.'') MAXIN = 200 + NUMBER OF STATES OF TOTAL SLP FOR RADALG/COBALG * IF(MAXSLT.EQ.'') MAXSLT = 6 + + + 3 WORK SECTION -- NOT AT THE CONTROL OF THE USER + * IF(PROG.NE.'RADALG') MXME=MXADF=MAXGF=MAXGC=MAXIN=MAXSLT = 1 * T1=T2=T3 = ' ' + IF(MACHINE.EQ.'IBM') T3 = '+ ' + IF(MACHINE.NE.'IBM') T2 = '+ ' -- RUB'93Oct26: * IF(MACHINE.EQ.'CRAY') T2 = '+ ' * IF(MACHINE.NE.'CRAY') T3 = '+ ' * IF(TIMES.EQ.'OFF') T1=T2=T3 = '+ ' PRINT 0 + * MAXCT = MAXT + OLD MAXCT = MAXT -- MOVED '95APR11 * IF(MAXE.LT.19) MAXE=19 * MAXA = 2*MAXE * IF(MAXA.LT.MDIMAT) MAXA=MDIMAT + TO PROTECT DLB(1-4) IN SR'S TWOONE AND TWOBON. * NDUM=MAXA/2 * IF(PRECSN.EQ.'DOUBLE') NDUM=2*NDUM * IF(MXPIN.LT.NDUM) MXPIN=NDUM + + ENSURE SUFFICIENTLY LARGE ARRAYS + * IF(NDUM=((MAXGR-1)/18+2)*21.GT.MAXST0) MAXST0=NDUM + BECAUSE THE ARRAYS OF SIZE MAXST0 ARE USED AS BUFFER FOR + CONFIGURATION INPUT, AND EACH C-CARD (AND THE TERMINATOR) + REQUIRE 21 LOCATIONS, AND THE TERMINATOR MAY BE EXTENDED. * IF (MAXSLT.LT.2) MAXSLT=2 * IF(MAXT.LT.MAXD1) MAXT=MAXD1 + NEW MAXCT = MAXT + IF(MAXF.LT.MAXT) MAXF=MAXT --- 79/2/26 NEW CODE AND THESE 2 CARDS * IF(MAXRK.LT.MAXT) MAXRK=MAXT * IF(MAXRL.LT.MAXT) MAXRL=MAXT + FOR ARRAY DP IN DO44 IN SR.TWOTWO OF PGM.DSTWAV * IF(NDUM=(3*MAXGR+4)/2+1.GT.MAXHAR) MAXHAR=NDUM + IF(PROG.EQ.'COLALG') MAXHAR=NDUM -- NO LONGER WITH 2.2-REORDER. QUB86JLY * IF(2*MAXHAR.LT.MAXT) MAXHAR=(MAXT-1)/2+1 * IF(NDUM=14-MAXGR.GT.MAXHAR) MAXHAR=NDUM + SO THAT // IS LONG ENOUGH IN $MAIN FOR CRAY OF CDC CODE LINKING '87APR24 + * MXL0 = MXL * IF(MXL.LT.0) MXL=-MXL * MACRO LADDER(SIZE,START,SUM) * K=START+1 * RPT IF(SUM=K*K*K*K*K.GT.SIZE) GO TO END * K=K+1 * GO TO RPT * END START=K-2 * END * NDUM=MAXD1 * IF(MAXD1.LT.MAXD2) NDUM=MAXD2 * NSQ=3*NDUM*NDUM * IF(NAG.NE.'OFF') NSQ=2*NDUM*NDUM+NDUM * CALL LADDER(NSQ,MXL,SUM) * IF(MXL.LT.MXL0) MXL=MXL0 * MXL1 = MXL+1 * MXL2 = MXL1*MXL1 * MXLBF=MXL2*MXL2*MXL1 * NDUM=NSQ-MXLBF * IF(NDUM.GT.0) MXLBF=NSQ * IF(NDUM.GT.0) LDM=',DUMVCA(&(NDUM))' * IF(NSQ=8*MXL+4.GT.MAXF) MAXF=NSQ '87APR28 + DUMMY ARRAY FOR EQUIVALENCING WORKING SPACE WITH DPNL IN SR.TWOTWO * NSQ=MDIMAT*MDIMAT-MAXE*(MAXGR+2) * IF(NSQ.LT.0) NSQ=0 * IF(NSQ.GT.0) MDM=',DUMMY(&(NSQ))' * IF (NSQ.LT.3*MAXGR) NSQ = 3*MAXGR + SECURE ENOUGH SPACE FOR ARRAY DEW IN TWOTWO(COLALG) -- DWN 79NOV30 + WHICH ALSO FIGURES IN SUBR. TWOTWO(DSTWAV) -- DL'83JUN19 * IF(NDUM=(MAXCH-1)/2+1.GT.MAXHAR) MAXHAR=NDUM + + IN OLDER COLALG CODE: ENSURE FIRST LOAD OF BLANK COMMON IS LARGEST * NDUM=10 * IF(MACHINE.EQ.'IBM') NDUM=1 * IF(MAXHAR.LT.NDUM) MAXHAR=NDUM + + MISCELLANEOUS SUBSIDIARY PARAMETERS + * C00 = ' C ' + C00 SCREENS THE CONTINUATION CHARACTER FOLLOWING A CARD &.... + SPECIAL PRECISION OPTIONS (D=DOUBLE,H=HALF,W=WORD-HOLLERITH) + AND (DIRECT ACCESS) MASS STORAGE SWITCHES SD/SM + AND FORMAT SWITCH SE/SF IN THE CASE SD * PD=PH=PI=PS = '+SP ' * SM=SD=SC=SN = 'CSTOR' * PW = PA = ' ' * IF (MACHINE.EQ.'IBM') PH = SD = ' ' * IF (MACHINE.EQ.'CRA') SC = ' ' * IF (MACHINE.EQ.'DFT') SM = ' ' * IF (MACHINE.EQ.'CDC') SM = ' ' * IF (PH.NE.' ') PI = ' ' * IF (MACHINE.NE.'IBM') SN = ' ' * IF (MACHINE.EQ.'CDC') PW = 'CDC ' * IF (MACHINE.EQ.'CRA') PW = 'CRA ' * IF (MACHINE.EQ.'CDC') PA = '+ ' * IF (MACHINE.EQ.'CRA') PA = '+ ' * IF (PRECSN.EQ.'DOUBLE') PD = ' ' * IF (PRECSN.EQ.'DOUBLE') PA = '+ ' * IF (PD.NE.' ') PS = ' ' * SE=SF = ' ' * IF (PRECSN.EQ.'DOUBLE') SE = '+' * IF (PRECSN.NE.'DOUBLE') SF = '+' * IF (MACHINE.NE.'IBM') SE=SF = '+' + ENSURE PROPER ALIGNMENT IN /DEQUQ/ - REQUIRED FOR DW ONLY * K=1 * IF(PD.EQ.' ') K=2*K * IF(PH.EQ.' ') K=2*K * NDUM=(MAXT/K)*K-MAXT * IF(NDUM.LT.0) ALGN2=',NALGN2(&(K+NDUM))' + + SPECIAL OVERLAY MACRO INSTRUCTIONS + * L0=L4 = 'COVLY' + L2=L3=G='+ ' -- '93Oct18: * L2=L3='+ ' * G = ' ' * IF (MACHINE.EQ.'IBM') L0=L4 = ' ' * IF (MACHINE.EQ.'CDC') L2=L3 = ' ' * IF (MACHINE.EQ.'CRA') L2=L4 = ' ' * L1 = L2 * IF (MACHINE.EQ.'DFT') L0=L4=' ' * L5 = L2 * IF (PROG.NE.'RADALG') L5 = '+ ' + * IF (MACHINE.NE.'IBM') G = ' ' + TO TURN ON FT CODE FOR FUNCTION GAMMA(X). + + MACRO FOR GENERATING CODE OF GROUP INDICES -- FOR USE IN SR1.1 + * MACRO DATLIT + CHAR MAY BE SUITABLY EXTENDED IN CASE MAXGR.GT.&L(CHAR)=35 + ALTERNATIVELY A PRINT-MESSAGE COULD BE INSERTED BY MACRO. * CHAR = '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' * MXCAR = &L(CHAR) * K = 1 * LIT = '/1H1' * TST IF (K=K+1.GT.MAXGR) GO TO FIN * IF (K.GT.MXCAR) GO TO DUM * LIT = LIT++',1H&S(CHAR,K,K)' * GO TO TST * DUM LIT = LIT++',1H/' * GO TO TST * FIN LIT = 'LIT'++LIT++',1H0/' DATA MXLIT/&(MAXGR+1)/, &(LIT) * END + * S$='+ ' PRINT 3 &(S$) MACPROC ADJUSTS MXL FROM INPUT OR DEFAULT VALUE &(MXL0) TO &(MXL) PRINT 0 + *********************