SUBROUTINE ZSPLIN(X,NPTS,XA,YA,N,Y,STATUS) * * Module number: * * Module name: ZSPLIN * * Keyphrase: * ---------- * cubic spline interpolation * Description: * ------------ * This routine computes the cubic spline interpolation using * Numerical recipe routines spline and splint * * FORTRAN name: zsplin.for * * Keywords of accessed files and tables: * -------------------------------------- * none * Subroutines Called: * ------------------- * CDBS: * spline, splint * SDAS: * umsput * Others: * * * History: * -------- * Version Date Author Description * 1 Dec 87 D. Lindler Designed and coded *------------------------------------------------------------------------------- C C INPUTS C X - VECTOR OF X-POINTS TO INTERPOLATE FOR (REAL*8) C NPTS - NUMBER OF POINTS IN X (INTEGER) C XA - VECTOR OF X-NODE POSITIONS OF THE SPLINE (REAL*8) C YA - VECTOR OF Y-NODE POSITIONS OF THE SPLINE (REAL*8) C N - NUMBER OF POINTS IN X AND Y C C OUTPUTS C C Y - VECTOR OF INTERPOLATED VALUES OF LENGTH N (REAL*8) C STATUS - ERROR STATUS C C INCLUDE FILE FOR THE IRAF77 FORTRAN INTERFACE TO THE IRAF VOS C C C FILE I/O ACCESS MODES C INTEGER RDONLY PARAMETER (RDONLY = 1) INTEGER RDWRIT PARAMETER (RDWRIT = 2) INTEGER WRONLY PARAMETER (WRONLY = 3) INTEGER APPEND PARAMETER (APPEND = 4) C C CODES FOR DATA TYPES C INTEGER TYBOOL PARAMETER (TYBOOL = 1) INTEGER TYCHAR PARAMETER (TYCHAR = 2) INTEGER TYINT PARAMETER (TYINT = 4) INTEGER TYREAL PARAMETER (TYREAL = 6) INTEGER TYDOUB PARAMETER (TYDOUB = 7) C C UMSPUT DESTINATIONS -- CB, DAO, 4-SEP-87 C INTEGER STDOUT PARAMETER (STDOUT = 1) INTEGER STDERR PARAMETER (STDERR = 2) C C UHDAS HEADER PARM TYPES -- CB, DAO, 5-SEP-87 C INTEGER GENHDR PARAMETER (GENHDR = 0) INTEGER IMSPEC PARAMETER (IMSPEC = 1) C C THIS SECTION IS FOR PARAMETERS RELEVANT TO TABLE I/O. C C THESE MAY BE SET BY UTPPTI AND/OR READ BY UTPGTI: C C LENGTH OF ROW (UNIT = SIZE OF REAL) INTEGER TBRLEN PARAMETER (TBRLEN = 1) C INCREASE ROW LENGTH INTEGER TBIRLN PARAMETER (TBIRLN = 2) C NUMBER OF ROWS TO ALLOCATE INTEGER TBALLR PARAMETER (TBALLR = 3) C INCREASE ALLOC NUM OF ROWS INTEGER TBIALR PARAMETER (TBIALR = 4) C WHICH TYPE OF TABLE? (ROW OR COLUMN) INTEGER TBWTYP PARAMETER (TBWTYP = 5) C MAXIMUM NUMBER OF USER PARAMETERS INTEGER TBMXPR PARAMETER (TBMXPR = 6) C MAXIMUM NUMBER OF COLUMNS INTEGER TBMXCL PARAMETER (TBMXCL = 7) C TYPE = ROW-ORDERED TABLE INTEGER TBTYPR PARAMETER (TBTYPR = 11) C TYPE = COLUMN-ORDERED TABLE INTEGER TBTYPC PARAMETER (TBTYPC = 12) C C THESE MAY BE READ BY UTPGTI BUT MAY NOT BE SET: C C NUMBER OF ROWS WRITTEN TO INTEGER TBNROW PARAMETER (TBNROW = 21) C C END IRAF77.INC DOUBLE PRECISION XA(1),YA(1),X(1),Y(1) INTEGER STATUS INTEGER NPTS,N * * LOCAL VARIABLES * DOUBLE PRECISION YA2(100) CHARACTER*130 CONTXT INTEGER ISTAT,I C C CHECK FOR VALID NUMBER OF NODES C IF(N.GT.100) THEN CONTXT='100 NODES MAX. ALLOWED IN SPLINE INTERPOLATION' STATUS=1 GO TO 999 ENDIF C C C COMPUTE SECOND DIREVATIVES OF SPLINE FUNCTION AT XA,YA C CALL SPLINE(XA,YA,N,1.0E30,1.0E30,YA2) C C COMPUTE INTERPOLATED VALUE FOR EACH POINT IN X C DO 100 I=1,NPTS CALL SPLINT(XA,YA,YA2,N,X(I),Y(I)) 100 CONTINUE STATUS=0 GO TO 1000 999 CALL UMSPUT(CONTXT,STDOUT+STDERR,0,ISTAT) 1000 RETURN END