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

Reply via email to