RATE OF CONVERGENCE OF NONCONFORMING LINEAR ELEMENT FOR POISSON EQUATION

This example is to show the rate of convergence of CR non-conforming linear finite element approximation of the Poisson equation on the unit square:

$$- \Delta u = f \; \hbox{in } (0,1)^2$$

for the following boundary condition:

  1. Non-empty Dirichlet boundary condition. $u=g_D \hbox{ on }\Gamma_D, \quad \nabla u\cdot n=g_N \hbox{ on }\Gamma_N.$
  2. Pure Neumann boundary condition. $\nabla u\cdot n=g_N \hbox{ on } \partial \Omega$.
  3. Robin boundary condition. $g_R u + \nabla u\cdot n=g_N \hbox{ on }\partial \Omega$

Contents

Setting

[node,elem] = squaremesh([0,1,0,1],0.25);
mesh = struct('node',node,'elem',elem);
option.L0 = 2;
option.maxIt = 4;
option.printlevel = 1;
option.elemType = 'CR';
option.plotflag = 1;

Non-empty Dirichlet boundary condition.

pde = sincosdata;
mesh.bdFlag = setboundary(node,elem,'Dirichlet','~(x==0)','Neumann','x==0');
femPoisson(mesh,pde,option);
Multigrid V-cycle Preconditioner with Conjugate Gradient Method
#dof:     3136,  #nnz:    11040, smoothing: (1,1), iter: 12,   err = 2.67e-09,   time = 0.026 s
Multigrid V-cycle Preconditioner with Conjugate Gradient Method
#dof:    12416,  #nnz:    44608, smoothing: (1,1), iter: 12,   err = 2.62e-09,   time = 0.059 s
Multigrid V-cycle Preconditioner with Conjugate Gradient Method
#dof:    49408,  #nnz:   179328, smoothing: (1,1), iter: 12,   err = 2.57e-09,   time = 0.16 s

 #Dof       h       ||u-u_h||    ||Du-Du_h||   ||DuI-Du_h|| ||uI-u_h||_{max}

  800   6.25e-02   1.20226e-03   1.62318e-01   3.64423e-02   1.55737e-03
 3136   3.12e-02   3.01351e-04   8.12476e-02   1.81858e-02   3.97664e-04
12416   1.56e-02   7.53872e-05   4.06349e-02   9.08851e-03   1.00099e-04
49408   7.81e-03   1.88499e-05   2.03188e-02   4.54371e-03   2.50778e-05

 #Dof   Assemble     Solve      Error      Mesh    

  800   0.00e+00   7.26e-04   1.00e-02   0.00e+00
 3136   3.00e-02   2.61e-02   1.00e-02   0.00e+00
12416   8.00e-02   5.87e-02   2.00e-02   3.00e-02
49408   2.30e-01   1.61e-01   8.00e-02   1.20e-01


Pure Neumann boundary condition.

option.plotflag = 0;
pde = sincosNeumanndata;
mesh.bdFlag = setboundary(node,elem,'Neumann');
femPoisson(mesh,pde,option);
Multigrid V-cycle Preconditioner with Conjugate Gradient Method
#dof:     3136,  #nnz:    11325, smoothing: (1,1), iter: 13,   err = 4.57e-09,   time = 0.016 s
Multigrid V-cycle Preconditioner with Conjugate Gradient Method
#dof:    12416,  #nnz:    45181, smoothing: (1,1), iter: 14,   err = 1.91e-09,   time = 0.044 s
Multigrid V-cycle Preconditioner with Conjugate Gradient Method
#dof:    49408,  #nnz:   180477, smoothing: (1,1), iter: 14,   err = 3.96e-09,   time = 0.13 s

 #Dof       h       ||u-u_h||    ||Du-Du_h||   ||DuI-Du_h|| ||uI-u_h||_{max}

  800   6.25e-02   5.18787e-03   6.47906e-01   1.49052e-01   6.33147e-03
 3136   3.12e-02   1.30793e-03   3.24817e-01   7.31524e-02   1.60037e-03
12416   1.56e-02   3.27672e-04   1.62518e-01   3.64052e-02   4.01216e-04
49408   7.81e-03   8.19609e-05   8.12726e-02   1.81812e-02   1.00375e-04

 #Dof   Assemble     Solve      Error      Mesh    

  800   0.00e+00   1.08e-03   0.00e+00   1.00e-02
 3136   1.00e-02   1.56e-02   1.00e-02   1.00e-02
12416   4.00e-02   4.41e-02   2.00e-02   2.00e-02
49408   1.40e-01   1.35e-01   8.00e-02   6.00e-02


Pure Robin boundary condition.

pde = sincosRobindata;
mesh.bdFlag = setboundary(node,elem,'Robin');
femPoisson(mesh,pde,option);
Multigrid V-cycle Preconditioner with Conjugate Gradient Method
#dof:     3136,  #nnz:    11328, smoothing: (1,1), iter: 12,   err = 1.82e-09,   time = 0.011 s
Multigrid V-cycle Preconditioner with Conjugate Gradient Method
#dof:    12416,  #nnz:    45184, smoothing: (1,1), iter: 11,   err = 9.89e-09,   time = 0.036 s
Multigrid V-cycle Preconditioner with Conjugate Gradient Method
#dof:    49408,  #nnz:   180480, smoothing: (1,1), iter: 12,   err = 1.78e-09,   time = 0.12 s

 #Dof       h       ||u-u_h||    ||Du-Du_h||   ||DuI-Du_h|| ||uI-u_h||_{max}

  800   6.25e-02   5.14818e-03   6.47717e-01   1.48743e-01   6.97115e-03
 3136   3.12e-02   1.29781e-03   3.24794e-01   7.31131e-02   1.75333e-03
12416   1.56e-02   3.25127e-04   1.62515e-01   3.64002e-02   4.38609e-04
49408   7.81e-03   8.13241e-05   8.12722e-02   1.81806e-02   1.09622e-04

 #Dof   Assemble     Solve      Error      Mesh    

  800   0.00e+00   7.16e-04   0.00e+00   1.00e-02
 3136   1.00e-02   1.14e-02   1.00e-02   1.00e-02
12416   4.00e-02   3.55e-02   5.00e-02   2.00e-02
49408   1.30e-01   1.24e-01   9.00e-02   4.00e-02


Conclusion

The optimal rate of convergence of the H1-norm (1st order) and L2-norm (2nd order) is observed. No superconvergence for |DuI-Duh|.

MGCG converges uniformly in all cases.