[aspect-devel] hacking aspect

Wolfgang Bangerth bangerth at math.tamu.edu
Fri Jan 6 16:28:48 PST 2012

Hi Thomas,
I've taken a look at the changes you made and I think you're making your 
life much harder than necessary. If I see this right, for every piece of 
data you want to compute, you open (or keep open) a file and litter the 
output directory with a bunch of different files. The idea of these 
postprocessors is different, however: simply put the data you generate 
into the statistics object every postprocessor function gets as 
argument, and it will show up in the statistics file in the output 
directory chosen in the input file. The data you produce will then 
simply be one column in this file.

For example, rather than writing code like
    if (this->Vrmsout== NULL) this->Vrmsout = fopen("bin/Vrms.dat", "w");
       fprintf(Vrmsout,"%e %e\n", this->get_time(), vrms);
and having the Vrmsout handle as a member variable, simply do
    statistics.add_value("vrms", vrms);

If you run this, take a look at bin/statistics (or whichever directory 
this is for you) and find a column labeled "vrms" that you can then plot 
just as easily as the data above.

The reason to do it this way is (i) it's simpler, no need to deal with 
output files by hand; (ii) it's designed to also work in the case where 
you checkpoint the program and restart it later, which in your scheme 
will lead to a loss of the data you've generated so far.

I think it would be useful to transition the code you wrote in revisions 
569 and following to the scheme above. Let me know if you have questions 
about this and we'll try to help out. I guess I should also write a bit 
of text in section 7.1.6 of the manual on how this is all supposed to 


Wolfgang Bangerth               email:            bangerth at math.tamu.edu
                                 www: http://www.math.tamu.edu/~bangerth/

More information about the Aspect-devel mailing list