<a name="Intro"></a>
<h1>Introduction</h1>
This example solves a 1D Poisson equation:

$
    u : [0, 1] \rightarrow R\\
    u'' = f\\
    u(0) = u0\\
    u(1) = u1
$

using a finite difference method on an equidistant grid with `K` discretization
points (`K` can be controlled with a command line parameter). The discretization
is done via the second order Taylor polynomial:

$
u(x + h) = u(x) - u'(x)h + 1/2 u''(x)h^2 + O(h^3)\\
u(x - h) = u(x) + u'(x)h + 1/2 u''(x)h^2 + O(h^3)  / +\\
---------------------- \\
-u(x - h) + 2u(x) + -u(x + h) = -f(x)h^2 + O(h^3)

$

For an equidistant grid with K "inner" discretization points $x1, ..., xk, $and
step size$ h = 1 / (K + 1)$, the formula produces a system of linear equations

$

           2u_1 - u_2     = -f_1 h^2 + u0\\
-u_(k-1) + 2u_k - u_(k+1) = -f_k h^2,       k = 2, ..., K - 1\\
-u_(K-1) + 2u_K           = -f_K h^2 + u1\\

$

which is then solved using Ginkgo's implementation of the CG method
preconditioned with block-Jacobi. It is also possible to specify on which
executor Ginkgo will solve the system via the command line.
The function $`f` $is set to $`f(x) = 6x`$ (making the solution $`u(x) = x^3`$), but
that can be changed in the `main` function.

The intention of this example is to show how a custom linear operator can be
created and integrated into Ginkgo to achieve performance benefits.

<h3> About the example </h3>

