FITSPL

Utility/Data Access SubroutineUses a spline fitting method to return the interpolated value or 1st/2nd derivative of the interpolated value for a Reference_Spline element.

Use

The function can be called by any user-defined subroutine.

Format

Fortran Calling Syntax
CALL FITSPL (XVAL, ZVAL, ID, IORD, ARRAY, ERRFLG)
C/C++ Calling Syntax
c_fitspl (xval, zval, id, iord, array, errflg)
Python Calling Syntax
[array, errflg] = py_fitspl (xval, zval, id, iord)
Compose/MATLAB Calling Syntax
[array, errflg] = m_fitspl (xval, zval, id, iord)

Description

FITSPL is a b-spline-based interpolation (3rd order) that requires a minimum of four points on a curve. The spline is a piecewise polynomial function of the 2nd degree. Just as CUBSPL, it is suitable as an input function for motion.

Attributes

XVAL
[double]
The first independent variable of a curve or surface at which the spline function is supposed to interpolate the output value.
ZVAL
[double]
The second independent variable of a surface at which the spline function is supposed to interpolate the output value. Set this value to 0 if only a curve interpolation is needed.
ID
[integer]
The ID of the Reference_Spline element.
IORD
The order of the derivative to be returned by the spline function. Only 0, 1, or 2 are valid entities.

Output

ARRAY
[double]
The vector output value of dimension 3.
  • If IORD is 0, then ARRAY(1) contains the computed interpolated value y.
  • If IORD is 1, then ARRAY(1) and ARRAY(2) contain the derivatives of y with respect to x and z.
  • If IORD is 2, then ARRAY(1), ARRAY(2), and ARRAY(3) contain the second derivatives of y with respect to xx, xz, and zz, respectively.
ERRFLG
[logical]
Logical variable that is returned to the calling subroutine and that indicates the success of the spline function call.

Example

The following is a Python-based, user-defined request element that calls the FITSPL data access subroutine.
def REQSUB(id, time, par, npar, iflag):
  results = [0.0]*8
  results[0]  = FITSPL(time,0,100,0)
  results[1]  = FITSPL(time,0,100,1)
  results[2]  = FITSPL(time,0,100,2)
  return results