Poisson Demo - Using a different bilinear form

Hi All,

I worry my question has mostly to do with my poor understanding of the underlying theory and I might be really dense here, but here you go.

The weak form used in the Poisson demo is, after integration by parts,

a = inner(grad(u), grad(v))*dx

I was wondering, should not the weak form without integration by parts

a = inner(div(grad(u)), v)*dx

still be a legitimate choice (after all, finite elements procedure are not limited to symmetric forms, or are they?) I have changed the degree of the finite element space to second order

V = FunctionSpace(mesh, “Lagrange”, 2)

so the second derivative should be different from null.

But it is not working, the code runs, nothing happens and the Jupyter notebook crashes…

Thanks for your support

Note that a second order lagrange function-space consist of piecewise continuous second order polynomials.
Thus if you take the gradient of a second order lagrange Finite element function, you get a first order discontinuous vector field.
Remember that the function you are starting with is in H^1, not H^2.
See for instance: https://www.researchgate.net/post/Why_is_it_important_to_have_a_Weak_Formulation_for_FEM

Thanks for your reply, which of course makes perfect sense.
But then, what interpolation scheme available in FEniCS could be used?
If I wanted to approximate the solution of the ODE

d^3 y / dx^3 = f

whatever integration by parts I performed, I will have a second order derivative either in the trial or test function.

Thanks a lot for your patience.

See for instance:


Which uses a discontinuous galerkin method to solve a fourth order PDE.

Great thanks a lot, much appreciated