SUBROUTINE ICONFR(XP,YP,ZP,NPXYZ,NZX,NZY,NT,ZVAL,SD,RD,FORM) PARAMETER (NLEV1=51) CHARACTER*3 XBTYPE, YBTYPE, FORM, SDPLOT, RDPLOT CHARACTER*80 TITLE,TITLEX,TITLEY CHARACTER*28 SRDUNIT CHARACTER*80 FILENM CHARACTER*72 WORD REAL SECTOR(28), ZVAL(1) REAL XP(1), YP(1), ZP(1) COMMON /PARA/ LABPT,NSM,NDIV,CAY,NARC,NRNG,HGTPT,HGT, & LABC(51),LWGT(51) COMMON /PARAC/ TITLE, SDPLOT, RDPLOT COMMON /XAX/ X1,XL,XLEFT,XRIGHT,XSCALE,XINC,DX, & X1PL,XLPL,NX,X1GRID,XLGRID,DIVX,XVAL(100),NXVAL COMMON /XAXC/ TITLEX, XBTYPE COMMON /YAX/ Y1,YL,YUP,YDOWN,YSCALE,YINC,DY, & Y1PL,YLPL,NY,Y1GRID,YLGRID,DIVY,YVAL(100),NYVAL COMMON /YAXC/ TITLEY, YBTYPE COMMON /ZAX/ ZMIN,ZMAX,ZINC,NLEV,ZLEV(NLEV1) C 100 FORMAT(A3) 200 FORMAT(A80) 300 FORMAT(1X,/,' ***** ',/, & ' WARNING : SMOOTHING WILL BE APPLIED ON EACH ',/, & ' PROPAGATION LOSS CURVE BEFORE THE GRID IS BUILT.',/, & ' NUMBER OF SAMPLING POINTS IN SMOOTHING WINDOW :',I3,/, & ' ***** ',/) 360 FORMAT(A72) 420 FORMAT(F15.4,3X,A28) 500 FORMAT(1X,' WARNING : ACCEPTABLE VALUES FOR NDIV ARE 1,2 AND 4 ',/, & ' ACTUAL VALUE IS ',I3,'. PLOTTING IS DONE WITH NDIV = 1 ') 600 FORMAT(1X,'NPX,NPY TOO LARGE',/,1X,'EXECUTION', & 1X,'TERMINATED BECAUSE ARRAY SIZE LIMITATIONS',/) 700 FORMAT(1X,'NX,NY TOO LARGE',/,1X,'EXECUTION', & 1X,'TERMINATED BECAUSE ARRAY SIZE LIMITATIONS',/) 800 FORMAT(1X,'NLEV = ',' THIS PROGRAM ALLOWS ONLY 51 LEVELS FOR', &' CONTOURING',/,'EXECUTION TERMINATED') C READ(55,200) TITLE READ(55,*) NPX READ(55,*) NPY IF(NPX*NPY .GT. NPXYZ) THEN WRITE(6,600) STOP END IF NT=NPX*NPY READ(55,*) NX READ(55,*) NY IF(NX*NY .GT. NZX*NZY) THEN WRITE(6,700) STOP END IF READ(55,*) X1 READ(55,*) XL READ(55,*) XLEFT READ(55,*) XRIGHT READ(55,360) WORD C READ(55,*) XSCALE READ(55,*) XINC X1GRID=X1 XLGRID=AMIN1(XL,XRIGHT) IF(X1GRID.LT.XLEFT)X1GRID=XLEFT READ(55,200) TITLEX READ(55,100) XBTYPE CALL AXLEN(XBTYPE,XLEFT,XRIGHT,WORD,XSCALE,XLEN,55) IF(XBTYPE(1:3) .NE. 'LOG') GO TO 1300 X1=ALOG(X1)/ALOG(2.0) X1GRID=ALOG(X1GRID)/ALOG(2.0) XL=ALOG(XL)/ALOG(2.0) XLGRID=ALOG(XLGRID)/ALOG(2.0) DO 1200 NXVAL=1,100 XVAL(NXVAL)=XLEFT*2.0**((NXVAL-1)/XINC) IF(XVAL(NXVAL).GE.XRIGHT) GO TO 1300 1200 CONTINUE 1300 CONTINUE READ(55,*) Y1 READ(55,*) YL READ(55,*) YUP READ(55,*) YDOWN READ(55,360) WORD C READ(55,*) YSCALE READ(55,*) YINC Y1GRID=Y1 YLGRID=YL IF(Y1GRID.LT.YUP)Y1GRID=YUP IF(YLGRID.GT.YDOWN)YLGRID=YDOWN READ(55,200) TITLEY READ(55,100) YBTYPE CALL AXLEN(YBTYPE,YUP,YDOWN,WORD,YSCALE,YLEN,55) IF(YBTYPE(1:3) .EQ. 'LOG') THEN Y1GRID=ALOG(Y1GRID)/ALOG(2.0) YLGRID=ALOG(YLGRID)/ALOG(2.0) ELSE TEMP=YUP YUP=YDOWN YDOWN=TEMP END IF C READ(55,*) DIVX IF(DIVX.EQ.0.0) DIVX=1.0E-3 C READ(55,*) DIVY IF(DIVY.EQ.0.0) DIVY=1.0 READ(55,*) CAY READ(55,*) NRNG READ(55,*) NSM BACKSPACE 55 READ(55,360) WORD INSP= INDEX(WORD,'NSP') IF(INSP .NE. 0) THEN INSM= INDEX(WORD,'NSM') WORD(1:INSM+2)=' ' READ(WORD,*) NSP WRITE(6,300) NSP END IF READ(55,*) ZMIN READ(55,*) ZMAX READ(55,*) ZINC READ(55,*) X1PL READ(55,*) Y1PL READ(55,*) HGTPT READ(55,*) HGT READ(55,*) LABPT READ(55,*) NDIV IF( (NDIV.NE.1) .AND. & (NDIV.NE.2) .AND. & (NDIV.NE.4) ) THEN WRITE(6,500) NDIV NDIV=1 END IF READ(55,*) NARC READ(55,*) LABC(1) READ(55,*) LWGT1 IF(ABS(ZINC).GT.0.0) GO TO 2000 NLEV=1 ZLEV(1)=MIN(ZMIN,ZMAX) GO TO 2600 2000 CONTINUE NLEV=ABS((ZMAX-ZMIN)/ZINC)+1 IF(NLEV .GT. NLEV1) THEN WRITE(6,800)NLEV STOP END IF DO 2400 I=1,NLEV LABC(I)=LABC(1) ZLEV(I)=(I-1)*ABS(ZINC)+MIN(ZMIN,ZMAX) LWGT(I)=LWGT1 IF(MOD(NINT(ZLEV(I)),10).EQ.0 )LWGT(I)=LWGT1+1 2400 CONTINUE 2600 CONTINUE READ(55,420) SD, SRDUNIT SDPLOT='m ' CALL UNIT(SRDUNIT,SDPLOT) READ(55,420) RD, SRDUNIT RDPLOT='m ' CALL UNIT(SRDUNIT,RDPLOT) C SECTION INPUTING DATA TO BUILD ARRAYS XP,YP,ZP C XP : X AXIS C YP : Y AXIS C ZP : Z AXIS READ(55,200)FILENM CALL FILETYPE(FORM,FILENM,55,17) C FILLING OF XP ARRAY READ(55,*)DELTAX IF(DELTAX.GT.0.0) THEN XP(1)=X1 XP(NPX)=XL DO 2800 IXP=2,NPX-1,1 XP(IXP)=X1+DELTAX*(IXP-1) 2800 CONTINUE ELSE READ(17,*) (XP(K),K=1,NPX) END IF DO 3000 IYP=2,NPY,1 INDX=(IYP-1)*NPX DO 3000 IXP=1,NPX XP(IXP+INDX)=XP(IXP) 3000 CONTINUE C FILLING OF YP AND ZP ARRAYS INDX=1 NSP= 0 IF(FORM .NE. 'BIN') THEN 3200 READ(17,*) SECTOR NTP=SECTOR(1) FREQ=SECTOR(2) IF(YBTYPE.EQ.'LOG') FREQ=ALOG(FREQ)/ALOG(2.0) READ(17,*) (ZVAL(K),K=1,NTP) CALL SMOOTL(NSP, NTP, XP, ZVAL, ZP(INDX)) DO 3300 JJ=INDX,INDX+NTP-1 YP(JJ)=FREQ 3300 CONTINUE INDX=INDX+NTP IF(INDX.LT.NT+1) GO TO 3200 ELSE 3400 READ(17) SECTOR NTP=SECTOR(1) FREQ=SECTOR(2) IF(YBTYPE.EQ.'LOG') FREQ=ALOG(FREQ)/ALOG(2.0) READ(17) (ZVAL(K),K=1,NTP) CALL SMOOTL(NSP, NTP, XP, ZVAL, ZP(INDX)) DO 3500 JJ=INDX,INDX+NTP-1 YP(JJ)=FREQ 3500 CONTINUE INDX=INDX+NTP IF(INDX.LT.NT+1) GO TO 3400 END IF DY=(YL-Y1)/(NY-1) C ELIMINATION OF DATA POINTS C LYING OUTSIDE THE INTERVAL (0.,327.) DO 3800 JJ=1,NT IF(ZP(JJ).LT.327..AND.ZP(JJ).GT.0.0) GO TO 3800 ZP(JJ)=ZP(NT) YP(JJ)=YP(NT) XP(JJ)=XP(NT) 3800 CONTINUE C CLOSE(17) RETURN END