[...]
In 3D, I use CylindricalManifold<3> with axis=2 for the fold type. Yet, I just realize being stuck in 2D that axis=2 is not available for CylindricalManifold<2> ( 0 or 1 cannot give me the z-oriented cylinder ).
The initial description might be misleading. What I tried to do is repeatedly set manifolds for circles on X-Y plane. Now I use STL container to contain different pointers of SphericalManifold instance and correspondingly assign distinct manifold ids, it worked out. But it might be a non-smart way. See the attachment for a small demo of the geometry I created based on the idea.