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
