I was wondering how to find the modes of a shell (i.e., a structure with one dimension [the thickness] smaller than the two others).
Consider for instance the following CapsuleShape
:
thickness = 0.2;
capExt = CapsuleShape[{{0, 0, 0}, {0, 0, 10}}, 1.5];
capInt = CapsuleShape[{{0, 0, 0}, {0, 0, 10}}, 1.5 - thickness];
reg = RegionDifference[capExt, capInt];
RegionPlot3D[reg, PlotPoints -> 100,
PlotRange -> {{-2, 2}, {-2, 2}, {-2, 12}},
PlotStyle -> Directive[Orange, Opacity[0.5]]]
Now, using the great answer by user21 my previous question, I can compute the modes (I don't add the code because it is virtually the same)---the red corresponds to a Dirichlet condition with the following mesh:
<< NDSolve`FEM`
mesh = ToElementMesh[reg, {{-2, 2}, {-2, 2}, {-4, 14}},
MaxCellMeasure -> 0.01]
The issue is when I want to see what happens if I reduce the value of thickness
. I asked a similar question and user21 proposed to solutions:
- enlarging the bounding box in
ToElementMesh
: this does not change anything for this case; - meshing by hand: quite tedious for that example.
Of course the most natural approach would be to reduce the max elements size with MaxCellMeasure
, but the computation becomes too extensive, especially given that the elements mustn't be too elongated.
The nicest approach would probably to use some other types of elements, namely shell elements, instead of volume elements. Shell elements are surface elements, they have no thickness, but they do have a bending stiffness. I was wondering if and how shell elements could be implemented in Mathematica.