Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project!

Re: [Libmesh-users] Subdivision surface based FEM

 Re: [Libmesh-users] Subdivision surface based FEM From: Roy Stogner - 2008-11-11 15:19:04 ``` On Tue, 11 Nov 2008, Norbert Stoop wrote: > Roy Stogner wrote: >> >> On Tue, 11 Nov 2008, Norbert Stoop wrote: >> >>> Recently, subdivision surfaces were suggested as an alternative way to >>> construct C1 (and higher) conforming surface meshes for finite element >>> simulations. >> >> Interesting. I've heard of subdivision elements being used for >> surface mesh refinement, but in a context where the subdivision >> surface was only C1 in the limiting sense; each discrete mesh was >> still faceted. We could do something like that relatively easily, but >> of course it wouldn't be as accurate unless your formulation is >> insensitive to domain boundary discontinuities. > > Hm, I'm not sure if I understand your last comment, That's because I didn't understand your context - I was picturing a volume domain for which you wanted a C1 boundary (which can be critical for some fourth order problems); you're talking about a 2D manifold domain in 3D. > but yes, the surface is C1 only in the limit case. In that case you don't need an exotic mapping at all; all you need is a function to correctly "snap" points to their subdivision-defined positions when you refine the surface. That's something we've wanted to do (for boundaries, if not manifolds) for a while, and it may be hard to come up with a satisfactory user API for it, but once the API's defined the implementation would be relatively simple. > These mappings are expressed in the phi_map, dphidxi_map etc., > right? So, as a dirty hack, *in principle* one could overwrite the > FE::init_shape_functions and others to do the mapping right for this > particular subdivision element. Is my understanding correct? If you want a C1 surface even in the discretized case, then fixing the _map values would be necessary. If you're happy with a C0 discretized surface that converges (in some norms) to a C1 surface, then all you need to do is snap midedge points (and midface points on quads) to their proper places after all the elements touching them have been refined. That should properly be done by giving Elem::refine() access to some abstract base class that can return enough information about the manifold or domain boundary shape, but you could do it (as a dirty hack) just by looping over nodes on active elements after each refinement and adjusting them for consistency with the subdivision surface defined by their parent elements. --- Roy ```