Skip to main content
1 of 2
user21
  • 40.7k
  • 8
  • 114
  • 170

This can sometimes happen if the region bounds intersect with the region it self. If you look at the output of the ElementMesh you will see that it's bounds do not go from -radius to radius.

mesh["Bounds"]
{{-0.995306, 0.995306}, {-0.995306, 0.995306}, {0., 3.}}

The fix is easy: just enlarge the bounding box a bit:

height = 3;
radius = 1;
thickness = .06;
rt = radius + 0.1;

Needs["NDSolve`FEM`"]
ir = ImplicitRegion[(radius - thickness)^2 <= x^2 + y^2 <= radius && 
    0 <= z <= height, {x, y, z}];
mesh = ToElementMesh[ir, {{-rt, rt}, {-rt, rt}, {0, height}}, 
  "MeshOrder" -> 1, MaxCellMeasure -> 0.0003];

Look at the bounds:

mesh["Bounds"]
{{-1., 1.}, {-1., 1.}, {0., 3.}}

Look at the mesh:

mesh["Wireframe"]

enter image description here

user21
  • 40.7k
  • 8
  • 114
  • 170