def FTCS(Uo, diffX, diffY=None):
    """Return the numerical solution of dependent variable in the model eq.

    This routine uses the explicit Forward Time/Central Space method
    to obtain the solution of the 1D or 2D diffusion equation.

    Call signature:
        FTCS(Uo, diffX, diffY)

    Parameters
    ----------
    Uo: ndarray[float], =1d, 2d
        The dependent variable at time level, n within the entire domain.
    diffX : float
        Diffusion number for x-component of the parabolic/diffusion
        equation.
    diffY : float, Default=None for 1-D applications
        Diffusion number for y-component of the parabolic/diffusion
        equation.
    Returns
    -------
    U: ndarray[float], =1d, 2d
        The dependent variable at time level, n+1 within the entire domain.
    """
    shapeU = Uo.shape  # Obtain Dimension
    U = Uo.copy()  # Initialize U

    if len(shapeU) == 1:
        U[1:-1] = (
            Uo[1:-1] + diffX*(Uo[2:] - 2.0*Uo[1:-1] + Uo[0:-2])
            )

    elif len(shapeU) == 2:
        U[1:-1, 1:-1] = (
            Uo[1:-1, 1:-1]
            + diffX*(Uo[2:, 1:-1] - 2.0*Uo[1:-1, 1:-1] + Uo[0:-2, 1:-1])
            + diffY*(Uo[1:-1, 2:] - 2.0*Uo[1:-1, 1:-1] + Uo[1:-1, 0:-2])
            )

    return U