Add mesh boundary gluing (post facial-adjacency overhaul) (#253)
* add mesh boundary gluing * add generate_annular_cylinder_slice_mesh * add tests for facial adjacency transforms and mesh boundary gluing * check for facial adjacency transforms in map_mesh * add facial adjacency transform handling in affine_map * add periodic argument to generate_box_mesh/generate_regular_rect_mesh * make arguments keyword-only in generate_box_mesh Co-authored-by: Andreas Klöckner <inform@tiker.net> * reference glue_mesh_boundaries in generate_box_mesh and generate_regular_rect_mesh * fix doc reference * report information about vertices that could not be matched * disable nodal adjacency in glued meshes * use list/set comprehensions * use dataclass for boundary mappings * split mapping_face_id_pairs into two variables * remove sorting matching faces by group not needed anymore, I think * specify order of intra-match indices in _match_faces_by_vertices * document _match_boundary_faces * don't do face matching twice * add numpy vertex matching for small cases * Bump down cutoff for tree algorithm in face matching To avoid giant temporaries. Co-authored-by: Andreas Klöckner <inform@tiker.net>