Mesh refinement

It Depends on what error you are measuring. If you are measuring against an exact solution, you can do
e_i = assemble((uh-u_ex)**2*dx(domain=mesh_i))
Where the convergence rate is
r=log(e_i/e_{i-1})/log(h_i/h_{i-1}) Where h_i is the largest celldiameter in mesh_i.
This is the normal way of computing convergence rates.

To interpolate data over non-matching meshes, see: