org.apache.commons.math3.analysis.interpolation

## Class TricubicSplineInterpolatingFunction

- java.lang.Object
- - org.apache.commons.math3.analysis.interpolation.TricubicSplineInterpolatingFunction

- All Implemented Interfaces:
    TrivariateFunction

      public class TricubicSplineInterpolatingFunction
      extends Object
      implements TrivariateFunction

  Function that implements the tricubic spline interpolation, as proposed in Tricubic interpolation in three dimensions
  F. Lekien and J. Marsden
  Int. J. Numer. Meth. Engng 2005; 63:455-471
  Since:
    2.2
  Version:
    $Id: TricubicSplineInterpolatingFunction.java 1385314 2012-09-16 16:35:49Z tn $

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private static double[][]` | `AINV` Matrix to compute the spline coefficients from the function values and function derivatives values
    `private TricubicSplineFunction[][][]` | `splines` Set of cubic splines pacthing the whole data grid
    `private double[]` | `xval` Samples x-coordinates
    `private double[]` | `yval` Samples y-coordinates
    `private double[]` | `zval` Samples z-coordinates

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TricubicSplineInterpolatingFunction(double[] x, double[] y, double[] z, double[][][] f, double[][][] dFdX, double[][][] dFdY, double[][][] dFdZ, double[][][] d2FdXdY, double[][][] d2FdXdZ, double[][][] d2FdYdZ, double[][][] d3FdXdYdZ)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `private double[]` | `computeSplineCoefficients(double[] beta)` Compute the spline coefficients from the list of function values and function partial derivatives values at the four corners of a grid element.
    `private int` | `searchIndex(double c, double[] val)`
    `double` | `value(double x, double y, double z)` Compute the value for the function.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### AINV

          private static final double[][] AINV

      Matrix to compute the spline coefficients from the function values and function derivatives values

    - #### xval

          private final double[] xval

      Samples x-coordinates

    - #### yval

          private final double[] yval

      Samples y-coordinates

    - #### zval

          private final double[] zval

      Samples z-coordinates

    - #### splines

          private final TricubicSplineFunction[][][] splines

      Set of cubic splines pacthing the whole data grid

  - ### Constructor Detail

    - #### TricubicSplineInterpolatingFunction

          public TricubicSplineInterpolatingFunction(double[] x,
                                             double[] y,
                                             double[] z,
                                             double[][][] f,
                                             double[][][] dFdX,
                                             double[][][] dFdY,
                                             double[][][] dFdZ,
                                             double[][][] d2FdXdY,
                                             double[][][] d2FdXdZ,
                                             double[][][] d2FdYdZ,
                                             double[][][] d3FdXdYdZ)
                                              throws NoDataException,
                                                     DimensionMismatchException,
                                                     NonMonotonicSequenceException

      Parameters:
        `x` - Sample values of the x-coordinate, in increasing order.
        `y` - Sample values of the y-coordinate, in increasing order.
        `z` - Sample values of the y-coordinate, in increasing order.
        `f` - Values of the function on every grid point.
        `dFdX` - Values of the partial derivative of function with respect to x on every grid point.
        `dFdY` - Values of the partial derivative of function with respect to y on every grid point.
        `dFdZ` - Values of the partial derivative of function with respect to z on every grid point.
        `d2FdXdY` - Values of the cross partial derivative of function on every grid point.
        `d2FdXdZ` - Values of the cross partial derivative of function on every grid point.
        `d2FdYdZ` - Values of the cross partial derivative of function on every grid point.
        `d3FdXdYdZ` - Values of the cross partial derivative of function on every grid point.
      Throws:
        `NoDataException` - if any of the arrays has zero length.
        `DimensionMismatchException` - if the various arrays do not contain the expected number of elements.
        `NonMonotonicSequenceException` - if `x`, `y` or `z` are not strictly increasing.

  - ### Method Detail

    - #### value

          public double value(double x,
                     double y,
                     double z)
                       throws OutOfRangeException

      Compute the value for the function.
      Specified by:
        `value` in interface `TrivariateFunction`
      Parameters:
        `x` - x-coordinate for which the function value should be computed.
        `y` - y-coordinate for which the function value should be computed.
        `z` - z-coordinate for which the function value should be computed.
      Returns:
        the value.
      Throws:
        `OutOfRangeException` - if any of the variables is outside its interpolation range.

    - #### searchIndex

          private int searchIndex(double c,
                        double[] val)

      Parameters:
        `c` - Coordinate.
        `val` - Coordinate samples.
      Returns:
        the index in `val` corresponding to the interval containing `c`, or `-1` if `c` is out of the range defined by the end values of `val`.

    - #### computeSplineCoefficients

          private double[] computeSplineCoefficients(double[] beta)

      Compute the spline coefficients from the list of function values and function partial derivatives values at the four corners of a grid element. They must be specified in the following order:
      - f(0,0,0)
      - f(1,0,0)
      - f(0,1,0)
      - f(1,1,0)
      - f(0,0,1)
      - f(1,0,1)
      - f(0,1,1)
      - f(1,1,1)
      - fx(0,0,0)
      - ... (same order as above)
      - fx(1,1,1)
      - fy(0,0,0)
      - ... (same order as above)
      - fy(1,1,1)
      - fz(0,0,0)
      - ... (same order as above)
      - fz(1,1,1)
      - fxy(0,0,0)
      - ... (same order as above)
      - fxy(1,1,1)
      - fxz(0,0,0)
      - ... (same order as above)
      - fxz(1,1,1)
      - fyz(0,0,0)
      - ... (same order as above)
      - fyz(1,1,1)
      - fxyz(0,0,0)
      - ... (same order as above)
      - fxyz(1,1,1)
      where the subscripts indicate the partial derivative with respect to the corresponding variable(s).
      Parameters:
        `beta` - List of function values and function partial derivatives values.
      Returns:
        the spline coefficients.

Copyright (c) 2003-2013 Apache Software Foundation