On Thu, 9 Feb 2012, Derek Gaston wrote:

On Feb 9, 2012, at 9:28 AM, Roy Stogner wrote:

There are lots of places where we build an FEBase object of
mesh_dimension() and then assume that we can use it on every element,
for starters.

Well… of course the user doing this would have to be aware of what they are 
doing and do the right thing.

Who said "the user"?  Sadly I really did mean "we".  See
System::project_*, System::calculate_norm,
EquationSystems::build_*solution_vector, FEMContext, MeshFunction, and
practically everything in src/error_estimation/ or src/mesh/*io.C

There are places where we appear to do things right (e.g. the
constraints code) but I'm sure it was by accident rather than by
design.  ;-)

Interesting - I hadn't thought of that.  Well, if find_neighbors()
breaks you should still be able to have a separate piece of the mesh
that is 1D and copy values back and forth between the two pieces.
You can even add more entries to the sparsity pattern and send_list
so that it "ties" the two pieces of the mesh together.

This is probably the way you'd have to go.  find_neighbors() was
always the big sticking point for me: I figured that if we were ever
going to support any really *interesting* multidimensional meshes,
then it would have to include things like a hex neighboring a quad, or
three quad shell elementss meeting in a "Y" shape, and I couldn't even
figure out how to tweak our *data structures* to support that
properly, much less the algorithm.

The reason I'm in this discussion is that we're going to be doing
something similar soon.

Ah; in that case the reason I'm staying in this discussion is to try
and talk you guys into fixing all that multi-manifold-incompatible
stuff I listed above.  ;-)  I think find_neighbors() is a lost cause,
but supporting conceptually disjoint manifolds of different
dimensions, manually "tied" together, ought to be doable after the
FEBase::build(mesh_dimension, blah) stuff is fixed.

Ben, why is the FE class dimension-dependent to begin with?  All the
calculations need to take place in LIBMESH_DIM dimensions anyway,
except the ones which are Elem-subclass-dependent and could therefore
switch on Elem::dimension instead.
---
Roy
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to