On Tue, 15 Jun 2010, Roy Stogner wrote:

> On Fri, 4 Jun 2010, Tim Kroeger wrote:
>
>> On Thu, 3 Jun 2010, Roy Stogner wrote:
>> 
>>> Indefinitely, I'm afraid.  I can replicate the problem easily enough,
>>> but I haven't found the right fix yet, and haven't had as much time to
>>> work on it as I'd like.
>> 
>> I see.  Let me know if there is any issue in that I can assist you. If the 
>> main problem is to have an idea how things can be done, perhaps you can 
>> explain some of the details to me, so that I can think about the problem.
>
> I still haven't gotten the *right* fix yet, which would mostly be
> as you describe below...
>
>> Also, a workaround could be to write a converter that reads old 
>> computations and rewrites them in a format that can be read by new 
>> applications.  Would such a thing be easy to do, e.g. with libHilbert 
>> enabled?
>
> ...except that it wouldn't be a converter exactly, it would just be a
> more lenient interpreter for the ::read() functionality, so that new
> applications would simply read old files regardless of the save file
> ordering.

Well, of course this would be the optimal thing to have.  (Even if 
this libHilbert fix should work now, if would be a good thing to be 
able to read in all sorts of old files; in particular I have in the 
meantime also performed a number of simulations where libHilbert has 
been disabled...)  What I mean is, if this is too difficult to do, it 
might be easier to write a converter.  To have that would be better 
than nothing.  For instance, wouldn't it be possible, with libHilbert 
enabled, to read a file and then interally switch to a 
libHilbert-disabled-compatibility mode, rearrange the elements 
accordingly and then write the file?

> What I've got in the meantime is a possible fix for the libHilbert
> interface.  Doubling the precision that libHilbert uses seems to be
> sufficient to avoid collisions in node ordering on the handful of test
> cases that were breaking before, and in theory it should give us the
> same node ordering on all the cases that were working before, and it
> should let us start experimenting with ParallelMesh again.  The only
> downside should be that it will misread files that were written with
> --disable-libHilbert builds.

See above...

> Before reenabling libHilbert (and finally getting another stable
> libMesh release out) I would like to see how well "in theory" matches
> "in practice".  If you've got a bunch of old save files to try running
> with, you could join me on that.  I'll attach a patch here.  You'll
> want to wipe all old contrib object files before rebuilding it (I
> think "make clobber" is sufficient), and explicitly configure with
> --enable-libHilbert.  Try loading the files and taking H1 seminorms.
> The seminorms with --disable-libHilbert should be hopelessly
> corrupted.  The seminorms with --enable-libHilbert but without the
> patch should be correct (unless you got bit by the corruption bug that
> caused us to disable libHilbert in the first place, in which case
> you'll probably get a crash in opt mode and an assertion failure in
> debug mode).  The seminorms with --enable-libHilbert and with the
> patch should, everybody cross your fingers, match the values without
> the patch.

I tried this out, that is, I wrote a program that reads in all my 
simulation results and computes the H1 seminorms of the two essential 
variables.  Then, I ran this program three times, that is

(A) with libHilbert disabled,
(B) with libHilbert enabled, and
(C) with libHilbert enabled plus your patch.

Between each two runs, I did "make clobber" and "./configure" and 
"make".  I did all this using the svn head, revision 3831.

Note that by saying "all simulation results" I mean exactly 55 
results, some of which have been computed before libHilbert has been 
disabled by default (or before I reconfigured), some of which after 
that date.  However, I guess that these 55 results do not really count 
as 55 results for your case since all of them use exactly the same 
grid.  (-:

The funny thing is now that neither of those three runs produces equal 
results.  All seminorms vary considerably, but none of them about 
several orders of magnitude.  See this example:

        old example     new example
----------------------------------------
(A)     T: 407.576      T: 106.649
        P: 3.57025      P: 0.465984

(B)     T: 98.2605      T: 378.158
        P: 0.456126     P: 2.5329

(C)     T: 136.785      T: 377.511
        P: 0.731053     P: 2.5324

Here, "T" and "P" are the two variables.

I hope that I did everything correct.  One never knows what I forget 
to do...

And hope this helps you in some way.

Best Regards,

Tim

-- 
Dr. Tim Kroeger
[email protected]            Phone +49-421-218-7710
[email protected]            Fax   +49-421-218-4236
www.mevis.fraunhofer.de/~tim

Fraunhofer MEVIS, Institute for Medical Image Computing
Universitaetsallee 29, 28359 Bremen, Germany


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to