I have just a misunderstanding of a sort. What I want is (1) to build a boundary mesh, (2) then to disassemble it into a list of the boundary points, and (3) to further assemble it back starting from this list.
What stays behind this task is to be able to later add elements to the this boundary mesh, to refine its parts etc. But this will come later. I am stuck on the very first step.
Let us take a simple disk for the trial. The following makes the boundary mesh of the disk.
Needs["NDSolve`FEM`"]
bm = ToBoundaryMesh[Disk[]]
(* ElementMesh[{{-1., 1.}, {-1., 1.}}, Automatic] *)
one can look at the resulting boundary mesh:
Show[{
bm["Wireframe"],
bm["Wireframe"["MeshElement" -> "PointElements"]]
}, ImageSize -> 150]
Now, let us retrieve the list of coordinates, coord
and make the corresponding list of incidents, incLst
. The list of incidents should be the same as it presumably was in the initial boundary mesh, that is, the first point connects to the second one, the second - to the third and so on, and the last point - to the first one:
coord = bm["Coordinates"];
lth = Length[coord];
incLst = Join[Table[{i, i + 1}, {i, 1, lth - 1}], {{lth, 1}}]
(* {{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}, {6, 7}, {7, 8}, {8, 9}, {9,
10}, {10, 11}, {11, 12}, {12, 13}, {13, 14}, {14, 15}, {15,
16}, {16, 17}, {17, 18}, {18, 19}, {19, 20}, {20, 21}, {21,
22}, {22, 23}, {23, 24}, {24, 25}, {25, 26}, {26, 27}, {27,
28}, {28, 29}, {29, 30}, {30, 31}, {31, 32}, {32, 33}, {33,
34}, {34, 35}, {35, 36}, {36, 37}, {37, 38}, {38, 39}, {39,
40}, {40, 41}, {41, 42}, {42, 43}, {43, 44}, {44, 45}, {45,
46}, {46, 47}, {47, 48}, {48, 1}} *)
Now it seems that the following should again build the same boundary mesh:
ToBoundaryMesh["Coordinates" -> coord,
"MeshElements" -> {LineElement[incLst]}]
It does not though. This operation returns the input unevaluated. So, clearly Mma cannot fulfill the operation.
What am I doing wrong?