Class AlternatingDirectionImplicitMethod

  • All Implemented Interfaces:
    PDESolver

    public class AlternatingDirectionImplicitMethod
    extends Object
    implements PDESolver
    Alternating direction implicit (ADI) method is an implicit method for obtaining numerical approximations to the solution of a HeatEquation2D. The idea behind the ADI method is to split the finite difference equations into two, one with the x-derivative taken implicitly and the next with the y-derivative taken implicitly, that allows solving the symmetric and tridiagonal systems of linear equations by using LU decomposition, at each step. Solutions are computed on a three-dimensional grid (time and x- and y-coordinates).

    This method is unconditionally stable and is a second-order method with a truncation error of order \(O(\Delta t^2 + \Delta x^2 + \Delta y^2)\).

    Since a linear system for each row/column at the same time step can be solved independently, parallel computation by multi-core processor can be used for higher performance. By default, this option is turned on.

    See Also:
    Wikipedia: Alternating direction implicit method
    • Constructor Detail

      • AlternatingDirectionImplicitMethod

        public AlternatingDirectionImplicitMethod​(double epsilon)
        Create an ADI method with the given precision parameter. By default, multi-core parallel computation is used for higher performance.
        Parameters:
        epsilon - the precision parameter
      • AlternatingDirectionImplicitMethod

        public AlternatingDirectionImplicitMethod​(double epsilon,
                                                  boolean parallel)
        Create an ADI method with the given precision parameter, and choice for using multi-core parallel computation for higher performance.
        Parameters:
        epsilon - the precision parameter
        parallel - true to turn on parallel computation
    • Method Detail

      • solve

        public PDESolutionTimeSpaceGrid2D solve​(HeatEquation2D pde,
                                                int m,
                                                int n,
                                                int p)
        Solve the given two-dimensional heat equation problem, with the given numbers of points along the three axes in the grid (time, x, and y).
        Parameters:
        pde - the heat equation problem
        m - the number of grid points along the time-axis (excluding the initial condition)
        n - the number of grid points along the x-axis (excluding the boundary)
        p - the number of grid points along the y-axis (excluding the boundary)
        Returns:
        the solution grid