CTITLEJSFX3D - JOBGEN REGION & BLANK COMMMON ALGORITHM FOR FX3D 00010000 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR W. R. FIELDER 00020000 CA DESIGNER W. R. FIELDER 00030000 CA LANGUAGE VS FORTRAN 00040000 CA SYSTEM IBM / CRAY 00050000 CA WRITTEN 12-21-89 00060000 CA 00070000 CA REVISED 10-19-90 CLJ RENAME ROUTINES FROM FX3** TO SAFX3D* 00080000 CA REVISED 12-10-90 CLJ CORRECT MEMORY CALCULATION FOR # FREQ 00090000 CA 00100000 CA REVISED 09-10-92 DC CHANGE RESERVED MEMORY ALLOCATION TO 00110000 CA REFLECT THE REVISION IN BOOKKEEPING 00120000 CA DESIGNED TO AVOID DYNAMIC BUFFERING 00130000 CA 00140000 CA CALL JSFX3D (KPNA, KPRNO, OCCUR, PSIZE, CSIZE, UCSIZE, 00150000 CA ERCODE) 00160000 CA 00170000 CA INPUT KPNA = PROCESS NAME A4 00180000 CA INPUT KPRNO = PROCESS NUMBER I4 00190000 CA INPUT OCCUR = OCCURRENCE NUMBER FOR PROCESS KPNA WITH I4 00200000 CA KPRNO 00210000 CA OUTPUT PSIZE = REGION SIZE OF PROGRAM IN K-BYTES I4 00220000 CA OUTPUT CSIZE = RESERVED BLANK COMMON SIZE IN WORDS I4 00230000 CA OUTPUT UCSIZE = UNRESERVED BLANK COMMON SIZE IN WORDS I4 00240000 CA OUTPUT ERCODE = ERROR CODE (=16 IF NOT ABLE TO COMPUTE I4 00250000 CA THE REQUIRED PARAMETERS) 00260000 CA 00270000 CA 00280000 CA COMPUTES THE PROGRAM SIZE (PSIZE) AND AMOUNT OF BLANK COMMON 00290000 CA (CSIZE) NEEDED BY SPARC DEVELOPMENT PROCESS 'FX3D'. 00300000 CA 00310000 C 00320000 C EJECT 00330000 C 00340000 SUBROUTINE JSFX3D (KPNA, KPRNO, OCCUR, PSIZE, CSIZE, UCSIZE, 00350000 + ERCODE) 00360000 C 00370000 IMPLICIT INTEGER (A-Z) 00380000 C 00390000 C 00400000 CHARACTER*4 KPNA 00410000 CHARACTER*80 CARD 00420000 C 00430000 C INTEGER CONSTANTS -- LOCAL 00440000 C 00450000 INTEGER IPR 00460000 INTEGER THL 00470000 C 00480000 C 00490000 C REAL VARIABLES -- LOCAL 00500000 C 00510000 REAL CDF 00520000 REAL CDL 00530000 REAL FLI 00540000 REAL FLX 00550000 REAL PWN 00560000 REAL OSW 00570000 REAL PAB 00580000 REAL PMN 00590000 REAL ALF 00600000 REAL ALL 00610000 REAL DGI 00620000 REAL DGX 00630000 REAL F1 00640000 REAL F2 00650000 REAL F3 00660000 REAL F4 00670000 REAL FNYQ 00680000 REAL DELF 00690000 REAL SR 00700000 REAL DM2,DM3,DM4 00710000 C 00720000 DATA IPR / 98 / 00730000 DATA THL / 190 / 00740000 C 00750000 C 00760000 C ==================================================== 00770000 C BEGIN COMPUTATION OF REGION AND COMMON SIZE FOR FX3D 00780000 C (INSERT REGION SIZE & BLANK COMMON SIZE CALCULATIONS HERE) 00790000 C =========================================== 00800000 C 00810000 C 00820000 C 00830000 C PART 1. SET PROGRAM SIZE IN K-BYTES (PSIZE) 00840000 C 00850000 C 00860000 PSIZE = 30 00870000 C 00880000 C GET LINE CARD PARAMETERS 00890000 C 00900000 DA = 1 00910000 CALL FORC ('LINE', 0, DA, CARD, * 9200 )00920000 C 00930000 LCTPSP = S1CVBN (CARD, 36, 5) 00940000 LCMXFD = S1CVBN (CARD, 61, 5) 00950000 IF (LCMXFD .EQ. 0) LCMXFD = LCTPSP 00960000 C 00970000 LCRLEN = S1CVBN (CARD, 41, 5) 00980000 LCSI = S1CVBN (CARD, 46, 5) 00990000 LCPI = S1CVBN (CARD, 51, 5) 01000000 IF (LCPI .EQ. 0) LCPI = LCSI 01010000 C 01020000 C IF (LCPI .EQ. 0) GO TO 9800 01030000 C ABOVE LINE IS COMMENTED BUT INTENTIONALY LEFT FOR CLARITY. 01040000 C THE LCPI NON ZERO CHECK SHOULD BE DONE IN JSCORE OR JSRND AND 01050000 C THEREFORE IS REDUNDANT HERE. 01060000 C 01070000 C 01080000 NOSAMP = LCRLEN / LCPI 01090000 C 01100000 C PART 2. COMPUTE RESERVED BLANK COMMON SIZE IN WORDS (ICC) 01110000 C 01120000 C THIS VALUE, FOR MOST CASES, IS IDENTICAL TO THE COMPUTATION OF 01130000 C RESERVED BLANK COMMON IN THE INITIALIZATION PART OF THE PROCESS 01140000 C (THE '0 ENTRY' FOR SPARC 'SHELLS'). THIS VALUE IS TYPICALLY 01150000 C CALLED 'ICC' AND IS THE TOTAL NUMBER OF WORDS USED IN RESERVED 01160000 C BLANK COMMON ( 'RA' FOR SPARC 'SHELLS'). 01170000 C 01180000 C 01190000 ICC = 0 01200000 C 01210000 SR = LCPI 01220000 NBL = NOSAMP 01230000 C 01240000 C=======================================================================01250000 C 01260000 C READ INPUT CARDS 01270000 C 01280000 DAC = 1 01290000 100 CALL FORC (KPNA, KPRNO, DAC, CARD, * 9300) 01300000 C 01310000 IF (CARD(8:10) .NE. ' ') GO TO 100 01320000 C 01330000 READ(CARD,101) CDF,CDL,FLI,FLX,PWN,OSW,PAB,PMN,DM2,DM3,DM4,ALF,ALL01340000 101 FORMAT(10X,14F5.0) 01350000 C 01360000 IF( FLI.LE.0. ) FLI = 7. 01370000 IF( FLX.LE.0. ) FLX = 7. 01380000 IF( CARD(31:35).EQ.' ' ) PWN = 1. 01390000 IF( CARD(41:45).EQ.' ' ) PAB = 0. 01400000 IF( CARD(46:50).EQ.' ' ) PMN = 60. 01410000 C 01420000 DAC = 1 01430000 200 CALL FORC (KPNA, KPRNO, DAC, CARD , * 9300) 01440000 C 01450000 IF (CARD(8:10) .NE. 'DGS') GO TO 200 01460000 C 01470000 READ(CARD,201) DGI,DGX,F1,F2,F3,F4 01480000 201 FORMAT(20X,14F5.0) 01490000 C 01500000 IF( CARD(21:25).EQ.' ' ) DGI = 100. 01510000 IF( CARD(26:30).EQ.' ' ) DGX = 100. 01520000 C 01530000 C=======================================================================01540000 C 01550000 C 01560000 C=======================================================================01570000 C 01580000 C FREQUENCY DOMAIN SPECIFICATIONS 01590000 C 01600000 M = 5 01610000 N = 32 01620000 300 M = M + 1 01630000 N = 2*N 01640000 IF( N.LT.NBL ) GO TO 300 01650000 C 01660000 FNYQ = 500./SR 01670000 DELF = FNYQ/(N/2) 01680000 C 01690000 IF(F4 .EQ. 0.0) F4 = FNYQ 01700000 IF(F3 .EQ. 0.0) F3 = F4 01710000 C 01720000 IF1 = F1/DELF + 1 01730000 C IF2 = F2/DELF + 1 01740000 C IF3 = F3/DELF + 1 01750000 IF4 = F4/DELF + 1 01760000 NF = IF4 - IF1 + 1 01770000 C 01780000 C=======================================================================01790000 C 01800000 C COMPUTATIONAL PARAMETERS 01810000 C 01820000 NCDP = CDL - CDF + 1 01830000 NLIN = ALL - ALF + 1 01840000 C 01850000 LFI = FLI 01860000 LFI = 2*(LFI/2) + 1 01870000 LFX = FLX 01880000 LFX = 2*(LFX/2) + 1 01890000 C 01900000 LGI = DGI 01910000 LGX = DGX 01920000 C 01930000 C=======================================================================01940000 C 01950000 C ALLOCATE RA AREA FOR STORING DATA 01960000 C 01970000 C FIRST - AREA TO KEEP TRACK OF LIVE CDP-S FOR EACH LINE 01980000 C PLUS AREA TO STORE A FULL LINE OF INPUT DATA 01990000 C 02000000 C IXP: ARRAY TO FLAG LIVE TRACES IN ALL LINES 02010000 C IXH: STORAGE FOR HEADERS FOR ONE LINE 02020000 C IXT: STORAGE FOR FREQUENCY DOMAIN TRACES FOR ONE LINE 02030000 C 02040000 IXP = 1 02050000 IXH = IXP + NLIN*NCDP 02060000 IXT = IXH + NCDP*THL 02070000 IC1 = IXT + 2*NF*NCDP 02080000 C 02090000 C THEN - ALLOCATE STORAGE FOR A SINGLE FREQUENCY 02100000 C (WE REUSE THE RESERVED COMMON STORAGE AREA) 02110000 C 02120000 C IXD: DATA FOR A SINGLE FREQUENCY 02130000 C IXG: RIGHT HAND SIDE OF NORMAL EQUATIONS 02140000 C 02150000 IXD = IXH 02160000 IXG = IXD + 2*NLIN*NCDP 02170000 IC2 = IXG + 2*LFI*LFX 02180000 C 02190000 ICC = MAX0( IC1,IC2) 02200000 C 02210000 C 02220000 C DLOCAL 02230000 C | PSHOT 02240000 C | | KPVOLS 02250000 C | | | SAVE AREA 02260000 C | | | FOR TRACE 02270000 C | | | | INT VEL ARY 02280000 C | | | | VEL ARRY #1 02290000 C | | | | VEL ARRY #2 02300000 C | | | | | RANGE 02310000 C | | | | | | 02320000 C | | | | | | ID 02330000 C | | | | | | | 02340000 ICC = ICC + 150 + 24 + 513 + NOSAMP+THL + 3*(NOSAMP+1) +96+48 02350000 C 02360000 C SET RESERVED COMMON SIZE IN WORDS 02370000 C 02380000 CSIZE = ICC 02390000 C 02400000 C********************************************************************** 02410000 C 02420000 C PART 3. COMPUTE UNRESERVED BLANK COMMON SIZE IN WORDS (UCSIZE) 02430000 C 02440000 UCSIZE = 0 02450000 C 02460000 C ALLOCATE SCRATCH AREAS FOR COMPUTATION 02470000 C 02480000 MGI = LGI + LFI - 1 02490000 MGX = LGX + LFX - 1 02500000 C 02510000 C NEED TO ESTIMATE THE SIZE OF LBUF AND NPAT WITHOUT USING THE 02520000 C ACTUAL LINES OF TRACES HERE. THIS REQUIRES USING TWO OF FX3D 02530000 C SUBROUTINES. ONE (SAFX3DF) REMAINS INTACT WHILE THE OTHER(SAFX3DG)02540000 C IS BROUGHT INLINE AND DECIMATED AS REQUIRED. WE USE THE MAXIMUM 02550000 C NUMBER OF CDP PER LINE AND THE MAXIMUM NUMBER OF LINES IN ESTI- 02560000 C MATING SCRATCH MEMORY SIZE. 02570000 C 02580000 C ----------------------------------------------------------------------02590000 C 02600000 C IN-LINE WINDOW PARAMETERS 02610000 C 02620000 CALL SAFX3DF( NCDP,LGI,LFI,NWI,MUI,MWI,IDI ) 02630000 C 02640000 C CROSS-LINE WINDOW PARAMETERS 02650000 C 02660000 CALL SAFX3DF( NLIN,LGX,LFX,NWX,MUX,MWX,IDX ) 02670000 C 02680000 C ----------------------------------------------------------------------02690000 C 02700000 CWRF SAFX3DG IS BROUGHT INLINE HERE AND MODIFIED 02710000 C 02720000 ICMN = 1 02730000 NPAT = NWI*NWX 02740000 LBUF = 0 02750000 ILIN = 1 02760000 C 02770000 DO 500 IWX = 1,NWX 02780000 LUX = MUX 02790000 IF( IWX.GE.MWX ) LUX = MUX + IDX 02800000 IF( IWX.EQ.1 ) THEN 02810000 LOX = 0 02820000 ILIN = 1 02830000 ELSE 02840000 ILIN = ILIN + LUX 02850000 LOX = LGX - LUX 02860000 ENDIF 02870000 C 02880000 ICDP = ICMN 02890000 C 02900000 DO 400 IWI = 1,NWI 02910000 LUI = MUI 02920000 IF( IWI.GE.MWI ) LUI = MUI + IDI 02930000 IF( IWI.EQ.1 ) THEN 02940000 LOI = 0 02950000 ICDP = ICMN 02960000 ELSE 02970000 ICDP = ICDP + LUI 02980000 LOI = LGI - LUI 02990000 ENDIF 03000000 C 03010000 400 LBUF = LBUF + LOI + LOX + 6 03020000 C 03030000 500 CONTINUE 03040000 C 03050000 C WRITE(98,'('' *** LBUF='',I10,'' NPAT='',I10,'' ***'')') LBUF,NPAT03060000 C 03070000 ISB = 1 03080000 ISO = ISB + LBUF 03090000 ISM = ISO + 2*NCDP*NLIN 03100000 ISL = ISM + 2*MGI*MGX 03110000 ISR = ISL + 2*LGI*LGX 03120000 ISF = ISR + 2*LFX*LFX*LFI 03130000 ISW = ISF + 2*LFI*LFX*NPAT 03140000 C 03150000 ISEND = ISW + 2*(4*LFI*LFX*LFX+7*LFX*LFX+3*LFX) 03160000 C 03170000 CWRF THERE IS ALSO SOME USE OF SCRATCH FOR FFT, ETC. NEED TO SEE 03180000 C THAT ENOUGH SCRATCH MEMORY IS ALLOCATED 03190000 C 03200000 NWORDS = MAX0(ISEND, N + 2) 03210000 C 03220000 C ADD 10 PERCENT SLOP TO ALLOW FOR ANY ADDITIONAL SPACE 03230000 C 03240000 UCSIZE = FLOAT(NWORDS) * 1.10 03250000 C 03260000 ERCODE = 0 03270000 C 03280000 WRITE(IPR,9000) PSIZE,CSIZE,UCSIZE 03290000 9000 FORMAT(/5X,'JSFX3D VERSION COMPLETED: PSIZE = ',I5, 03300000 +' CSIZE = ',I10,' UCSIZE = ',I10) 03310000 GO TO 9500 03320000 C 03330000 9200 ERCODE = 16 03340000 WRITE(IPR,9210) KPNA,KPRNO 03350000 9210 FORMAT (/' *** ERROR IN JSFX3D LINE CARD ERROR ',A4,I1) 03360000 GO TO 9500 03370000 C 03380000 9300 ERCODE = 16 03390000 WRITE(IPR,9910) KPNA,KPRNO 03400000 GO TO 9500 03410000 C 03420000 9500 RETURN 03430000 C 03440000 C ERROR MESSAGES 03450000 C 03460000 9900 FORMAT (/' *** FROM JSFX3D ERROR IN CORE CALCULATION') 03470000 C 03480000 9910 FORMAT (/' *** ERROR IN JSFX3D NO CARDS FOUND FOR ',A4,I1) 03490000 C 03500000 C 03510000 END 03520000