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"]