Numerical Experiments

Just consider a simple problem:

[Homogeneous Helmholtz Dirichlet BC]

\Delta u+k^2 u=0 in D, D means unit disk.

u=\cos(k) on \partial D[Not true, should be \cos(kx)].

If I use ‘finite element method’, to make our problem easier to handle, I choose square [0,1]\times[0,1] as our domain.

Then \displaystyle\frac{1}{h^2}(u_{i,j+1}+u_{i-1,j}+u_{i,j-1}+u_{i+1,j}-4u_{i,j})+k^2 u_{i,j}=0, one can use Jacobi, Gauss Seidel, SOR, SSOR, with or without preconditioner and shift. However, I found for this very problem, the result doesn’t converge to my exact solution, in other word, there is some error which cannot be cancelled through shrinking our step length.

%9 point
%Gauss Seidel
% U_now(i,j)=(1-omega)*U_prev(i,j)+omega*(U_now(i-1,j)+U_prev(i+1,j)+U_now(i,j-1)+U_prev(i,j+1))/(4-h*h*k*k);

By using package ‘distmesh’, I construct the PI-FEM for the original problem. Still I have encountered the same problem. The linear system is not large but sparse, so GMRES can easily solve it. I used the preconditioner \omega=J_0(kh), where J_0 is Bessel function of \nu=0.

This is the result at k=1, even I put the size of uniform triangle h=0.05, the error stills remain unchanged around some small number.

I have some idea about why FEM cannot give a good result when k is LARGE,  I know the estimate of error is C k^3h^2.

However, matlab ‘pdetool’ toolbox can solve this very easily……[not true : )]

Update: Now solved…with error order of 2.


2 thoughts on “Numerical Experiments

  1. I am a such idiot! I made a mistake on mass matrix by using 1/12. Now the problem almost solved, and the BC is totally wrong…..dismiss it.


Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s