On Tue, 3 Mar 2015, Vasileios Vavourakis wrote: > I was thinking actually by starting to accomplish (within libmesh) > NURBS-mapping-functions and then to the NURBS-as-basis-functions. > > however, which parts of the library you think that should be > "touched" so as to incorporate this new stuff?
For NURBS-mapping functions, the FEMap class is the core of what will need to be "touched", if by touched you mean "ripped apart and remade". That's in fe_map.h, fe_map.C, and fe_boundary.C. We could rewrite that to take more options in the constructor to set up more complicated mappings. Or make those options part of FEType and then most existing code using FEMap (directly or via a FE object) could work unchanged. However, there are probably a dozen other places in the library where we just lazily assume LAGRANGE mapping functions without bothering to construct an object to query. Grep shows me: The C1 finite elements (Hermite, Clough-Tocher) FEAbstract::compute_node_constraints() Elem::volume() And some forethought leads me to look for (and find) more-implicit assumptions in Elem::point_test() Elem::embedding_matrix Elem::foo is where it gets tricky. An Elem doesn't know anything about FEType. Do we add a new member to each Elem so it can know what its own mapping is? We could actually do that for *free* with a one-byte mapping type (there's already a byte of padding at the end of each Elem in 99.99% of libMesh configurations). But I don't think a one byte type identifier is going to be enough, we'd need a whole pointer-to-smarter-mapping-object, which would be more expensive to attach to everything. > another question: is it possible within the current libmesh > framework for the user to enforce the decomposition of the mesh > (e.g. assign on an element-specific basis some weights for the mesh > partitioning algorithm). There's a Partitioner method for attaching per-element weights, but it's only implemented for the METIS interface right now. --- Roy ------------------------------------------------------------------------------ Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
