cern.colt.matrix.doublealgo
Class Stencil

java.lang.Object
  extended by cern.colt.matrix.doublealgo.Stencil

public class Stencil
extends java.lang.Object

Stencil operations. For efficient finite difference operations. Applies a function to a moving 3 x 3 or 3 x 3 x 3 window. Build on top of matrix.zAssignXXXNeighbors(...). You can specify how many iterations shall at most be done, a convergence condition when iteration shall be terminated, and how many iterations shall pass between convergence checks. Always does two iterations at a time for efficiency. These class is for convencience and efficiency.

Author:
wolfgang.hoschek@cern.ch

Constructor Summary
protected Stencil()
          Makes this class non instantiable, but still let's others inherit from it.
 
Method Summary
static int stencil27(DoubleMatrix3D A, Double27Function function, int maxIterations, DoubleMatrix3DProcedure hasConverged, int convergenceIterations)
          27 point stencil operation.
static int stencil9(DoubleMatrix2D A, Double9Function function, int maxIterations, DoubleMatrix2DProcedure hasConverged, int convergenceIterations)
          9 point stencil operation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Stencil

protected Stencil()
Makes this class non instantiable, but still let's others inherit from it.

Method Detail

stencil27

public static int stencil27(DoubleMatrix3D A,
                            Double27Function function,
                            int maxIterations,
                            DoubleMatrix3DProcedure hasConverged,
                            int convergenceIterations)
27 point stencil operation. Applies a function to a moving 3 x 3 x 3 window.

Parameters:
A - the matrix to operate on.
function - the function to be applied to each window.
maxIterations - the maximum number of times the stencil shall be applied to the matrix. Should be a multiple of 2 because two iterations are always done in one atomic step.
hasConverged - Convergence condition; will return before maxIterations are done when hasConverged.apply(A)==true. Set this parameter to null to indicate that no convergence checks shall be made.
convergenceIterations - the number of iterations to pass between each convergence check. (Since a convergence may be expensive, you may want to do it only every 2,4 or 8 iterations.)
Returns:
the number of iterations actually executed.

stencil9

public static int stencil9(DoubleMatrix2D A,
                           Double9Function function,
                           int maxIterations,
                           DoubleMatrix2DProcedure hasConverged,
                           int convergenceIterations)
9 point stencil operation. Applies a function to a moving 3 x 3 window.

Parameters:
A - the matrix to operate on.
function - the function to be applied to each window.
maxIterations - the maximum number of times the stencil shall be applied to the matrix. Should be a multiple of 2 because two iterations are always done in one atomic step.
hasConverged - Convergence condition; will return before maxIterations are done when hasConverged.apply(A)==true. Set this parameter to null to indicate that no convergence checks shall be made.
convergenceIterations - the number of iterations to pass between each convergence check. (Since a convergence may be expensive, you may want to do it only every 2,4 or 8 iterations.)
Returns:
the number of iterations actually executed.