Class TricubicInterpolatingFunction

  • All Implemented Interfaces:
    TrivariateFunction

    public class TricubicInterpolatingFunction
    extends java.lang.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 double[][] AINV
      Matrix to compute the spline coefficients from the function values and function derivatives values
      private TricubicFunction[][][] splines
      Set of cubic splines patching 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 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

      All Methods Instance Methods Concrete Methods 
      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 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 TricubicFunction[][][] splines
        Set of cubic splines patching the whole data grid
    • Constructor Detail

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