From: Vivek Saxena on
Hi

Anyone here with some experience of using DistMesh in finite element code? I'm solving the scalar Helmoltz equation in an annular region in 2D:

rho_1 < rho < rho_2

where rho_1 is the radius of a Perfect Electric Conducting cylinder and rho_2 is where the mesh is truncated using an Absorbing Boundary condition.

Now, I've written code to mesh the region myself (by dividing the region into annular rings and picking a fixed number of points on each ring) and I've written another program which uses DistMesh to mesh the region. I get a nice solution using my own meshing code but the FEM matrix becomes singular when I use DistMesh. This is the DistMesh Code I used:

% Circle with hole
rABC=1.5;
rCyl=0.5;
fdstring=sprintf('ddiff(dcircle(p,0,0,%f),dcircle(p,0,0,%f))',rABC,rCyl);
fd=inline(fdstring,'p');
box=[-2,-2;2,2];
[p,N]=distmesh2d(fd,@huniform,0.04,box,[]);

I tried changing box and the 0.04 value (initial edge length). But every time, the matrix becomes singular. Now, because the FEM code is working properly with my own meshing code, I have no reason to suspect it.

Is it possible that the mesh generated by DistMesh is too flat? If so, what can be done about it? I actually need to generalize my code for arbitrary objects, so I badly need DistMesh now, unless there is something else that MATLAB itself has?

Thanks
Vivek
 | 
Pages: 1
Prev: Image overlay
Next: using 3D point cloud