Hello everyone.
I'm having some trouble to understand the convergence rate i'm observing in my code.
Here is what i'm solving :
- I'm in 2D on a round mesh.
- I'm solving a simple Poisson equation on this mesh for a variable named Phi the solution is known for this and is 1-x^2-y^2
- With this solution phi I'm then solving a Stokes equation that has special terms that depends on phi.
For the stokes problem i'm using the usual mixed fe element as such :
stokes_fe(FE_Q<2>(2), 2,
FE_Q<2>(1), 1),
So second order for the speeds and first order for the pressure (just like in the boussinesq problem from the tutorials.
For the poisson/phi problem, i'm using FE_Q<2> also
initialized as such :
So second order.
For a special case, I have a known solution which is u=v=0 and p of the form 1-x^2-y^2 (just like phi)
And i have solved this on multiple refinement cycle which gives me different number of dofs and cellsize.
The thing is, when I plot the error as a function of the maximum cell diameter, I get a quadratic convergence rate for the speed, and a linear rate for P and phi.
What surprises me is that I don't have a quadratic convergence rate for my poisson/\phi problem even though I used
My norm is the L2 norm which is simply sqrt(sum(error**2))). I'm computing it with python after exporting the solution as a gpl file.
Here are the graphs :
I have also tried
But in this case I don't even have convergence for the speed.
In my integration part, I have always used
QGauss<2> quadrature_formula(4);
which is equal to degree+2.
So here are my questions :
1- Is this convergence rate the one i'm expecting for a poisson equation (phi problem) ?
2- If no, any idea why I don't have the correct convergence rate ?
3- In the tutorial step 31, a degree of 2 is used for the temperature (which is very similar to my phi), is there some reason for that choice (just like using degree+1 for the speed and degree for the pressure in a stokes problem...)
Thanks in advance.