Dear Felix, by any chance, did you take a look at step 10?
https://www.dealii.org/current/doxygen/deal.II/step_10.html This step explains a little bit what to do when you want to solve on curved domains with high order finite elements. In particular, you need to ensure that the mapping you are using (from the reference element to the current element) is at least of the same order of your finite element method, if you want to achieve the correct convergence rates. In your case, you are using a MappingQ1 (the default mapping, if you don’t specify anything). With that, you won’t go beyond 2nd order in L2. If you use MappingQ2, you should see again the optimal convergence rates. Best, Luca. > On 10 Oct 2019, at 14:11, Félix Bunel <[email protected]> wrote: > > Thanks for your answer ! > > I'm working in 2D on a disk ! > > This is my mesh on the 4 cycle of refinement (which I never use in practice > because it's not refined enough for what I want to do). > > <Auto Generated Inline Image 1.png> > > I don't think I have a mapping object... > What i do to initalize my system on phi is : > //On génère le dofhandler > phi_dof_handler.distribute_dofs (phi_fe); > > //On génère les conditions aux bords > phi_constraints.clear(); > DoFTools::make_hanging_node_constraints(phi_dof_handler, phi_constraints); > VectorTools::interpolate_boundary_values(phi_dof_handler, > 0, > ZeroFunction<2>(1), > phi_constraints > ); > > //On créer le sparsity pattern > DynamicSparsityPattern dsp(phi_dof_handler.n_dofs()); > DoFTools::make_sparsity_pattern (phi_dof_handler, dsp); > phi_sparsity_pattern.copy_from(dsp); > > //On resize les objets à la bonne taille > phi_system_matrix.reinit (phi_sparsity_pattern); > phi_solution.reinit (phi_dof_handler.n_dofs()); > phi_old_solution.reinit (phi_dof_handler.n_dofs()); > phi_system_rhs.reinit (phi_dof_handler.n_dofs()); > > //On affiche les infos intéressantes > std::cout << YELLOW << " Nombre de degrés de liberté pour les angles > : " > << RESET << WHITE << phi_dof_handler.n_dofs() << RESET > << std::endl; > > > > Le jeudi 10 octobre 2019 14:00:23 UTC+2, Bruno Blais a écrit : > A quick question, since you are working on a sphere, are you specifying a > mapping of the same order as your phi? > > On Wednesday, 9 October 2019 08:57:45 UTC-4, Félix Bunel wrote: > 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 : > phi_fe (2), > 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 > phi_fe (2), > > 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 > phi_fe (1), > > 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. > > -- > The deal.II project is located at http://www.dealii.org/ > For mailing list/forum options, see > https://groups.google.com/d/forum/dealii?hl=en > --- > You received this message because you are subscribed to the Google Groups > "deal.II User Group" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/dealii/966a3637-8ca8-462a-bf7a-621746c9c6ad%40googlegroups.com. > <Auto Generated Inline Image 1.png> -- The deal.II project is located at http://www.dealii.org/ For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en --- You received this message because you are subscribed to the Google Groups "deal.II User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/F32B1A2D-AB22-4360-B591-8E89624BF33A%40gmail.com.
