# Max cell size: cannot change the size,

I have the following mesh

Needs["NDSolveFEM"]

bmesh = ToBoundaryMesh[
"Coordinates" -> {{15, 10}, {5, 10}, {5, 0}, {0, 0}, {0, 1200}, {5,
1200}, {5, 1190}, {15, 1190}, {15, 10}, {1485, 10}, {1485,
1190}, {15, 1190}, {1485, 10}, {1495, 10}, {1495, 0}, {1500,
0}, {1500, 1200}, {1495, 1200}, {1495, 1190}, {1485,
1190}, {1496, 1170}, {1499, 1170}, {1499, 1180}, {1496,
1180}, {1, 20}, {4, 20}, {4, 30}, {1, 30}},
"BoundaryElements" -> {LineElement[{{1, 2}, {2, 3}, {3, 4}, {4,
5}, {5, 6}, {6, 7}, {7, 8}, {9, 10}, {10, 11}, {11, 12}, {12,
9}, {13, 14}, {14, 15}, {15, 16}, {16, 17}, {17, 18}, {18,
19}, {19, 20}, {21, 22}, {22, 23}, {23, 24}, {24, 21}, {25,
26}, {26, 27}, {27, 28}, {28, 25}}, {1, 1, 1, 1, 1, 1, 1, 2,
2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5}]},
"RegionHoles" -> {{1498, 1175}, {2, 25}},"MaxBoundaryCellMeasure" -> 200];

mesh = ToElementMesh[bmesh];
mesh["Wireframe"] (*This works*)


However, when I try to change the mesh cell size I cannot, Kernel quits itself: such as

   mesh = ToElementMesh[bmesh, MaxCellMeasure -> .02];
mesh["Wireframe"]


I want to set maximum cell measure on the boundaries: is there something I am missing?

so, it works, if I divide every length by 1000, why it is not working the way it is? However, at the boundaries, I still can not change the cell size?

=================================================================

With ToBoundaryMesh[region, "MaxBoundaryCellMeasure" -> 200]

and

mesh = ToElementMesh[bmesh, MaxCellMeasure -> 3000];
mesh["Wireframe"]


I get,

Why does it look uneven at the boundaries (I mean at the two standing sides where the cells are finer but in the middle, they seem less fine "marked regions"), "is there a way to check if it is fine or not"?

• I might get a ban for this comment, but I cannot resist...size matters!
– bmf
Commented Feb 3, 2023 at 11:19
• Not sure if you have already seen the tutorial on ElementMesh generation. This provides a good introduction to finite element mesh generation in the WL. Commented Feb 3, 2023 at 13:08
• @user21 I am dealing with the linear boundary representation and I have been following the ElementMesh generation, so I am not sure if "MaxBoundaryCellMeasure" is still being ignore or not, because I am not able to find any example.
– a019
Commented Feb 3, 2023 at 13:53
• @MuhammadAli, I have tried to clarify that in my answer. Commented Feb 3, 2023 at 14:09

With MaxCellMeasure -> 0.02 you are producing an extremely fine mesh. Here is a MaxCellMeasure -> 100

mesh = ToElementMesh[bmesh, MaxCellMeasure -> 100];
mesh["Wireframe"]


You'd probably want to do something like this:

ToBoundaryMesh[region, "MaxBoundaryCellMeasure" -> xzy]


but for this to work, you'd need a symbolic region description or a manual boundary mesh that resolves the boundary to the size you want. I guess a symbolic region is a bit easier.

Note that "MaxBoundaryCellMeasure" works for symbolic regions, like

bmesh = ToBoundaryMesh[Disk[], "MaxBoundaryCellMeasure" -> 0.025];
ToElementMesh[bmesh]["Wireframe"]


but not for manual boundary meshes like:

bmesh = ToBoundaryMesh[
"Coordinates" -> {{0., 0.}, {1., 0.}, {1., 0.2}, {1., 1.}, {0.,
1.}, {0., 0.22}, {0.3, 0.22}, {0.3, 0.2}, {0., 0.2}},
"BoundaryElements" -> {LineElement[{{1, 2}, {2, 3}, {3, 4}, {4,
5}, {5, 6}, {6, 7}, {7, 8}, {8, 9}, {9, 1}, {3, 8}}]}
, "MaxBoundaryCellMeasure" -> 0.001];
ToElementMesh[bmesh]["Wireframe"]


• Thanks! However, I am not able to change the cell sizes at boundaries, "MaxBoundaryCellMeasure" does nothing, I going through this example though, mathematica.stackexchange.com/questions/141386/….
– a019
Commented Feb 3, 2023 at 12:40
• @MuhammadAli, please see the second part of my answer. Also, note that in your post you do not make use of "MaxBoundaryCellMeasure" . Commented Feb 3, 2023 at 12:41
• Thanks! I just updated the output with the commands.
– a019
Commented Feb 3, 2023 at 12:58