On Wed, 5 Dec 2007, Ingo Schmidt wrote:
> Since no one responded to my proposal concerning the MeshData class
Yeah, I've been letting this thread sit in my outbox for a week or two
myself. I think the reason you've seen no response (other than that
note from John) is that there's essentially nobody maintaining the
MeshData class right now. Its original author isn't an active libMesh
developer right now, none of the other developers use it and so nobody
has kept it properly up to date. I think it may be buggy in parallel,
and it certainly won't work with the new ParallelMesh. Yet we can't
be sure how many users are actively using it in serial, so we're
reluctant to make any changes to the class!
> I send a code part requesting you to add this member function to the
> MeshData class.
I've added to the SVN head something compatible with your set_data
method (with several changes like inlining it, making the parameters
const, making the vector parameter a reference, and removing the error
cases), as well as the equivalent method for setting elem data.
> I don't know if that function will give a conflict to the all over
> ideology of that class. Please let me know if so.
It won't break any existing code, which is all I'm concerned about.
It may be more "low level" than is healthy in a class which has
"_*_data_closed" flags floating about, but after reading through the
whole code I don't see the point of those flags to begin with.
> For progress of my programming that functionality of the meshdata
> class is essential.
Well, double check the new mesh_data.h in the SVN head, and make sure
the new methods there are compatible with your code. The only
functionality changes I made were that the method in SVN will happily
write a data vector even to an object that has no data or has a data
vector of a different length. If you do need to error() out when that
happens you'll have to do it in application code; we might as well
support more lenient data changes in case other codes need them in the
And speaking of the future: like I said, we've basically got nobody
maintaining this code right now. Unless anyone else objects, I think
any functionality you want to add or changes you want to make will be
fine as long as you don't break backwards compatibility. For that
matter, there are some things that are worth breaking backwards
compatibility slightly; if you were motivated enough to figure out
what's going wrong with MeshData in parallel I think you'd be given a
lot of leeway in deciding how best to fix it.