Class TricubicInterpolatingFunction

java.lang.Object
org.apache.commons.math3.analysis.interpolation.TricubicInterpolatingFunction
All Implemented Interfaces:
TrivariateFunction

public class TricubicInterpolatingFunction 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. Eng 2005; 63:455-471
Since:
3.4.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final double[][]
    Matrix to compute the spline coefficients from the function values and function derivatives values
    private final TricubicFunction[][][]
    Set of cubic splines patching the whole data grid
    private final double[]
    Samples x-coordinates
    private final double[]
    Samples y-coordinates
    private final double[]
    Samples z-coordinates
  • Constructor Summary

    Constructors
    Constructor
    Description
    TricubicInterpolatingFunction(double[] x, double[] y, double[] z, double[][][] f, double[][][] dFdX, double[][][] dFdY, double[][][] dFdZ, double[][][] d2FdXdY, double[][][] d2FdXdZ, double[][][] d2FdYdZ, double[][][] d3FdXdYdZ)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    private double[]
    computeCoefficients(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.
    boolean
    isValidPoint(double x, double y, double z)
    Indicates whether a point is within the interpolation range.
    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 Details

    • 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 TricubicFunction[][][] splines
      Set of cubic splines patching the whole data grid
  • Constructor Details

    • TricubicInterpolatingFunction

      public TricubicInterpolatingFunction(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 Details

    • 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.
    • isValidPoint

      public boolean isValidPoint(double x, double y, double z)
      Indicates whether a point is within the interpolation range.
      Parameters:
      x - First coordinate.
      y - Second coordinate.
      z - Third coordinate.
      Returns:
      true if (x, y, z) is a valid point.
    • 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.
    • computeCoefficients

      private double[] computeCoefficients(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.