def problem_sinsin():
    """cosine example.
    """

    def mesh_generator(n):
        return UnitSquareMesh(n, n, "left/right")

    x = sympy.DeferredVector("x")

    # Choose the solution such that the boundary conditions are fulfilled
    # exactly. Also, multiply with x**2 to make sure that the right-hand side
    # doesn't contain the term 1/x. Although it looks like a singularity at
    # x=0, this terms is esentially harmless since the volume element 2*pi*x is
    # used throughout the code, canceling out with the 1/x. However, Dolfin has
    # problems with this, cf.
    # <https://bitbucket.org/fenics-project/dolfin/issues/831/some-problems-with-quadrature-expressions>.
    solution = {
        "value": x[0] ** 2 * sympy.sin(pi * x[0]) * sympy.sin(pi * x[1]),
        "degree": MAX_DEGREE,
    }

    # Produce a matching right-hand side.
    phi = solution["value"]
    kappa = 2.0
    rho = 3.0
    cp = 5.0
    conv = [1.0, 2.0]
    rhs_sympy = sympy.simplify(
        -1.0 / x[0] * sympy.diff(kappa * x[0] * sympy.diff(phi, x[0]), x[0])
        - 1.0 / x[0] * sympy.diff(kappa * x[0] * sympy.diff(phi, x[1]), x[1])
        + rho * cp * conv[0] * sympy.diff(phi, x[0])
        + rho * cp * conv[1] * sympy.diff(phi, x[1])
    )

    rhs = {
        "value": Expression(helpers.ccode(rhs_sympy), degree=MAX_DEGREE),
        "degree": MAX_DEGREE,
    }

    return mesh_generator, solution, rhs, triangle, kappa, rho, cp, Constant(conv)