SUBROUTINE SPLPLT(IBUF,N,X,Y,NUMB,IPLOT,YMIN,YMAX,XINC,MODE,IGRAPH) C C SPLPLT - SPLINE PLOT - IS A COMBINATION OF MAX/MIN ROUTINE C AND PLOTTING ROUTINE C IBUF - THE INFORMATION BUFFER FOR PLOTTING C N - THE NUMBER OF POINT IN THE X AND Y DATA ARRAYS C X - THE DATA FOR THE INDEPENDENT VARIABLE IN ASCENDING ORDER C Y - THE CORRESPONDING DATA FOR THE DEPENDENT VARIABLE C NUMB - THE SIZE OF THE WINDOW FOR THE SPLINE FIT C MUST BE LESS THAN OR EQUAL TO 20 AND > 3 C IPLOT- IF EQUAL TO 0 THEN NO PLOTTING, OTHERWISE PLOT DATA C YMIN - MIN OF SPLINED DATA ->>>>>> RETURNED BY SUBROUTINE <<<<<<< C YMAX - MAX OF SPLINED DATA ->>>>>> RETURNED BY SUBROUTINE <<<<<<< C XINC - THE STEP SIZE TO BE USED FOR THE X AXIS C DIMENSION IBUF(1),X(1),Y(1),SC(20),EL(20),A(20),B(20),C(20) IF(NUMB .LE. 20)GOTO 5 WRITE(7,1) 1 FORMAT(' ** SPLSCL -- NUMB TOO BIG **') RETURN 5 IFLAG=0 IBASE=0 !BEGINNING OF MOVING WINDOW FOR SPLINE FIT NPTS=NUMB !SIZE OF MOVING WINDOW INTVAL=(NPTS/2) !BIGIN INTERPOLATION INTERVAL C C THE FOLLOWING CODE DOES A MOVING WINDOW (NPTS WIDE) SPLINE FIT TO C THE DATA AND PLOTS THE RESULTS OVER EACH DATA INTERVAL. C THE DATA IS EVALUATED OV THE MIDDLE INTERVAL OF EACH WINDOW C 32 IBASE=IBASE+1 !INCREMENT START OF WINDOW IF(IBASE .GT. 1)GOTO 38 C C THIS SECTION OF CODE EVALUATES THE DATA OVER THE INITIAL SECTION OF C THE DATA. THAT REGION FROM THE FIRST DATA POINT TO THE END OF THE C X(INTVAL+1) DATA ELEMENT C CALL SPFIT(NPTS,X(IBASE),Y(IBASE),SC,EL,A,B,C) XPOS=X(IBASE)-XINC 33 XPOS=XPOS+XINC IF(XPOS .GE. X(IBASE+INTVAL+1))GOTO 32 CALL SPGET(NPTS,X(IBASE),Y(IBASE),SC,EL,XPOS,YY,YP,YDP) IF(IFLAG .NE. 0) GOTO 34 YMIN=YY YMAX=YY IFLAG=1 34 IF(YY .GT. YMAX)YMAX=YY IF(YY .LT. YMIN)YMIN=YY IF(IPLOT .NE. 0)CALL GRPNTS(IBUF,MODE,XPOS,YY,IGRAPH) GOTO 33 C C THIS SECTION OF CODE EVALUATES THE DATA BETWEEN THE C END POINTS, BUT NOT INCLUDING THE END POINTS C 38 IF((IBASE+(NPTS-1)).LE. N)GOTO 50 !ENOUGH DATA FOR WINDOW NPTS=N-IBASE+1 CALL SPFIT(NPTS,X(IBASE),Y(IBASE),SC,EL,A,B,C) !SPLINE FIT XPOS=X(IBASE+INTVAL)-XINC 39 XPOS=XPOS+XINC IF(XPOS .GT. X(N))GOTO 100 !END OF DATA CALL SPGET(NPTS,X(IBASE),Y(IBASE),SC,EL,XPOS,YY,YP,YDP) IF(IFLAG .NE. 0)GOTO 40 YMIN=YY YMAX=YY IFLAG=1 40 IF(YY .GT. YMAX)YMAX=YY IF(YY .LT. YMIN)YMIN=YY IF(IPLOT .NE. 0)CALL GRPNTS(IBUF,MODE,XPOS,YY,IGRAPH) GOTO 39 C C THIS LAST SECTION OF CODE TAKES CARE OF THE END OF THE DATA C 50 CALL SPFIT(NPTS,X(IBASE),Y(IBASE),SC,EL,A,B,C) XPOS=X(IBASE+INTVAL)-XINC 55 XPOS=XPOS+XINC IF(XPOS .GT. X(IBASE+INTVAL+1))GOTO 32 !DONE WITH THIS WINDOW CALL SPGET(NPTS,X(IBASE),Y(IBASE),SC,EL,XPOS,YY,YP,YDP) IF(IFLAG .NE. 0)GOTO 60 YMIN=YY YMAX=YY IFLAG=1 60 IF(YY .GT. YMAX)YMAX=YY IF(YY .LT. YMIN)YMIN=YY IF(IPLOT .NE. 0)CALL GRPNTS(IBUF,MODE,XPOS,YY,IGRAPH) GOTO 55 100 RETURN END