aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetIOHDF5
diff options
context:
space:
mode:
authoreschnett <>2001-03-01 11:40:00 +0000
committereschnett <>2001-03-01 11:40:00 +0000
commit47187487f50ae040def8edebbaa3adb5b3c76531 (patch)
tree445d3e34ce8b89812994b6614f7bc9f4acbc7fe2 /Carpet/CarpetIOHDF5
Initial revision
darcs-hash:20010301114010-f6438-12fb8a9ffcc80e86c0a97e37b5b0dae0dbc59b79.gz
Diffstat (limited to 'Carpet/CarpetIOHDF5')
-rw-r--r--Carpet/CarpetIOHDF5/COPYING341
-rw-r--r--Carpet/CarpetIOHDF5/README8
-rw-r--r--Carpet/CarpetIOHDF5/configuration.ccl6
-rw-r--r--Carpet/CarpetIOHDF5/doc/documentation.tex314
-rw-r--r--Carpet/CarpetIOHDF5/interface.ccl20
-rw-r--r--Carpet/CarpetIOHDF5/par/CarpetWaveToyCheckpointTest.par43
-rw-r--r--Carpet/CarpetIOHDF5/par/CarpetWaveToyRecoverTest.par12
-rw-r--r--Carpet/CarpetIOHDF5/param.ccl113
-rw-r--r--Carpet/CarpetIOHDF5/schedule.ccl63
-rw-r--r--Carpet/CarpetIOHDF5/src/Checkpoint.cc437
-rw-r--r--Carpet/CarpetIOHDF5/src/Recover.cc523
-rw-r--r--Carpet/CarpetIOHDF5/src/iohdf5.cc1181
-rw-r--r--Carpet/CarpetIOHDF5/src/iohdf5.h44
-rw-r--r--Carpet/CarpetIOHDF5/src/iohdf5.hh198
-rw-r--r--Carpet/CarpetIOHDF5/src/iohdf5GH.h56
-rw-r--r--Carpet/CarpetIOHDF5/src/iohdf5chckpt_recover.cc914
-rw-r--r--Carpet/CarpetIOHDF5/src/iohdf5utils.cc521
-rw-r--r--Carpet/CarpetIOHDF5/src/make.code.defn5
-rw-r--r--Carpet/CarpetIOHDF5/src/make.configuration.defn7
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.it_64.h5bin0 -> 957639 bytes
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.parfile44
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc.par14
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.x.asc227
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.y.asc227
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.z.asc227
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_maximum.xg4
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_minimum.xg4
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm1.xg4
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm2.xg4
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc.par14
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.x.asc632
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.y.asc866
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.z.asc632
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_maximum.xg4
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_minimum.xg4
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm1.xg4
-rw-r--r--Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm2.xg4
-rw-r--r--Carpet/CarpetIOHDF5/test/input_initial_data.par57
-rw-r--r--Carpet/CarpetIOHDF5/test/input_initial_data/phi.h5bin0 -> 11584 bytes
-rw-r--r--Carpet/CarpetIOHDF5/test/input_initial_data/phi_maximum.xg34
-rw-r--r--Carpet/CarpetIOHDF5/test/input_initial_data/phi_minimum.xg34
-rw-r--r--Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm1.xg34
-rw-r--r--Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm2.xg34
-rw-r--r--Carpet/CarpetIOHDF5/test/input_initial_data/psi.h5bin0 -> 11584 bytes
-rw-r--r--Carpet/CarpetIOHDF5/test/input_initial_data/psi_maximum.xg34
-rw-r--r--Carpet/CarpetIOHDF5/test/input_initial_data/psi_minimum.xg34
-rw-r--r--Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm1.xg34
-rw-r--r--Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm2.xg34
-rw-r--r--Carpet/CarpetIOHDF5/test/output_initial_data.parfile57
49 files changed, 8107 insertions, 0 deletions
diff --git a/Carpet/CarpetIOHDF5/COPYING b/Carpet/CarpetIOHDF5/COPYING
new file mode 100644
index 000000000..1942c4334
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/COPYING
@@ -0,0 +1,341 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330
+ Boston, MA 02111-1307, USA.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/Carpet/CarpetIOHDF5/README b/Carpet/CarpetIOHDF5/README
new file mode 100644
index 000000000..64520a2da
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/README
@@ -0,0 +1,8 @@
+Cactus Code Thorn CarpetIOHDF5
+Authors : Erik Schnetter <schnetter@aei.mpg.de>
+CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/README,v 1.1 2004/03/03 09:44:59 schnetter Exp $
+--------------------------------------------------------------------------
+
+Purpose of the thorn:
+
+This thorn provides HDF5 based file I/O for Carpet.
diff --git a/Carpet/CarpetIOHDF5/configuration.ccl b/Carpet/CarpetIOHDF5/configuration.ccl
new file mode 100644
index 000000000..0323a73bd
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/configuration.ccl
@@ -0,0 +1,6 @@
+# Configuration definitions for thorn CarpetIOHDF5
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/configuration.ccl,v 1.3 2004/06/08 21:09:25 schnetter Exp $
+
+REQUIRES Carpet CarpetLib IOUtil
+
+REQUIRES THORNS: Carpet CarpetLib IOUtil
diff --git a/Carpet/CarpetIOHDF5/doc/documentation.tex b/Carpet/CarpetIOHDF5/doc/documentation.tex
new file mode 100644
index 000000000..b07dd73d1
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/doc/documentation.tex
@@ -0,0 +1,314 @@
+% *======================================================================*
+% Cactus Thorn template for ThornGuide documentation
+% Author: Ian Kelley
+% Date: Sun Jun 02, 2002
+% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/doc/documentation.tex,v 1.4 2004/06/22 11:56:20 tradke Exp $
+%
+% Thorn documentation in the latex file doc/documentation.tex
+% will be included in ThornGuides built with the Cactus make system.
+% The scripts employed by the make system automatically include
+% pages about variables, parameters and scheduling parsed from the
+% relevent thorn CCL files.
+%
+% This template contains guidelines which help to assure that your
+% documentation will be correctly added to ThornGuides. More
+% information is available in the Cactus UsersGuide.
+%
+% Guidelines:
+% - Do not change anything before the line
+% % START CACTUS THORNGUIDE",
+% except for filling in the title, author, date etc. fields.
+% - Each of these fields should only be on ONE line.
+% - Author names should be sparated with a \\ or a comma
+% - You can define your own macros are OK, but they must appear after
+% the START CACTUS THORNGUIDE line, and do not redefine standard
+% latex commands.
+% - To avoid name clashes with other thorns, 'labels', 'citations',
+% 'references', and 'image' names should conform to the following
+% convention:
+% ARRANGEMENT_THORN_LABEL
+% For example, an image wave.eps in the arrangement CactusWave and
+% thorn WaveToyC should be renamed to CactusWave_WaveToyC_wave.eps
+% - Graphics should only be included using the graphix package.
+% More specifically, with the "includegraphics" command. Do
+% not specify any graphic file extensions in your .tex file. This
+% will allow us (later) to create a PDF version of the ThornGuide
+% via pdflatex. |
+% - References should be included with the latex "bibitem" command.
+% - use \begin{abstract}...\end{abstract} instead of \abstract{...}
+% - For the benefit of our Perl scripts, and for future extensions,
+% please use simple latex.
+%
+% *======================================================================*
+%
+% Example of including a graphic image:
+% \begin{figure}[ht]
+% \begin{center}
+% \includegraphics[width=6cm]{MyArrangement_MyThorn_MyFigure}
+% \end{center}
+% \caption{Illustration of this and that}
+% \label{MyArrangement_MyThorn_MyLabel}
+% \end{figure}
+%
+% Example of using a label:
+% \label{MyArrangement_MyThorn_MyLabel}
+%
+% Example of a citation:
+% \cite{MyArrangement_MyThorn_Author99}
+%
+% Example of including a reference
+% \bibitem{MyArrangement_MyThorn_Author99}
+% {J. Author, {\em The Title of the Book, Journal, or periodical}, 1 (1999),
+% 1--16. {\tt http://www.nowhere.com/}}
+%
+% *======================================================================*
+
+% If you are using CVS use this line to give version information
+% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/doc/documentation.tex,v 1.4 2004/06/22 11:56:20 tradke Exp $
+
+\documentclass{article}
+
+% Use the Cactus ThornGuide style file
+% (Automatically used from Cactus distribution, if you have a
+% thorn without the Cactus Flesh download this from the Cactus
+% homepage at www.cactuscode.org)
+\usepackage{../../../../doc/ThornGuide/cactus}
+
+\begin{document}
+
+% The author of the documentation
+\author{Erik Schnetter $<$schnetter@uni-tuebingen.de$>$, Christian D. Ott $<$cott@aei.mpg.de$>$}
+
+% The title of the document (not necessarily the name of the Thorn)
+\title{CarpetIOHDF5}
+
+% the date your document was last changed, if your document is in CVS,
+% please use:
+% \date{$ $Date: 2004/06/22 11:56:20 $ $}
+\date{March 18, 2004}
+
+\maketitle
+
+% Do not delete next line
+% START CACTUS THORNGUIDE
+
+% Add all definitions used in this documentation here
+% \def\mydef etc
+
+% Add an abstract for this thorn's documentation
+\begin{abstract}
+CarpetIOHDF5 provides HDF5 based 3-D output to the Cactus mesh refinement driver Carpet.
+This document explains CarpetIOHDF5's usage and contains a specification of the
+CarpetIOHDF5 file format that was adapted from John Shalf's FlexIO library.
+\end{abstract}
+
+% The following sections are suggestive only.
+% Remove them or add your own.
+
+\section{Introduction}
+
+Having encountered various problems with CarpetIOFlexIO and the underlying FlexIO library,
+Erik Schnetter decided to create CarpetIOHDF5. CarpetIOHDF5 provides 3-D output for the
+Carpet Mesh Refinement driver within the Cactus Code. Christian D. Ott added
+file reader (analogous to Erik Schnetter's implementation present in CarpetIOFlexIO)
+and checkpoint/recovery features to CarpetIOHDF5.
+
+Right now, CarpetIOHDF5 only uses serial I/O - all data are copied to processor 0 for I/O.
+
+This document aims at giving the user a first handle on how to use
+CarpetIOHDF5. It also documents the HDF5 file layout used.
+
+
+\section{Using This Thorn}
+
+
+\subsection{Obtaining This Thorn}
+
+You can get a checkout from
+
+{\tt cvs.carpetcode.org:/home/cvs Carpet/CarpetIOHDF5}
+
+\subsection{Basic Usage}
+
+First, you have to activate the thorn in your Cactus parameter file:
+
+{\tt ActiveThorns = "CarpetIOHDF5"}
+
+\subsubsection{3-D Output}
+
+\begin{itemize}
+ \item {\tt iohdf5::out3D\_vars = "your list of Cactus grid functions to output"}
+ \item {\tt iohdf5::out3D\_every = n} : Output every {\tt n} time steps
+ \item {\tt iohdf5::out3D\_dir = "your preferred 3-D output directory"}
+ \item {\tt IO::out\_single\_precision = "yes/no (output double-precision data in single precision)"}
+\end{itemize}
+
+\subsubsection{3-D Input}
+
+There are two ways to use the 3-D input capabilities:
+
+\begin{enumerate}
+ \item For evolutions using ADMBase, one may use the thorn IDFileADM and the following parameter settings:
+ \begin{itemize}
+ \item {\tt ADMBase::initial\_data = "read from file"}
+ \item {\tt IO::filereader\_ID\_files = "space separated list of files containing the ADM variables"}
+ \item {\tt IO::filereader\_ID\_vars = "space separated list of variables to be read in"}
+ \end{itemize}
+ \item For evolutions not using ADMBase one may try to read in data by setting
+ \begin{itemize}
+ \item {\tt iohdf5::in3D\_dir = "directory from where to read data"}
+ \item {\tt iohdf5::in3D\_vars = "space separated list of variables to be read in"}
+ \end{itemize}
+\end{enumerate}
+
+
+\subsubsection{Checkpointing}
+
+CarpetIOHDF5 uses the Cactus checkpoint/recovery infrastructure provided by
+CactusBase/IOUtil.
+
+\begin{itemize}
+ \item {\tt iohdf5::checkpoint = "yes"} : Turns on checkpointing
+ \item {\tt iohdf5::checkpoint\_every = n} : Checkpointing every {\tt n} time steps
+ \item {\tt iohdf5::checkpoint\_ID = "yes"} : Turns on checkpointing after initial data
+ \item {\tt io::checkpoint\_dir = "your preferred checkpoint directory"}
+ \item {\tt iohdf5::checkpoint\_keep = n} : Keep {\tt n} checkpoint files around
+\end{itemize}
+
+
+\subsubsection{Recover}
+
+CarpetIOHDF5 uses the Cactus checkpoint/recovery infrastructure provided by
+CactusBase/IOUtil. Currently all the checkpoint information is copied onto processor 0 and
+ written into a single file whose name is invented by IOUtil. Unfortunately, single cpu
+checkpoint files have a different name (a missing \_file\_0 tag) than checkpoint
+files from multi-cpu runs. Somebody should tweek IOBase...
+
+In principle, CarpetIOHDF5 is able to restart on any number
+of cpus from a checkpoint file of a run using any (other or same) number of cpus.
+
+\begin{itemize}
+ \item {\tt iohdf5::recover = "auto"} : Recover from the most recent Checkpoint file. This bombs,
+ if no checkpoint file is found.
+ \item {\tt iohdf5::recover = "autoprobe"} : Recover from the most recent Checkpoint file. This continues
+ without recovering if no checkpoint file is found.
+ \item {\tt iohdf5::recover\_dir = "directory containing the checkpoint file"}
+ \item {\tt iohdf5::recover = "manual"} : Recover from a file specified by {\tt iohdf5::recover\_file}. This
+ bombs if the file is not found.
+ \item {\tt iohdf5::recover\_file = "file you want to recover from"} : Only needs to be set if
+ {\tt iohdf5::recover = "manual"}.
+
+\end{itemize}
+
+
+
+\subsection{Special Behaviour}
+
+\begin{itemize}
+ \item {\tt iohdf5::h5verbose = "yes"} : Makes CarpetIOHDF5 very talkative.
+\end{itemize}
+
+
+\section{CarpetIOHDF5's HDF5 file layout}
+
+The HDF5 file layout of CarpetIOHDF5 is quite simple. There are no groups besides the
+standard HDF5 root data object group:
+
+\begin{itemize}
+ \item Each dataset is named according to this template: \\
+ {\tt \small [Full Variable Name] it=[Iteration] tl=[Timelevel] ml=[mglevel] rl=[reflevel] m=[map] c=[component]}
+
+ \item Each dataset has the following (largely redundant!) attributes associated with it:
+
+ \begin{itemize}
+ \item {\tt level} : Carpet::reflevel
+ \item {\tt origin} : 1-D array of length Carpet::dim. \\ origin[d]=CCTK\_ORIGIN\_SPACE(d) +
+ cctk\_lbnd[d] * delta[d]
+ \item {\tt delta} : 1-D array of length Carpet::dim. \\ delta[d] = CCTK\_DELTA\_SPACE(d)
+ \item {\tt min\_ext} : 1-D array of length Carpet::dim. \\ min\_ext[d] = delta[d]
+ \item {\tt max\_ext} : 1-D array of length Carpet::dim. \\ origin[d] + cctk\_lsh[d] * delta[d]
+ \item {\tt time} : cctk\_time
+ \item {\tt timestep} : cctk\_iteration
+ \item {\tt level\_timestep} : cctk\_iteration / Carpet::reflevelfact
+ \item {\tt persistence} : cctk\_iteration / Carpet::reflevelfact
+ \item {\tt time\_refinement} : Carpet::time\_refinement
+ \item {\tt spatial\_refinement} : 1-D array of length Carpet::dim. \\ spatial\_refinement[d] = Carpet::reflevelfact
+ \item {\tt grid\_placement\_refinement} : 1-D array of length Carpet::dim. \\ grid\_placement\_refinement[d] = Carpet::reflevelfact
+ \item {\tt iorigin} : 1-D array of length Carpet::dim. \\ iorigin[d] = (Carpet::ext.lower() / Carpet::ext.stride())[d]
+ \item {\tt name} : CCTK\_FullName(variable index)
+ \item {\tt group\_version} : 1
+ \item {\tt group\_fullname} : CCTK\_FullName(variable index)
+ \item {\tt group\_varname} : CCTK\_VarName(variable index)
+ \item {\tt group\_groupname} : CCTK\_GroupName(group index)
+ \item {\tt group\_grouptype} : CCTK\_GF, CCTK\_ARRAY or CCTK\_SCALAR
+ \item {\tt group\_dim} : CCTK\_GroupDimI(group index)
+ \item {\tt group\_timelevel} : tl (current timelevel)
+ \item {\tt group\_numtimelevels} : CCTK\_NumTimeLevelsI(group index)
+ \item {\tt cctk\_version} : 1
+ \item {\tt cctk\_dim} : cctk\_dim
+ \item {\tt cctk\_iteration} : cctk\_iteration
+ \item {\tt cctk\_gsh} : 1-D array of length Carpet::dim. cctk\_gsh
+ \item {\tt cctk\_lsh} : 1-D array of length Carpet::dim. cctk\_lsh
+ \item {\tt cctk\_lbnd} : 1-D array of length Carpet::dim. cctk\_lbnd
+ \item {\tt cctk\_delta\_time} : 1-D array of length Carpet::dim. cctk\_delta\_time
+ \item {\tt cctk\_delta\_space} : 1-D array of length Carpet::dim. cctk\_delta\_space
+ \item {\tt cctk\_origin\_space} : 1-D array of length Carpet::dim. cctk\_origin\_space
+ \item {\tt cctk\_bbox} : 1-D array of length 2*Carpet::dim. cctk\_box
+ \item {\tt cctk\_levfac} : 1-D array of length Carpet::dim. cctk\_levfac
+ \item {\tt cctk\_levoff} : 1-D array of length Carpet::dim. cctk\_levoff
+ \item {\tt cctk\_levoffdenom} : 1-D array of length Carpet::dim. cctk\_levoffdenom
+ \item {\tt cctk\_timefac} : cctk\_timefac
+ \item {\tt cctk\_convlevel} : cctk\_convlevel
+ \item {\tt cctk\_convfac} : cctk\_convfac
+ \item {\tt cctk\_nghostzones} : 1-D array of length Carpet::dim. cctk\_nghostzones
+ \item {\tt cctk\_time} : cctk\_time
+ \item {\tt carpet\_version} : 1
+ \item {\tt carpet\_dim} : Carpet::dim
+ \item {\tt carpet\_basemglevel} : Carpet::basemglevel
+ \item {\tt carpet\_mglevel} : Carpet::mglevel
+ \item {\tt carpet\_mglevels} : Carpet::mglevels
+ \item {\tt carpet\_mgface} : Carpet::mgfact
+ \item {\tt carpet\_reflevel} : Carpet::reflevel
+ \item {\tt carpet\_reflevels} : Carpet::reflevels
+ \item {\tt carpet\_reffact} : Carpet::reffact
+ \item {\tt carpet\_map} : Carpet::map
+ \item {\tt carpet\_maps} : Carpet::maps
+ \item {\tt carpet\_component} : Carpet::component
+ \item {\tt carpet\_components} : Carpet::vhh.at(Carpet::map)->components(reflevel))
+
+ \end{itemize}
+\end{itemize}
+
+\subsection{Attributes needed by the file reader}
+
+The number of attributes needed by the CarpetIOHDF5 file reader is much smaller then the total
+number of attributes attached to each dataset:
+
+\begin{itemize}
+ \item {\tt name}
+ \item {\tt level}
+ \item {\tt iorigin}
+\end{itemize}
+
+
+%\subsection{Interaction With Other Thorns}
+%
+%\subsection{Support and Feedback}
+%
+%\section{History}
+%
+%\subsection{Thorn Source Code}
+%
+%\subsection{Thorn Documentation}
+%
+%\subsection{Acknowledgements}
+%
+%
+%\begin{thebibliography}{9}
+%
+%\end{thebibliography}
+%
+% Do not delete next line
+% END CACTUS THORNGUIDE
+
+\end{document}
diff --git a/Carpet/CarpetIOHDF5/interface.ccl b/Carpet/CarpetIOHDF5/interface.ccl
new file mode 100644
index 000000000..b8d6a5da8
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/interface.ccl
@@ -0,0 +1,20 @@
+# Interface definition for thorn CarpetIOHDF5
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/interface.ccl,v 1.5 2004/06/08 21:09:25 schnetter Exp $
+
+IMPLEMENTS: IOHDF5
+
+uses include header: carpet.hh
+
+uses include header: bbox.hh
+uses include header: vect.hh
+
+uses include header: data.hh
+uses include header: gdata.hh
+
+uses include header: ggf.hh
+
+
+
+CCTK_INT next_output_iteration TYPE=scalar
+CCTK_REAL next_output_time TYPE=scalar
+CCTK_INT this_iteration TYPE=scalar
diff --git a/Carpet/CarpetIOHDF5/par/CarpetWaveToyCheckpointTest.par b/Carpet/CarpetIOHDF5/par/CarpetWaveToyCheckpointTest.par
new file mode 100644
index 000000000..57cf0e59b
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/par/CarpetWaveToyCheckpointTest.par
@@ -0,0 +1,43 @@
+ActiveThorns = "Boundary CoordBase CartGrid3D SymBase Time Carpet CarpetReduce CarpetSlab CarpetLib CarpetRegrid IOUtil IOBasic CarpetIOASCII CarpetIOHDF5 IDScalarWaveC WaveToyC"
+
+
+Cactus::cctk_itlast = 12
+
+Time::dtfac = 0.5
+
+IDScalarWave::initial_data = "gaussian"
+IDScalarWave::sigma = 2.8
+IDScalarWave::radius = 0.0
+
+Grid::avoid_origin = "no"
+Grid::type = "byrange"
+Grid::dxyz = 1
+
+Driver::global_nsize = 20
+Driver::ghost_size = 2
+
+Carpet::prolongation_order_space = 3
+Carpet::prolongation_order_time = 2
+Carpet::init_each_timelevel = "yes"
+Carpet::buffer_width = 6
+Carpet::max_refinement_levels = 2
+
+CarpetRegrid::refinement_levels = 2
+
+# Output
+IO::out_dir = $parfile
+
+IOBasic::outInfo_every = 1
+IOBasic::outInfo_vars = "wavetoy::phi"
+
+IOASCII::out1D_vars = "wavetoy::phi"
+IOASCII::out1D_every = 12
+IOASCII::out3D_vars = "wavetoy::phi"
+IOASCII::out3D_every = 12
+
+# Checkpoint
+IO::checkpoint_every = 12
+IO::checkpoint_keep = 2
+
+IOHDF5::checkpoint = "yes"
+IOHDF5::verbose = "yes"
diff --git a/Carpet/CarpetIOHDF5/par/CarpetWaveToyRecoverTest.par b/Carpet/CarpetIOHDF5/par/CarpetWaveToyRecoverTest.par
new file mode 100644
index 000000000..5972c76d8
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/par/CarpetWaveToyRecoverTest.par
@@ -0,0 +1,12 @@
+ActiveThorns = "Boundary CoordBase CartGrid3D SymBase Time Carpet CarpetReduce CarpetSlab CarpetLib CarpetRegrid IOUtil IOBasic CarpetIOASCII CarpetIOHDF5 IDScalarWaveC WaveToyC"
+
+
+Cactus::cctk_itlast = 24
+
+# Output
+IO::out_dir = $parfile
+
+# Recovery
+IO::recover = "auto"
+
+IOHDF5::checkpoint = "no"
diff --git a/Carpet/CarpetIOHDF5/param.ccl b/Carpet/CarpetIOHDF5/param.ccl
new file mode 100644
index 000000000..c80b383c5
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/param.ccl
@@ -0,0 +1,113 @@
+# Parameter definitions for thorn CarpetIOHDF5
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/param.ccl,v 1.15 2004/06/25 12:54:30 schnetter Exp $
+
+
+
+shares: IO
+
+USES STRING out_dir
+USES BOOLEAN out_single_precision
+
+USES KEYWORD out_criterion
+USES CCTK_INT out_every
+USES CCTK_REAL out_dt
+
+USES INT checkpoint_every
+USES INT checkpoint_keep
+USES BOOLEAN checkpoint_ID
+USES BOOLEAN recover_and_remove
+USES BOOLEAN checkpoint_on_terminate
+USES BOOLEAN strict_io_parameter_check
+USES KEYWORD recover
+USES STRING checkpoint_dir
+USES STRING checkpoint_ID_file
+USES STRING checkpoint_file
+USES STRING recover_dir
+USES STRING recover_file
+
+
+shares: Cactus
+
+USES CCTK_REAL cctk_initial_time
+
+
+private:
+
+
+
+BOOLEAN verbose "Produce log output" STEERABLE = ALWAYS
+{
+} "no"
+
+
+
+CCTK_STRING out3D_dir "Name of 3D CarpetIOHDF5 output directory, overrides IO::out_dir" STEERABLE = ALWAYS
+{
+ "^$" :: "Empty: use IO::out_dir"
+ ".+" :: "Not empty: directory name"
+} ""
+
+CCTK_STRING out3D_vars "Variables to output in 3D CarpetIOHDF5 file format" STEERABLE = ALWAYS
+{
+ .* :: "List of group and variable names"
+} ""
+
+CCTK_STRING out3D_extension "File extension to use for 3D CarpetIOHDF5 output" STEERABLE = ALWAYS
+{
+ ".*" :: "File extension (including a leading dot, if desired)"
+} ".h5"
+
+KEYWORD out3D_criterion "Criterion to select 3D CarpetIOHDF5 output intervals, overrides out_every" STEERABLE = ALWAYS
+{
+ "default" :: "Use IO::out_criterion"
+ "never" :: "Never output"
+ "iteration" :: "Output every so many iterations"
+ "divisor" :: "Output if (iteration % out_every) == 0."
+ "time" :: "Output every that much coordinate time"
+} "default"
+
+CCTK_INT out3D_every "How often to do 3D CarpetIOHDF5 output, overrides out_every" STEERABLE = ALWAYS
+{
+ 1:* :: "Output every so many time steps"
+ -1:0 :: "No output"
+ -2 :: "Use IO::out_every"
+} -2
+
+REAL out3D_dt "How often to do 3D CarpetIOHDF5 output, overrides IO::out_dt" STEERABLE = ALWAYS
+{
+ (0:* :: "In intervals of that much coordinate time"
+ 0 :: "As often as possible"
+ -1 :: "Disable output"
+ -2 :: "Default to IO::out_dt"
+} -2
+
+
+
+CCTK_STRING in3D_dir "Name of 3D CarpetIOHDF5 input directory" STEERABLE = ALWAYS
+{
+ ".+" :: "Directory name"
+} "."
+
+CCTK_STRING in3D_vars "Variables to input in 3D CarpetIOHDF5 file format" STEERABLE = ALWAYS
+{
+ .* :: "List of group and variable names"
+} ""
+
+CCTK_STRING in3D_extension "File extension to use for 3D CarpetIOHDF5 input" STEERABLE = ALWAYS
+{
+ ".*" :: "File extension (including a leading dot, if desired)"
+} ".h5"
+
+
+BOOLEAN checkpoint "Do checkpointing with CarpetIOHDF5" STEERABLE = ALWAYS
+{
+} "no"
+
+BOOLEAN checkpoint_next "Checkpoint at next iteration" STEERABLE = ALWAYS
+{
+} "no"
+
+
+BOOLEAN use_reflevels_from_checkpoint "Use CarpetRegrid::refinement_levels from the checkpoint file rather than from the parameter file." STEERABLE = ALWAYS
+{
+} "no"
diff --git a/Carpet/CarpetIOHDF5/schedule.ccl b/Carpet/CarpetIOHDF5/schedule.ccl
new file mode 100644
index 000000000..fc3f69751
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/schedule.ccl
@@ -0,0 +1,63 @@
+# Schedule definitions for thorn CarpetIOHDF5
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/schedule.ccl,v 1.12 2004/08/18 16:02:56 tradke Exp $
+
+storage: next_output_iteration next_output_time this_iteration
+
+schedule CarpetIOHDF5Startup at STARTUP after IOUtil_Startup
+{
+ LANG: C
+} "Startup routine"
+
+schedule CarpetIOHDF5Init at BASEGRID
+{
+ LANG: C
+ OPTIONS: global
+} "Initialisation routine"
+
+schedule CarpetIOHDF5ReadData at INITIAL
+{
+ LANG: C
+ OPTIONS: level
+} "Read initial data from file"
+
+if (checkpoint && checkpoint_ID)
+{
+ schedule CarpetIOHDF5_InitialDataCheckpoint at CPINITIAL
+ {
+ LANG: C
+ OPTIONS: meta
+ } "Initial data checkpoint routine"
+}
+
+schedule CarpetIOHDF5_EvolutionCheckpoint at CHECKPOINT
+{
+ LANG: C
+ OPTIONS: meta
+} "Evolution checkpoint routine"
+
+schedule CarpetIOHDF5_TerminationCheckpoint at TERMINATE
+{
+ LANG: C
+ OPTIONS: meta
+} "Termination checkpoint routine"
+
+schedule CarpetIOHDF5_CloseFile at POSTINITIAL
+{
+ LANG: C
+ OPTIONS: global
+} "Close an input file opened by the filereader"
+
+if (! CCTK_Equals (recover, "no") && *recover_file)
+{
+ schedule CarpetIOHDF5_RecoverParameters at RECOVER_PARAMETERS
+ {
+ LANG:C
+ OPTIONS: meta
+ } "Parameter recovery routine"
+
+ schedule CarpetIOHDF5_CloseFile at POST_RECOVER_VARIABLES
+ {
+ LANG: C
+ OPTIONS: global
+ } "Close an initial data checkpoint file"
+}
diff --git a/Carpet/CarpetIOHDF5/src/Checkpoint.cc b/Carpet/CarpetIOHDF5/src/Checkpoint.cc
new file mode 100644
index 000000000..04483c18a
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/src/Checkpoint.cc
@@ -0,0 +1,437 @@
+#include <assert.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <algorithm>
+#include <fstream>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include <hdf5.h>
+
+#include "cctk.h"
+#include "cctk_Parameters.h"
+#include "cctk_Version.h"
+
+extern "C" {
+static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/Checkpoint.cc,v 1.2 2004/08/18 16:02:56 tradke Exp $";
+CCTK_FILEVERSION(Carpet_CarpetIOHDF5_Checkpoint_cc);
+}
+
+#include "CactusBase/IOUtil/src/ioGH.h"
+#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h"
+
+#include "bbox.hh"
+#include "data.hh"
+#include "gdata.hh"
+#include "ggf.hh"
+#include "vect.hh"
+
+#include "carpet.hh"
+
+#include "iohdf5.hh"
+#include "iohdf5GH.h"
+
+
+namespace CarpetIOHDF5
+{
+
+using namespace std;
+using namespace Carpet;
+
+// when was the last checkpoint written ?
+static int last_checkpoint_iteration = -1;
+
+
+static int Checkpoint (const cGH* const cctkGH, int called_from);
+static int DumpParametersGHExtentions (const cGH *cctkGH, int all, hid_t writer);
+
+
+int CarpetIOHDF5_InitialDataCheckpoint (const cGH* const cctkGH)
+{
+ CCTK_INFO ("---------------------------------------------------------");
+ CCTK_INFO ("Dumping initial data checkpoint");
+ CCTK_INFO ("---------------------------------------------------------");
+
+ int retval = Checkpoint (cctkGH, CP_INITIAL_DATA);
+
+ return (retval);
+}
+
+
+int CarpetIOHDF5_EvolutionCheckpoint (const cGH* const cctkGH)
+{
+ int retval = 0;
+ DECLARE_CCTK_PARAMETERS
+
+ // Test checkpoint_every, and adjust it. This is necessary until
+ // recovery is more flexible.
+ int every_full = 1 << (maxreflevels-1);
+ if (checkpoint_every > 0 && (checkpoint_every % every_full) != 0)
+ {
+ char new_checkpoint_every[32];
+
+ snprintf (new_checkpoint_every, sizeof (new_checkpoint_every), "%d",
+ (checkpoint_every / every_full + 1) * every_full);
+ CCTK_ParameterSet ("checkpoint_every", "IOUtil", new_checkpoint_every);
+ CCTK_VInfo (CCTK_THORNSTRING,"I have adjusted your checkpoint_every to %s.",
+ new_checkpoint_every);
+ }
+
+ if (checkpoint &&
+ ((checkpoint_every > 0 && cctkGH->cctk_iteration % checkpoint_every == 0) ||
+ checkpoint_next))
+ {
+ CCTK_INFO ("---------------------------------------------------------");
+ CCTK_VInfo (CCTK_THORNSTRING, "Dumping periodic checkpoint at "
+ "iteration %d", cctkGH->cctk_iteration);
+ CCTK_INFO ("---------------------------------------------------------");
+
+ retval = Checkpoint (cctkGH, CP_EVOLUTION_DATA);
+
+ if (checkpoint_next)
+ {
+ CCTK_ParameterSet ("checkpoint_next", CCTK_THORNSTRING, "no");
+ }
+ }
+
+ return (retval);
+}
+
+
+int CarpetIOHDF5_TerminationCheckpoint (const cGH *const GH)
+{
+ int retval = 0;
+ DECLARE_CCTK_PARAMETERS
+
+
+ if (checkpoint && checkpoint_on_terminate)
+ {
+ if (last_checkpoint_iteration < GH->cctk_iteration)
+ {
+ CCTK_INFO ("---------------------------------------------------------");
+ CCTK_VInfo (CCTK_THORNSTRING, "Dumping termination checkpoint at "
+ "iteration %d", GH->cctk_iteration);
+ CCTK_INFO ("---------------------------------------------------------");
+
+ retval = Checkpoint (GH, CP_EVOLUTION_DATA);
+ }
+ else if (verbose)
+ {
+ CCTK_INFO ("---------------------------------------------------------");
+ CCTK_VInfo (CCTK_THORNSTRING, "Termination checkpoint already dumped "
+ "as last evolution checkpoint at iteration %d",
+ last_checkpoint_iteration);
+ CCTK_INFO ("---------------------------------------------------------");
+ }
+ }
+
+ return (retval);
+}
+
+
+static int Checkpoint (const cGH* const cctkGH, int called_from)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ int retval = 0;
+
+ ioRequest *request;
+
+ CarpetIOHDF5GH *myGH = (CarpetIOHDF5GH *) CCTK_GHExtension (cctkGH,
+ "CarpetIOHDF5");
+
+ // check if CarpetIOHDF5 was registered as I/O method
+ if (myGH == NULL)
+ {
+ CCTK_WARN (0, "No CarpetIOHDF5 I/O methods registered");
+ return -1;
+ }
+
+ int const myproc = CCTK_MyProc (cctkGH);
+
+
+ /* get the filenames for both the temporary and real checkpoint file */
+ char *filename = IOUtil_AssembleFilename (cctkGH, NULL, "", ".h5",
+ called_from, 0, 1);
+ char *tempname = IOUtil_AssembleFilename (cctkGH, NULL, ".tmp", ".h5",
+ called_from, 0, 1);
+
+ hid_t writer = -1;
+
+ if (myproc == 0)
+ {
+ if (verbose)
+ {
+ CCTK_VInfo (CCTK_THORNSTRING, "Creating temporary checkpoint file '%s'",
+ tempname);
+ }
+
+ HDF5_ERROR (writer = H5Fcreate (tempname, H5F_ACC_TRUNC, H5P_DEFAULT,
+ H5P_DEFAULT));
+
+ // Dump all parameters and GHExtentions
+ retval = DumpParametersGHExtentions (cctkGH, 1, writer);
+
+ }
+
+ // now dump the grid variables on all mglevels, reflevels, maps and components
+ BEGIN_MGLEVEL_LOOP (cctkGH)
+ {
+ BEGIN_REFLEVEL_LOOP (cctkGH)
+ {
+ if (verbose)
+ {
+ CCTK_VInfo (CCTK_THORNSTRING,
+ "Dumping grid variables on mglevel %d reflevel %d ...",
+ mglevel, reflevel);
+ }
+
+ for (int group = CCTK_NumGroups () - 1; group >= 0; group--)
+ {
+ /* only dump groups which have storage assigned */
+ if (CCTK_QueryGroupStorageI (cctkGH, group) <= 0)
+ {
+ continue;
+ }
+
+ const int grouptype = CCTK_GroupTypeI (group);
+
+ // scalars and grid arrays only have one reflevel
+ if (grouptype != CCTK_GF && reflevel > 0)
+ {
+ continue;
+ }
+
+ // now check if there is any memory allocated
+ // for GFs and GAs. GSs should always have
+ // memory allocated and there is at this point
+ // no CCTK function to check this :/
+ if (grouptype == CCTK_GF || grouptype == CCTK_ARRAY)
+ {
+ const int gpdim = CCTK_GroupDimI (group);
+ int gtotalsize = 1;
+ vector<int> tlsh (gpdim);
+ assert(!CCTK_GrouplshGI(cctkGH,gpdim,&tlsh[0],group));
+ for(int i=0;i<gpdim;i++)
+ {
+ gtotalsize=tlsh[i];
+ }
+ if(gtotalsize == 0)
+ {
+ if (verbose)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING, "Group '%s' is zero-sized. "
+ "No checkpoint info written", CCTK_GroupName (group));
+ }
+ continue;
+ }
+ }
+
+ /* get the number of allocated timelevels */
+ cGroup gdata;
+ CCTK_GroupData (group, &gdata);
+ gdata.numtimelevels = 0;
+ gdata.numtimelevels = CCTK_GroupStorageIncrease (cctkGH, 1, &group,
+ &gdata.numtimelevels,NULL);
+
+ int first_vindex = CCTK_FirstVarIndexI (group);
+
+ /* get the default I/O request for this group */
+ request = IOUtil_DefaultIORequest (cctkGH, first_vindex, 1);
+
+ /* disable checking for old data objects, disable datatype conversion
+ and downsampling */
+ request->check_exist = 0;
+ request->hdatatype = gdata.vartype;
+ for (request->hdim = 0; request->hdim < request->vdim; request->hdim++)
+ {
+ request->downsample[request->hdim] = 1;
+ }
+
+ /* loop over all variables in this group */
+ for (request->vindex = first_vindex;
+ request->vindex < first_vindex + gdata.numvars;
+ request->vindex++)
+ {
+ char *fullname = CCTK_FullName (request->vindex);
+
+ /* loop over all timelevels of this variable */
+ for (request->timelevel = 0;
+ request->timelevel < gdata.numtimelevels;
+ request->timelevel++)
+ {
+ if (verbose)
+ {
+ if (fullname != NULL)
+ {
+ CCTK_VInfo (CCTK_THORNSTRING, " %s (timelevel %d)",
+ fullname, request->timelevel);
+ }
+ else
+ {
+ CCTK_VWarn(1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Invalid variable with varindex %d", request->vindex);
+ }
+ }
+ // write the var
+
+ if (grouptype == CCTK_ARRAY || grouptype == CCTK_GF || grouptype == CCTK_SCALAR)
+ {
+ if (verbose)
+ {
+ CCTK_VInfo (CCTK_THORNSTRING,"%s: reflevel: %d map: %d component: %d grouptype: %d ",
+ fullname,reflevel,Carpet::map,component,grouptype);
+ }
+ retval += WriteVar(cctkGH,writer,request,1);
+ }
+ else
+ {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Invalid group type %d for variable '%s'", grouptype, fullname);
+ retval = -1;
+ }
+ }
+ free(fullname);
+ } /* end of loop over all variables */
+ } /* end of loop over all groups */
+ } END_REFLEVEL_LOOP;
+
+ } END_MGLEVEL_LOOP;
+
+
+ // Close the file
+ if (writer >= 0)
+ {
+ HDF5_ERROR (H5Fclose(writer));
+ }
+
+ if (retval == 0 && myproc == 0)
+ {
+ if (rename (tempname, filename))
+ {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Could not rename temporary checkpoint file '%s' to '%s'",
+ tempname, filename);
+ retval = -1;
+ }
+ else
+ {
+ if (myGH->cp_filename_list[myGH->cp_filename_index])
+ {
+ if (checkpoint_keep > 0)
+ {
+ remove (myGH->cp_filename_list[myGH->cp_filename_index]);
+ }
+ free (myGH->cp_filename_list[myGH->cp_filename_index]);
+ }
+ myGH->cp_filename_list[myGH->cp_filename_index] = strdup (filename);
+ myGH->cp_filename_index = (myGH->cp_filename_index+1) % abs (checkpoint_keep);
+ }
+ }
+
+ // save the iteration number of this checkpoint
+ last_checkpoint_iteration = cctkGH->cctk_iteration;
+
+ // free allocated resources
+ free (tempname);
+ free (filename);
+
+ return retval;
+
+} // Checkpoint
+
+
+static int DumpParametersGHExtentions (const cGH *cctkGH, int all, hid_t writer)
+{
+ // large parts of this routine were taken from
+ // Thomas Radke's IOHDF5Util. Thanks Thomas!
+
+ DECLARE_CCTK_PARAMETERS;
+
+ char *parameters;
+ hid_t group, dspace, dset;
+ hsize_t size;
+
+ int itmp;
+ double dtmp;
+ const char *version;
+ const ioGH *ioUtilGH;
+
+ if (verbose)
+ {
+ CCTK_INFO ("Dumping Parameters and GH Extentions...");
+ }
+
+ /* get the parameter string buffer */
+ parameters = IOUtil_GetAllParameters (cctkGH, all);
+ if (parameters)
+ {
+ size = strlen (parameters) + 1;
+ HDF5_ERROR (group = H5Gcreate (writer, METADATA_GROUP, 0));
+ HDF5_ERROR (dspace = H5Screate_simple (1, &size, NULL));
+ HDF5_ERROR (dset = H5Dcreate (group, ALL_PARAMETERS, H5T_NATIVE_UCHAR,
+ dspace, H5P_DEFAULT));
+ HDF5_ERROR (H5Dwrite (dset, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL,
+ H5P_DEFAULT, parameters));
+
+ // now dump the GH Extentions
+
+ /* get the handle for IOUtil extensions */
+ ioUtilGH = (const ioGH *) CCTK_GHExtension (cctkGH, "IO");
+
+ itmp = CCTK_MainLoopIndex ();
+ WriteAttribute(dset,"main loop index",itmp);
+
+ itmp = cctkGH->cctk_iteration;
+ WriteAttribute(dset,"GH$iteration",itmp);
+
+ itmp = ioUtilGH->ioproc_every;
+ WriteAttribute(dset,"GH$ioproc_every",itmp);
+
+ itmp = CCTK_nProcs (cctkGH);
+ WriteAttribute(dset,"GH$nprocs",itmp);
+
+ dtmp = cctkGH->cctk_time;
+ WriteAttribute(dset,"GH$time", dtmp);
+
+ dtmp = global_time;
+ WriteAttribute(dset,"carpet_global_time", dtmp);
+
+ itmp = reflevels;
+ WriteAttribute(dset,"carpet_reflevels", itmp);
+
+ dtmp = delta_time;
+ WriteAttribute(dset,"carpet_delta_time", dtmp);
+
+ version = CCTK_FullVersion();
+ WriteAttribute(dset,"Cactus version", version);
+
+ /* finally, we need all the times on the individual refinement levels */
+
+ const int numberofmgtimes=mglevels;
+ WriteAttribute(dset,"numberofmgtimes",numberofmgtimes);
+ for(int i=0;i < numberofmgtimes;i++)
+ {
+ char buffer[100];
+ snprintf (buffer, sizeof (buffer), "mgleveltimes %d", i);
+ WriteAttribute(dset,buffer,(double *) &leveltimes.at(i).at(0), reflevels);
+ }
+
+ HDF5_ERROR (H5Dclose (dset));
+ HDF5_ERROR (H5Sclose (dspace));
+ HDF5_ERROR (H5Gclose (group));
+
+ free (parameters);
+ }
+
+ return 0;
+} // DumpParametersGHExtentions
+
+} // namespace CarpetIOHDF5
diff --git a/Carpet/CarpetIOHDF5/src/Recover.cc b/Carpet/CarpetIOHDF5/src/Recover.cc
new file mode 100644
index 000000000..0f5349bb8
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/src/Recover.cc
@@ -0,0 +1,523 @@
+#include <assert.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <algorithm>
+#include <fstream>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include <hdf5.h>
+
+#include "cctk.h"
+#include "cctk_Parameters.h"
+#include "cctk_Version.h"
+
+extern "C" {
+static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/Recover.cc,v 1.2 2004/07/09 15:38:18 tradke Exp $";
+CCTK_FILEVERSION(Carpet_CarpetIOHDF5_iohdf5chckpt_recover_cc);
+}
+
+#include "CactusBase/IOUtil/src/ioGH.h"
+#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h"
+
+#include "bbox.hh"
+#include "data.hh"
+#include "gdata.hh"
+#include "ggf.hh"
+#include "vect.hh"
+
+#include "carpet.hh"
+
+#include "iohdf5.hh"
+#include "iohdf5GH.h"
+
+/* some macros for HDF5 group names */
+#define METADATA_GROUP "Parameters and Global Attributes"
+#define ALL_PARAMETERS "All Parameters"
+
+
+
+namespace CarpetIOHDF5
+{
+
+using namespace std;
+using namespace Carpet;
+
+// structure describing a single dataset of an HDF5 file to read from
+typedef struct
+{
+ char *datasetname;
+
+ int vindex;
+ int timelevel;
+ int mglevel;
+ int reflevel;
+ int rank;
+ int *shape; // [rank]
+ int *iorigin; // [rank]
+} dataset_t;
+
+// structure describing the contents of an HDF5 file to read from
+typedef struct
+{
+ int num_mglevels;
+ int num_reflevels;
+ int parameter_len;
+ int cctk_iteration;
+ int main_loop_index;
+ double global_time;
+ double delta_time;
+ double *mgleveltimes; // [num_mglevels*num_reflevels]
+
+ char *filename;
+ hid_t file;
+ int num_datasets;
+ list<dataset_t> datasets; // [num_datasets]
+ int num_ints; // total number of integers in datasets[]
+} file_t;
+
+static file_t infile = {0, 0, 0, 0, 0, 0, 0, NULL, NULL, -1, -1,
+ list<dataset_t> (), 0};
+
+
+static int OpenFile (const char *basefilename, file_t *file, int called_from);
+static int RecoverVariables (cGH* cctkGH, file_t *file);
+static herr_t ReadMetadata (hid_t group, const char *objectname, void *arg);
+
+
+// Register with the Cactus Recovery Interface
+int CarpetIOHDF5_RecoverParameters (void)
+{
+ int retval = IOUtil_RecoverParameters (Recover, ".h5", "HDF5");
+
+ return (retval);
+}
+
+
+// close a checkpoint/filereader file after recovering grid variables
+int CarpetIOHDF5_CloseFile (void)
+{
+ DECLARE_CCTK_PARAMETERS
+
+
+ if (infile.num_datasets <= 0)
+ {
+ return (0);
+ }
+ infile.num_datasets = -1;
+
+ if (verbose)
+ {
+ CCTK_VInfo (CCTK_THORNSTRING, "closing file '%s' after recovery",
+ infile.filename);
+ }
+
+ if (infile.file >= 0)
+ {
+ HDF5_ERROR (H5Fclose (infile.file));
+ infile.file = -1;
+ }
+ free (infile.filename);
+ delete[] infile.mgleveltimes;
+
+ for (list<dataset_t>::iterator dataset = infile.datasets.begin ();
+ dataset != infile.datasets.end ();
+ dataset++)
+ {
+ delete[] dataset->shape;
+ delete[] dataset->iorigin;
+ }
+ infile.datasets.clear ();
+
+ return (0);
+}
+
+static int OpenFile (const char *basefilename, file_t *file, int called_from)
+{
+ hid_t dset = -1;
+ const int myproc = CCTK_MyProc (NULL);
+ DECLARE_CCTK_PARAMETERS
+
+
+ // generate filename for an unchunked checkpoint file */
+ file->filename = IOUtil_AssembleFilename (NULL, basefilename, "", ".h5",
+ called_from, 0, 1);
+ if (verbose)
+ {
+ CCTK_VInfo (CCTK_THORNSTRING, "opening %s file '%s'",
+ called_from == CP_RECOVER_PARAMETERS ? "checkpoint" : "input",
+ file->filename);
+ }
+
+ if (myproc == 0)
+ {
+ // try to open the file (prevent HDF5 error messages if it fails)
+ H5E_BEGIN_TRY
+ {
+ file->file = H5Fopen (file->filename, H5F_ACC_RDONLY, H5P_DEFAULT);
+ } H5E_END_TRY;
+
+ if (file->file >= 0)
+ {
+ if (called_from == CP_RECOVER_PARAMETERS)
+ {
+ HDF5_ERROR (dset = H5Dopen (file->file,
+ METADATA_GROUP"/"ALL_PARAMETERS));
+ ReadAttribute (dset, "carpet_reflevels", file->num_reflevels);
+ ReadAttribute (dset, "numberofmgtimes", file->num_mglevels);
+ ReadAttribute (dset, "GH$iteration", file->cctk_iteration);
+ ReadAttribute (dset, "main loop index", file->main_loop_index);
+ ReadAttribute (dset, "carpet_global_time", file->global_time);
+ ReadAttribute (dset, "carpet_delta_time", file->delta_time);
+ file->parameter_len = H5Dget_storage_size (dset) + 1;
+ assert (file->parameter_len > 1);
+ }
+
+ file->num_ints = 0;
+ HDF5_ERROR (H5Giterate (file->file, "/", NULL, ReadMetadata, file));
+ }
+ file->num_datasets = file->datasets.size ();
+ if (file->num_datasets <= 0)
+ {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "No valid HDF5 file '%s' found", file->filename);
+ free (file->filename);
+ }
+ }
+
+ // broadcast integer variables
+ int *intbuffer = new int[7];
+ intbuffer[0] = file->num_datasets;
+ intbuffer[1] = file->num_mglevels;
+ intbuffer[2] = file->num_reflevels;
+ intbuffer[3] = file->cctk_iteration;
+ intbuffer[4] = file->main_loop_index;
+ intbuffer[5] = file->parameter_len;
+ intbuffer[6] = file->num_ints;
+ MPI_Bcast (intbuffer, 7, MPI_INT, 0, MPI_COMM_WORLD);
+ file->num_datasets = intbuffer[0];
+ file->num_mglevels = intbuffer[1];
+ file->num_reflevels = intbuffer[2];
+ file->cctk_iteration = intbuffer[3];
+ file->main_loop_index = intbuffer[4];
+ file->parameter_len = intbuffer[5];
+ file->num_ints = intbuffer[6];
+ delete[] intbuffer;
+
+ // return if no valid checkpoint could be found
+ if (file->num_datasets <= 0)
+ {
+ return (-1);
+ }
+
+ // serialize the dataset list metadata into a single MPI_INT buffer
+ intbuffer = new int[file->num_ints];
+ if (myproc == 0)
+ {
+ for (list<dataset_t>::iterator dataset = file->datasets.begin ();
+ dataset != file->datasets.end ();
+ dataset++)
+ {
+ *intbuffer++ = dataset->vindex;
+ *intbuffer++ = dataset->timelevel;
+ *intbuffer++ = dataset->mglevel;
+ *intbuffer++ = dataset->reflevel;
+ *intbuffer++ = dataset->rank;
+
+ for (int i = 0; i < dataset->rank; i++)
+ {
+ *intbuffer++ = dataset->shape[i];
+ *intbuffer++ = dataset->iorigin[i];
+ }
+ }
+ intbuffer -= file->num_ints;
+ }
+
+ // broadcast the serialized dataset list metadata
+ MPI_Bcast (intbuffer, file->num_ints, MPI_INT, 0, MPI_COMM_WORLD);
+
+ // build the dataset list on non-I/O processors
+ if (myproc != 0)
+ {
+ for (int i = 0; i < file->num_datasets; i++)
+ {
+ dataset_t dataset;
+
+
+ dataset.vindex = *intbuffer++;
+ dataset.timelevel = *intbuffer++;
+ dataset.mglevel = *intbuffer++;
+ dataset.reflevel = *intbuffer++;
+ dataset.rank = *intbuffer++;
+
+ dataset.shape = new int[dataset.rank];
+ dataset.iorigin = new int[dataset.rank];
+ for (int j = 0; j < dataset.rank; j++)
+ {
+ dataset.shape[j] = *intbuffer++;
+ dataset.iorigin[j] = *intbuffer++;
+ }
+
+ file->datasets.push_back (dataset);
+ }
+ intbuffer -= file->num_ints;
+ }
+ delete[] intbuffer;
+
+ if (called_from == FILEREADER_DATA)
+ {
+ return (0);
+ }
+
+ // Use refinement levels parameter from checkpointing file ?
+ if (use_reflevels_from_checkpoint)
+ {
+ char buffer[32];
+
+ snprintf (buffer, sizeof (buffer), "%d", file->num_reflevels);
+ CCTK_ParameterSet ("refinement_levels", "CarpetRegrid", buffer);
+
+ CCTK_VInfo (CCTK_THORNSTRING, "Using %i reflevels read from checkpoint "
+ "file. Ignoring value in parameter file.", file->num_reflevels);
+ }
+
+ // leave space at the end for global_time and delta_time
+ // so that all double variables can be broadcasted in one go
+ int num_times = file->num_mglevels*file->num_reflevels + 2;
+ file->mgleveltimes = new double[num_times];
+ if (myproc == 0)
+ {
+ // FIXME: should store all mgleveltimes in a single contiguous array
+ // to get rid of this loop and save some attributes
+ for (int i = 0; i < file->num_mglevels; i++)
+ {
+ char buffer[32];
+
+ snprintf (buffer, sizeof (buffer), "mgleveltimes %d", i);
+ ReadAttribute (dset, buffer, file->mgleveltimes + i*file->num_reflevels,
+ file->num_reflevels);
+ }
+ }
+
+ // broadcast double variables
+ file->mgleveltimes[num_times - 2] = file->global_time;
+ file->mgleveltimes[num_times - 1] = file->delta_time;
+ MPI_Bcast (file->mgleveltimes, num_times, MPI_DOUBLE, 0, MPI_COMM_WORLD);
+ file->global_time = file->mgleveltimes[num_times - 2];
+ file->delta_time = file->mgleveltimes[num_times - 1];
+
+ char *parameters = new char[file->parameter_len];
+ if (myproc == 0)
+ {
+ CCTK_VInfo (CCTK_THORNSTRING, "Recovering parameters from checkpoint");
+
+ HDF5_ERROR (H5Dread (dset, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT,
+ parameters));
+ }
+ if (dset >= 0)
+ {
+ HDF5_ERROR (H5Dclose (dset));
+ }
+
+ // broadcast char variables
+ MPI_Bcast (parameters, file->parameter_len, MPI_CHAR, 0, MPI_COMM_WORLD);
+
+ // recover parameters
+ IOUtil_SetAllParameters (parameters);
+ delete[] parameters;
+
+ return (0);
+}
+
+
+int Recover (cGH* cctkGH, const char *basefilename, int called_from)
+{
+ DECLARE_CCTK_PARAMETERS
+ int retval = 0;
+
+
+ assert (called_from == CP_RECOVER_PARAMETERS ||
+ called_from == CP_RECOVER_DATA ||
+ called_from == FILEREADER_DATA);
+
+ if (called_from == CP_RECOVER_PARAMETERS ||
+ called_from == FILEREADER_DATA)
+ {
+ // open the file, read and broadcast its metadata information
+ // for CP_RECOVER_PARAMETERS: also recover all parameters
+ retval = OpenFile (basefilename, &infile, called_from);
+
+ if (called_from == CP_RECOVER_PARAMETERS || retval)
+ {
+ return (retval == 0 ? 1 : -1);
+ }
+ }
+
+ // can only proceed with a valid checkpoint file from here on
+ assert (infile.num_datasets > 0);
+
+ // set global Cactus/Carpet variables
+ if (called_from == CP_RECOVER_DATA)
+ {
+ global_time = infile.global_time;
+ delta_time = infile.delta_time;
+ CCTK_SetMainLoopIndex (infile.main_loop_index);
+
+ cctkGH->cctk_iteration = infile.cctk_iteration;
+ cctkGH->cctk_time = infile.mgleveltimes[mglevel*infile.num_reflevels +
+ reflevel];
+ }
+
+ // now recover all grid variables on current mglevel and reflevel
+ retval = RecoverVariables (cctkGH, &infile);
+
+ if (called_from == CP_RECOVER_DATA)
+ {
+ CCTK_VInfo (CCTK_THORNSTRING,
+ "restarting simulation at iteration %d (physical time %g)",
+ cctkGH->cctk_iteration, (double) cctkGH->cctk_time);
+ }
+ else
+ {
+ // FIXME: keep filereader input file open for all mglevels, reflevels
+ // this doesn't work now because we don't know the number of
+ // mglevels and reflevels
+ // also: there may be multiple files to be read in, and they
+ // must not share the same data structures
+ CarpetIOHDF5_CloseFile ();
+ }
+
+ return (retval);
+}
+
+
+static herr_t ReadMetadata (hid_t group, const char *objectname, void *arg)
+{
+ file_t *file = (file_t *) arg;
+ dataset_t dataset;
+ hid_t dset, dspace;
+ H5G_stat_t object_info;
+
+
+ // we are interested only in datasets
+ HDF5_ERROR (H5Gget_objinfo (group, objectname, 0, &object_info));
+ if (object_info.type != H5G_DATASET)
+ {
+ return (0);
+ }
+
+ dataset.datasetname = strdup (objectname);
+ assert (dataset.datasetname);
+
+ HDF5_ERROR (dset = H5Dopen (group, objectname));
+ char *varname = NULL;
+ ReadAttribute (dset, "name", varname);
+ dataset.vindex = CCTK_VarIndex (varname);
+ free (varname);
+ ReadAttribute (dset, "name", varname);
+ ReadAttribute (dset, "level", dataset.timelevel);
+ ReadAttribute (dset, "carpet_mglevel", dataset.mglevel);
+ ReadAttribute (dset, "carpet_reflevel", dataset.reflevel);
+ HDF5_ERROR (dspace = H5Dget_space (dset));
+ HDF5_ERROR (dataset.rank = H5Sget_simple_extent_ndims (dspace));
+ dataset.iorigin = new int[dataset.rank];
+ ReadAttribute (dset, "iorigin", dataset.iorigin, dataset.rank);
+ hsize_t *shape = new hsize_t[dataset.rank];
+ HDF5_ERROR (H5Sget_simple_extent_dims (dspace, shape, NULL));
+ dataset.shape = new int[dataset.rank];
+ for (int i = 0; i < dataset.rank; i++)
+ {
+ dataset.shape[i] = shape[i];
+ }
+ HDF5_ERROR (H5Sclose (dspace));
+ HDF5_ERROR (H5Dclose (dset));
+
+ // add this dataset to our list and count the number of int elements
+ file->datasets.push_back (dataset);
+ file->num_ints += 5 + 2*dataset.rank;
+
+ return (0);
+}
+
+
+static int RecoverVariables (cGH* cctkGH, file_t *file)
+{
+ DECLARE_CCTK_PARAMETERS
+ int myproc = CCTK_MyProc (cctkGH);
+ hid_t dset = -1;
+
+
+#if 0
+ double leveltime = MPI_Wtime();
+ double comparetime = MPI_Wtime();
+ static double totaltime;
+ if (reflevel == 0) totaltime = 0;
+
+ comparetime = MPI_Wtime() - comparetime;
+ // cout << "Time for string comparison: " << comparetime << endl;
+ // cout << "I have for this reflevel " << refleveldatasetnamelist.size() << endl;
+#endif
+
+ CCTK_VInfo (CCTK_THORNSTRING,
+ "reading grid variables on mglevel %d reflevel %d",
+ mglevel, reflevel);
+
+ int num_vars = CCTK_NumVars ();
+ for (list<dataset_t>::iterator dataset = file->datasets.begin ();
+ dataset != file->datasets.end ();
+ dataset++)
+ {
+ // only recover grid variables for the current mglevel/reflevel
+ if (dataset->mglevel != mglevel || dataset->reflevel != reflevel)
+ {
+ continue;
+ }
+
+ if (dataset->vindex < 0 || dataset->vindex >= num_vars)
+ {
+ if (myproc == 0)
+ {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Ignoring dataset '%s' (invalid variable name)",
+ dataset->datasetname);
+ }
+ continue;
+ }
+
+ if (myproc == 0)
+ {
+ HDF5_ERROR (dset = H5Dopen (file->file, dataset->datasetname));
+ assert (dset >= 0);
+ }
+
+ vector<ibset> regions_read (Carpet::maps);
+ int did_read_something = ReadVar (cctkGH, dataset->vindex, dset,
+ regions_read, 1);
+ MPI_Bcast (&did_read_something, 1, MPI_INT, 0, dist::comm);
+
+ if (dset >= 0)
+ {
+ HDF5_ERROR (H5Dclose (dset));
+ }
+
+ }
+
+#if 0
+ leveltime = MPI_Wtime() - leveltime;
+ totaltime += leveltime;
+
+ if (verbose)
+ cout << "Timers: leveltime: " << leveltime << " totaltime: " << totaltime << endl;
+#endif
+
+ return (0);
+}
+
+
+} // namespace CarpetIOHDF5
diff --git a/Carpet/CarpetIOHDF5/src/iohdf5.cc b/Carpet/CarpetIOHDF5/src/iohdf5.cc
new file mode 100644
index 000000000..6a7ba3b46
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/src/iohdf5.cc
@@ -0,0 +1,1181 @@
+#include <assert.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <algorithm>
+#include <fstream>
+#include <sstream>
+#include <vector>
+
+#include <hdf5.h>
+
+#include "cctk.h"
+#include "cctk_Parameters.h"
+
+extern "C" {
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/iohdf5.cc,v 1.41 2004/07/09 15:38:18 tradke Exp $";
+ CCTK_FILEVERSION(Carpet_CarpetIOHDF5_iohdf5_cc);
+}
+
+#include "CactusBase/IOUtil/src/ioGH.h"
+#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h"
+
+#include "bbox.hh"
+#include "data.hh"
+#include "gdata.hh"
+#include "ggf.hh"
+#include "vect.hh"
+
+#include "carpet.hh"
+
+#include "iohdf5.hh"
+#include "iohdf5GH.h"
+
+
+namespace CarpetIOHDF5 {
+
+using namespace std;
+using namespace Carpet;
+
+
+// Variable definitions
+vector<bool> do_truncate; // [var]
+vector<vector<vector<int> > > last_output; // [ml][rl][var]
+
+
+void CarpetIOHDF5Startup (void)
+{
+ DECLARE_CCTK_PARAMETERS
+
+
+ CCTK_RegisterBanner ("AMR 3D HDF5 I/O provided by CarpetIOHDF5");
+
+ int GHExtension = CCTK_RegisterGHExtension ("CarpetIOHDF5");
+ CCTK_RegisterGHExtensionSetupGH (GHExtension, SetupGH);
+
+ int IOMethod = CCTK_RegisterIOMethod ("IOHDF5");
+ CCTK_RegisterIOMethodOutputGH (IOMethod, OutputGH);
+ CCTK_RegisterIOMethodOutputVarAs (IOMethod, OutputVarAs);
+ CCTK_RegisterIOMethodTimeToOutput (IOMethod, TimeToOutput);
+ CCTK_RegisterIOMethodTriggerOutput (IOMethod, TriggerOutput);
+
+ /* initial I/O parameter check */
+ int numvars = CCTK_NumVars ();
+ vector<bool> flags(numvars);
+
+ if (CCTK_TraverseString (out3D_vars, SetFlag, &flags,CCTK_GROUP_OR_VAR) < 0)
+ {
+ CCTK_VWarn (strict_io_parameter_check ? 0 : 1,
+ __LINE__, __FILE__, CCTK_THORNSTRING,
+ "error while parsing parameter 'IOHDF5::out3D_vars'");
+ }
+
+#if 0
+ // Christian's Recovery routine
+ if ( !(CCTK_Equals(recover,"no")) ) {
+ ierr = IOUtil_RegisterRecover ("CarpetIOHDF5 recovery", Recover);
+ assert (! ierr);
+ } else {
+ // Erik's Recovery routine
+ ierr = IOUtil_RegisterRecover ("CarpetIOHDF5", Recover);
+ assert (! ierr);
+ }
+#else
+ if (IOUtil_RegisterRecover ("CarpetIOHDF5 recovery", Recover) < 0)
+ {
+ CCTK_WARN (1, "Failed to register IOFlexIO recovery routine");
+ }
+#endif
+}
+
+
+
+int CarpetIOHDF5Init (const cGH* const cctkGH)
+{
+ DECLARE_CCTK_ARGUMENTS;
+
+ *this_iteration = -1;
+ *next_output_iteration = 0;
+ *next_output_time = cctk_time;
+
+ return (0);
+}
+
+
+
+void* SetupGH (tFleshConfig* const fc,
+ const int convLevel, cGH* const cctkGH)
+{
+ DECLARE_CCTK_PARAMETERS;
+
+ CarpetIOHDF5GH* myGH;
+
+ const void *dummy;
+ dummy = &fc;
+ dummy = &convLevel;
+ dummy = &cctkGH;
+ dummy = &dummy;
+
+ // Truncate all files if this is not a restart
+ do_truncate.resize(CCTK_NumVars(), true);
+
+ // No iterations have yet been output
+ last_output.resize(mglevels);
+ for (int ml=0; ml<mglevels; ++ml) {
+ last_output.at(ml).resize(maxreflevels);
+ for (int rl=0; rl<maxreflevels; ++rl) {
+ last_output.at(ml).at(rl).resize(CCTK_NumVars(), INT_MIN);
+ }
+ }
+
+ // We register only once, ergo we get only one handle. We store
+ // that statically, so there is no need to pass anything to
+ // Cactus.
+
+ /* allocate a new GH extension structure */
+
+ CCTK_INT numvars = CCTK_NumVars ();
+
+ myGH = (CarpetIOHDF5GH*) malloc (sizeof (CarpetIOHDF5GH));
+ myGH->out_last = (int *) malloc (numvars * sizeof (int));
+ myGH->requests = (ioRequest **) calloc (numvars, sizeof (ioRequest *));
+ myGH->cp_filename_list = (char **) calloc (abs (checkpoint_keep), sizeof (char *));
+ myGH->cp_filename_index = 0;
+ myGH->out_vars = strdup ("");
+ myGH->out_every_default = out_every - 1;
+
+ for (int i = 0; i < numvars; i++)
+ {
+ myGH->out_last [i] = -1;
+ }
+
+ myGH->open_output_files = NULL;
+
+ // Now set hdf5 complex datatypes
+ // Stolen from Thomas Radke
+ HDF5_ERROR (myGH->HDF5_COMPLEX =
+ H5Tcreate (H5T_COMPOUND, sizeof (CCTK_COMPLEX)));
+ HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX, "real",
+ offsetof (CCTK_COMPLEX, Re), HDF5_REAL));
+ HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX, "imag",
+ offsetof (CCTK_COMPLEX, Im), HDF5_REAL));
+#ifdef CCTK_REAL4
+ HDF5_ERROR (myGH->HDF5_COMPLEX8 =
+ H5Tcreate (H5T_COMPOUND, sizeof (CCTK_COMPLEX8)));
+ HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX8, "real",
+ offsetof (CCTK_COMPLEX8, Re), HDF5_REAL4));
+ HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX8, "imag",
+ offsetof (CCTK_COMPLEX8, Im), HDF5_REAL4));
+#endif
+#ifdef CCTK_REAL8
+ HDF5_ERROR (myGH->HDF5_COMPLEX16 =
+ H5Tcreate (H5T_COMPOUND, sizeof (CCTK_COMPLEX16)));
+ HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX16, "real",
+ offsetof (CCTK_COMPLEX16, Re), HDF5_REAL8));
+ HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX16, "imag",
+ offsetof (CCTK_COMPLEX16, Im), HDF5_REAL8));
+#endif
+#ifdef CCTK_REAL16
+ HDF5_ERROR (myGH->HDF5_COMPLEX32 =
+ H5Tcreate (H5T_COMPOUND, sizeof (CCTK_COMPLEX32)));
+ HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX32, "real",
+ offsetof (CCTK_COMPLEX32, Re), HDF5_REAL16));
+ HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX32, "imag",
+ offsetof (CCTK_COMPLEX32, Im), HDF5_REAL16));
+#endif
+ return (myGH);
+}
+
+int OutputGH (const cGH* const cctkGH) {
+ for (int vindex=0; vindex<CCTK_NumVars(); ++vindex) {
+ if (TimeToOutput(cctkGH, vindex)) {
+ TriggerOutput(cctkGH, vindex);
+ }
+ }
+ return 0;
+}
+
+
+
+int OutputVarAs (const cGH* const cctkGH, const char* const varname,
+ const char* const alias)
+{
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_PARAMETERS
+
+ int numvars = CCTK_NumVars ();
+ vector<bool> flags (numvars);
+
+ if (CCTK_TraverseString (varname, SetFlag, &flags, CCTK_VAR) < 0)
+ {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "error while parsing variable name '%s' (alias name '%s')",
+ varname, alias);
+ return (-1);
+ }
+
+ int vindex = 0;
+ while (! flags.at (vindex) && vindex < numvars) vindex++;
+ if (vindex >= numvars)
+ {
+ return (-1);
+ }
+
+ const int group = CCTK_GroupIndexFromVarI (vindex);
+ assert (group>=0 && group<(int)Carpet::arrdata.size());
+
+ // Check for storage
+ if (! CCTK_QueryGroupStorageI(cctkGH, group))
+ {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Cannot output variable '%s' because it has no storage",
+ varname);
+ return (0);
+ }
+
+ const int grouptype = CCTK_GroupTypeI(group);
+ if (grouptype == CCTK_SCALAR || grouptype == CCTK_ARRAY)
+ {
+ assert (do_global_mode);
+ }
+
+ /* get the default I/O request for this variable */
+ ioRequest* request = IOUtil_DefaultIORequest (cctkGH, vindex, 1);
+
+ // Get grid hierarchy extentsion from IOUtil
+ const ioGH * const iogh = (const ioGH *)CCTK_GHExtension (cctkGH, "IO");
+ assert (iogh);
+
+ // Create the output directory
+ const char* myoutdir = out3D_dir;
+ if (CCTK_EQUALS(myoutdir, "")) {
+ myoutdir = out_dir;
+ }
+ if (CCTK_MyProc(cctkGH)==0) {
+ CCTK_CreateDirectory (0755, myoutdir);
+ }
+
+ // Invent a file name
+ ostringstream filenamebuf;
+ filenamebuf << myoutdir << "/" << alias << out3D_extension;
+ string filenamestr = filenamebuf.str();
+ const char * const filename = filenamestr.c_str();
+
+ hid_t writer = -1;
+
+ // Write the file only on the root processor
+ if (CCTK_MyProc (cctkGH) == 0)
+ {
+
+ // If this is the first time, then create and truncate the file
+ if (do_truncate.at(vindex))
+ {
+ struct stat fileinfo;
+ if (! iogh->recovered || stat(filename, &fileinfo)!=0)
+ {
+ HDF5_ERROR (writer = H5Fcreate (filename, H5F_ACC_TRUNC, H5P_DEFAULT,
+ H5P_DEFAULT));
+ assert (writer>=0);
+ HDF5_ERROR (H5Fclose (writer));
+ writer = -1;
+ }
+ }
+
+ // Open the file
+ HDF5_ERROR (writer = H5Fopen (filename, H5F_ACC_RDWR, H5P_DEFAULT));
+ }
+
+ if (verbose)
+ {
+ CCTK_VInfo (CCTK_THORNSTRING,
+ "Writing variable '%s' on mglevel %d reflevel %d",
+ varname, mglevel, reflevel);
+ }
+ WriteVar (cctkGH, writer, request, 0);
+
+ // Close the file
+ if (writer >= 0)
+ {
+ HDF5_ERROR (H5Fclose (writer));
+ }
+
+ // Don't truncate again
+ do_truncate.at(vindex) = false;
+
+ return (0);
+}
+
+int WriteVar (const cGH* const cctkGH, const hid_t writer, const ioRequest* request,
+ const int called_from_checkpoint) {
+
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ void * h5data=NULL;
+
+ const int n = request->vindex;
+ assert (n>=0 && n<CCTK_NumVars());
+ const char * varname = CCTK_FullName(n);
+ const int group = CCTK_GroupIndexFromVarI (n);
+ assert (group>=0 && group<(int)Carpet::arrdata.size());
+ const int n0 = CCTK_FirstVarIndexI(group);
+ assert (n0>=0 && n0<CCTK_NumVars());
+ const int var = n - n0;
+ assert (var>=0 && var<CCTK_NumVars());
+ int tl = 0;
+
+ const int gpdim = CCTK_GroupDimI(group);
+
+ // Check for storage
+ if (! CCTK_QueryGroupStorageI(cctkGH, group)) {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Cannot output variable \"%s\" because it has no storage",
+ varname);
+ return 0;
+ }
+
+ const int grouptype = CCTK_GroupTypeI(group);
+ switch (grouptype) {
+ case CCTK_SCALAR:
+ case CCTK_ARRAY:
+ assert (do_global_mode);
+ break;
+ case CCTK_GF:
+ /* do nothing */
+ break;
+ default:
+ assert (0);
+ }
+ const int rl = grouptype==CCTK_GF ? reflevel : 0;
+
+ cGroup cgdata;
+ int ierr = CCTK_GroupData(group,&cgdata);
+ assert(ierr==0);
+
+ // Select memory (source) and file (destination) datatypes
+ int cctkDataType = CCTK_VarTypeI(n);
+ const hid_t memdatatype = h5DataType(cctkGH, cctkDataType);
+ assert(memdatatype >= 0);
+ if (out_single_precision && ! called_from_checkpoint)
+ {
+ if (cctkDataType == CCTK_VARIABLE_REAL)
+ {
+ cctkDataType = CCTK_VARIABLE_REAL4;
+ }
+ else if (cctkDataType == CCTK_VARIABLE_COMPLEX)
+ {
+ cctkDataType = CCTK_VARIABLE_COMPLEX8;
+ }
+#ifdef CCTK_INT2
+ else if (cctkDataType == CCTK_VARIABLE_INT)
+ {
+ cctkDataType = CCTK_VARIABLE_INT2;
+ }
+#endif
+ }
+ const hid_t filedatatype = h5DataType(cctkGH, cctkDataType);
+ assert(filedatatype >= 0);
+
+ // let's get the correct Carpet time level (which is the (-1) * Cactus timelevel):
+ tl = - request->timelevel;
+
+ // Traverse all components
+ BEGIN_MAP_LOOP(cctkGH, grouptype) {
+ BEGIN_COMPONENT_LOOP(cctkGH, grouptype) {
+
+ const ggf<dim>* ff = 0;
+
+ ff = (ggf<dim>*)arrdata.at(group).at(Carpet::map).data.at(var);
+
+ const gdata<dim>* const data = (*ff) (tl, rl, component, mglevel);
+
+ // Make temporary copy on processor 0
+ const ibbox ext = data->extent();
+// vect<int,dim> lo = ext.lower();
+// vect<int,dim> hi = ext.upper();
+// vect<int,dim> str = ext.stride();
+
+ gdata<dim>* const tmp = data->make_typed (n);
+ tmp->allocate (ext, 0);
+
+ if ( !((cgdata.disttype == CCTK_DISTRIB_CONSTANT) &&
+ (arrdata.at(group).at(Carpet::map).hh->processors.at(reflevel).at(component)!=0))) {
+
+ if (cgdata.disttype == CCTK_DISTRIB_CONSTANT) {
+ assert(grouptype == CCTK_ARRAY || grouptype == CCTK_SCALAR);
+ if(component!=0) goto skip;
+ h5data = CCTK_VarDataPtrI(cctkGH,tl,n);
+ } else {
+ for (comm_state<dim> state; !state.done(); state.step()) {
+ tmp->copy_from (state, data, ext);
+ }
+ }
+ // Write data
+ if (CCTK_MyProc(cctkGH)==0) {
+
+ int ldim=0;
+ if ( grouptype==CCTK_SCALAR ) {
+ ldim = 1;
+ } else {
+ ldim = gpdim;
+ }
+
+ // hsize_t shape[ldim];
+
+ vector<hsize_t> shape(ldim);
+
+ for (int d=0; d<ldim; ++d) {
+ shape[ldim-1-d] = (ext.shape() / ext.stride())[d];
+ }
+ hid_t dataspace;
+ HDF5_ERROR (dataspace = H5Screate_simple (ldim, &shape[0], NULL));
+ assert (dataspace>=0);
+
+
+ ostringstream datasetnamebuf;
+ datasetnamebuf << varname
+ << " it=" << cctk_iteration
+ << " tl=" << tl
+ << " ml=" << mglevel
+ << " rl=" << rl
+ << " m=" << Carpet::map
+ << " c=" << component;
+ string datasetnamestr = datasetnamebuf.str();
+ assert (datasetnamestr.size() <= 256); // limit dataset name size
+ const char * const datasetname = datasetnamestr.c_str();
+ hid_t dataset;
+ HDF5_ERROR (dataset = H5Dcreate (writer, datasetname, filedatatype, dataspace, H5P_DEFAULT));
+
+ if (dataset>=0) {
+
+ if (cgdata.disttype != CCTK_DISTRIB_CONSTANT) {
+ h5data = (void*)tmp->storage();
+ }
+
+ HDF5_ERROR (H5Dwrite (dataset, memdatatype, H5S_ALL, H5S_ALL, H5P_DEFAULT, h5data));
+
+ // Write FlexIO attributes
+ WriteAttribute (dataset, "level", rl);
+ {
+ CCTK_REAL origin[dim], delta[dim];
+ CCTK_REAL min_ext[dim], max_ext[dim];
+ for (int d=0; d<dim; ++d) {
+ origin[d] = CCTK_ORIGIN_SPACE(d);
+ delta[d] = CCTK_DELTA_SPACE(d);
+ min_ext[d] = origin[d] + cctk_lbnd[d] * delta[d];
+ max_ext[d] = origin[d] + cctk_ubnd[d] * delta[d];
+ }
+ WriteAttribute (dataset, "origin", min_ext, dim);
+ WriteAttribute (dataset, "delta", delta, dim);
+ WriteAttribute (dataset, "min_ext", min_ext, dim);
+ WriteAttribute (dataset, "max_ext", max_ext, dim);
+ }
+ WriteAttribute (dataset, "time", cctk_time);
+ WriteAttribute (dataset, "timestep", cctk_iteration);
+ WriteAttribute (dataset, "level_timestep", cctk_iteration / reflevelfact);
+ WriteAttribute (dataset, "persistence", maxreflevelfact / reflevelfact);
+ {
+ int time_refinement=0;
+ int spatial_refinement[dim];
+ int grid_placement_refinement[dim];
+ time_refinement = reflevelfact;
+ for (int d=0; d<dim; ++d) {
+ spatial_refinement[d] = reflevelfact;
+ grid_placement_refinement[d] = reflevelfact;
+ }
+ WriteAttribute (dataset, "time_refinement", time_refinement);
+ WriteAttribute (dataset, "spatial_refinement", spatial_refinement, dim);
+ WriteAttribute (dataset, "grid_placement_refinement", grid_placement_refinement, dim);
+ }
+ {
+ int iorigin[dim];
+ for (int d=0; d<dim; ++d) {
+ iorigin[d] = (ext.lower() / ext.stride())[d];
+ }
+ WriteAttribute (dataset, "iorigin", iorigin, dim);
+ }
+
+ // Write some additional attributes
+
+ // Legacy arguments
+ {
+ char * fullname = CCTK_FullName(n);
+ assert (fullname);
+ WriteAttribute (dataset, "name", fullname);
+ free (fullname);
+ }
+
+ // Group arguments
+ WriteAttribute (dataset, "group_version", 1);
+ {
+ char * fullname = CCTK_FullName(n);
+ assert (fullname);
+ WriteAttribute (dataset, "group_fullname", fullname);
+ free (fullname);
+ }
+ WriteAttribute (dataset, "group_varname", CCTK_VarName(n));
+ {
+ char * groupname = CCTK_GroupName(group);
+ assert (groupname);
+ WriteAttribute (dataset, "group_groupname", groupname);
+ free (groupname);
+ }
+ switch (grouptype) {
+ case CCTK_GF:
+ WriteAttribute (dataset, "group_grouptype", "CCTK_GF");
+ break;
+ case CCTK_ARRAY:
+ WriteAttribute (dataset, "group_grouptype", "CCTK_ARRAY");
+ break;
+ case CCTK_SCALAR:
+ WriteAttribute (dataset, "group_grouptype", "CCTK_SCALAR");
+ break;
+ default:
+ assert (0);
+ }
+ WriteAttribute (dataset, "group_dim", CCTK_GroupDimI(group));
+ WriteAttribute (dataset, "group_timelevel", tl);
+ WriteAttribute (dataset, "group_numtimelevels", CCTK_NumTimeLevelsI(group));
+
+ // Cactus arguments
+ WriteAttribute (dataset, "cctk_version", 1);
+ WriteAttribute (dataset, "cctk_dim", cctk_dim);
+ WriteAttribute (dataset, "cctk_iteration", cctk_iteration);
+ WriteAttribute (dataset, "cctk_gsh", cctk_gsh, dim);
+ WriteAttribute (dataset, "cctk_lsh", cctk_lsh, dim);
+ WriteAttribute (dataset, "cctk_lbnd", cctk_lbnd, dim);
+ WriteAttribute (dataset, "cctk_delta_time", cctk_delta_time);
+ WriteAttribute (dataset, "cctk_delta_space", cctk_delta_space, dim);
+ WriteAttribute (dataset, "cctk_origin_space", cctk_origin_space, dim);
+ WriteAttribute (dataset, "cctk_bbox", cctk_bbox, 2*dim);
+ WriteAttribute (dataset, "cctk_levfac", cctk_levfac, dim);
+ WriteAttribute (dataset, "cctk_levoff", cctk_levoff, dim);
+ WriteAttribute (dataset, "cctk_levoffdenom", cctk_levoffdenom, dim);
+ WriteAttribute (dataset, "cctk_timefac", cctk_timefac);
+ WriteAttribute (dataset, "cctk_convlevel", cctk_convlevel);
+ WriteAttribute (dataset, "cctk_convfac", cctk_convfac);
+ WriteAttribute (dataset, "cctk_nghostzones", cctk_nghostzones, dim);
+ WriteAttribute (dataset, "cctk_time", cctk_time);
+
+ // Carpet arguments
+ WriteAttribute (dataset, "carpet_version", 1);
+ WriteAttribute (dataset, "carpet_dim", dim);
+ WriteAttribute (dataset, "carpet_basemglevel", basemglevel);
+ WriteAttribute (dataset, "carpet_mglevel", mglevel);
+ WriteAttribute (dataset, "carpet_mglevels", mglevels);
+ WriteAttribute (dataset, "carpet_mgface", mgfact);
+ WriteAttribute (dataset, "carpet_reflevel", reflevel);
+ WriteAttribute (dataset, "carpet_reflevels", reflevels);
+ WriteAttribute (dataset, "carpet_reffact", reffact);
+ WriteAttribute (dataset, "carpet_map", Carpet::map);
+ WriteAttribute (dataset, "carpet_maps", maps);
+ WriteAttribute (dataset, "carpet_component", component);
+ WriteAttribute (dataset, "carpet_components", vhh.at(Carpet::map)->components(reflevel));
+
+ HDF5_ERROR (H5Dclose (dataset));
+ }
+
+ HDF5_ERROR (H5Sclose (dataspace));
+
+ } // if on root processor
+ } // if ! CCTK_DISTRIB_BLAH
+
+ skip:
+ // Delete temporary copy
+ delete tmp;
+
+ } END_COMPONENT_LOOP;
+ } END_MAP_LOOP;
+
+ return 0;
+}
+
+
+
+int TimeToOutput (const cGH* const cctkGH, const int vindex)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ assert (vindex>=0 && vindex<CCTK_NumVars());
+
+
+
+ const int grouptype = CCTK_GroupTypeFromVarI(vindex);
+ switch (grouptype) {
+ case CCTK_SCALAR:
+ case CCTK_ARRAY:
+ if (! do_global_mode) return 0;
+ break;
+ case CCTK_GF:
+ // do nothing
+ break;
+ default:
+ assert (0);
+ }
+
+
+
+ // check whether to output at this iteration
+ bool output_this_iteration;
+
+ const char* myoutcriterion = out3D_criterion;
+ if (CCTK_EQUALS(myoutcriterion, "default")) {
+ myoutcriterion = out_criterion;
+ }
+
+ if (CCTK_EQUALS (myoutcriterion, "never")) {
+
+ // Never output
+ output_this_iteration = false;
+
+ } else if (CCTK_EQUALS (myoutcriterion, "iteration")) {
+
+ int myoutevery = out3D_every;
+ if (myoutevery == -2) {
+ myoutevery = out_every;
+ }
+ if (myoutevery <= 0) {
+ // output is disabled
+ output_this_iteration = false;
+ } else if (cctk_iteration == *this_iteration) {
+ // we already decided to output this iteration
+ output_this_iteration = true;
+ } else if (cctk_iteration >= *next_output_iteration) {
+ // it is time for the next output
+ output_this_iteration = true;
+ *next_output_iteration = cctk_iteration + myoutevery;
+ *this_iteration = cctk_iteration;
+ } else {
+ // we want no output at this iteration
+ output_this_iteration = false;
+ }
+
+ } else if (CCTK_EQUALS (myoutcriterion, "divisor")) {
+
+ int myoutevery = out3D_every;
+ if (myoutevery == -2) {
+ myoutevery = out_every;
+ }
+ if (myoutevery <= 0) {
+ // output is disabled
+ output_this_iteration = false;
+ } else if ((cctk_iteration % myoutevery) == 0) {
+ // we already decided to output this iteration
+ output_this_iteration = true;
+ } else {
+ // we want no output at this iteration
+ output_this_iteration = false;
+ }
+
+ } else if (CCTK_EQUALS (myoutcriterion, "time")) {
+
+ CCTK_REAL myoutdt = out3D_dt;
+ if (myoutdt == -2) {
+ myoutdt = out_dt;
+ }
+ if (myoutdt < 0) {
+ // output is disabled
+ output_this_iteration = false;
+ } else if (myoutdt == 0) {
+ // output all iterations
+ output_this_iteration = true;
+ } else if (cctk_iteration == *this_iteration) {
+ // we already decided to output this iteration
+ output_this_iteration = true;
+ } else if (cctk_time / cctk_delta_time
+ >= *next_output_time / cctk_delta_time - 1.0e-12) {
+ // it is time for the next output
+ output_this_iteration = true;
+ *next_output_time = cctk_time + myoutdt;
+ *this_iteration = cctk_iteration;
+ } else {
+ // we want no output at this iteration
+ output_this_iteration = false;
+ }
+
+ } else {
+
+ assert (0);
+
+ } // select output criterion
+
+ if (! output_this_iteration) return 0;
+
+
+
+ if (! CheckForVariable(out3D_vars, vindex)) {
+ // This variable should not be output
+ return 0;
+ }
+
+
+
+ if (last_output.at(mglevel).at(reflevel).at(vindex) == cctk_iteration) {
+ // Has already been output during this iteration
+ char* varname = CCTK_FullName(vindex);
+ CCTK_VWarn (5, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Skipping output for variable \"%s\", because this variable "
+ "has already been output during the current iteration -- "
+ "probably via a trigger during the analysis stage",
+ varname);
+ free (varname);
+ return 0;
+ }
+
+ assert (last_output.at(mglevel).at(reflevel).at(vindex) < cctk_iteration);
+
+ // Should be output during this iteration
+ return 1;
+}
+
+
+
+int TriggerOutput (const cGH* const cctkGH, const int vindex) {
+ assert (vindex>=0 && vindex<CCTK_NumVars());
+
+ char* varname = CCTK_FullName(vindex);
+ const int retval = OutputVarAs (cctkGH, varname, CCTK_VarName(vindex));
+ free (varname);
+
+ last_output.at(mglevel).at(reflevel).at(vindex) = cctkGH->cctk_iteration;
+
+ return retval;
+}
+
+
+
+
+int ReadVar (const cGH* const cctkGH, const int vindex,
+ const hid_t dataset, vector<ibset> &regions_read,
+ const int called_from_recovery)
+{
+
+ DECLARE_CCTK_PARAMETERS;
+
+ const int group = CCTK_GroupIndexFromVarI (vindex);
+ assert (group>=0 && group<(int)Carpet::arrdata.size());
+ char *fullname = CCTK_FullName (vindex);
+ const int n0 = CCTK_FirstVarIndexI(group);
+ assert (n0>=0 && n0<CCTK_NumVars());
+ const int var = vindex - n0;
+ assert (var>=0 && var<CCTK_NumVars());
+ int tl = 0;
+
+ bool did_read_something = false;
+
+ // Stuff needed for Recovery
+
+ void *h5data = NULL;
+
+ if (verbose)
+ {
+ CCTK_VInfo (CCTK_THORNSTRING, " reading '%s'", fullname);
+ }
+
+ // Check for storage
+ if (! CCTK_QueryGroupStorageI(cctkGH, group))
+ {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Cannot input variable \"%s\" because it has no storage",
+ fullname);
+ free (fullname);
+ return 0;
+ }
+
+ const int grouptype = CCTK_GroupTypeI(group);
+ if ((grouptype == CCTK_SCALAR || grouptype == CCTK_ARRAY) && reflevel > 0)
+ {
+ free (fullname);
+ return 0;
+ }
+
+ const int gpdim = CCTK_GroupDimI(group);
+
+
+ int intbuffer[2 + 2*dim];
+ int &group_timelevel = intbuffer[0],
+ &amr_level = intbuffer[1];
+ int *amr_origin = &intbuffer[2],
+ *amr_dims = &intbuffer[2+dim];
+
+ if (CCTK_MyProc(cctkGH)==0)
+ {
+ // get dataset dimensions
+ hid_t dataspace;
+ HDF5_ERROR (dataspace = H5Dget_space (dataset));
+ int rank = (int) H5Sget_simple_extent_ndims (dataspace);
+ assert (0 < rank && rank <= dim);
+ assert ((grouptype == CCTK_SCALAR ? gpdim+1 : gpdim) == rank);
+ vector<hsize_t> shape(rank);
+ HDF5_ERROR (H5Sget_simple_extent_dims (dataspace, &shape[0], NULL));
+ HDF5_ERROR (H5Sclose (dataspace));
+
+ for (int i = 0; i < dim; i++)
+ {
+ amr_dims[i] = 1;
+ amr_origin[i] = 0;
+ }
+ int datalength = 1;
+ for (int i = 0; i < rank; i++)
+ {
+ datalength *= shape[i];
+ amr_dims[i] = shape[rank-i-1];
+ }
+
+ const int cctkDataType = CCTK_VarTypeI(vindex);
+ const hid_t datatype = h5DataType(cctkGH,cctkDataType);
+
+ //cout << "datalength: " << datalength << " rank: " << rank << "\n";
+ //cout << shape[0] << " " << shape[1] << " " << shape[2] << "\n";
+
+ // to do: read in an allocate with correct datatype
+
+ h5data = malloc (CCTK_VarTypeSize (cctkDataType) * datalength);
+ HDF5_ERROR (H5Dread (dataset, datatype, H5S_ALL, H5S_ALL, H5P_DEFAULT,
+ h5data));
+
+ ReadAttribute (dataset, "level", amr_level);
+ ReadAttribute (dataset, "iorigin", amr_origin, rank);
+
+ if(called_from_recovery)
+ {
+ ReadAttribute(dataset,"group_timelevel", group_timelevel);
+ }
+ } // MyProc == 0
+
+ MPI_Bcast (intbuffer, sizeof (intbuffer) / sizeof (*intbuffer), MPI_INT, 0, dist::comm);
+
+#ifdef CARPETIOHDF5_DEBUG
+ cout << "amr_level: " << amr_level << " reflevel: " << reflevel << endl;
+#endif
+
+ if (amr_level == reflevel)
+ {
+ // Traverse all components on all levels
+ BEGIN_MAP_LOOP(cctkGH, grouptype)
+ {
+ BEGIN_COMPONENT_LOOP(cctkGH, grouptype)
+ {
+ did_read_something = true;
+
+ ggf<dim>* ff = 0;
+
+ assert (var < (int)arrdata.at(group).at(Carpet::map).data.size());
+ ff = (ggf<dim>*)arrdata.at(group).at(Carpet::map).data.at(var);
+
+ if(called_from_recovery) tl = group_timelevel;
+
+ gdata<dim>* const data = (*ff) (tl, reflevel, component, mglevel);
+
+ // Create temporary data storage on processor 0
+ vect<int,dim> str = vect<int,dim>(maxreflevelfact/reflevelfact);
+
+ if(grouptype == CCTK_SCALAR || grouptype == CCTK_ARRAY)
+ str = vect<int,dim> (1);
+
+ vect<int,dim> lb = vect<int,dim>::ref(amr_origin) * str;
+ vect<int,dim> ub
+ = lb + (vect<int,dim>::ref(amr_dims) - 1) * str;
+
+ gdata<dim>* const tmp = data->make_typed (vindex);
+
+
+ cGroup cgdata;
+ int ierr = CCTK_GroupData(group,&cgdata);
+ assert(ierr==0);
+ //cout << "lb_before: " << lb << endl;
+ //cout << "ub_before: " << ub << endl;
+ if (cgdata.disttype == CCTK_DISTRIB_CONSTANT) {
+#ifdef CARPETIOHDF5_DEBUG
+ cout << "CCTK_DISTRIB_CONSTANT: " << fullname << endl;
+#endif
+ assert(grouptype == CCTK_ARRAY || grouptype == CCTK_SCALAR);
+ if (grouptype == CCTK_SCALAR) {
+ lb[0] = arrdata.at(group).at(Carpet::map).hh->processors.at(reflevel).at(component);
+ ub[0] = arrdata.at(group).at(Carpet::map).hh->processors.at(reflevel).at(component);
+ for(int i=1;i<dim;i++) {
+ lb[i]=0;
+ ub[i]=0;
+ }
+ } else {
+ const int newlb = lb[gpdim-1] +
+ (ub[gpdim-1]-lb[gpdim-1]+1)*
+ (arrdata.at(group).at(Carpet::map).hh->processors.at(reflevel).at(component));
+ const int newub = ub[gpdim-1] +
+ (ub[gpdim-1]-lb[gpdim-1]+1)*
+ (arrdata.at(group).at(Carpet::map).hh->processors.at(reflevel).at(component));
+ lb[gpdim-1] = newlb;
+ ub[gpdim-1] = newub;
+ }
+#ifdef CARPETIOHDF5_DEBUG
+ cout << "lb: " << lb << endl;
+ cout << "ub: " << ub << endl;
+#endif
+ }
+ const bbox<int,dim> ext(lb,ub,str);
+
+#ifdef CARPETIOHDF5_DEBUG
+ cout << "ext: " << ext << endl;
+#endif
+
+ if (CCTK_MyProc(cctkGH)==0) {
+ tmp->allocate (ext, 0, h5data);
+ } else {
+ tmp->allocate (ext, 0);
+ }
+
+ // Initialise with what is found in the file -- this does
+ // not guarantee that everything is initialised.
+ const bbox<int,dim> overlap = tmp->extent() & data->extent();
+ regions_read.at(Carpet::map) |= overlap;
+
+#ifdef CARPETIOHDF5_DEBUG
+ cout << "working on component: " << component << endl;
+ cout << "tmp->extent " << tmp->extent() << endl;
+ cout << "data->extent " << data->extent() << endl;
+ cout << "overlap " << overlap << endl;
+ cout << "-----------------------------------------------------" << endl;
+#endif
+
+ // FIXME: is this barrier really necessary ??
+ MPI_Barrier(MPI_COMM_WORLD);
+
+ // Copy into grid function
+ for (comm_state<dim> state; !state.done(); state.step()) {
+ data->copy_from (state, tmp, overlap);
+ }
+
+
+ // Delete temporary copy
+ delete tmp;
+
+
+ } END_COMPONENT_LOOP;
+
+ if (called_from_recovery) {
+ arrdata.at(group).at(Carpet::map).tt->set_time(reflevel,mglevel,
+ (CCTK_REAL) ((cctkGH->cctk_time - cctk_initial_time)
+ / (delta_time * mglevelfact)) );
+ }
+
+
+ } END_MAP_LOOP;
+
+ } // if amr_level == reflevel
+
+ free (h5data);
+ free (fullname);
+
+ return did_read_something;
+}
+
+
+
+static int InputVarAs (const cGH* const cctkGH, const int vindex,
+ const char* const alias)
+{
+ DECLARE_CCTK_PARAMETERS;
+
+ char *fullname = CCTK_FullName (vindex);
+ const int group = CCTK_GroupIndexFromVarI (vindex);
+ assert (group>=0 && group<(int)Carpet::arrdata.size());
+
+ int want_dataset = 0;
+ bool did_read_something = false;
+ int ndatasets = 0;
+ hid_t dataset = 0;
+
+ char datasetname[1024];
+
+ // Check for storage
+ if (! CCTK_QueryGroupStorageI(cctkGH, group)) {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Cannot input variable \"%s\" because it has no storage",
+ fullname);
+ free (fullname);
+ return 0;
+ }
+
+ const int grouptype = CCTK_GroupTypeI(group);
+ const int rl = grouptype==CCTK_GF ? reflevel : 0;
+ //cout << "want level " << rl << " reflevel " << reflevel << endl;
+
+ // Find the input directory
+ const char* const myindir = in3D_dir;
+
+ // Invent a file name
+ ostringstream filenamebuf;
+ filenamebuf << myindir << "/" << alias << in3D_extension;
+ string filenamestr = filenamebuf.str();
+ const char * const filename = filenamestr.c_str();
+
+ hid_t reader = -1;
+
+ // Read the file only on the root processor
+ if (CCTK_MyProc(cctkGH)==0) {
+
+ // Open the file
+ if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Opening file \"%s\"", filename);
+ reader = H5Fopen (filename, H5F_ACC_RDONLY, H5P_DEFAULT);
+ if (reader<0) {
+ CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Could not open file \"%s\" for reading", filename);
+ }
+ assert (reader>=0);
+ // get the number of datasets in the file
+ ndatasets=GetnDatasets(reader);
+ }
+
+ vector<ibset> regions_read(Carpet::maps);
+
+ // Broadcast number of datasets
+ MPI_Bcast (&ndatasets, 1, MPI_INT, 0, dist::comm);
+ assert (ndatasets>=0);
+
+
+ for (int datasetid=0; datasetid<ndatasets; ++datasetid) {
+ if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Handling dataset #%d", datasetid);
+
+
+ // Read data
+ if (CCTK_MyProc(cctkGH)==0) {
+ GetDatasetName(reader,datasetid,datasetname);
+ // cout << datasetname << "\n";
+
+ HDF5_ERROR (dataset = H5Dopen (reader, datasetname));
+ }
+
+
+#if 0
+ int amr_level;
+ int amr_origin[dim];
+ int amr_dims[dim];
+#endif
+
+ if (CCTK_MyProc(cctkGH)==0) {
+
+ // Read data
+ char * name;
+ ReadAttribute (dataset, "name", name);
+ // cout << "dataset name is " << name << endl;
+ if (verbose && name) {
+ CCTK_VInfo (CCTK_THORNSTRING, "Dataset name is \"%s\"", name);
+ }
+ want_dataset = name && CCTK_EQUALS(name, fullname);
+ free (name);
+ } // myproc == 0
+
+ MPI_Bcast (&want_dataset, 1, MPI_INT, 0, dist::comm);
+
+ if(want_dataset) {
+ did_read_something = ReadVar(cctkGH,vindex,dataset,regions_read,0);
+ } // want_dataset
+
+ } // loop over datasets
+
+ // Close the file
+ if (CCTK_MyProc(cctkGH)==0) {
+ if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Closing file");
+ HDF5_ERROR (H5Fclose(reader));
+ reader=-1;
+ }
+
+ // Was everything initialised?
+ if (did_read_something) {
+ for (int m=0; m<Carpet::maps; ++m) {
+ dh<dim>& thedd = *arrdata.at(group).at(m).dd;
+ ibset all_exterior;
+ for (size_t c=0; c<thedd.boxes.at(rl).size(); ++c) {
+ all_exterior |= thedd.boxes.at(rl).at(c).at(mglevel).exterior;
+ }
+ if (regions_read.at(m) != all_exterior) {
+#ifdef CARPETIOHDF5_DEBUG
+ cout << "read: " << regions_read.at(m) << endl
+ << "want: " << all_exterior << endl;
+#endif
+ CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Variable \"%s\" could not be initialised from file -- the file may be missing data",
+ fullname);
+ }
+ }
+ } // if did_read_something
+ // CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING,"stop!");
+
+ return did_read_something ? 0 : -1;
+
+}
+
+
+int CarpetIOHDF5ReadData (const cGH* const cctkGH)
+{
+ int retval = 0;
+ DECLARE_CCTK_PARAMETERS
+
+
+ int numvars = CCTK_NumVars ();
+ vector<bool> flags (numvars);
+
+ if (CCTK_TraverseString (in3D_vars, SetFlag, &flags, CCTK_GROUP_OR_VAR) < 0)
+ {
+ CCTK_VWarn (strict_io_parameter_check ? 0 : 1,
+ __LINE__, __FILE__, CCTK_THORNSTRING,
+ "error while parsing parameter 'IOHDF5::in3D_vars'");
+ }
+
+ for (int vindex = 0; vindex < numvars; vindex++)
+ {
+ if (flags.at (vindex))
+ {
+ retval = InputVarAs (cctkGH, vindex, CCTK_VarName (vindex));
+ if (retval)
+ {
+ break;
+ }
+ }
+ }
+
+ return (retval);
+}
+
+
+
+#if 0
+/** returns the number of recovered variables */
+int Recover (cGH* const cctkGH, const char *basefilename,
+ const int called_from)
+{
+ assert (cctkGH);
+ assert (basefilename);
+ assert (called_from == CP_INITIAL_DATA
+ || called_from == CP_EVOLUTION_DATA
+ || called_from == CP_RECOVER_PARAMETERS
+ || called_from == CP_RECOVER_DATA
+ || called_from == FILEREADER_DATA);
+
+ // the other modes are not supported yet
+ assert (called_from == FILEREADER_DATA);
+
+ const ioGH * const iogh = (const ioGH *) CCTK_GHExtension (cctkGH, "IO");
+ assert (iogh);
+
+ int num_vars_read = 0;
+ assert (iogh->do_inVars);
+ for (int n=0; n<CCTK_NumVars(); ++n) {
+ if (iogh->do_inVars[n]) {
+ const int ierr = InputVarAs (cctkGH, vindex, basefilename);
+ if (! ierr) {
+ ++ num_vars_read;
+ }
+ }
+ }
+
+ return num_vars_read;
+}
+#endif
+
+} // namespace CarpetIOHDF5
diff --git a/Carpet/CarpetIOHDF5/src/iohdf5.h b/Carpet/CarpetIOHDF5/src/iohdf5.h
new file mode 100644
index 000000000..17ea9d98a
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/src/iohdf5.h
@@ -0,0 +1,44 @@
+/* $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/iohdf5.h,v 1.7 2004/08/18 16:02:56 tradke Exp $ */
+
+#ifndef CARPETIOHDF5_H
+#define CARPETIOHDF5_H
+
+#ifdef __cplusplus
+namespace CarpetIOHDF5 {
+ extern "C" {
+#endif
+
+#ifdef USE_CHRISTIANS_ROUTINES
+#include "cctk_Arguments.h"
+
+int CarpetIOHDF5Startup (void);
+void CarpetIOHDF5Init (CCTK_ARGUMENTS);
+void CarpetIOHDF5ReadData (CCTK_ARGUMENTS);
+void CarpetIOHDF5_EvolutionCheckpoint (const cGH*);
+void CarpetIOHDF5_InitialDataCheckpoint (const cGH*);
+
+#else
+
+/* Scheduled functions */
+void CarpetIOHDF5Startup (void);
+int CarpetIOHDF5Init (const cGH* const);
+int CarpetIOHDF5ReadData (const cGH* const);
+int CarpetIOHDF5_InitialDataCheckpoint (const cGH* const);
+int CarpetIOHDF5_EvolutionCheckpoint (const cGH* const);
+int CarpetIOHDF5_TerminationCheckpoint (const cGH* const);
+void CarpetIOHDF5EvolutionCheckpoint (const cGH* const);
+void CarpetIOHDF5InitialDataCheckpoint (const cGH* const);
+
+#endif
+
+int CarpetIOHDF5_Recover (cGH* cgh, const char *basefilename, int called_from);
+
+int CarpetIOHDF5_RecoverParameters (void);
+int CarpetIOHDF5_CloseFile (void);
+
+#ifdef __cplusplus
+ } /* extern "C" */
+} /* namespace CarpetIOHDF5 */
+#endif
+
+#endif /* !defined(CARPETIOHDF5_H) */
diff --git a/Carpet/CarpetIOHDF5/src/iohdf5.hh b/Carpet/CarpetIOHDF5/src/iohdf5.hh
new file mode 100644
index 000000000..bfb49386b
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/src/iohdf5.hh
@@ -0,0 +1,198 @@
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/iohdf5.hh,v 1.12 2004/07/09 15:38:18 tradke Exp $
+
+#ifndef CARPETIOHDF5_HH
+#define CARPETIOHDF5_HH
+
+#include <vector>
+
+#include "cctk.h"
+#include "cctk_Arguments.h"
+
+#include "carpet.hh"
+
+#include "iohdf5.h"
+#include "CactusBase/IOUtil/src/ioutil_Utils.h"
+
+/* some macros for HDF5 group names */
+#define METADATA_GROUP "Parameters and Global Attributes"
+#define ALL_PARAMETERS "All Parameters"
+
+// Some MPI Datatypes we need for Recovery
+// Originally written by Thomas Radke.
+
+#ifdef CCTK_INT4
+#define CARPET_MPI_INT4 (sizeof (CCTK_INT4) == sizeof (int) ? MPI_INT : \
+ sizeof (CCTK_INT4) == sizeof (short) ? MPI_SHORT : \
+ MPI_DATATYPE_NULL)
+#endif
+
+#define CARPET_MPI_CHAR MPI_CHAR
+
+/* floating point types are architecture-independent,
+ ie. a float has always 4 bytes, and a double has 8 bytes
+
+ PUGH_MPI_REAL is used for communicating reals of the generic CCTK_REAL type
+ PUGH_MPI_REALn is used to explicitely communicate n-byte reals */
+#ifdef CCTK_REAL4
+#define CARPET_MPI_REAL4 MPI_FLOAT
+#endif
+#ifdef CCTK_REAL8
+#define CARPET_MPI_REAL8 MPI_DOUBLE
+#endif
+#ifdef CCTK_REAL16
+#define CARPET_MPI_REAL16 (sizeof (CCTK_REAL16) == sizeof (long double) ? \
+ MPI_LONG_DOUBLE : MPI_DATATYPE_NULL)
+#endif
+
+
+#ifdef CCTK_REAL_PRECISION_16
+#define CARPET_MPI_REAL CARPET_MPI_REAL16
+#elif CCTK_REAL_PRECISION_8
+#define CARPET_MPI_REAL CARPET_MPI_REAL8
+#elif CCTK_REAL_PRECISION_4
+#define CARPET_MPI_REAL CARPET_MPI_REAL4
+#endif
+
+
+/*** Define the different datatypes used for HDF5 I/O
+ NOTE: the complex datatype SHOULD be [is] defined dynamically at runtime in Startup.c
+ 100% of the definitions below were taken from Thomas Radke's IOHDF5Util thorn for PUGH
+ ***/
+/* char type is easy */
+#define HDF5_CHAR H5T_NATIVE_CHAR
+
+/* floating point types are architecture-independent,
+ ie. a float has always 4 bytes, and a double has 8 bytes
+ HDF5_REAL is used for storing reals of the generic CCTK_REAL type
+ HDF5_REALn is used to explicitely store n-byte reals */
+#ifdef CCTK_REAL4
+#define HDF5_REAL4 H5T_NATIVE_FLOAT
+#endif
+#ifdef CCTK_REAL8
+#define HDF5_REAL8 H5T_NATIVE_DOUBLE
+#endif
+#ifdef CCTK_REAL16
+#define HDF5_REAL16 (sizeof (CCTK_REAL16) == sizeof (long double) ? \
+ H5T_NATIVE_LDOUBLE : -1)
+#endif
+
+
+#ifdef CCTK_REAL_PRECISION_16
+#define HDF5_REAL HDF5_REAL16
+#elif CCTK_REAL_PRECISION_8
+#define HDF5_REAL HDF5_REAL8
+#elif CCTK_REAL_PRECISION_4
+#define HDF5_REAL HDF5_REAL4
+#endif
+
+
+/* integer types are architecture-dependent:
+ HDF5_INT is used for communicating integers of the generic CCTK_INT type
+ HDF5_INTn is used to explicitely communicate n-byte integers */
+#ifdef CCTK_INT8
+#define HDF5_INT8 (sizeof (CCTK_INT8) == sizeof (int) ? H5T_NATIVE_INT : \
+ sizeof (CCTK_INT8) == sizeof (long) ? H5T_NATIVE_LONG : \
+ sizeof (CCTK_INT8) == sizeof (long long) ? \
+ H5T_NATIVE_LLONG : -1)
+#endif
+
+#ifdef CCTK_INT4
+#define HDF5_INT4 (sizeof (CCTK_INT4) == sizeof (int) ? H5T_NATIVE_INT : \
+ sizeof (CCTK_INT4) == sizeof (short) ? \
+ H5T_NATIVE_SHORT : -1)
+#endif
+
+#ifdef CCTK_INT2
+#define HDF5_INT2 (sizeof (CCTK_INT2) == sizeof (short) ? \
+ H5T_NATIVE_SHORT : -1)
+#endif
+
+#ifdef CCTK_INT1
+#define HDF5_INT1 H5T_NATIVE_CHAR
+#endif
+
+#ifdef CCTK_INTEGER_PRECISION_8
+#define HDF5_INT HDF5_INT8
+#elif CCTK_INTEGER_PRECISION_4
+#define HDF5_INT HDF5_INT4
+#elif CCTK_INTEGER_PRECISION_2
+#define HDF5_INT HDF5_INT2
+#elif CCTK_INTEGER_PRECISION_1
+#define HDF5_INT HDF5_INT1
+#endif
+
+/* Nice error handling. Stolen from Thomas Radke */
+/* check return code of HDF5 call and print a warning in case of an error */
+#define HDF5_ERROR(fn_call) \
+ { \
+ int _error_code = fn_call; \
+ \
+ \
+ if (_error_code < 0) \
+ { \
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, \
+ "HDF5 call '%s' returned error code %d", \
+ #fn_call, _error_code); \
+ } \
+ }
+
+
+
+
+namespace CarpetIOHDF5 {
+
+ using namespace std;
+ using namespace Carpet;
+
+ // Variable definitions
+ extern vector<bool> do_truncate; // [var]
+ extern vector<vector<vector<int> > > last_output; // [ml][rl][var]
+
+ void* SetupGH (tFleshConfig* const fc,
+ const int convLevel, cGH* const cctkGH);
+
+ int OutputGH (const cGH* const cctkGH);
+ int WriteVar (const cGH* const cctkGH, const hid_t writer, const ioRequest* request,
+ const int called_from_checkpoint);
+ int OutputVarAs (const cGH* const cctkGH, const char* const varname,
+ const char* const alias);
+
+ int TimeToOutput (const cGH* const cctkGH, const int vindex);
+ int TriggerOutput (const cGH* const cctkGH, const int vindex);
+
+ int InputGH (const cGH* const cctkGH);
+ int ReadVar (const cGH* const cctkGH, const int vindex,
+ const hid_t currdataset, vector<ibset> &regions_read,
+ const int called_from_recovery);
+
+ int Recover (cGH* cgh, const char *basefilename, int called_from);
+
+ // auxiliary functions defined in iohdf5utils.cc
+
+ bool CheckForVariable (const char* const varlist, const int vindex);
+ void SetFlag (int index, const char* optstring, void* arg);
+
+ void WriteAttribute (const hid_t dataset, const char* name, int value);
+ void WriteAttribute (const hid_t dataset, const char* name, const int* values, int nvalues);
+ void WriteAttribute (const hid_t dataset, const char* name, double value);
+ void WriteAttribute (const hid_t dataset, const char* name, const double* values, int nvalues);
+ void WriteAttribute (const hid_t dataset, const char* name, char value);
+ void WriteAttribute (const hid_t dataset, const char* name, const char* values);
+ void WriteAttribute (const hid_t dataset, const char* name, const char* values, int nvalues);
+
+ int ReadAttribute (const hid_t dataset, const char* name, int& value);
+ int ReadAttribute (const hid_t dataset, const char* name, int* values, int nvalues);
+ int ReadAttribute (const hid_t dataset, const char* name, double& value);
+ int ReadAttribute (const hid_t dataset, const char* name, double* values, int nvalues);
+ int ReadAttribute (const hid_t dataset, const char* name, char& value);
+ int ReadAttribute (const hid_t dataset, const char* name, char*& values);
+ int ReadAttribute (const hid_t dataset, const char* name, char* values, int nvalues);
+
+ int GetnDatasets (const hid_t reader);
+ void GetDatasetName (const hid_t reader, const int _index, char* name);
+
+ hid_t h5DataType(const cGH* const cctkGH, int cctk_type);
+
+} // namespace CarpetIOHDF5
+
+#endif // !defined(CARPETIOHDF5_HH)
diff --git a/Carpet/CarpetIOHDF5/src/iohdf5GH.h b/Carpet/CarpetIOHDF5/src/iohdf5GH.h
new file mode 100644
index 000000000..0516201c2
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/src/iohdf5GH.h
@@ -0,0 +1,56 @@
+// This was adopted from Thomas Radke's IOHDF5 thorn.
+// Thanks, Thomas!
+
+#ifndef _CARPETIOHDF5_IOHDF5GH_H_
+#define _CARPETIOHDF5_IOHDF5GH_H_ 1
+
+#include "StoreNamedData.h"
+
+/* I took basically everything in this file from Thomas' IOHDF5; much of
+ below is still unused.. */
+
+/* CARPET IOHDF5 GH extension structure */
+typedef struct
+{
+ /* default number of times to output */
+ int out_every_default;
+
+ /* number of times to output for each variable */
+ CCTK_INT *out_every;
+
+ /* the last iteration output for each variable */
+ int *out_last;
+
+ /* list of variables to output */
+ char *out_vars;
+
+ /* I/O request description list (for all variables) */
+ ioRequest **requests;
+
+ /* directory in which to output */
+ char *out_dir;
+
+ /* filename database for opened files */
+ pNamedData *open_output_files;
+
+ /* timer array for checkpointing/recovery */
+ // int timers[IOHDF5_NUM_TIMERS];
+
+ /* flag to indicate request for timer output */
+ // int print_timing_info;
+
+ /* ring buffer for list of successfully created cp files */
+ int cp_filename_index;
+ char **cp_filename_list;
+
+ /* iteration number of the last checkpoint */
+ int last_checkpoint_iteration;
+
+ /* hdf5 datatype for stupid complex variables; to be set at run time */
+ hid_t HDF5_COMPLEX, HDF5_COMPLEX8, HDF5_COMPLEX16, HDF5_COMPLEX32;
+
+
+} CarpetIOHDF5GH;
+
+
+#endif
diff --git a/Carpet/CarpetIOHDF5/src/iohdf5chckpt_recover.cc b/Carpet/CarpetIOHDF5/src/iohdf5chckpt_recover.cc
new file mode 100644
index 000000000..f8e6b9a3d
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/src/iohdf5chckpt_recover.cc
@@ -0,0 +1,914 @@
+#include <assert.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <algorithm>
+#include <fstream>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include <hdf5.h>
+
+#include "cctk.h"
+#include "cctk_Parameters.h"
+#include "cctk_Version.h"
+
+extern "C" {
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/iohdf5chckpt_recover.cc,v 1.36 2004/07/07 11:01:05 tradke Exp $";
+ CCTK_FILEVERSION(Carpet_CarpetIOHDF5_iohdf5chckpt_recover_cc);
+}
+
+#include "CactusBase/IOUtil/src/ioGH.h"
+#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h"
+
+#include "bbox.hh"
+#include "data.hh"
+#include "gdata.hh"
+#include "ggf.hh"
+#include "vect.hh"
+
+#include "carpet.hh"
+
+#include "iohdf5.hh"
+#include "iohdf5GH.h"
+
+/* some macros for HDF5 group names */
+#define PARAMETERS_GLOBAL_ATTRIBUTES_GROUP "Parameters and Global Attributes"
+#define ALL_PARAMETERS "All Parameters"
+
+
+
+namespace CarpetIOHDF5 {
+
+ using namespace std;
+ using namespace Carpet;
+
+ // linked list for reading in the checkpoint file
+
+ list<string> datasetnamelist;
+
+ int Checkpoint (const cGH* const cctkGH, int called_from);
+ int DumpParametersGHExtentions (const cGH *cctkGH, int all, hid_t writer);
+
+ int RecoverParameters (hid_t reader);
+ int RecoverGHextensions (cGH* cctkGH, hid_t reader);
+ int RecoverVariables (cGH* cctkGH, hid_t reader);
+
+ void CarpetIOHDF5InitialDataCheckpoint( const cGH* const cgh){
+
+ DECLARE_CCTK_PARAMETERS;
+
+ if (checkpoint && checkpoint_ID)
+ {
+ CCTK_INFO ("---------------------------------------------------------");
+ CCTK_INFO ("Dumping initial data checkpoint");
+ CCTK_INFO ("---------------------------------------------------------");
+
+ Checkpoint (cgh, CP_INITIAL_DATA);
+ }
+ } // CarpetIOHDF5_InitialDataCheckpoint
+
+
+ void CarpetIOHDF5EvolutionCheckpoint( const cGH* const cgh){
+
+ DECLARE_CCTK_PARAMETERS;
+
+ // Test checkpoint_every, and adjust it. This is necessary until
+ // recovery is more flexible.
+ int every_full = pow(2.0,maxreflevels-1);
+ if (checkpoint_every>0 && (checkpoint_every % every_full) != 0) {
+ int every = (checkpoint_every / every_full + 1) * every_full;
+ ostringstream outevery;
+ outevery << every;
+ CCTK_ParameterSet("checkpoint_every","IOUtil",
+ outevery.str().c_str());
+ CCTK_VInfo (CCTK_THORNSTRING,"I have adjusted your checkpoint_every to %i.",every);
+
+ }
+
+ if (checkpoint &&
+ ((checkpoint_every > 0 && cgh->cctk_iteration % checkpoint_every == 0) ||
+ checkpoint_next))
+ {
+ CCTK_INFO ("---------------------------------------------------------");
+ CCTK_VInfo (CCTK_THORNSTRING, "Dumping periodic checkpoint at "
+ "iteration %d", cgh->cctk_iteration);
+ CCTK_INFO ("---------------------------------------------------------");
+
+ Checkpoint (cgh, CP_EVOLUTION_DATA);
+
+ if (checkpoint_next)
+ {
+ CCTK_ParameterSet ("checkpoint_next", CCTK_THORNSTRING, "no");
+ }
+ }
+ } // CarpetIOHDF5_EvolutionCheckpoint
+
+
+ int CarpetIOHDF5RecoverParameters(void){
+ // Register with the Cactus Recovery Interface
+ return (IOUtil_RecoverParameters (CarpetIOHDF5_Recover, ".h5", "HDF5"));
+ }
+
+ int CarpetIOHDF5_Recover (cGH* cctkGH, const char *basefilename, int called_from) {
+
+ DECLARE_CCTK_PARAMETERS;
+
+ int result=0;
+ int myproc=-1;
+
+ CarpetIOHDF5GH *myGH;
+
+
+ static hid_t reader=0; //this thing absolutely needs to be static!!!
+
+ myGH = NULL;
+
+ myproc = CCTK_MyProc (cctkGH);
+
+
+ if (called_from == CP_RECOVER_PARAMETERS) {
+ // Okay, let's see what we can do about the parameters
+
+ // Invent a file name
+ ostringstream filenamebuf;
+
+ // if(CCTK_nProcs(cctkGH) == 1)
+ filenamebuf << recover_dir << "/" << basefilename << ".h5";
+ //else
+ // filenamebuf << recover_dir << "/" << basefilename << ".file_0.h5";
+
+ string filenamestr = filenamebuf.str();
+ const char * const filename = filenamestr.c_str();
+
+ if (myproc == 0) {
+ // First, open the file
+ if (verbose)
+ CCTK_VInfo(CCTK_THORNSTRING, "Opening Checkpoint file %s for recovery",filename);
+ reader = H5Fopen (filename, H5F_ACC_RDONLY, H5P_DEFAULT);
+ if (reader<0) {
+ CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Could not recover from \"%s\"", filename);
+ }
+ } // myproc == 0
+ }
+ else {
+ /* This is the case for CP_RECOVER_DATA.
+ CCTK_RECOVER_PARAMETERS must have been called before
+ and set up the file info structure. */
+ if (myproc == 0) {
+ assert(reader>=0);
+ }
+ }
+
+ if (called_from == CP_RECOVER_PARAMETERS)
+ {
+ return (RecoverParameters (reader));
+ }
+
+ if (called_from == CP_RECOVER_DATA) {
+ CCTK_INT4 numberofmgtimes=0;
+
+ CCTK_VInfo(CCTK_THORNSTRING,"Starting to recover data on reflevel %d!!!",reflevel);
+
+ if (myproc == 0) {
+
+ // Use refinement levels parameter from checkpointing file?
+ if (use_reflevels_from_checkpoint && reflevel==0) {
+
+ herr_t herr;
+
+ hid_t group = H5Gopen (reader, PARAMETERS_GLOBAL_ATTRIBUTES_GROUP);
+ assert(group >= 0);
+ hid_t dataset = H5Dopen (group, ALL_PARAMETERS);
+ assert(dataset>= 0);
+
+ int reflevels_chkpt;
+
+ ReadAttribute (dataset, "carpet_reflevels", reflevels_chkpt);
+
+ herr = H5Dclose(dataset);
+ assert(!herr);
+ herr = H5Gclose(group);
+ assert(!herr);
+
+ ostringstream reflevels_str;
+ reflevels_str << reflevels_chkpt;
+ CCTK_ParameterSet ("refinement_levels","CarpetRegrid",reflevels_str.str().c_str());
+
+ CCTK_VInfo (CCTK_THORNSTRING, "Using %i reflevels read from checkpoint file. Ignoring value in parameter file.", reflevels_chkpt);
+
+ }
+
+ /* we need all the times on the individual levels */
+ // these are a bit messy to extract
+
+ // Actually, we do have to do this only once
+
+ hid_t group = H5Gopen (reader, PARAMETERS_GLOBAL_ATTRIBUTES_GROUP);
+ assert(group>=0);
+ hid_t dataset = H5Dopen (group, ALL_PARAMETERS);
+ assert(dataset >= 0);
+ hid_t attr = H5Aopen_name (dataset, "numberofmgtimes");
+ assert(attr >= 0);
+ hid_t atype = H5Aget_type (attr);
+ if(H5Tequal(atype, H5T_NATIVE_INT)) {
+ herr_t herr = H5Aread(attr, atype, &numberofmgtimes);
+ assert(!herr);
+ herr = H5Aclose(attr);
+ assert(numberofmgtimes==mglevels);
+ char buffer[100];
+ for(int lcv=0;lcv<numberofmgtimes;lcv++) {
+ sprintf(buffer,"mgleveltimes %d",lcv);
+ attr = H5Aopen_name(dataset, buffer);
+ assert (attr>=0);
+ atype = H5Aget_type (attr);
+ assert (atype>=0);
+ herr = H5Aread (attr, atype, &leveltimes.at(lcv).at(0));
+ assert(!herr);
+ herr = H5Aclose(attr);
+ assert(!herr);
+ }
+ herr = H5Dclose(dataset);
+ assert(!herr);
+ herr = H5Gclose(group);
+ assert(!herr);
+ } else {
+ CCTK_WARN(0,"BAD BAD BAD! Can't read leveltimes!!");
+ }
+
+ } // myproc == 0
+
+
+ // communicate the time on all the mglevels and reflevels
+
+ int mpierr = MPI_Bcast (&numberofmgtimes, 1, CARPET_MPI_INT4, 0,MPI_COMM_WORLD);
+ assert(!mpierr);
+
+
+ for(int i=0;i<numberofmgtimes;i++) {
+ mpierr = MPI_Bcast (&(leveltimes.at(i).at(0)), reflevels, CARPET_MPI_REAL, 0, MPI_COMM_WORLD);
+ assert(!mpierr);
+ }
+
+ if (verbose) {
+ cout << "leveltimes: " << leveltimes << endl;
+ }
+
+ cctkGH->cctk_time = leveltimes.at(mglevel).at(reflevel);
+
+ result += RecoverGHextensions(cctkGH,reader);
+
+
+ if (verbose) {
+ cout << "reflevel: " << reflevel << endl;
+ }
+
+ result += RecoverVariables (cctkGH,reader);
+
+
+ CCTK_VInfo (CCTK_THORNSTRING,
+ "Restarting simulation at iteration %d (physical time %g)",
+ cctkGH->cctk_iteration, (double) cctkGH->cctk_time);
+
+ } // called_from == CP_RECOVER_DATA
+
+ if (reflevel==maxreflevels) {
+ if(myproc == 0) {
+ H5Fclose(reader);
+ }
+ }
+
+ return (result);
+ } // CarpetIOHDF5_Recover
+
+
+ int RecoverVariables (cGH* cctkGH, hid_t reader) {
+
+ DECLARE_CCTK_PARAMETERS;
+
+ int retval = 0;
+ int myproc = CCTK_MyProc (cctkGH);
+ char * name;
+
+ int ndatasets;
+
+ int varindex;
+
+ double datasettime;
+ double leveltime;
+ static double totaltime;
+
+ hid_t dataset;
+ herr_t herr;
+
+ list<string> refleveldatasetnamelist;
+
+ if (reflevel==0) {
+ totaltime = 0;
+ }
+
+ leveltime = MPI_Wtime();
+
+
+ if(myproc==0) {
+ ndatasets=GetnDatasets(reader);
+ assert (ndatasets>=0);
+ }
+
+ // Broadcast number of datasets
+ MPI_Bcast (&ndatasets, 1, MPI_INT, 0, dist::comm);
+
+ assert ((ndatasets)>=0);
+
+ //if (verbose && reflevel==0) cout << "ndatasets: " << ndatasets << endl;
+ if ( reflevel == 0) {
+ cout << "ndatasets: " << ndatasets << endl;
+ }
+
+ if (reflevel==0) {
+ for (int currdataset=0;currdataset<ndatasets+1;currdataset++){
+ char datasetname[256];
+ if (myproc==0) {
+ GetDatasetName(reader,currdataset,datasetname);
+ datasetnamelist.push_back(datasetname);
+ } //myproc = 0
+ else {
+ datasetnamelist.push_back("blah");
+ }
+ }
+ }
+
+ cout << "I have " << datasetnamelist.size() << endl;
+
+ double comparetime = MPI_Wtime();
+
+ if(myproc==0) {
+ // for(currdataset=datasetnamelist.begin();
+ // currdataset!=datasetnamelist.end();
+ // ++currdataset) {
+
+ list<string>::iterator currdataset;
+ currdataset=datasetnamelist.begin();
+ while(currdataset!=datasetnamelist.end()) {
+ char tempstr[10];
+ sprintf(tempstr,"rl=%d m=",reflevel);
+ if ( (*currdataset).find(tempstr) < (*currdataset).size() ) {
+ refleveldatasetnamelist.push_back((*currdataset).c_str());
+ currdataset = datasetnamelist.erase(currdataset);
+ } else {
+ ++currdataset;
+ } // if ...
+ } // while ...
+ } // if(myproc==0)
+
+
+
+
+ static long reflevelnamenum; // static keeps this thing local
+
+ if(myproc==0) {
+ reflevelnamenum=refleveldatasetnamelist.size();
+ }
+
+ MPI_Bcast (&reflevelnamenum, 1, MPI_LONG, 0, dist::comm);
+ assert ((reflevelnamenum)>=0);
+
+ // fill bogus namelist for non-IO cpus
+ if(myproc !=0) {
+ for(long i=0;i < reflevelnamenum;i++) {
+ refleveldatasetnamelist.push_back("blah");
+ }
+ }
+
+ comparetime = MPI_Wtime() - comparetime;
+ cout << "Time for string comparison: " << comparetime << endl;
+ cout << "I have for this reflevel " << refleveldatasetnamelist.size() << endl;
+
+ list<string>::iterator currdataset;
+
+ currdataset=refleveldatasetnamelist.begin();
+
+ while(currdataset!=refleveldatasetnamelist.end()) {
+
+ // cout << "name: " << (*currdataset).c_str() << endl;
+
+ if (myproc==0) {
+ dataset = H5Dopen (reader, (*currdataset).c_str());
+ assert(dataset);
+ // Read data
+ ReadAttribute (dataset, "name", name);
+ varindex = CCTK_VarIndex(name);
+ }
+
+ MPI_Bcast (&varindex, 1, MPI_INT, 0, dist::comm);
+
+ name = CCTK_FullName(varindex);
+
+ if (verbose) {
+ cout << name << " rl: " << reflevel << endl;
+ }
+ vector<ibset> regions_read(Carpet::maps);
+
+ assert (varindex>=0 && varindex<CCTK_NumVars());
+ const int group = CCTK_GroupIndexFromVarI (varindex);
+ const int grouptype = CCTK_GroupTypeI(group);
+
+ int did_read_something = ReadVar(cctkGH,name,dataset,regions_read,1);
+
+ MPI_Bcast (&did_read_something, 1, MPI_INT, 0, dist::comm);
+
+ if (did_read_something) {
+ currdataset = refleveldatasetnamelist.erase(currdataset);
+ } else {
+ ++currdataset;
+ }
+
+ if(myproc==0) {
+ herr = H5Dclose(dataset);
+ assert(!herr);
+ }
+ free(name);
+
+ } // for (currdataset ... )
+ leveltime = MPI_Wtime() - leveltime;
+ totaltime = totaltime + leveltime;
+
+ cout << "Timers: leveltime: " << leveltime << " totaltime: " << totaltime << endl;
+
+ return retval;
+ }
+
+
+ int RecoverGHextensions (cGH *cctkGH, hid_t reader)
+ {
+ const int myproc = CCTK_MyProc(cctkGH);
+ CCTK_INT4 int4Buffer[3];
+ CCTK_REAL realBuffer;
+ CCTK_REAL realBuffer2;
+ CCTK_INT4 intbuffer;
+
+ int mpierr = 0;
+
+ if (myproc==0)
+ {
+
+ // First open group and dataset
+ hid_t group = H5Gopen (reader, PARAMETERS_GLOBAL_ATTRIBUTES_GROUP);
+ assert(group>=0);
+ hid_t dataset = H5Dopen (group, ALL_PARAMETERS);
+ assert(dataset >= 0);
+
+ ReadAttribute(dataset,"GH$iteration",int4Buffer[0]);
+ ReadAttribute(dataset,"main loop index",int4Buffer[1]);
+ ReadAttribute(dataset,"carpet_global_time",realBuffer);
+ // ReadAttribute(dataset,"carpet_reflevels",int4Buffer[2]);
+ ReadAttribute(dataset,"carpet_delta_time",realBuffer2);
+
+ herr_t herr = H5Dclose(dataset);
+ assert(!herr);
+ herr = H5Gclose(group);
+ assert(!herr);
+
+ }
+ /* Broadcast the GH extensions to all processors */
+ /* NOTE: We have to use MPI_COMM_WORLD here
+ because PUGH_COMM_WORLD is not yet set up at parameter recovery time.
+ We also assume that PUGH_MPI_INT4 is a compile-time defined datatype. */
+
+ mpierr = MPI_Bcast (int4Buffer, 3, CARPET_MPI_INT4, 0,MPI_COMM_WORLD);
+ assert(!mpierr);
+ mpierr = MPI_Bcast (int4Buffer, 3, CARPET_MPI_INT4, 0,MPI_COMM_WORLD);
+ assert(!mpierr);
+ mpierr = MPI_Bcast (&realBuffer, 1, CARPET_MPI_REAL,0,MPI_COMM_WORLD);
+ assert(!mpierr);
+ mpierr = MPI_Bcast (&realBuffer2, 1, CARPET_MPI_REAL,0,MPI_COMM_WORLD);
+ assert(!mpierr);
+
+ global_time = (CCTK_REAL) realBuffer;
+ delta_time = (CCTK_REAL) realBuffer2;
+ // reflevels = (int) int4Buffer[2];
+ cctkGH->cctk_iteration = (int) int4Buffer[0];
+ CCTK_SetMainLoopIndex ((int) int4Buffer[1]);
+
+
+ return (0);
+
+ } // RecoverGHExtensions
+
+ int RecoverParameters(hid_t reader){
+
+ DECLARE_CCTK_PARAMETERS;
+
+ int myproc, retval;
+ char *parameters;
+ CCTK_INT4 parameterSize;
+
+ hid_t group,dataset;
+ herr_t herr;
+
+ int mpierr;
+
+ myproc = CCTK_MyProc (NULL);
+
+ if (myproc == 0){
+ CCTK_VInfo (CCTK_THORNSTRING, "Recovering parameters from checkpoint ");
+
+ group = H5Gopen (reader, PARAMETERS_GLOBAL_ATTRIBUTES_GROUP);
+ assert(group >= 0);
+ dataset = H5Dopen (group, ALL_PARAMETERS);
+ assert(dataset>= 0);
+
+ parameterSize = H5Dget_storage_size (dataset);
+ parameters = (char *) malloc (parameterSize);
+ herr = H5Dread (dataset, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL,
+ H5P_DEFAULT, parameters);
+ assert(!herr);
+ herr = H5Dclose(dataset);
+ assert(!herr);
+ herr = H5Gclose(group);
+ assert(!herr);
+
+ if(verbose) {
+ CCTK_VInfo (CCTK_THORNSTRING, "\n%s\n",parameters);
+ }
+
+ CCTK_VInfo(CCTK_THORNSTRING, "Successfully recovered parameters!");
+ } // myproc == 0
+
+ /* Broadcast the parameter buffer size to all processors */
+ /* NOTE: We have to use MPI_COMM_WORLD here
+ because CARPET_COMM_WORLD is not yet set up at parameter recovery time.
+ We also assume that CARPET_MPI_INT4 is a compile-time defined datatype. */
+ mpierr = MPI_Bcast (&parameterSize, 1, CARPET_MPI_INT4, 0,
+ MPI_COMM_WORLD);
+ assert(!mpierr);
+
+ if (parameterSize > 0) {
+ if (myproc) {
+ parameters = (char*) malloc (parameterSize + 1);
+ }
+
+ mpierr = MPI_Bcast (parameters, parameterSize + 1, CARPET_MPI_CHAR,
+ 0,MPI_COMM_WORLD);
+ assert(!mpierr);
+
+ IOUtil_SetAllParameters (parameters);
+
+ free (parameters);
+ }
+
+ /* return positive value for success otherwise negative */
+ retval = (parameterSize > 0 ? 1 : -1);
+
+ return (retval);
+
+ } // RecoverParameters
+
+
+
+ int Checkpoint (const cGH* const cctkGH, int called_from)
+ {
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ herr_t herr;
+
+ int retval = 0;
+
+ const ioGH *ioUtilGH;
+
+ ioRequest *request;
+
+ CarpetIOHDF5GH *myGH;
+ myGH = (CarpetIOHDF5GH *) CCTK_GHExtension (cctkGH, "CarpetIOHDF5");
+
+ // check if CarpetIOHDF5 was registered as I/O method
+ if (myGH == NULL) {
+ CCTK_WARN (0, "No CarpetIOHDF5 I/O methods registered");
+ return -1;
+ }
+
+ int const myproc = CCTK_MyProc (cctkGH);
+
+
+
+ // Invent a file name
+ ostringstream cp_tempname_buf;
+ ostringstream cp_filename_buf;
+
+ switch (called_from)
+ {
+ case CP_INITIAL_DATA:
+ cp_tempname_buf << checkpoint_dir << "/tmp_" << checkpoint_ID_file << ".it_" << cctkGH->cctk_iteration << ".h5";
+ cp_filename_buf << checkpoint_dir << "/" << checkpoint_ID_file << ".it_" << cctkGH->cctk_iteration << ".h5";
+ break;
+
+ case CP_EVOLUTION_DATA:
+ cp_tempname_buf << checkpoint_dir << "/tmp_" << checkpoint_file << ".it_" << cctkGH->cctk_iteration << ".h5";
+ cp_filename_buf << checkpoint_dir << "/" << checkpoint_file << ".it_" << cctkGH->cctk_iteration << ".h5";
+ break;
+
+ case CP_RECOVER_DATA:
+ case CP_RECOVER_PARAMETERS:
+ case FILEREADER_DATA:
+ cp_tempname_buf << recover_dir << "/tmp_" << recover_file << ".h5";
+ cp_filename_buf << recover_dir << "/" << recover_file << ".h5";
+ break;
+
+ default:
+ CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "IOUtil_PrepareFilename: Unknown calling mode %d",
+ called_from);
+ break;
+ }
+
+ string const cp_tempname_str = cp_tempname_buf.str();
+ string const cp_filename_str = cp_filename_buf.str();
+ char const * const cp_tempname = cp_tempname_str.c_str();
+ char const * const cp_filename = cp_filename_str.c_str();
+
+
+
+ hid_t writer = -1;
+
+ if (myproc == 0) {
+
+ if (verbose) {
+ CCTK_VInfo (CCTK_THORNSTRING, "Creating temporary checkpoint file '%s'", cp_tempname);
+ }
+
+ CCTK_VInfo (CCTK_THORNSTRING, "Creating temporary checkpoint file '%s'", cp_tempname);
+
+ CCTK_VInfo (CCTK_THORNSTRING, "Verbose = %d", verbose);
+
+ writer = H5Fcreate (cp_tempname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+ assert (writer>=0);
+ herr = H5Fclose (writer);
+ assert (!herr);
+ writer = -1;
+
+ // Now open the file
+
+ writer = H5Fopen (cp_tempname, H5F_ACC_RDWR, H5P_DEFAULT);
+ assert (writer>=0);
+
+ // Dump all parameters and GHExtentions
+ retval += DumpParametersGHExtentions (cctkGH, 1, writer);
+ assert(!retval);
+
+ } // myproc == 0
+
+
+ // now dump the grid variables on all mglevels, reflevels, maps and components
+ BEGIN_MGLEVEL_LOOP(cctkGH) {
+
+ BEGIN_REFLEVEL_LOOP(cctkGH) {
+
+ if (verbose)
+ {
+ CCTK_INFO ("Dumping Grid Variables ...");
+ }
+ for (int group = CCTK_NumGroups () - 1; group >= 0; group--)
+ {
+ /* only dump groups which have storage assigned */
+
+ if (CCTK_QueryGroupStorageI (cctkGH, group) <= 0)
+ {
+ continue;
+ }
+
+ const int grouptype = CCTK_GroupTypeI(group);
+
+ /* scalars and grid arrays only have 1 reflevel: */
+ if ( (grouptype != CCTK_GF) && (reflevel != 0) ) {
+ continue;
+ }
+ /* now check if there is any memory allocated
+ for GFs and GAs. GSs should always have
+ memory allocated and there is at this point
+ no CCTK function to check this :/
+ */
+
+ if ( (grouptype == CCTK_GF) || (grouptype == CCTK_ARRAY)){
+ const int gpdim = CCTK_GroupDimI(group);
+ int gtotalsize=1;
+ vector<int> tlsh(gpdim);
+ assert(!CCTK_GrouplshGI(cctkGH,gpdim,&tlsh[0],group));
+ for(int i=0;i<gpdim;i++) {
+ gtotalsize=tlsh[i];
+ }
+ if(gtotalsize == 0){
+ if (verbose) CCTK_VInfo(CCTK_THORNSTRING,
+ "Group %s is zero-sized. No checkpoint info written",CCTK_GroupName(group));
+ continue;
+ }
+ }
+
+ /* get the number of allocated timelevels */
+ cGroup gdata;
+ CCTK_GroupData (group, &gdata);
+ gdata.numtimelevels = 0;
+ gdata.numtimelevels = CCTK_GroupStorageIncrease (cctkGH, 1, &group,
+ &gdata.numtimelevels,NULL);
+
+ int first_vindex = CCTK_FirstVarIndexI (group);
+
+ /* get the default I/O request for this group */
+ request = IOUtil_DefaultIORequest (cctkGH, first_vindex, 1);
+
+ /* disable checking for old data objects, disable datatype conversion
+ and downsampling */
+ request->check_exist = 0;
+ request->hdatatype = gdata.vartype;
+ for (request->hdim = 0; request->hdim < request->vdim; request->hdim++)
+ {
+ request->downsample[request->hdim] = 1;
+ }
+
+ /* loop over all variables in this group */
+ for (request->vindex = first_vindex;
+ request->vindex < first_vindex + gdata.numvars;
+ request->vindex++)
+ {
+ /* loop over all timelevels of this variable */
+ for (request->timelevel = 0;
+ request->timelevel < gdata.numtimelevels;
+ request->timelevel++)
+ {
+ if (verbose)
+ {
+ char *fullname = CCTK_FullName (request->vindex);
+ if (fullname != NULL) {
+ CCTK_VInfo (CCTK_THORNSTRING, " %s (timelevel %d)",
+ fullname, request->timelevel);
+ free (fullname);
+ }
+ else {
+ CCTK_VWarn(1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Invalid variable with varindex %d", request->vindex);
+ }
+ }
+ // write the var
+
+ if (grouptype == CCTK_ARRAY || grouptype == CCTK_GF || grouptype == CCTK_SCALAR)
+ {
+ char* fullname = CCTK_FullName (request->vindex);
+ if (verbose)
+ CCTK_VInfo (CCTK_THORNSTRING,"%s: reflevel: %d map: %d component: %d grouptype: %d ",
+ fullname,reflevel,Carpet::map,component,grouptype);
+ free(fullname);
+ retval += WriteVar(cctkGH,writer,request,1);
+ }
+ else
+ {
+ char *fullname = CCTK_FullName (request->vindex);
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Invalid group type %d for variable '%s'", grouptype, fullname);
+ free(fullname);
+ retval = -1;
+ }
+
+ }
+ } /* end of loop over all variables */
+ } /* end of loop over all groups */
+ } END_REFLEVEL_LOOP;
+
+ } END_MGLEVEL_LOOP;
+
+
+ if (myproc==0) {
+ // Close the file
+ herr = H5Fclose(writer);
+ assert(!herr);
+ }
+
+ if (retval == 0) {
+ if (myproc==0) {
+ if (rename (cp_tempname, cp_filename))
+ {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Could not rename temporary checkpoint file '%s' to '%s'",
+ cp_tempname, cp_filename);
+ retval = -1;
+ }
+ else {
+ if (myGH->cp_filename_list[myGH->cp_filename_index]) {
+ if (checkpoint_keep > 0) {
+ remove (myGH->cp_filename_list[myGH->cp_filename_index]);
+ }
+ free (myGH->cp_filename_list[myGH->cp_filename_index]);
+ }
+ myGH->cp_filename_list[myGH->cp_filename_index] = strdup (cp_filename);
+ myGH->cp_filename_index = (myGH->cp_filename_index+1) % abs (checkpoint_keep);
+ } // else
+ } // myproc == 0
+ } // retval == 0
+
+ return retval;
+
+ } // Checkpoint
+
+
+ int DumpParametersGHExtentions (const cGH *cctkGH, int all, hid_t writer)
+ {
+ // large parts of this routine were taken from
+ // Thomas Radke's IOHDF5Util. Thanks Thomas!
+
+ DECLARE_CCTK_PARAMETERS;
+
+ char *parameters;
+ hid_t group, dataspace, dataset;
+ hsize_t size;
+ herr_t herr;
+
+ CCTK_INT4 itmp;
+ CCTK_REAL dtmp;
+ const char *version;
+ ioGH *ioUtilGH;
+
+ if (verbose) {
+ CCTK_INFO ("Dumping Parameters and GH Extentions...");
+ }
+
+ /* get the parameter string buffer */
+ parameters = IOUtil_GetAllParameters (cctkGH, all);
+
+ if (parameters)
+ {
+ size = strlen (parameters) + 1;
+ group = H5Gcreate (writer, PARAMETERS_GLOBAL_ATTRIBUTES_GROUP, 0);
+ assert(group>=0);
+ dataspace = H5Screate_simple (1, &size, NULL);
+ assert(dataspace>=0);
+ dataset = H5Dcreate (group, ALL_PARAMETERS, H5T_NATIVE_UCHAR,
+ dataspace, H5P_DEFAULT);
+ assert(dataset>=0);
+ herr = H5Dwrite (dataset, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL,
+ H5P_DEFAULT, parameters);
+ assert(!herr);
+
+ // now dump the GH Extentions
+
+ /* get the handle for IOUtil extensions */
+ ioUtilGH = (ioGH *) CCTK_GHExtension (cctkGH, "IO");
+
+ itmp = CCTK_MainLoopIndex ();
+ WriteAttribute(dataset,"main loop index",itmp);
+
+ itmp = cctkGH->cctk_iteration;
+ WriteAttribute(dataset,"GH$iteration",itmp);
+
+ itmp = ioUtilGH->ioproc_every;
+ WriteAttribute(dataset,"GH$ioproc_every",itmp);
+
+ itmp = CCTK_nProcs (cctkGH);
+ WriteAttribute(dataset,"GH$nprocs",itmp);
+
+ dtmp = cctkGH->cctk_time;
+ WriteAttribute(dataset,"GH$time", dtmp);
+
+ dtmp = global_time;
+ WriteAttribute(dataset,"carpet_global_time", dtmp);
+
+ itmp = reflevels;
+ WriteAttribute(dataset,"carpet_reflevels", itmp);
+
+ dtmp = delta_time;
+ WriteAttribute(dataset,"carpet_delta_time", dtmp);
+
+ version = CCTK_FullVersion();
+ WriteAttribute(dataset,"Cactus version", version);
+
+ /* finally, we need all the times on the individual refinement levels */
+
+ const int numberofmgtimes=mglevels;
+ WriteAttribute(dataset,"numberofmgtimes",numberofmgtimes);
+ for(int i=0;i < numberofmgtimes;i++) {
+ char buffer[100];
+ sprintf(buffer,"mgleveltimes %d",i);
+ WriteAttribute(dataset,buffer,(double *) &leveltimes.at(i).at(0), reflevels);
+ }
+
+ herr = H5Dclose (dataset);
+ assert(!herr);
+ herr = H5Sclose (dataspace);
+ assert(!herr);
+ herr = H5Gclose (group);
+ assert(!herr);
+
+ free (parameters);
+ }
+
+ return 0;
+ } // DumpParametersGHExtentions
+
+
+
+
+} // namespace CarpetIOHDF5
diff --git a/Carpet/CarpetIOHDF5/src/iohdf5utils.cc b/Carpet/CarpetIOHDF5/src/iohdf5utils.cc
new file mode 100644
index 000000000..5545a3563
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/src/iohdf5utils.cc
@@ -0,0 +1,521 @@
+#include <assert.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <algorithm>
+#include <fstream>
+#include <sstream>
+#include <vector>
+
+#include <hdf5.h>
+
+#include "cctk.h"
+#include "cctk_Parameters.h"
+
+extern "C" {
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/iohdf5utils.cc,v 1.8 2004/07/07 17:09:17 tradke Exp $";
+ CCTK_FILEVERSION(Carpet_CarpetIOHDF5_iohdf5utils_cc);
+}
+
+#include "CactusBase/IOUtil/src/ioGH.h"
+#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h"
+
+#include "bbox.hh"
+#include "data.hh"
+#include "gdata.hh"
+#include "ggf.hh"
+#include "vect.hh"
+
+#include "carpet.hh"
+
+#include "iohdf5.hh"
+#include "iohdf5GH.h"
+
+
+
+namespace CarpetIOHDF5 {
+
+ using namespace std;
+ using namespace Carpet;
+
+
+
+ bool CheckForVariable (const char* const varlist, const int vindex)
+ {
+ const int numvars = CCTK_NumVars();
+ assert (vindex>=0 && vindex<numvars);
+
+ vector<bool> flags(numvars);
+
+ CCTK_TraverseString (varlist, SetFlag, &flags, CCTK_GROUP_OR_VAR);
+
+ return flags.at(vindex);
+ }
+
+ void SetFlag (int vindex, const char* optstring, void* arg)
+ {
+ if (optstring)
+ {
+ char *fullname = CCTK_FullName (vindex);
+ CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Option string '%s' will be ignored for HDF5 output of "
+ "variable '%s'", optstring, fullname);
+ free (fullname);
+ }
+ vector<bool>& flags = *(vector<bool>*)arg;
+ flags.at(vindex) = true;
+ }
+
+
+
+ void WriteAttribute (const hid_t dataset, const char* const name, const int value)
+ {
+ WriteAttribute (dataset, name, &value, 1);
+ }
+
+ void WriteAttribute (const hid_t dataset, const char* const name, const int* const values, const int nvalues)
+ {
+ assert (dataset>=0);
+ assert (name);
+ assert (values);
+ assert (nvalues>=0);
+
+ herr_t herr;
+
+ hsize_t shape[1];
+ shape[0] = nvalues;
+ const hid_t dataspace = nvalues==1 ? H5Screate (H5S_SCALAR) : H5Screate_simple (1, shape, NULL);
+ assert (dataspace>=0);
+
+ const hid_t datatype = H5T_NATIVE_INT;
+
+ const hid_t attribute = H5Acreate (dataset, name, datatype, dataspace, H5P_DEFAULT);
+ assert (attribute>=0);
+ herr = H5Awrite (attribute, datatype, values);
+ assert (!herr);
+ herr = H5Aclose (attribute);
+ assert (!herr);
+
+ herr = H5Sclose (dataspace);
+ assert (!herr);
+ }
+
+
+
+ void WriteAttribute (const hid_t dataset, const char* const name, const double value)
+ {
+ WriteAttribute (dataset, name, &value, 1);
+ }
+
+ void WriteAttribute (const hid_t dataset, const char* const name, const double* const values, const int nvalues)
+ {
+ assert (dataset>=0);
+ assert (name);
+ assert (values);
+ assert (nvalues>=0);
+
+ herr_t herr;
+
+ hsize_t shape[1];
+ shape[0] = nvalues;
+ const hid_t dataspace = nvalues==1 ? H5Screate (H5S_SCALAR) : H5Screate_simple (1, shape, NULL);
+ assert (dataspace>=0);
+
+ const hid_t datatype = H5T_NATIVE_DOUBLE;
+
+ const hid_t attribute = H5Acreate (dataset, name, datatype, dataspace, H5P_DEFAULT);
+ assert (attribute>=0);
+ herr = H5Awrite (attribute, datatype, values);
+ assert (!herr);
+ herr = H5Aclose (attribute);
+ assert (!herr);
+
+ herr = H5Sclose (dataspace);
+ assert (!herr);
+ }
+
+
+
+ void WriteAttribute (const hid_t dataset, const char* const name, const char value)
+ {
+ WriteAttribute (dataset, name, &value, 1);
+ }
+
+ void WriteAttribute (const hid_t dataset, const char* const name, const char* const values)
+ {
+ WriteAttribute (dataset, name, values, strlen(values));
+ }
+
+ void WriteAttribute (const hid_t dataset, const char* const name, const char* const values, const int nvalues)
+ {
+ assert (dataset>=0);
+ assert (name);
+ assert (values);
+ assert (nvalues>=0);
+
+ herr_t herr;
+
+ const hid_t dataspace = H5Screate (H5S_SCALAR);
+ assert (dataspace>=0);
+
+ const hid_t datatype = H5Tcopy (H5T_C_S1);
+ assert (datatype>=0);
+ herr = H5Tset_size (datatype, nvalues);
+ assert (!herr);
+
+ const hid_t attribute = H5Acreate (dataset, name, datatype, dataspace, H5P_DEFAULT);
+ assert (attribute>=0);
+ herr = H5Awrite (attribute, datatype, values);
+ assert (!herr);
+ herr = H5Aclose (attribute);
+ assert (!herr);
+
+ herr = H5Tclose (datatype);
+ assert (!herr);
+
+ herr = H5Sclose (dataspace);
+ assert (!herr);
+ }
+
+
+
+ int ReadAttribute (const hid_t dataset, const char* const name, int& value)
+ {
+ return ReadAttribute (dataset, name, &value, 1);
+ }
+
+ int ReadAttribute (const hid_t dataset, const char* name, int* const values, const int nvalues)
+ {
+ assert (dataset>=0);
+ assert (name);
+ assert (values);
+ assert (nvalues>=0);
+
+ herr_t herr;
+
+ const hid_t attribute = H5Aopen_name (dataset, name);
+ if (attribute<0) return attribute;
+
+ const hid_t dataspace = H5Aget_space (attribute);
+ assert (dataspace>=0);
+
+ // cout << "reading int attribute " << name << endl;
+
+ hsize_t rank = H5Sget_simple_extent_ndims (dataspace);
+ hsize_t shape[1];
+ if (rank==0) {
+ shape[0] = 1;
+ } else if (rank==1) {
+ herr = H5Sget_simple_extent_dims (dataspace, shape, NULL);
+ assert (herr >= 0);
+ } else {
+ assert (0);
+ }
+ const int length = shape[0];
+
+ const hid_t datatype = H5Aget_type (attribute);
+ assert (datatype>=0);
+
+ assert(H5Tequal(datatype, H5T_NATIVE_INT));
+
+ vector<int> values1(length);
+
+ herr = H5Aread (attribute, datatype, &values1.at(0));
+ assert (!herr);
+
+ for (int i=0; i<min(length, nvalues); ++i) {
+ values[i] = values1[i];
+ }
+
+ herr = H5Tclose (datatype);
+ assert (!herr);
+
+ herr = H5Sclose (dataspace);
+ assert (!herr);
+
+ herr = H5Aclose (attribute);
+ assert (!herr);
+
+ return length;
+ }
+
+
+
+ int ReadAttribute (const hid_t dataset, const char* const name, double& value)
+ {
+ return ReadAttribute (dataset, name, &value, 1);
+ }
+
+ int ReadAttribute (const hid_t dataset, const char* const name, double* const values, const int nvalues)
+ {
+ assert (dataset>=0);
+ assert (name);
+ assert (values);
+ assert (nvalues>=0);
+
+ herr_t herr;
+
+ const hid_t attribute = H5Aopen_name (dataset, name);
+ if (attribute<0) return attribute;
+
+ const hid_t dataspace = H5Aget_space (attribute);
+ assert (dataspace>=0);
+
+ hsize_t rank = H5Sget_simple_extent_ndims (dataspace);
+ hsize_t shape[1];
+ if (rank==0) {
+ shape[0] = 1;
+ } else if (rank==1) {
+ rank = H5Sget_simple_extent_dims (dataspace, shape, NULL);
+ assert (rank == 1);
+ } else {
+ assert (0);
+ }
+ const int length = shape[0];
+
+ const hid_t datatype = H5Aget_type (attribute);
+ assert (datatype>=0);
+ assert(H5Tequal(datatype, H5T_NATIVE_DOUBLE));
+
+ vector<double> values1(length);
+
+ herr = H5Aread (attribute, datatype, &values1.at(0));
+ assert (!herr);
+
+ for (int i=0; i<min(length, nvalues); ++i) {
+ values[i] = values1[i];
+ }
+
+ herr = H5Tclose (datatype);
+ assert (!herr);
+
+ herr = H5Sclose (dataspace);
+ assert (!herr);
+
+ herr = H5Aclose (attribute);
+ assert (!herr);
+
+ return length;
+ }
+
+
+
+ int ReadAttribute (const hid_t dataset, const char* const name, char& value)
+ {
+ return ReadAttribute (dataset, name, &value, 1);
+ }
+
+ int ReadAttribute (const hid_t dataset, const char* const name, char*& values)
+ {
+ assert (dataset>=0);
+ assert (name);
+
+ herr_t herr;
+
+ const hid_t attribute = H5Aopen_name (dataset, name);
+ if (attribute<0) return attribute;
+
+ const hid_t dataspace = H5Aget_space (attribute);
+ assert (dataspace>=0);
+
+ hsize_t rank = H5Sget_simple_extent_ndims (dataspace);
+ assert (rank==0);
+
+ const hid_t datatype = H5Aget_type (attribute);
+ assert (datatype>=0);
+ assert (H5Tget_class (datatype) == H5T_STRING);
+ const int length = H5Tget_size (datatype);
+ assert (length>=0);
+
+ values = (char*) malloc (length+1);
+ assert (values);
+
+ herr = H5Aread (attribute, datatype, values);
+ assert (!herr);
+ values[length] = '\0';
+
+ herr = H5Tclose (datatype);
+ assert (!herr);
+
+ herr = H5Sclose (dataspace);
+ assert (!herr);
+
+ herr = H5Aclose (attribute);
+ assert (!herr);
+
+ return length;
+ }
+
+ int ReadAttribute (const hid_t dataset, const char* const name, char* const values, const int nvalues)
+ {
+ assert (dataset>=0);
+ assert (name);
+ assert (values);
+ assert (nvalues>=0);
+
+ herr_t herr;
+
+ const hid_t attribute = H5Aopen_name (dataset, name);
+ if (attribute<0) return attribute;
+
+ const hid_t dataspace = H5Aget_space (attribute);
+ assert (dataspace>=0);
+
+ hsize_t rank = H5Sget_simple_extent_ndims (dataspace);
+ assert (rank==0);
+
+ const hid_t datatype = H5Aget_type (attribute);
+ assert (datatype>=0);
+ assert(H5Tget_class (datatype) == H5T_STRING);
+ const int length = H5Tget_size (datatype);
+ assert (length>=0);
+
+ vector<char> values1(length);
+
+ herr = H5Aread (attribute, datatype, &values1.at(0));
+ assert (!herr);
+
+ for (int i=0; i<min(length, nvalues); ++i) {
+ values[i] = values1[i];
+ }
+
+ herr = H5Tclose (datatype);
+ assert (!herr);
+
+ herr = H5Sclose (dataspace);
+ assert (!herr);
+
+ herr = H5Aclose (attribute);
+ assert (!herr);
+
+ return length;
+ }
+
+ herr_t DatasetCounter(hid_t group_id, const char *member_name, void *operator_data)
+ /* Counts datasets. Used by GetnDatasets; straight from John Shalf's FlexIO library */
+ {
+ int *count = (int*)operator_data;
+ H5G_stat_t objinfo;
+ // request info about the type of objects in root group
+ if(H5Gget_objinfo(group_id,member_name,1 /* follow links */,&objinfo)<0) {
+ return 0;
+ }
+ // only count objects that are datasets (not subgroups)
+ if(objinfo.type==H5G_DATASET) {
+ (*count)++;
+ }
+ return 0;
+ }
+
+
+ int GetnDatasets(const hid_t reader)
+ {
+ //this is straight from John Shalf's FlexIO library
+
+ int count=0;
+ int idx=0;
+ while(H5Giterate(reader, /* hid_t loc_id, */
+ "/", /*const char *name, */
+ &idx, /* int *idx, */
+ DatasetCounter,
+ &count)<0){}
+ return count;
+ }
+
+ struct H5IO_getname_t {
+ //this is straight from John Shalf's FlexIO library
+ int index,count;
+ char *name;
+ };
+
+
+ herr_t GetName(hid_t group_id, const char *member_name, void *operator_data)
+ {
+ //this is straight from John Shalf's FlexIO library
+ H5IO_getname_t *getn = (H5IO_getname_t*)operator_data;
+ // check type first (only respond if it is a dataset)
+ H5G_stat_t objinfo;
+ // request info about the type of objects in root group
+ if(H5Gget_objinfo(group_id,
+ member_name,
+ 1 /* follow links */,
+ &objinfo)<0) return 0; // error (probably bad symlink)
+ // only count objects that are datasets (not subgroups)
+ if(objinfo.type!=H5G_DATASET)
+ return 0; // do not increment count if it isn't a dataset.
+ if(getn->index==getn->count){
+ strcpy(getn->name,member_name);
+ return 1; // success
+ }
+ getn->count++;
+ return 0;
+ }
+
+
+ void GetDatasetName(const hid_t reader, const int _index, char *name) {
+ //this is straight from John Shalf's FlexIO library
+ H5IO_getname_t getn;
+ int idx=_index;
+ getn.index=_index; getn.name=name; getn.count=_index;
+ while(H5Giterate(reader, /* hid_t loc_id, */
+ "/", /*const char *name, */
+ &idx, /* int *idx, */
+ GetName,
+ &getn)<0){}
+ }
+
+ hid_t h5DataType (const cGH* const cctkGH, int cctk_type) {
+
+ hid_t retval;
+
+ CarpetIOHDF5GH *myGH;
+ myGH = (CarpetIOHDF5GH *) CCTK_GHExtension (cctkGH, "CarpetIOHDF5");
+
+ // this is adapted from Thomas Radke's IOHDF5Util. Thanks, Thomas!
+
+ switch (cctk_type)
+ {
+ case CCTK_VARIABLE_CHAR: retval = HDF5_CHAR; break;
+ case CCTK_VARIABLE_INT: retval = HDF5_INT; break;
+ case CCTK_VARIABLE_REAL: retval = HDF5_REAL; break;
+ case CCTK_VARIABLE_COMPLEX: retval = myGH->HDF5_COMPLEX; break;
+#ifdef CCTK_INT1
+ case CCTK_VARIABLE_INT1: retval = HDF5_INT1; break;
+#endif
+#ifdef CCTK_INT2
+ case CCTK_VARIABLE_INT2: retval = HDF5_INT2; break;
+#endif
+#ifdef CCTK_INT4
+ case CCTK_VARIABLE_INT4: retval = HDF5_INT4; break;
+#endif
+#ifdef CCTK_INT8
+ case CCTK_VARIABLE_INT8: retval = HDF5_INT8; break;
+#endif
+#ifdef CCTK_REAL4
+ case CCTK_VARIABLE_REAL4: retval = HDF5_REAL4; break;
+ case CCTK_VARIABLE_COMPLEX8: retval = myGH->HDF5_COMPLEX8; break;
+#endif
+#ifdef CCTK_REAL8
+ case CCTK_VARIABLE_REAL8: retval = HDF5_REAL8; break;
+ case CCTK_VARIABLE_COMPLEX16: retval = myGH->HDF5_COMPLEX16; break;
+#endif
+#ifdef CCTK_REAL16
+ case CCTK_VARIABLE_REAL16: retval = HDF5_REAL16; break;
+ case CCTK_VARIABLE_COMPLEX32: retval = myGH->HDF5_COMPLEX32; break;
+#endif
+
+ default: CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Unsupported CCTK variable datatype %d", cctk_type);
+ retval = -1;
+ }
+
+ return (retval);
+ }
+
+
+
+} // namespace CarpetIOHDF5
diff --git a/Carpet/CarpetIOHDF5/src/make.code.defn b/Carpet/CarpetIOHDF5/src/make.code.defn
new file mode 100644
index 000000000..a8600e812
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/src/make.code.defn
@@ -0,0 +1,5 @@
+# Main make.code.defn file for thorn CarpetIOHDF5
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/make.code.defn,v 1.5 2004/07/09 15:38:18 tradke Exp $
+
+# Source files in this directory
+SRCS = iohdf5.cc iohdf5utils.cc Checkpoint.cc Recover.cc
diff --git a/Carpet/CarpetIOHDF5/src/make.configuration.defn b/Carpet/CarpetIOHDF5/src/make.configuration.defn
new file mode 100644
index 000000000..3de9eea95
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/src/make.configuration.defn
@@ -0,0 +1,7 @@
+# Main make.configuration.defn file for thorn CarpetIOHDF5 -*-Makefile-*-
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/make.configuration.defn,v 1.1 2004/05/04 22:08:37 schnetter Exp $
+
+# Ensure that MPI is available
+ifeq ($(strip $(HAVE_HDF5)), )
+ $(error Configuration error: The CarpetIOHDF5 thorn requires HDF5. Please configure with HDF5, or remove the CarpetIOHDF5 thorn from the ThornList.)
+endif
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.it_64.h5 b/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.it_64.h5
new file mode 100644
index 000000000..bed1b5bb5
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.it_64.h5
Binary files differ
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.parfile b/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.parfile
new file mode 100644
index 000000000..f5d898aa1
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.parfile
@@ -0,0 +1,44 @@
+ActiveThorns = "Boundary CartGrid3D Time CoordBase SymBase Carpet CarpetLib CarpetRegrid CarpetReduce CarpetSlab IOUtil IOBasic CarpetIOASCII CarpetIOHDF5 IDScalarWaveC WaveToyC"
+
+
+Cactus::cctk_itlast = 64
+
+Time::dtfac = 0.5
+
+Grid::avoid_origin = "no"
+Grid::type = "byrange"
+Grid::dxyz = 1
+
+IDScalarWave::initial_data = "gaussian"
+IDScalarWave::sigma = 2.8
+IDScalarWave::radius = 0.0
+
+Driver::global_nsize = 10
+Driver::ghost_size = 2
+
+Carpet::prolongation_order_space = 3
+Carpet::prolongation_order_time = 2
+Carpet::init_each_timelevel = "yes"
+Carpet::buffer_width = 6
+Carpet::max_refinement_levels = 4
+CarpetRegrid::refinement_levels = 4
+
+# Output
+IO::out_dir = $parfile
+IO::out_fileinfo = "none"
+IO::parfile_write = "no"
+
+IOBasic::outInfo_every = 1
+IOBasic::outInfo_vars = "wavetoy::phi"
+IOBasic::outScalar_every = 32
+IOBasic::outScalar_vars = "wavetoy::phi"
+
+IOASCII::out1D_vars = "wavetoy::phi"
+IOASCII::out1D_every = 32
+
+# Checkpointing
+IO::checkpoint_file = $parfile
+IO::checkpoint_every = 32
+
+IOHDF5::checkpoint = "yes"
+IOHDF5::verbose = "yes"
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc.par b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc.par
new file mode 100644
index 000000000..cb72b9b60
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc.par
@@ -0,0 +1,14 @@
+ActiveThorns = "Boundary CartGrid3D Time CoordBase SymBase Carpet CarpetLib CarpetRegrid CarpetReduce CarpetSlab IOUtil IOBasic CarpetIOASCII CarpetIOHDF5 IDScalarWaveC WaveToyC"
+
+
+Cactus::cctk_itlast = 128
+
+# Output
+IO::out_dir = $parfile
+
+# Recovery
+IO::recover_dir = "../../../arrangements/Carpet/CarpetIOHDF5/test"
+IO::recover = "manual"
+IO::recover_file = "CarpetWaveToyCheckpoint_test.it_64"
+
+IOHDF5::checkpoint = "no"
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.x.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.x.asc
new file mode 100644
index 000000000..05526bfeb
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.x.asc
@@ -0,0 +1,227 @@
+# WAVETOY::phi x (phi)
+#
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 0 0 0 40 40 0.888888888888889 -1 0.111111111111111 0.111111111111111 0.873700996777018
+64 0 0 0 0 8 40 40 0.888888888888889 -0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182
+64 0 0 0 0 16 40 40 0.888888888888889 -0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861
+64 0 0 0 0 24 40 40 0.888888888888889 -0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952
+64 0 0 0 0 32 40 40 0.888888888888889 -0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 0 0 48 40 40 0.888888888888889 0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952
+64 0 0 0 0 56 40 40 0.888888888888889 0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861
+64 0 0 0 0 64 40 40 0.888888888888889 0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182
+64 0 0 0 0 72 40 40 0.888888888888889 1 0.111111111111111 0.111111111111111 0.873700996777018
+
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 0 0 8 36 36 0.888888888888889 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.808379332677938
+64 0 1 0 0 12 36 36 0.888888888888889 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.779665123251561
+64 0 1 0 0 16 36 36 0.888888888888889 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.756097245006156
+64 0 1 0 0 20 36 36 0.888888888888889 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.739694852518638
+64 0 1 0 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213
+64 0 1 0 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574
+64 0 1 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177
+64 0 1 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 1 0 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177
+64 0 1 0 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574
+64 0 1 0 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213
+64 0 1 0 0 52 36 36 0.888888888888889 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.739694852518638
+64 0 1 0 0 56 36 36 0.888888888888889 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.756097245006155
+64 0 1 0 0 60 36 36 0.888888888888889 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.779665123251561
+64 0 1 0 0 64 36 36 0.888888888888889 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.808379332677938
+
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 0 0 22 36 36 0.888888888888889 -0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.733688776948746
+64 0 2 0 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213
+64 0 2 0 0 26 36 36 0.888888888888889 -0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.726552055334392
+64 0 2 0 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574
+64 0 2 0 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.724502518106703
+64 0 2 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177
+64 0 2 0 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.72395273727097
+64 0 2 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 2 0 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.72395273727097
+64 0 2 0 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177
+64 0 2 0 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.724502518106703
+64 0 2 0 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574
+64 0 2 0 0 46 36 36 0.888888888888889 0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.726552055334392
+64 0 2 0 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213
+64 0 2 0 0 50 36 36 0.888888888888889 0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.733688776948745
+
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 0 0 29 36 36 0.888888888888889 -0.194444444444445 -5.55111512312578e-17 -5.55111512312578e-17 0.724720854915558
+64 0 3 0 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.724502518106703
+64 0 3 0 0 31 36 36 0.888888888888889 -0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.724409709543024
+64 0 3 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177
+64 0 3 0 0 33 36 36 0.888888888888889 -0.0833333333333334 -5.55111512312578e-17 -5.55111512312578e-17 0.724151545837958
+64 0 3 0 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.72395273727097
+64 0 3 0 0 35 36 36 0.888888888888889 -0.0277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.723805016719017
+64 0 3 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 3 0 0 37 36 36 0.888888888888889 0.0277777777777777 -5.55111512312578e-17 -5.55111512312578e-17 0.723805016719017
+64 0 3 0 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.72395273727097
+64 0 3 0 0 39 36 36 0.888888888888889 0.0833333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.724151545837958
+64 0 3 0 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177
+64 0 3 0 0 41 36 36 0.888888888888889 0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.724409709543024
+64 0 3 0 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.724502518106703
+64 0 3 0 0 43 36 36 0.888888888888889 0.194444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.724720854915558
+
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 0 0 0 40 40 1.33333333333333 -1 0.111111111111111 0.111111111111111 0.877480603359996
+96 0 0 0 0 8 40 40 1.33333333333333 -0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601
+96 0 0 0 0 16 40 40 1.33333333333333 -0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599
+96 0 0 0 0 24 40 40 1.33333333333333 -0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667
+96 0 0 0 0 32 40 40 1.33333333333333 -0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 0 0 48 40 40 1.33333333333333 0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667
+96 0 0 0 0 56 40 40 1.33333333333333 0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599
+96 0 0 0 0 64 40 40 1.33333333333333 0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601
+96 0 0 0 0 72 40 40 1.33333333333333 1 0.111111111111111 0.111111111111111 0.877480603359996
+
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 0 0 8 36 36 1.33333333333333 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.796688784792057
+96 0 1 0 0 12 36 36 1.33333333333333 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.76190136189151
+96 0 1 0 0 16 36 36 1.33333333333333 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.729928937348657
+96 0 1 0 0 20 36 36 1.33333333333333 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.698215010923196
+96 0 1 0 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157
+96 0 1 0 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296
+96 0 1 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839124
+96 0 1 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 1 0 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839125
+96 0 1 0 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296
+96 0 1 0 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157
+96 0 1 0 0 52 36 36 1.33333333333333 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.698215010923196
+96 0 1 0 0 56 36 36 1.33333333333333 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.729928937348657
+96 0 1 0 0 60 36 36 1.33333333333333 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.76190136189151
+96 0 1 0 0 64 36 36 1.33333333333333 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.796688784792057
+
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 0 0 22 36 36 1.33333333333333 -0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.683302448238139
+96 0 2 0 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157
+96 0 2 0 0 26 36 36 1.33333333333333 -0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.654541556639422
+96 0 2 0 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296
+96 0 2 0 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.630026346765969
+96 0 2 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839124
+96 0 2 0 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.616824486578861
+96 0 2 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 2 0 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.616824486578861
+96 0 2 0 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839125
+96 0 2 0 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.63002634676597
+96 0 2 0 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296
+96 0 2 0 0 46 36 36 1.33333333333333 0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.654541556639422
+96 0 2 0 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157
+96 0 2 0 0 50 36 36 1.33333333333333 0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.683302448238139
+
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 0 0 29 36 36 1.33333333333333 -0.194444444444445 -5.55111512312578e-17 -5.55111512312578e-17 0.63539979750899
+96 0 3 0 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.630026346765969
+96 0 3 0 0 31 36 36 1.33333333333333 -0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.625297419028293
+96 0 3 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839124
+96 0 3 0 0 33 36 36 1.33333333333333 -0.0833333333333334 -5.55111512312578e-17 -5.55111512312578e-17 0.618663308361111
+96 0 3 0 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.616824486578861
+96 0 3 0 0 35 36 36 1.33333333333333 -0.0277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.615777600484678
+96 0 3 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 3 0 0 37 36 36 1.33333333333333 0.0277777777777777 -5.55111512312578e-17 -5.55111512312578e-17 0.615777600484678
+96 0 3 0 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.616824486578861
+96 0 3 0 0 39 36 36 1.33333333333333 0.0833333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.618663308361111
+96 0 3 0 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839125
+96 0 3 0 0 41 36 36 1.33333333333333 0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.625297419028293
+96 0 3 0 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.63002634676597
+96 0 3 0 0 43 36 36 1.33333333333333 0.194444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.63539979750899
+
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 0 0 0 40 40 1.77777777777778 -1 0.111111111111111 0.111111111111111 0.873700996777018
+128 0 0 0 0 8 40 40 1.77777777777778 -0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308
+128 0 0 0 0 16 40 40 1.77777777777778 -0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887
+128 0 0 0 0 24 40 40 1.77777777777778 -0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519
+128 0 0 0 0 32 40 40 1.77777777777778 -0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 0 0 48 40 40 1.77777777777778 0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519
+128 0 0 0 0 56 40 40 1.77777777777778 0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887
+128 0 0 0 0 64 40 40 1.77777777777778 0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308
+128 0 0 0 0 72 40 40 1.77777777777778 1 0.111111111111111 0.111111111111111 0.873700996777018
+
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 0 0 8 36 36 1.77777777777778 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.862653663591007
+128 0 1 0 0 12 36 36 1.77777777777778 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.862560028606905
+128 0 1 0 0 16 36 36 1.77777777777778 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.866965759785718
+128 0 1 0 0 20 36 36 1.77777777777778 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.876167092595071
+128 0 1 0 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397
+128 0 1 0 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.907998184681559
+128 0 1 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888
+128 0 1 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 1 0 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888
+128 0 1 0 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.90799818468156
+128 0 1 0 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397
+128 0 1 0 0 52 36 36 1.77777777777778 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.876167092595071
+128 0 1 0 0 56 36 36 1.77777777777778 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.866965759785718
+128 0 1 0 0 60 36 36 1.77777777777778 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.862560028606905
+128 0 1 0 0 64 36 36 1.77777777777778 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.862653663591007
+
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 0 0 22 36 36 1.77777777777778 -0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.882075542854246
+128 0 2 0 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397
+128 0 2 0 0 26 36 36 1.77777777777778 -0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.898403242286228
+128 0 2 0 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.907998184681559
+128 0 2 0 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.916919384356027
+128 0 2 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888
+128 0 2 0 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.927485951077396
+128 0 2 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 2 0 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.927485951077396
+128 0 2 0 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888
+128 0 2 0 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.916919384356027
+128 0 2 0 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.90799818468156
+128 0 2 0 0 46 36 36 1.77777777777778 0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.898403242286228
+128 0 2 0 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397
+128 0 2 0 0 50 36 36 1.77777777777778 0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.882075542854246
+
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 0 0 29 36 36 1.77777777777778 -0.194444444444445 -5.55111512312578e-17 -5.55111512312578e-17 0.912613836832073
+128 0 3 0 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.916919384356027
+128 0 3 0 0 31 36 36 1.77777777777778 -0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.920818233193455
+128 0 3 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888
+128 0 3 0 0 33 36 36 1.77777777777778 -0.0833333333333334 -5.55111512312578e-17 -5.55111512312578e-17 0.926147880297958
+128 0 3 0 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.927485951077396
+128 0 3 0 0 35 36 36 1.77777777777778 -0.0277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.928209975180567
+128 0 3 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 3 0 0 37 36 36 1.77777777777778 0.0277777777777777 -5.55111512312578e-17 -5.55111512312578e-17 0.928209975180567
+128 0 3 0 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.927485951077396
+128 0 3 0 0 39 36 36 1.77777777777778 0.0833333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.926147880297958
+128 0 3 0 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888
+128 0 3 0 0 41 36 36 1.77777777777778 0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.920818233193455
+128 0 3 0 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.916919384356027
+128 0 3 0 0 43 36 36 1.77777777777778 0.194444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.912613836832073
+
+
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.y.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.y.asc
new file mode 100644
index 000000000..305349452
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.y.asc
@@ -0,0 +1,227 @@
+# WAVETOY::phi y (phi)
+#
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 0 0 40 0 40 0.888888888888889 0.111111111111111 -1 0.111111111111111 0.873700996777018
+64 0 0 0 0 40 8 40 0.888888888888889 0.111111111111111 -0.777777777777778 0.111111111111111 0.807676282684182
+64 0 0 0 0 40 16 40 0.888888888888889 0.111111111111111 -0.555555555555556 0.111111111111111 0.756699260944861
+64 0 0 0 0 40 24 40 0.888888888888889 0.111111111111111 -0.333333333333333 0.111111111111111 0.730294733882952
+64 0 0 0 0 40 32 40 0.888888888888889 0.111111111111111 -0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 0 0 40 48 40 0.888888888888889 0.111111111111111 0.333333333333333 0.111111111111111 0.730294733882952
+64 0 0 0 0 40 56 40 0.888888888888889 0.111111111111111 0.555555555555556 0.111111111111111 0.756699260944861
+64 0 0 0 0 40 64 40 0.888888888888889 0.111111111111111 0.777777777777778 0.111111111111111 0.807676282684182
+64 0 0 0 0 40 72 40 0.888888888888889 0.111111111111111 1 0.111111111111111 0.873700996777018
+
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 0 0 36 8 36 0.888888888888889 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.808379332677938
+64 0 1 0 0 36 12 36 0.888888888888889 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.779665123251562
+64 0 1 0 0 36 16 36 0.888888888888889 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.756097245006156
+64 0 1 0 0 36 20 36 0.888888888888889 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.739694852518638
+64 0 1 0 0 36 24 36 0.888888888888889 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.729218296316213
+64 0 1 0 0 36 28 36 0.888888888888889 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.725100663327575
+64 0 1 0 0 36 32 36 0.888888888888889 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.724342898925177
+64 0 1 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 1 0 0 36 40 36 0.888888888888889 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.724342898925177
+64 0 1 0 0 36 44 36 0.888888888888889 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.725100663327574
+64 0 1 0 0 36 48 36 0.888888888888889 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.729218296316213
+64 0 1 0 0 36 52 36 0.888888888888889 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.739694852518638
+64 0 1 0 0 36 56 36 0.888888888888889 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.756097245006155
+64 0 1 0 0 36 60 36 0.888888888888889 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.779665123251561
+64 0 1 0 0 36 64 36 0.888888888888889 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.808379332677938
+
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 0 0 36 22 36 0.888888888888889 -5.55111512312578e-17 -0.388888888888889 -5.55111512312578e-17 0.733688776948746
+64 0 2 0 0 36 24 36 0.888888888888889 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.729218296316213
+64 0 2 0 0 36 26 36 0.888888888888889 -5.55111512312578e-17 -0.277777777777778 -5.55111512312578e-17 0.726552055334392
+64 0 2 0 0 36 28 36 0.888888888888889 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.725100663327575
+64 0 2 0 0 36 30 36 0.888888888888889 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.724502518106703
+64 0 2 0 0 36 32 36 0.888888888888889 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.724342898925177
+64 0 2 0 0 36 34 36 0.888888888888889 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.72395273727097
+64 0 2 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 2 0 0 36 38 36 0.888888888888889 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.72395273727097
+64 0 2 0 0 36 40 36 0.888888888888889 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.724342898925177
+64 0 2 0 0 36 42 36 0.888888888888889 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.724502518106703
+64 0 2 0 0 36 44 36 0.888888888888889 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.725100663327574
+64 0 2 0 0 36 46 36 0.888888888888889 -5.55111512312578e-17 0.277777777777778 -5.55111512312578e-17 0.726552055334392
+64 0 2 0 0 36 48 36 0.888888888888889 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.729218296316213
+64 0 2 0 0 36 50 36 0.888888888888889 -5.55111512312578e-17 0.388888888888889 -5.55111512312578e-17 0.733688776948745
+
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 0 0 36 29 36 0.888888888888889 -5.55111512312578e-17 -0.194444444444445 -5.55111512312578e-17 0.724720854915558
+64 0 3 0 0 36 30 36 0.888888888888889 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.724502518106703
+64 0 3 0 0 36 31 36 0.888888888888889 -5.55111512312578e-17 -0.138888888888889 -5.55111512312578e-17 0.724409709543024
+64 0 3 0 0 36 32 36 0.888888888888889 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.724342898925177
+64 0 3 0 0 36 33 36 0.888888888888889 -5.55111512312578e-17 -0.0833333333333334 -5.55111512312578e-17 0.724151545837958
+64 0 3 0 0 36 34 36 0.888888888888889 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.72395273727097
+64 0 3 0 0 36 35 36 0.888888888888889 -5.55111512312578e-17 -0.0277777777777778 -5.55111512312578e-17 0.723805016719017
+64 0 3 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 3 0 0 36 37 36 0.888888888888889 -5.55111512312578e-17 0.0277777777777777 -5.55111512312578e-17 0.723805016719017
+64 0 3 0 0 36 38 36 0.888888888888889 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.72395273727097
+64 0 3 0 0 36 39 36 0.888888888888889 -5.55111512312578e-17 0.0833333333333333 -5.55111512312578e-17 0.724151545837958
+64 0 3 0 0 36 40 36 0.888888888888889 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.724342898925177
+64 0 3 0 0 36 41 36 0.888888888888889 -5.55111512312578e-17 0.138888888888889 -5.55111512312578e-17 0.724409709543024
+64 0 3 0 0 36 42 36 0.888888888888889 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.724502518106703
+64 0 3 0 0 36 43 36 0.888888888888889 -5.55111512312578e-17 0.194444444444444 -5.55111512312578e-17 0.724720854915558
+
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 0 0 40 0 40 1.33333333333333 0.111111111111111 -1 0.111111111111111 0.877480603359996
+96 0 0 0 0 40 8 40 1.33333333333333 0.111111111111111 -0.777777777777778 0.111111111111111 0.798008089475601
+96 0 0 0 0 40 16 40 1.33333333333333 0.111111111111111 -0.555555555555556 0.111111111111111 0.735090597558599
+96 0 0 0 0 40 24 40 1.33333333333333 0.111111111111111 -0.333333333333333 0.111111111111111 0.677899959110667
+96 0 0 0 0 40 32 40 1.33333333333333 0.111111111111111 -0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 0 0 40 48 40 1.33333333333333 0.111111111111111 0.333333333333333 0.111111111111111 0.677899959110667
+96 0 0 0 0 40 56 40 1.33333333333333 0.111111111111111 0.555555555555556 0.111111111111111 0.735090597558599
+96 0 0 0 0 40 64 40 1.33333333333333 0.111111111111111 0.777777777777778 0.111111111111111 0.798008089475601
+96 0 0 0 0 40 72 40 1.33333333333333 0.111111111111111 1 0.111111111111111 0.877480603359996
+
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 0 0 36 8 36 1.33333333333333 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.796688784792057
+96 0 1 0 0 36 12 36 1.33333333333333 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.76190136189151
+96 0 1 0 0 36 16 36 1.33333333333333 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.729928937348657
+96 0 1 0 0 36 20 36 1.33333333333333 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.698215010923196
+96 0 1 0 0 36 24 36 1.33333333333333 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.668908746807157
+96 0 1 0 0 36 28 36 1.33333333333333 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.641345710414296
+96 0 1 0 0 36 32 36 1.33333333333333 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.621410197839124
+96 0 1 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 1 0 0 36 40 36 1.33333333333333 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.621410197839125
+96 0 1 0 0 36 44 36 1.33333333333333 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.641345710414297
+96 0 1 0 0 36 48 36 1.33333333333333 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.668908746807157
+96 0 1 0 0 36 52 36 1.33333333333333 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.698215010923196
+96 0 1 0 0 36 56 36 1.33333333333333 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.729928937348657
+96 0 1 0 0 36 60 36 1.33333333333333 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.76190136189151
+96 0 1 0 0 36 64 36 1.33333333333333 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.796688784792057
+
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 0 0 36 22 36 1.33333333333333 -5.55111512312578e-17 -0.388888888888889 -5.55111512312578e-17 0.683302448238139
+96 0 2 0 0 36 24 36 1.33333333333333 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.668908746807157
+96 0 2 0 0 36 26 36 1.33333333333333 -5.55111512312578e-17 -0.277777777777778 -5.55111512312578e-17 0.654541556639422
+96 0 2 0 0 36 28 36 1.33333333333333 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.641345710414296
+96 0 2 0 0 36 30 36 1.33333333333333 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.630026346765969
+96 0 2 0 0 36 32 36 1.33333333333333 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.621410197839124
+96 0 2 0 0 36 34 36 1.33333333333333 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.616824486578861
+96 0 2 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 2 0 0 36 38 36 1.33333333333333 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.616824486578861
+96 0 2 0 0 36 40 36 1.33333333333333 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.621410197839125
+96 0 2 0 0 36 42 36 1.33333333333333 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.63002634676597
+96 0 2 0 0 36 44 36 1.33333333333333 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.641345710414297
+96 0 2 0 0 36 46 36 1.33333333333333 -5.55111512312578e-17 0.277777777777778 -5.55111512312578e-17 0.654541556639422
+96 0 2 0 0 36 48 36 1.33333333333333 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.668908746807157
+96 0 2 0 0 36 50 36 1.33333333333333 -5.55111512312578e-17 0.388888888888889 -5.55111512312578e-17 0.683302448238139
+
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 0 0 36 29 36 1.33333333333333 -5.55111512312578e-17 -0.194444444444445 -5.55111512312578e-17 0.63539979750899
+96 0 3 0 0 36 30 36 1.33333333333333 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.630026346765969
+96 0 3 0 0 36 31 36 1.33333333333333 -5.55111512312578e-17 -0.138888888888889 -5.55111512312578e-17 0.625297419028293
+96 0 3 0 0 36 32 36 1.33333333333333 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.621410197839124
+96 0 3 0 0 36 33 36 1.33333333333333 -5.55111512312578e-17 -0.0833333333333334 -5.55111512312578e-17 0.618663308361111
+96 0 3 0 0 36 34 36 1.33333333333333 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.616824486578861
+96 0 3 0 0 36 35 36 1.33333333333333 -5.55111512312578e-17 -0.0277777777777778 -5.55111512312578e-17 0.615777600484678
+96 0 3 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 3 0 0 36 37 36 1.33333333333333 -5.55111512312578e-17 0.0277777777777777 -5.55111512312578e-17 0.615777600484678
+96 0 3 0 0 36 38 36 1.33333333333333 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.616824486578861
+96 0 3 0 0 36 39 36 1.33333333333333 -5.55111512312578e-17 0.0833333333333333 -5.55111512312578e-17 0.618663308361111
+96 0 3 0 0 36 40 36 1.33333333333333 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.621410197839125
+96 0 3 0 0 36 41 36 1.33333333333333 -5.55111512312578e-17 0.138888888888889 -5.55111512312578e-17 0.625297419028293
+96 0 3 0 0 36 42 36 1.33333333333333 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.63002634676597
+96 0 3 0 0 36 43 36 1.33333333333333 -5.55111512312578e-17 0.194444444444444 -5.55111512312578e-17 0.63539979750899
+
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 0 0 40 0 40 1.77777777777778 0.111111111111111 -1 0.111111111111111 0.873700996777018
+128 0 0 0 0 40 8 40 1.77777777777778 0.111111111111111 -0.777777777777778 0.111111111111111 0.859471717622308
+128 0 0 0 0 40 16 40 1.77777777777778 0.111111111111111 -0.555555555555556 0.111111111111111 0.863004424640887
+128 0 0 0 0 40 24 40 1.77777777777778 0.111111111111111 -0.333333333333333 0.111111111111111 0.883486952153519
+128 0 0 0 0 40 32 40 1.77777777777778 0.111111111111111 -0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 0 0 40 48 40 1.77777777777778 0.111111111111111 0.333333333333333 0.111111111111111 0.883486952153519
+128 0 0 0 0 40 56 40 1.77777777777778 0.111111111111111 0.555555555555556 0.111111111111111 0.863004424640887
+128 0 0 0 0 40 64 40 1.77777777777778 0.111111111111111 0.777777777777778 0.111111111111111 0.859471717622308
+128 0 0 0 0 40 72 40 1.77777777777778 0.111111111111111 1 0.111111111111111 0.873700996777018
+
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 0 0 36 8 36 1.77777777777778 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.862653663591007
+128 0 1 0 0 36 12 36 1.77777777777778 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.862560028606905
+128 0 1 0 0 36 16 36 1.77777777777778 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.866965759785718
+128 0 1 0 0 36 20 36 1.77777777777778 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.876167092595071
+128 0 1 0 0 36 24 36 1.77777777777778 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.889185421864397
+128 0 1 0 0 36 28 36 1.77777777777778 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.907998184681559
+128 0 1 0 0 36 32 36 1.77777777777778 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.924033489738888
+128 0 1 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 1 0 0 36 40 36 1.77777777777778 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.924033489738888
+128 0 1 0 0 36 44 36 1.77777777777778 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.907998184681559
+128 0 1 0 0 36 48 36 1.77777777777778 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.889185421864397
+128 0 1 0 0 36 52 36 1.77777777777778 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.876167092595071
+128 0 1 0 0 36 56 36 1.77777777777778 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.866965759785718
+128 0 1 0 0 36 60 36 1.77777777777778 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.862560028606905
+128 0 1 0 0 36 64 36 1.77777777777778 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.862653663591007
+
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 0 0 36 22 36 1.77777777777778 -5.55111512312578e-17 -0.388888888888889 -5.55111512312578e-17 0.882075542854246
+128 0 2 0 0 36 24 36 1.77777777777778 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.889185421864397
+128 0 2 0 0 36 26 36 1.77777777777778 -5.55111512312578e-17 -0.277777777777778 -5.55111512312578e-17 0.898403242286228
+128 0 2 0 0 36 28 36 1.77777777777778 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.907998184681559
+128 0 2 0 0 36 30 36 1.77777777777778 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.916919384356027
+128 0 2 0 0 36 32 36 1.77777777777778 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.924033489738888
+128 0 2 0 0 36 34 36 1.77777777777778 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.927485951077396
+128 0 2 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 2 0 0 36 38 36 1.77777777777778 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.927485951077396
+128 0 2 0 0 36 40 36 1.77777777777778 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.924033489738888
+128 0 2 0 0 36 42 36 1.77777777777778 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.916919384356027
+128 0 2 0 0 36 44 36 1.77777777777778 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.907998184681559
+128 0 2 0 0 36 46 36 1.77777777777778 -5.55111512312578e-17 0.277777777777778 -5.55111512312578e-17 0.898403242286228
+128 0 2 0 0 36 48 36 1.77777777777778 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.889185421864397
+128 0 2 0 0 36 50 36 1.77777777777778 -5.55111512312578e-17 0.388888888888889 -5.55111512312578e-17 0.882075542854246
+
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 0 0 36 29 36 1.77777777777778 -5.55111512312578e-17 -0.194444444444445 -5.55111512312578e-17 0.912613836832073
+128 0 3 0 0 36 30 36 1.77777777777778 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.916919384356027
+128 0 3 0 0 36 31 36 1.77777777777778 -5.55111512312578e-17 -0.138888888888889 -5.55111512312578e-17 0.920818233193455
+128 0 3 0 0 36 32 36 1.77777777777778 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.924033489738888
+128 0 3 0 0 36 33 36 1.77777777777778 -5.55111512312578e-17 -0.0833333333333334 -5.55111512312578e-17 0.926147880297958
+128 0 3 0 0 36 34 36 1.77777777777778 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.927485951077396
+128 0 3 0 0 36 35 36 1.77777777777778 -5.55111512312578e-17 -0.0277777777777778 -5.55111512312578e-17 0.928209975180567
+128 0 3 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 3 0 0 36 37 36 1.77777777777778 -5.55111512312578e-17 0.0277777777777777 -5.55111512312578e-17 0.928209975180567
+128 0 3 0 0 36 38 36 1.77777777777778 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.927485951077396
+128 0 3 0 0 36 39 36 1.77777777777778 -5.55111512312578e-17 0.0833333333333333 -5.55111512312578e-17 0.926147880297958
+128 0 3 0 0 36 40 36 1.77777777777778 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.924033489738888
+128 0 3 0 0 36 41 36 1.77777777777778 -5.55111512312578e-17 0.138888888888889 -5.55111512312578e-17 0.920818233193455
+128 0 3 0 0 36 42 36 1.77777777777778 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.916919384356027
+128 0 3 0 0 36 43 36 1.77777777777778 -5.55111512312578e-17 0.194444444444444 -5.55111512312578e-17 0.912613836832073
+
+
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.z.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.z.asc
new file mode 100644
index 000000000..8868db22c
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.z.asc
@@ -0,0 +1,227 @@
+# WAVETOY::phi z (phi)
+#
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 0 0 40 40 0 0.888888888888889 0.111111111111111 0.111111111111111 -1 0.873700996777018
+64 0 0 0 0 40 40 8 0.888888888888889 0.111111111111111 0.111111111111111 -0.777777777777778 0.807676282684182
+64 0 0 0 0 40 40 16 0.888888888888889 0.111111111111111 0.111111111111111 -0.555555555555556 0.756699260944861
+64 0 0 0 0 40 40 24 0.888888888888889 0.111111111111111 0.111111111111111 -0.333333333333333 0.730294733882952
+64 0 0 0 0 40 40 32 0.888888888888889 0.111111111111111 0.111111111111111 -0.111111111111111 0.725539249473295
+64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 0 0 40 40 48 0.888888888888889 0.111111111111111 0.111111111111111 0.333333333333333 0.730294733882952
+64 0 0 0 0 40 40 56 0.888888888888889 0.111111111111111 0.111111111111111 0.555555555555556 0.756699260944861
+64 0 0 0 0 40 40 64 0.888888888888889 0.111111111111111 0.111111111111111 0.777777777777778 0.807676282684182
+64 0 0 0 0 40 40 72 0.888888888888889 0.111111111111111 0.111111111111111 1 0.873700996777018
+
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 0 0 36 36 8 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.808379332677938
+64 0 1 0 0 36 36 12 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.779665123251562
+64 0 1 0 0 36 36 16 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.756097245006156
+64 0 1 0 0 36 36 20 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.739694852518638
+64 0 1 0 0 36 36 24 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213
+64 0 1 0 0 36 36 28 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574
+64 0 1 0 0 36 36 32 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177
+64 0 1 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 1 0 0 36 36 40 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+64 0 1 0 0 36 36 44 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574
+64 0 1 0 0 36 36 48 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213
+64 0 1 0 0 36 36 52 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.739694852518638
+64 0 1 0 0 36 36 56 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.756097245006155
+64 0 1 0 0 36 36 60 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.779665123251561
+64 0 1 0 0 36 36 64 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.808379332677938
+
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 0 0 36 36 22 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.388888888888889 0.733688776948746
+64 0 2 0 0 36 36 24 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213
+64 0 2 0 0 36 36 26 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.277777777777778 0.726552055334392
+64 0 2 0 0 36 36 28 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574
+64 0 2 0 0 36 36 30 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.724502518106703
+64 0 2 0 0 36 36 32 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177
+64 0 2 0 0 36 36 34 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097
+64 0 2 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 2 0 0 36 36 38 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.72395273727097
+64 0 2 0 0 36 36 40 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+64 0 2 0 0 36 36 42 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.724502518106703
+64 0 2 0 0 36 36 44 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574
+64 0 2 0 0 36 36 46 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.277777777777778 0.726552055334391
+64 0 2 0 0 36 36 48 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213
+64 0 2 0 0 36 36 50 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.388888888888889 0.733688776948745
+
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 0 0 36 36 29 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.194444444444445 0.724720854915558
+64 0 3 0 0 36 36 30 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.724502518106703
+64 0 3 0 0 36 36 31 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.138888888888889 0.724409709543024
+64 0 3 0 0 36 36 32 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177
+64 0 3 0 0 36 36 33 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.0833333333333334 0.724151545837958
+64 0 3 0 0 36 36 34 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097
+64 0 3 0 0 36 36 35 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.0277777777777778 0.723805016719017
+64 0 3 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 3 0 0 36 36 37 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.0277777777777777 0.723805016719017
+64 0 3 0 0 36 36 38 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.72395273727097
+64 0 3 0 0 36 36 39 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.0833333333333333 0.724151545837958
+64 0 3 0 0 36 36 40 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+64 0 3 0 0 36 36 41 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.138888888888889 0.724409709543024
+64 0 3 0 0 36 36 42 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.724502518106703
+64 0 3 0 0 36 36 43 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.194444444444444 0.724720854915557
+
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 0 0 40 40 0 1.33333333333333 0.111111111111111 0.111111111111111 -1 0.877480603359996
+96 0 0 0 0 40 40 8 1.33333333333333 0.111111111111111 0.111111111111111 -0.777777777777778 0.798008089475601
+96 0 0 0 0 40 40 16 1.33333333333333 0.111111111111111 0.111111111111111 -0.555555555555556 0.735090597558599
+96 0 0 0 0 40 40 24 1.33333333333333 0.111111111111111 0.111111111111111 -0.333333333333333 0.677899959110667
+96 0 0 0 0 40 40 32 1.33333333333333 0.111111111111111 0.111111111111111 -0.111111111111111 0.632828813666694
+96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 0 0 40 40 48 1.33333333333333 0.111111111111111 0.111111111111111 0.333333333333333 0.677899959110667
+96 0 0 0 0 40 40 56 1.33333333333333 0.111111111111111 0.111111111111111 0.555555555555556 0.735090597558599
+96 0 0 0 0 40 40 64 1.33333333333333 0.111111111111111 0.111111111111111 0.777777777777778 0.798008089475601
+96 0 0 0 0 40 40 72 1.33333333333333 0.111111111111111 0.111111111111111 1 0.877480603359996
+
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 0 0 36 36 8 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.796688784792057
+96 0 1 0 0 36 36 12 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.76190136189151
+96 0 1 0 0 36 36 16 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.729928937348657
+96 0 1 0 0 36 36 20 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.698215010923196
+96 0 1 0 0 36 36 24 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157
+96 0 1 0 0 36 36 28 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296
+96 0 1 0 0 36 36 32 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124
+96 0 1 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 1 0 0 36 36 40 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+96 0 1 0 0 36 36 44 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297
+96 0 1 0 0 36 36 48 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157
+96 0 1 0 0 36 36 52 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.698215010923196
+96 0 1 0 0 36 36 56 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.729928937348657
+96 0 1 0 0 36 36 60 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.76190136189151
+96 0 1 0 0 36 36 64 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.796688784792057
+
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 0 0 36 36 22 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.388888888888889 0.683302448238139
+96 0 2 0 0 36 36 24 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157
+96 0 2 0 0 36 36 26 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.277777777777778 0.654541556639422
+96 0 2 0 0 36 36 28 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296
+96 0 2 0 0 36 36 30 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.630026346765969
+96 0 2 0 0 36 36 32 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124
+96 0 2 0 0 36 36 34 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861
+96 0 2 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 2 0 0 36 36 38 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.616824486578861
+96 0 2 0 0 36 36 40 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+96 0 2 0 0 36 36 42 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.63002634676597
+96 0 2 0 0 36 36 44 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297
+96 0 2 0 0 36 36 46 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.277777777777778 0.654541556639422
+96 0 2 0 0 36 36 48 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157
+96 0 2 0 0 36 36 50 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.388888888888889 0.683302448238139
+
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 0 0 36 36 29 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.194444444444445 0.63539979750899
+96 0 3 0 0 36 36 30 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.630026346765969
+96 0 3 0 0 36 36 31 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.138888888888889 0.625297419028293
+96 0 3 0 0 36 36 32 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124
+96 0 3 0 0 36 36 33 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.0833333333333334 0.618663308361111
+96 0 3 0 0 36 36 34 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861
+96 0 3 0 0 36 36 35 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.0277777777777778 0.615777600484678
+96 0 3 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 3 0 0 36 36 37 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.0277777777777777 0.615777600484678
+96 0 3 0 0 36 36 38 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.616824486578861
+96 0 3 0 0 36 36 39 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.0833333333333333 0.618663308361111
+96 0 3 0 0 36 36 40 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+96 0 3 0 0 36 36 41 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.138888888888889 0.625297419028293
+96 0 3 0 0 36 36 42 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.63002634676597
+96 0 3 0 0 36 36 43 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.194444444444444 0.63539979750899
+
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 0 0 40 40 0 1.77777777777778 0.111111111111111 0.111111111111111 -1 0.873700996777018
+128 0 0 0 0 40 40 8 1.77777777777778 0.111111111111111 0.111111111111111 -0.777777777777778 0.859471717622308
+128 0 0 0 0 40 40 16 1.77777777777778 0.111111111111111 0.111111111111111 -0.555555555555556 0.863004424640887
+128 0 0 0 0 40 40 24 1.77777777777778 0.111111111111111 0.111111111111111 -0.333333333333333 0.883486952153519
+128 0 0 0 0 40 40 32 1.77777777777778 0.111111111111111 0.111111111111111 -0.111111111111111 0.915799135771738
+128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 0 0 40 40 48 1.77777777777778 0.111111111111111 0.111111111111111 0.333333333333333 0.883486952153519
+128 0 0 0 0 40 40 56 1.77777777777778 0.111111111111111 0.111111111111111 0.555555555555556 0.863004424640887
+128 0 0 0 0 40 40 64 1.77777777777778 0.111111111111111 0.111111111111111 0.777777777777778 0.859471717622308
+128 0 0 0 0 40 40 72 1.77777777777778 0.111111111111111 0.111111111111111 1 0.873700996777018
+
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 0 0 36 36 8 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.862653663591007
+128 0 1 0 0 36 36 12 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.862560028606905
+128 0 1 0 0 36 36 16 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.866965759785718
+128 0 1 0 0 36 36 20 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.876167092595071
+128 0 1 0 0 36 36 24 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397
+128 0 1 0 0 36 36 28 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156
+128 0 1 0 0 36 36 32 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888
+128 0 1 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 1 0 0 36 36 40 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+128 0 1 0 0 36 36 44 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156
+128 0 1 0 0 36 36 48 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397
+128 0 1 0 0 36 36 52 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.876167092595071
+128 0 1 0 0 36 36 56 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.866965759785718
+128 0 1 0 0 36 36 60 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.862560028606905
+128 0 1 0 0 36 36 64 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.862653663591007
+
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 0 0 36 36 22 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.388888888888889 0.882075542854246
+128 0 2 0 0 36 36 24 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397
+128 0 2 0 0 36 36 26 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.277777777777778 0.898403242286228
+128 0 2 0 0 36 36 28 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156
+128 0 2 0 0 36 36 30 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.916919384356027
+128 0 2 0 0 36 36 32 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888
+128 0 2 0 0 36 36 34 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396
+128 0 2 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 2 0 0 36 36 38 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.927485951077396
+128 0 2 0 0 36 36 40 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+128 0 2 0 0 36 36 42 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.916919384356027
+128 0 2 0 0 36 36 44 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156
+128 0 2 0 0 36 36 46 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.277777777777778 0.898403242286228
+128 0 2 0 0 36 36 48 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397
+128 0 2 0 0 36 36 50 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.388888888888889 0.882075542854246
+
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 0 0 36 36 29 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.194444444444445 0.912613836832073
+128 0 3 0 0 36 36 30 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.916919384356027
+128 0 3 0 0 36 36 31 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.138888888888889 0.920818233193455
+128 0 3 0 0 36 36 32 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888
+128 0 3 0 0 36 36 33 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.0833333333333334 0.926147880297958
+128 0 3 0 0 36 36 34 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396
+128 0 3 0 0 36 36 35 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.0277777777777778 0.928209975180567
+128 0 3 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 3 0 0 36 36 37 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.0277777777777777 0.928209975180567
+128 0 3 0 0 36 36 38 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.927485951077396
+128 0 3 0 0 36 36 39 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.0833333333333333 0.926147880297958
+128 0 3 0 0 36 36 40 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+128 0 3 0 0 36 36 41 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.138888888888889 0.920818233193455
+128 0 3 0 0 36 36 42 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.916919384356027
+128 0 3 0 0 36 36 43 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.194444444444444 0.912613836832073
+
+
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_maximum.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_maximum.xg
new file mode 100644
index 000000000..e25d17d43
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_maximum.xg
@@ -0,0 +1,4 @@
+"phi v time
+0.8888888888889 0.8737009967770
+1.3333333333333 0.8774806033600
+1.7777777777778 0.9157991357717
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_minimum.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_minimum.xg
new file mode 100644
index 000000000..973172b6d
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_minimum.xg
@@ -0,0 +1,4 @@
+"phi v time
+0.8888888888889 0.6796516032334
+1.3333333333333 0.6328288136667
+1.7777777777778 0.6796516032334
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm1.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm1.xg
new file mode 100644
index 000000000..6e8792bca
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm1.xg
@@ -0,0 +1,4 @@
+"phi v time
+0.8888888888889 0.7927895664365
+1.3333333333333 0.7914772512610
+1.7777777777778 0.8208628581415
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm2.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm2.xg
new file mode 100644
index 000000000..124c22eda
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm2.xg
@@ -0,0 +1,4 @@
+"phi v time
+0.8888888888889 0.7937177688028
+1.3333333333333 0.7927587735574
+1.7777777777778 0.8218200985038
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc.par b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc.par
new file mode 100644
index 000000000..cb72b9b60
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc.par
@@ -0,0 +1,14 @@
+ActiveThorns = "Boundary CartGrid3D Time CoordBase SymBase Carpet CarpetLib CarpetRegrid CarpetReduce CarpetSlab IOUtil IOBasic CarpetIOASCII CarpetIOHDF5 IDScalarWaveC WaveToyC"
+
+
+Cactus::cctk_itlast = 128
+
+# Output
+IO::out_dir = $parfile
+
+# Recovery
+IO::recover_dir = "../../../arrangements/Carpet/CarpetIOHDF5/test"
+IO::recover = "manual"
+IO::recover_file = "CarpetWaveToyCheckpoint_test.it_64"
+
+IOHDF5::checkpoint = "no"
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.x.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.x.asc
new file mode 100644
index 000000000..f0d2110bb
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.x.asc
@@ -0,0 +1,632 @@
+# WAVETOY::phi x (phi)
+#
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 0 0 0 40 40 0.888888888888889 -1 0.111111111111111 0.111111111111111 0.873700996777018
+64 0 0 0 0 8 40 40 0.888888888888889 -0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182
+64 0 0 0 0 16 40 40 0.888888888888889 -0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861
+64 0 0 0 0 24 40 40 0.888888888888889 -0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952
+64 0 0 0 0 32 40 40 0.888888888888889 -0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 0 0 48 40 40 0.888888888888889 0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952
+
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 1 0 24 40 40 0.888888888888889 -0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952
+64 0 0 1 0 32 40 40 0.888888888888889 -0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 1 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 1 0 48 40 40 0.888888888888889 0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952
+64 0 0 1 0 56 40 40 0.888888888888889 0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861
+64 0 0 1 0 64 40 40 0.888888888888889 0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182
+64 0 0 1 0 72 40 40 0.888888888888889 1 0.111111111111111 0.111111111111111 0.873700996777018
+
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 2 0 0 40 40 0.888888888888889 -1 0.111111111111111 0.111111111111111 0.873700996777018
+64 0 0 2 0 8 40 40 0.888888888888889 -0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182
+64 0 0 2 0 16 40 40 0.888888888888889 -0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861
+64 0 0 2 0 24 40 40 0.888888888888889 -0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952
+64 0 0 2 0 32 40 40 0.888888888888889 -0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 2 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 2 0 48 40 40 0.888888888888889 0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952
+
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 3 0 24 40 40 0.888888888888889 -0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952
+64 0 0 3 0 32 40 40 0.888888888888889 -0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 3 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 3 0 48 40 40 0.888888888888889 0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952
+64 0 0 3 0 56 40 40 0.888888888888889 0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861
+64 0 0 3 0 64 40 40 0.888888888888889 0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182
+64 0 0 3 0 72 40 40 0.888888888888889 1 0.111111111111111 0.111111111111111 0.873700996777018
+
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 0 0 8 36 36 0.888888888888889 -0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.808379332677938
+64 0 1 0 0 12 36 36 0.888888888888889 -0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.779665123251561
+64 0 1 0 0 16 36 36 0.888888888888889 -0.555555555555556 -5.55111512312578e-17 -9.86623976961809e-17 0.756097245006156
+64 0 1 0 0 20 36 36 0.888888888888889 -0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.739694852518638
+64 0 1 0 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.729218296316213
+64 0 1 0 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.725100663327574
+64 0 1 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.724342898925177
+64 0 1 0 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298
+64 0 1 0 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.724342898925177
+64 0 1 0 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.725100663327574
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 1 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.724342898925177
+64 0 1 1 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298
+64 0 1 1 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.724342898925177
+64 0 1 1 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.725100663327574
+64 0 1 1 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.729218296316213
+64 0 1 1 0 52 36 36 0.888888888888889 0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.739694852518638
+64 0 1 1 0 56 36 36 0.888888888888889 0.555555555555555 -5.55111512312578e-17 -9.86623976961809e-17 0.756097245006155
+64 0 1 1 0 60 36 36 0.888888888888889 0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.779665123251561
+64 0 1 1 0 64 36 36 0.888888888888889 0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.808379332677938
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 2 0 8 36 36 0.888888888888889 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.808379332677938
+64 0 1 2 0 12 36 36 0.888888888888889 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.779665123251561
+64 0 1 2 0 16 36 36 0.888888888888889 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.756097245006156
+64 0 1 2 0 20 36 36 0.888888888888889 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.739694852518638
+64 0 1 2 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213
+64 0 1 2 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574
+64 0 1 2 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177
+64 0 1 2 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 1 2 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177
+64 0 1 2 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 3 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177
+64 0 1 3 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 1 3 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177
+64 0 1 3 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574
+64 0 1 3 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213
+64 0 1 3 0 52 36 36 0.888888888888889 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.739694852518638
+64 0 1 3 0 56 36 36 0.888888888888889 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.756097245006155
+64 0 1 3 0 60 36 36 0.888888888888889 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.779665123251561
+64 0 1 3 0 64 36 36 0.888888888888889 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.808379332677938
+
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 0 0 22 36 36 0.888888888888889 -0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.733688776948746
+64 0 2 0 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.729218296316213
+64 0 2 0 0 26 36 36 0.888888888888889 -0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.726552055334392
+64 0 2 0 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.725100663327574
+64 0 2 0 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.724502518106703
+64 0 2 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.724342898925177
+64 0 2 0 0 34 36 36 0.888888888888889 -0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.72395273727097
+64 0 2 0 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298
+64 0 2 0 0 38 36 36 0.888888888888889 0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.72395273727097
+64 0 2 0 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.724342898925177
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 1 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.72395273727097
+64 0 2 1 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298
+64 0 2 1 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.72395273727097
+64 0 2 1 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.724342898925177
+64 0 2 1 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.724502518106703
+64 0 2 1 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.725100663327574
+64 0 2 1 0 46 36 36 0.888888888888889 0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.726552055334392
+64 0 2 1 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.729218296316213
+64 0 2 1 0 50 36 36 0.888888888888889 0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.733688776948745
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 2 0 22 36 36 0.888888888888889 -0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.733688776948746
+64 0 2 2 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.729218296316213
+64 0 2 2 0 26 36 36 0.888888888888889 -0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.726552055334392
+64 0 2 2 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.725100663327574
+64 0 2 2 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.724502518106703
+64 0 2 2 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.724342898925177
+64 0 2 2 0 34 36 36 0.888888888888889 -0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.72395273727097
+64 0 2 2 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298
+64 0 2 2 0 38 36 36 0.888888888888889 0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.72395273727097
+64 0 2 2 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.724342898925177
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 3 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.72395273727097
+64 0 2 3 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298
+64 0 2 3 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.72395273727097
+64 0 2 3 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.724342898925177
+64 0 2 3 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.724502518106703
+64 0 2 3 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.725100663327574
+64 0 2 3 0 46 36 36 0.888888888888889 0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.726552055334392
+64 0 2 3 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.729218296316213
+64 0 2 3 0 50 36 36 0.888888888888889 0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.733688776948745
+
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 0 0 29 36 36 0.888888888888889 -0.194444444444445 -5.55111512312578e-17 0 0.724720854915558
+64 0 3 0 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 0 0.724502518106703
+64 0 3 0 0 31 36 36 0.888888888888889 -0.138888888888889 -5.55111512312578e-17 0 0.724409709543024
+64 0 3 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 0 0.724342898925177
+64 0 3 0 0 33 36 36 0.888888888888889 -0.0833333333333334 -5.55111512312578e-17 0 0.724151545837958
+64 0 3 0 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 0 0.72395273727097
+64 0 3 0 0 35 36 36 0.888888888888889 -0.0277777777777778 -5.55111512312578e-17 0 0.723805016719017
+64 0 3 0 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 0 0.723733474251298
+64 0 3 0 0 37 36 36 0.888888888888889 0.0277777777777778 -5.55111512312578e-17 0 0.723805016719017
+64 0 3 0 0 38 36 36 0.888888888888889 0.0555555555555556 -5.55111512312578e-17 0 0.72395273727097
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 1 0 35 36 36 0.888888888888889 -0.0277777777777778 -5.55111512312578e-17 0 0.723805016719017
+64 0 3 1 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0 0.723733474251298
+64 0 3 1 0 37 36 36 0.888888888888889 0.0277777777777778 -5.55111512312578e-17 0 0.723805016719017
+64 0 3 1 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 0 0.72395273727097
+64 0 3 1 0 39 36 36 0.888888888888889 0.0833333333333333 -5.55111512312578e-17 0 0.724151545837958
+64 0 3 1 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 0 0.724342898925177
+64 0 3 1 0 41 36 36 0.888888888888889 0.138888888888889 -5.55111512312578e-17 0 0.724409709543024
+64 0 3 1 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 0 0.724502518106703
+64 0 3 1 0 43 36 36 0.888888888888889 0.194444444444444 -5.55111512312578e-17 0 0.724720854915558
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 2 0 29 36 36 0.888888888888889 -0.194444444444445 -5.55111512312578e-17 -1.38777878078145e-17 0.724720854915558
+64 0 3 2 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.724502518106703
+64 0 3 2 0 31 36 36 0.888888888888889 -0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.724409709543024
+64 0 3 2 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.724342898925177
+64 0 3 2 0 33 36 36 0.888888888888889 -0.0833333333333334 -5.55111512312578e-17 -1.38777878078145e-17 0.724151545837958
+64 0 3 2 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.72395273727097
+64 0 3 2 0 35 36 36 0.888888888888889 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.723805016719017
+64 0 3 2 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298
+64 0 3 2 0 37 36 36 0.888888888888889 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.723805016719017
+64 0 3 2 0 38 36 36 0.888888888888889 0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.72395273727097
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 3 0 35 36 36 0.888888888888889 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.723805016719017
+64 0 3 3 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298
+64 0 3 3 0 37 36 36 0.888888888888889 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.723805016719017
+64 0 3 3 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 -1.38777878078145e-17 0.72395273727097
+64 0 3 3 0 39 36 36 0.888888888888889 0.0833333333333333 -5.55111512312578e-17 -1.38777878078145e-17 0.724151545837958
+64 0 3 3 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.724342898925177
+64 0 3 3 0 41 36 36 0.888888888888889 0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.724409709543024
+64 0 3 3 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.724502518106703
+64 0 3 3 0 43 36 36 0.888888888888889 0.194444444444444 -5.55111512312578e-17 -1.38777878078145e-17 0.724720854915558
+
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 0 0 0 40 40 1.33333333333333 -1 0.111111111111111 0.111111111111111 0.877480603359996
+96 0 0 0 0 8 40 40 1.33333333333333 -0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601
+96 0 0 0 0 16 40 40 1.33333333333333 -0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599
+96 0 0 0 0 24 40 40 1.33333333333333 -0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667
+96 0 0 0 0 32 40 40 1.33333333333333 -0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 0 0 48 40 40 1.33333333333333 0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 1 0 24 40 40 1.33333333333333 -0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667
+96 0 0 1 0 32 40 40 1.33333333333333 -0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 1 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 1 0 48 40 40 1.33333333333333 0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667
+96 0 0 1 0 56 40 40 1.33333333333333 0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599
+96 0 0 1 0 64 40 40 1.33333333333333 0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601
+96 0 0 1 0 72 40 40 1.33333333333333 1 0.111111111111111 0.111111111111111 0.877480603359996
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 2 0 0 40 40 1.33333333333333 -1 0.111111111111111 0.111111111111111 0.877480603359996
+96 0 0 2 0 8 40 40 1.33333333333333 -0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601
+96 0 0 2 0 16 40 40 1.33333333333333 -0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599
+96 0 0 2 0 24 40 40 1.33333333333333 -0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667
+96 0 0 2 0 32 40 40 1.33333333333333 -0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 2 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 2 0 48 40 40 1.33333333333333 0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 3 0 24 40 40 1.33333333333333 -0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667
+96 0 0 3 0 32 40 40 1.33333333333333 -0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 3 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 3 0 48 40 40 1.33333333333333 0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667
+96 0 0 3 0 56 40 40 1.33333333333333 0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599
+96 0 0 3 0 64 40 40 1.33333333333333 0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601
+96 0 0 3 0 72 40 40 1.33333333333333 1 0.111111111111111 0.111111111111111 0.877480603359996
+
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 0 0 8 36 36 1.33333333333333 -0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.796688784792057
+96 0 1 0 0 12 36 36 1.33333333333333 -0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.76190136189151
+96 0 1 0 0 16 36 36 1.33333333333333 -0.555555555555556 -5.55111512312578e-17 -9.86623976961809e-17 0.729928937348657
+96 0 1 0 0 20 36 36 1.33333333333333 -0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.698215010923196
+96 0 1 0 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.668908746807157
+96 0 1 0 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.641345710414296
+96 0 1 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.621410197839124
+96 0 1 0 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812
+96 0 1 0 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.621410197839125
+96 0 1 0 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.641345710414296
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 1 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.621410197839124
+96 0 1 1 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812
+96 0 1 1 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.621410197839125
+96 0 1 1 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.641345710414296
+96 0 1 1 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.668908746807157
+96 0 1 1 0 52 36 36 1.33333333333333 0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.698215010923196
+96 0 1 1 0 56 36 36 1.33333333333333 0.555555555555555 -5.55111512312578e-17 -9.86623976961809e-17 0.729928937348657
+96 0 1 1 0 60 36 36 1.33333333333333 0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.76190136189151
+96 0 1 1 0 64 36 36 1.33333333333333 0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.796688784792057
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 2 0 8 36 36 1.33333333333333 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.796688784792057
+96 0 1 2 0 12 36 36 1.33333333333333 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.76190136189151
+96 0 1 2 0 16 36 36 1.33333333333333 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.729928937348657
+96 0 1 2 0 20 36 36 1.33333333333333 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.698215010923196
+96 0 1 2 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157
+96 0 1 2 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296
+96 0 1 2 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839124
+96 0 1 2 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 1 2 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839125
+96 0 1 2 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 3 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839124
+96 0 1 3 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 1 3 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839125
+96 0 1 3 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296
+96 0 1 3 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157
+96 0 1 3 0 52 36 36 1.33333333333333 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.698215010923196
+96 0 1 3 0 56 36 36 1.33333333333333 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.729928937348657
+96 0 1 3 0 60 36 36 1.33333333333333 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.76190136189151
+96 0 1 3 0 64 36 36 1.33333333333333 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.796688784792057
+
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 0 0 22 36 36 1.33333333333333 -0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.683302448238139
+96 0 2 0 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.668908746807157
+96 0 2 0 0 26 36 36 1.33333333333333 -0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.654541556639422
+96 0 2 0 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.641345710414296
+96 0 2 0 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.630026346765969
+96 0 2 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.621410197839124
+96 0 2 0 0 34 36 36 1.33333333333333 -0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.616824486578861
+96 0 2 0 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812
+96 0 2 0 0 38 36 36 1.33333333333333 0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.616824486578861
+96 0 2 0 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.621410197839125
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 1 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.616824486578861
+96 0 2 1 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812
+96 0 2 1 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.616824486578861
+96 0 2 1 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.621410197839125
+96 0 2 1 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.63002634676597
+96 0 2 1 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.641345710414296
+96 0 2 1 0 46 36 36 1.33333333333333 0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.654541556639422
+96 0 2 1 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.668908746807157
+96 0 2 1 0 50 36 36 1.33333333333333 0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.683302448238139
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 2 0 22 36 36 1.33333333333333 -0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.683302448238139
+96 0 2 2 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.668908746807157
+96 0 2 2 0 26 36 36 1.33333333333333 -0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.654541556639422
+96 0 2 2 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.641345710414296
+96 0 2 2 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.630026346765969
+96 0 2 2 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.621410197839124
+96 0 2 2 0 34 36 36 1.33333333333333 -0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.616824486578861
+96 0 2 2 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812
+96 0 2 2 0 38 36 36 1.33333333333333 0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.616824486578861
+96 0 2 2 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.621410197839125
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 3 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.616824486578861
+96 0 2 3 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812
+96 0 2 3 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.616824486578861
+96 0 2 3 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.621410197839125
+96 0 2 3 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.63002634676597
+96 0 2 3 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.641345710414296
+96 0 2 3 0 46 36 36 1.33333333333333 0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.654541556639422
+96 0 2 3 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.668908746807157
+96 0 2 3 0 50 36 36 1.33333333333333 0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.683302448238139
+
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 0 0 29 36 36 1.33333333333333 -0.194444444444445 -5.55111512312578e-17 0 0.63539979750899
+96 0 3 0 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 0 0.630026346765969
+96 0 3 0 0 31 36 36 1.33333333333333 -0.138888888888889 -5.55111512312578e-17 0 0.625297419028293
+96 0 3 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 0 0.621410197839124
+96 0 3 0 0 33 36 36 1.33333333333333 -0.0833333333333334 -5.55111512312578e-17 0 0.618663308361111
+96 0 3 0 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 0 0.616824486578861
+96 0 3 0 0 35 36 36 1.33333333333333 -0.0277777777777778 -5.55111512312578e-17 0 0.615777600484678
+96 0 3 0 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 0 0.61547287921812
+96 0 3 0 0 37 36 36 1.33333333333333 0.0277777777777778 -5.55111512312578e-17 0 0.615777600484678
+96 0 3 0 0 38 36 36 1.33333333333333 0.0555555555555556 -5.55111512312578e-17 0 0.616824486578861
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 1 0 35 36 36 1.33333333333333 -0.0277777777777778 -5.55111512312578e-17 0 0.615777600484678
+96 0 3 1 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0 0.61547287921812
+96 0 3 1 0 37 36 36 1.33333333333333 0.0277777777777778 -5.55111512312578e-17 0 0.615777600484678
+96 0 3 1 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 0 0.616824486578861
+96 0 3 1 0 39 36 36 1.33333333333333 0.0833333333333333 -5.55111512312578e-17 0 0.618663308361111
+96 0 3 1 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 0 0.621410197839125
+96 0 3 1 0 41 36 36 1.33333333333333 0.138888888888889 -5.55111512312578e-17 0 0.625297419028293
+96 0 3 1 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 0 0.63002634676597
+96 0 3 1 0 43 36 36 1.33333333333333 0.194444444444444 -5.55111512312578e-17 0 0.63539979750899
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 2 0 29 36 36 1.33333333333333 -0.194444444444445 -5.55111512312578e-17 -1.38777878078145e-17 0.63539979750899
+96 0 3 2 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.630026346765969
+96 0 3 2 0 31 36 36 1.33333333333333 -0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.625297419028293
+96 0 3 2 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.621410197839124
+96 0 3 2 0 33 36 36 1.33333333333333 -0.0833333333333334 -5.55111512312578e-17 -1.38777878078145e-17 0.618663308361111
+96 0 3 2 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.616824486578861
+96 0 3 2 0 35 36 36 1.33333333333333 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.615777600484678
+96 0 3 2 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812
+96 0 3 2 0 37 36 36 1.33333333333333 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.615777600484678
+96 0 3 2 0 38 36 36 1.33333333333333 0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.616824486578861
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 3 0 35 36 36 1.33333333333333 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.615777600484678
+96 0 3 3 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812
+96 0 3 3 0 37 36 36 1.33333333333333 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.615777600484678
+96 0 3 3 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 -1.38777878078145e-17 0.616824486578861
+96 0 3 3 0 39 36 36 1.33333333333333 0.0833333333333333 -5.55111512312578e-17 -1.38777878078145e-17 0.618663308361111
+96 0 3 3 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.621410197839125
+96 0 3 3 0 41 36 36 1.33333333333333 0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.625297419028293
+96 0 3 3 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.63002634676597
+96 0 3 3 0 43 36 36 1.33333333333333 0.194444444444444 -5.55111512312578e-17 -1.38777878078145e-17 0.63539979750899
+
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 0 0 0 40 40 1.77777777777778 -1 0.111111111111111 0.111111111111111 0.873700996777018
+128 0 0 0 0 8 40 40 1.77777777777778 -0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308
+128 0 0 0 0 16 40 40 1.77777777777778 -0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887
+128 0 0 0 0 24 40 40 1.77777777777778 -0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519
+128 0 0 0 0 32 40 40 1.77777777777778 -0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 0 0 48 40 40 1.77777777777778 0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 1 0 24 40 40 1.77777777777778 -0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519
+128 0 0 1 0 32 40 40 1.77777777777778 -0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 1 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 1 0 48 40 40 1.77777777777778 0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519
+128 0 0 1 0 56 40 40 1.77777777777778 0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887
+128 0 0 1 0 64 40 40 1.77777777777778 0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308
+128 0 0 1 0 72 40 40 1.77777777777778 1 0.111111111111111 0.111111111111111 0.873700996777018
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 2 0 0 40 40 1.77777777777778 -1 0.111111111111111 0.111111111111111 0.873700996777018
+128 0 0 2 0 8 40 40 1.77777777777778 -0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308
+128 0 0 2 0 16 40 40 1.77777777777778 -0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887
+128 0 0 2 0 24 40 40 1.77777777777778 -0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519
+128 0 0 2 0 32 40 40 1.77777777777778 -0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 2 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 2 0 48 40 40 1.77777777777778 0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 3 0 24 40 40 1.77777777777778 -0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519
+128 0 0 3 0 32 40 40 1.77777777777778 -0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 3 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 3 0 48 40 40 1.77777777777778 0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519
+128 0 0 3 0 56 40 40 1.77777777777778 0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887
+128 0 0 3 0 64 40 40 1.77777777777778 0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308
+128 0 0 3 0 72 40 40 1.77777777777778 1 0.111111111111111 0.111111111111111 0.873700996777018
+
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 0 0 8 36 36 1.77777777777778 -0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.862653663591007
+128 0 1 0 0 12 36 36 1.77777777777778 -0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.862560028606905
+128 0 1 0 0 16 36 36 1.77777777777778 -0.555555555555556 -5.55111512312578e-17 -9.86623976961809e-17 0.866965759785718
+128 0 1 0 0 20 36 36 1.77777777777778 -0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.876167092595071
+128 0 1 0 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.889185421864397
+128 0 1 0 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.907998184681559
+128 0 1 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.924033489738888
+128 0 1 0 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199
+128 0 1 0 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.924033489738888
+128 0 1 0 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.90799818468156
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 1 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.924033489738888
+128 0 1 1 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199
+128 0 1 1 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.924033489738888
+128 0 1 1 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.90799818468156
+128 0 1 1 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.889185421864397
+128 0 1 1 0 52 36 36 1.77777777777778 0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.876167092595071
+128 0 1 1 0 56 36 36 1.77777777777778 0.555555555555555 -5.55111512312578e-17 -9.86623976961809e-17 0.866965759785718
+128 0 1 1 0 60 36 36 1.77777777777778 0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.862560028606905
+128 0 1 1 0 64 36 36 1.77777777777778 0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.862653663591007
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 2 0 8 36 36 1.77777777777778 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.862653663591007
+128 0 1 2 0 12 36 36 1.77777777777778 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.862560028606905
+128 0 1 2 0 16 36 36 1.77777777777778 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.866965759785718
+128 0 1 2 0 20 36 36 1.77777777777778 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.876167092595071
+128 0 1 2 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397
+128 0 1 2 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.907998184681559
+128 0 1 2 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888
+128 0 1 2 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 1 2 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888
+128 0 1 2 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.90799818468156
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 3 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888
+128 0 1 3 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 1 3 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888
+128 0 1 3 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.90799818468156
+128 0 1 3 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397
+128 0 1 3 0 52 36 36 1.77777777777778 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.876167092595071
+128 0 1 3 0 56 36 36 1.77777777777778 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.866965759785718
+128 0 1 3 0 60 36 36 1.77777777777778 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.862560028606905
+128 0 1 3 0 64 36 36 1.77777777777778 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.862653663591007
+
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 0 0 22 36 36 1.77777777777778 -0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.882075542854246
+128 0 2 0 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.889185421864397
+128 0 2 0 0 26 36 36 1.77777777777778 -0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.898403242286228
+128 0 2 0 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.907998184681559
+128 0 2 0 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.916919384356027
+128 0 2 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.924033489738888
+128 0 2 0 0 34 36 36 1.77777777777778 -0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.927485951077396
+128 0 2 0 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199
+128 0 2 0 0 38 36 36 1.77777777777778 0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.927485951077396
+128 0 2 0 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.924033489738888
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 1 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.927485951077396
+128 0 2 1 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199
+128 0 2 1 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.927485951077396
+128 0 2 1 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.924033489738888
+128 0 2 1 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.916919384356027
+128 0 2 1 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.90799818468156
+128 0 2 1 0 46 36 36 1.77777777777778 0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.898403242286228
+128 0 2 1 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.889185421864397
+128 0 2 1 0 50 36 36 1.77777777777778 0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.882075542854246
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 2 0 22 36 36 1.77777777777778 -0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.882075542854246
+128 0 2 2 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.889185421864397
+128 0 2 2 0 26 36 36 1.77777777777778 -0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.898403242286228
+128 0 2 2 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.907998184681559
+128 0 2 2 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.916919384356027
+128 0 2 2 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.924033489738888
+128 0 2 2 0 34 36 36 1.77777777777778 -0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.927485951077396
+128 0 2 2 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199
+128 0 2 2 0 38 36 36 1.77777777777778 0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.927485951077396
+128 0 2 2 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.924033489738888
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 3 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.927485951077396
+128 0 2 3 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199
+128 0 2 3 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.927485951077396
+128 0 2 3 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.924033489738888
+128 0 2 3 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.916919384356027
+128 0 2 3 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.90799818468156
+128 0 2 3 0 46 36 36 1.77777777777778 0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.898403242286228
+128 0 2 3 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.889185421864397
+128 0 2 3 0 50 36 36 1.77777777777778 0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.882075542854246
+
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 0 0 29 36 36 1.77777777777778 -0.194444444444445 -5.55111512312578e-17 0 0.912613836832073
+128 0 3 0 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 0 0.916919384356027
+128 0 3 0 0 31 36 36 1.77777777777778 -0.138888888888889 -5.55111512312578e-17 0 0.920818233193455
+128 0 3 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 0 0.924033489738888
+128 0 3 0 0 33 36 36 1.77777777777778 -0.0833333333333334 -5.55111512312578e-17 0 0.926147880297958
+128 0 3 0 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 0 0.927485951077396
+128 0 3 0 0 35 36 36 1.77777777777778 -0.0277777777777778 -5.55111512312578e-17 0 0.928209975180567
+128 0 3 0 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 0 0.928389498223199
+128 0 3 0 0 37 36 36 1.77777777777778 0.0277777777777778 -5.55111512312578e-17 0 0.928209975180567
+128 0 3 0 0 38 36 36 1.77777777777778 0.0555555555555556 -5.55111512312578e-17 0 0.927485951077396
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 1 0 35 36 36 1.77777777777778 -0.0277777777777778 -5.55111512312578e-17 0 0.928209975180567
+128 0 3 1 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0 0.928389498223199
+128 0 3 1 0 37 36 36 1.77777777777778 0.0277777777777778 -5.55111512312578e-17 0 0.928209975180567
+128 0 3 1 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 0 0.927485951077396
+128 0 3 1 0 39 36 36 1.77777777777778 0.0833333333333333 -5.55111512312578e-17 0 0.926147880297958
+128 0 3 1 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 0 0.924033489738888
+128 0 3 1 0 41 36 36 1.77777777777778 0.138888888888889 -5.55111512312578e-17 0 0.920818233193455
+128 0 3 1 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 0 0.916919384356027
+128 0 3 1 0 43 36 36 1.77777777777778 0.194444444444444 -5.55111512312578e-17 0 0.912613836832073
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 2 0 29 36 36 1.77777777777778 -0.194444444444445 -5.55111512312578e-17 -1.38777878078145e-17 0.912613836832073
+128 0 3 2 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.916919384356027
+128 0 3 2 0 31 36 36 1.77777777777778 -0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.920818233193455
+128 0 3 2 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.924033489738888
+128 0 3 2 0 33 36 36 1.77777777777778 -0.0833333333333334 -5.55111512312578e-17 -1.38777878078145e-17 0.926147880297958
+128 0 3 2 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.927485951077396
+128 0 3 2 0 35 36 36 1.77777777777778 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.928209975180567
+128 0 3 2 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199
+128 0 3 2 0 37 36 36 1.77777777777778 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.928209975180567
+128 0 3 2 0 38 36 36 1.77777777777778 0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.927485951077396
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 3 0 35 36 36 1.77777777777778 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.928209975180567
+128 0 3 3 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199
+128 0 3 3 0 37 36 36 1.77777777777778 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.928209975180567
+128 0 3 3 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 -1.38777878078145e-17 0.927485951077396
+128 0 3 3 0 39 36 36 1.77777777777778 0.0833333333333333 -5.55111512312578e-17 -1.38777878078145e-17 0.926147880297958
+128 0 3 3 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.924033489738888
+128 0 3 3 0 41 36 36 1.77777777777778 0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.920818233193455
+128 0 3 3 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.916919384356027
+128 0 3 3 0 43 36 36 1.77777777777778 0.194444444444444 -5.55111512312578e-17 -1.38777878078145e-17 0.912613836832073
+
+
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.y.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.y.asc
new file mode 100644
index 000000000..acc2fbf34
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.y.asc
@@ -0,0 +1,866 @@
+# WAVETOY::phi y (phi)
+#
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 0 0 40 0 40 0.888888888888889 0.111111111111111 -1 0.111111111111111 0.873700996777018
+64 0 0 0 0 40 8 40 0.888888888888889 0.111111111111111 -0.777777777777778 0.111111111111111 0.807676282684182
+64 0 0 0 0 40 16 40 0.888888888888889 0.111111111111111 -0.555555555555556 0.111111111111111 0.756699260944861
+64 0 0 0 0 40 24 40 0.888888888888889 0.111111111111111 -0.333333333333333 0.111111111111111 0.730294733882952
+64 0 0 0 0 40 32 40 0.888888888888889 0.111111111111111 -0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 0 0 40 48 40 0.888888888888889 0.111111111111111 0.333333333333333 0.111111111111111 0.730294733882952
+64 0 0 0 0 40 56 40 0.888888888888889 0.111111111111111 0.555555555555556 0.111111111111111 0.756699260944861
+64 0 0 0 0 40 64 40 0.888888888888889 0.111111111111111 0.777777777777778 0.111111111111111 0.807676282684182
+64 0 0 0 0 40 72 40 0.888888888888889 0.111111111111111 1 0.111111111111111 0.873700996777018
+
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 1 0 40 0 40 0.888888888888889 0.111111111111111 -1 0.111111111111111 0.873700996777018
+64 0 0 1 0 40 8 40 0.888888888888889 0.111111111111111 -0.777777777777778 0.111111111111111 0.807676282684182
+64 0 0 1 0 40 16 40 0.888888888888889 0.111111111111111 -0.555555555555556 0.111111111111111 0.756699260944861
+64 0 0 1 0 40 24 40 0.888888888888889 0.111111111111111 -0.333333333333333 0.111111111111111 0.730294733882952
+64 0 0 1 0 40 32 40 0.888888888888889 0.111111111111111 -0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 1 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 1 0 40 48 40 0.888888888888889 0.111111111111111 0.333333333333333 0.111111111111111 0.730294733882952
+64 0 0 1 0 40 56 40 0.888888888888889 0.111111111111111 0.555555555555556 0.111111111111111 0.756699260944861
+64 0 0 1 0 40 64 40 0.888888888888889 0.111111111111111 0.777777777777778 0.111111111111111 0.807676282684182
+64 0 0 1 0 40 72 40 0.888888888888889 0.111111111111111 1 0.111111111111111 0.873700996777018
+
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 2 0 40 0 40 0.888888888888889 0.111111111111111 -1 0.111111111111111 0.873700996777018
+64 0 0 2 0 40 8 40 0.888888888888889 0.111111111111111 -0.777777777777778 0.111111111111111 0.807676282684182
+64 0 0 2 0 40 16 40 0.888888888888889 0.111111111111111 -0.555555555555556 0.111111111111111 0.756699260944861
+64 0 0 2 0 40 24 40 0.888888888888889 0.111111111111111 -0.333333333333333 0.111111111111111 0.730294733882952
+64 0 0 2 0 40 32 40 0.888888888888889 0.111111111111111 -0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 2 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 2 0 40 48 40 0.888888888888889 0.111111111111111 0.333333333333333 0.111111111111111 0.730294733882952
+64 0 0 2 0 40 56 40 0.888888888888889 0.111111111111111 0.555555555555556 0.111111111111111 0.756699260944861
+64 0 0 2 0 40 64 40 0.888888888888889 0.111111111111111 0.777777777777778 0.111111111111111 0.807676282684182
+64 0 0 2 0 40 72 40 0.888888888888889 0.111111111111111 1 0.111111111111111 0.873700996777018
+
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 3 0 40 0 40 0.888888888888889 0.111111111111111 -1 0.111111111111111 0.873700996777018
+64 0 0 3 0 40 8 40 0.888888888888889 0.111111111111111 -0.777777777777778 0.111111111111111 0.807676282684182
+64 0 0 3 0 40 16 40 0.888888888888889 0.111111111111111 -0.555555555555556 0.111111111111111 0.756699260944861
+64 0 0 3 0 40 24 40 0.888888888888889 0.111111111111111 -0.333333333333333 0.111111111111111 0.730294733882952
+64 0 0 3 0 40 32 40 0.888888888888889 0.111111111111111 -0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 3 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 3 0 40 48 40 0.888888888888889 0.111111111111111 0.333333333333333 0.111111111111111 0.730294733882952
+64 0 0 3 0 40 56 40 0.888888888888889 0.111111111111111 0.555555555555556 0.111111111111111 0.756699260944861
+64 0 0 3 0 40 64 40 0.888888888888889 0.111111111111111 0.777777777777778 0.111111111111111 0.807676282684182
+64 0 0 3 0 40 72 40 0.888888888888889 0.111111111111111 1 0.111111111111111 0.873700996777018
+
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 0 0 36 8 36 0.888888888888889 -9.86623976961809e-17 -0.777777777777778 -9.86623976961809e-17 0.808379332677938
+64 0 1 0 0 36 12 36 0.888888888888889 -9.86623976961809e-17 -0.666666666666667 -9.86623976961809e-17 0.779665123251562
+64 0 1 0 0 36 16 36 0.888888888888889 -9.86623976961809e-17 -0.555555555555556 -9.86623976961809e-17 0.756097245006156
+64 0 1 0 0 36 20 36 0.888888888888889 -9.86623976961809e-17 -0.444444444444444 -9.86623976961809e-17 0.739694852518638
+64 0 1 0 0 36 24 36 0.888888888888889 -9.86623976961809e-17 -0.333333333333333 -9.86623976961809e-17 0.729218296316213
+64 0 1 0 0 36 28 36 0.888888888888889 -9.86623976961809e-17 -0.222222222222222 -9.86623976961809e-17 0.725100663327575
+64 0 1 0 0 36 32 36 0.888888888888889 -9.86623976961809e-17 -0.111111111111111 -9.86623976961809e-17 0.724342898925177
+64 0 1 0 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298
+64 0 1 0 0 36 40 36 0.888888888888889 -9.86623976961809e-17 0.111111111111111 -9.86623976961809e-17 0.724342898925177
+64 0 1 0 0 36 44 36 0.888888888888889 -9.86623976961809e-17 0.222222222222222 -9.86623976961809e-17 0.725100663327574
+64 0 1 0 0 36 48 36 0.888888888888889 -9.86623976961809e-17 0.333333333333333 -9.86623976961809e-17 0.729218296316213
+64 0 1 0 0 36 52 36 0.888888888888889 -9.86623976961809e-17 0.444444444444444 -9.86623976961809e-17 0.739694852518638
+64 0 1 0 0 36 56 36 0.888888888888889 -9.86623976961809e-17 0.555555555555555 -9.86623976961809e-17 0.756097245006155
+64 0 1 0 0 36 60 36 0.888888888888889 -9.86623976961809e-17 0.666666666666667 -9.86623976961809e-17 0.779665123251561
+64 0 1 0 0 36 64 36 0.888888888888889 -9.86623976961809e-17 0.777777777777778 -9.86623976961809e-17 0.808379332677938
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 1 0 36 8 36 0.888888888888889 -5.55111512312578e-17 -0.777777777777778 -9.86623976961809e-17 0.808379332677938
+64 0 1 1 0 36 12 36 0.888888888888889 -5.55111512312578e-17 -0.666666666666667 -9.86623976961809e-17 0.779665123251562
+64 0 1 1 0 36 16 36 0.888888888888889 -5.55111512312578e-17 -0.555555555555556 -9.86623976961809e-17 0.756097245006156
+64 0 1 1 0 36 20 36 0.888888888888889 -5.55111512312578e-17 -0.444444444444444 -9.86623976961809e-17 0.739694852518638
+64 0 1 1 0 36 24 36 0.888888888888889 -5.55111512312578e-17 -0.333333333333333 -9.86623976961809e-17 0.729218296316213
+64 0 1 1 0 36 28 36 0.888888888888889 -5.55111512312578e-17 -0.222222222222222 -9.86623976961809e-17 0.725100663327575
+64 0 1 1 0 36 32 36 0.888888888888889 -5.55111512312578e-17 -0.111111111111111 -9.86623976961809e-17 0.724342898925177
+64 0 1 1 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298
+64 0 1 1 0 36 40 36 0.888888888888889 -5.55111512312578e-17 0.111111111111111 -9.86623976961809e-17 0.724342898925177
+64 0 1 1 0 36 44 36 0.888888888888889 -5.55111512312578e-17 0.222222222222222 -9.86623976961809e-17 0.725100663327574
+64 0 1 1 0 36 48 36 0.888888888888889 -5.55111512312578e-17 0.333333333333333 -9.86623976961809e-17 0.729218296316213
+64 0 1 1 0 36 52 36 0.888888888888889 -5.55111512312578e-17 0.444444444444444 -9.86623976961809e-17 0.739694852518638
+64 0 1 1 0 36 56 36 0.888888888888889 -5.55111512312578e-17 0.555555555555555 -9.86623976961809e-17 0.756097245006155
+64 0 1 1 0 36 60 36 0.888888888888889 -5.55111512312578e-17 0.666666666666667 -9.86623976961809e-17 0.779665123251561
+64 0 1 1 0 36 64 36 0.888888888888889 -5.55111512312578e-17 0.777777777777778 -9.86623976961809e-17 0.808379332677938
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 2 0 36 8 36 0.888888888888889 -9.86623976961809e-17 -0.777777777777778 -5.55111512312578e-17 0.808379332677938
+64 0 1 2 0 36 12 36 0.888888888888889 -9.86623976961809e-17 -0.666666666666667 -5.55111512312578e-17 0.779665123251562
+64 0 1 2 0 36 16 36 0.888888888888889 -9.86623976961809e-17 -0.555555555555556 -5.55111512312578e-17 0.756097245006156
+64 0 1 2 0 36 20 36 0.888888888888889 -9.86623976961809e-17 -0.444444444444444 -5.55111512312578e-17 0.739694852518638
+64 0 1 2 0 36 24 36 0.888888888888889 -9.86623976961809e-17 -0.333333333333333 -5.55111512312578e-17 0.729218296316213
+64 0 1 2 0 36 28 36 0.888888888888889 -9.86623976961809e-17 -0.222222222222222 -5.55111512312578e-17 0.725100663327575
+64 0 1 2 0 36 32 36 0.888888888888889 -9.86623976961809e-17 -0.111111111111111 -5.55111512312578e-17 0.724342898925177
+64 0 1 2 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 1 2 0 36 40 36 0.888888888888889 -9.86623976961809e-17 0.111111111111111 -5.55111512312578e-17 0.724342898925177
+64 0 1 2 0 36 44 36 0.888888888888889 -9.86623976961809e-17 0.222222222222222 -5.55111512312578e-17 0.725100663327574
+64 0 1 2 0 36 48 36 0.888888888888889 -9.86623976961809e-17 0.333333333333333 -5.55111512312578e-17 0.729218296316213
+64 0 1 2 0 36 52 36 0.888888888888889 -9.86623976961809e-17 0.444444444444444 -5.55111512312578e-17 0.739694852518638
+64 0 1 2 0 36 56 36 0.888888888888889 -9.86623976961809e-17 0.555555555555555 -5.55111512312578e-17 0.756097245006155
+64 0 1 2 0 36 60 36 0.888888888888889 -9.86623976961809e-17 0.666666666666667 -5.55111512312578e-17 0.779665123251561
+64 0 1 2 0 36 64 36 0.888888888888889 -9.86623976961809e-17 0.777777777777778 -5.55111512312578e-17 0.808379332677938
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 3 0 36 8 36 0.888888888888889 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.808379332677938
+64 0 1 3 0 36 12 36 0.888888888888889 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.779665123251562
+64 0 1 3 0 36 16 36 0.888888888888889 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.756097245006156
+64 0 1 3 0 36 20 36 0.888888888888889 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.739694852518638
+64 0 1 3 0 36 24 36 0.888888888888889 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.729218296316213
+64 0 1 3 0 36 28 36 0.888888888888889 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.725100663327575
+64 0 1 3 0 36 32 36 0.888888888888889 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.724342898925177
+64 0 1 3 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 1 3 0 36 40 36 0.888888888888889 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.724342898925177
+64 0 1 3 0 36 44 36 0.888888888888889 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.725100663327574
+64 0 1 3 0 36 48 36 0.888888888888889 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.729218296316213
+64 0 1 3 0 36 52 36 0.888888888888889 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.739694852518638
+64 0 1 3 0 36 56 36 0.888888888888889 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.756097245006155
+64 0 1 3 0 36 60 36 0.888888888888889 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.779665123251561
+64 0 1 3 0 36 64 36 0.888888888888889 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.808379332677938
+
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 0 0 36 22 36 0.888888888888889 2.46655994240452e-17 -0.388888888888889 2.46655994240452e-17 0.733688776948746
+64 0 2 0 0 36 24 36 0.888888888888889 2.46655994240452e-17 -0.333333333333333 2.46655994240452e-17 0.729218296316213
+64 0 2 0 0 36 26 36 0.888888888888889 2.46655994240452e-17 -0.277777777777778 2.46655994240452e-17 0.726552055334392
+64 0 2 0 0 36 28 36 0.888888888888889 2.46655994240452e-17 -0.222222222222222 2.46655994240452e-17 0.725100663327575
+64 0 2 0 0 36 30 36 0.888888888888889 2.46655994240452e-17 -0.166666666666667 2.46655994240452e-17 0.724502518106703
+64 0 2 0 0 36 32 36 0.888888888888889 2.46655994240452e-17 -0.111111111111111 2.46655994240452e-17 0.724342898925177
+64 0 2 0 0 36 34 36 0.888888888888889 2.46655994240452e-17 -0.0555555555555556 2.46655994240452e-17 0.72395273727097
+64 0 2 0 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298
+64 0 2 0 0 36 38 36 0.888888888888889 2.46655994240452e-17 0.0555555555555555 2.46655994240452e-17 0.72395273727097
+64 0 2 0 0 36 40 36 0.888888888888889 2.46655994240452e-17 0.111111111111111 2.46655994240452e-17 0.724342898925177
+64 0 2 0 0 36 42 36 0.888888888888889 2.46655994240452e-17 0.166666666666667 2.46655994240452e-17 0.724502518106703
+64 0 2 0 0 36 44 36 0.888888888888889 2.46655994240452e-17 0.222222222222222 2.46655994240452e-17 0.725100663327574
+64 0 2 0 0 36 46 36 0.888888888888889 2.46655994240452e-17 0.277777777777778 2.46655994240452e-17 0.726552055334392
+64 0 2 0 0 36 48 36 0.888888888888889 2.46655994240452e-17 0.333333333333333 2.46655994240452e-17 0.729218296316213
+64 0 2 0 0 36 50 36 0.888888888888889 2.46655994240452e-17 0.388888888888889 2.46655994240452e-17 0.733688776948745
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 1 0 36 22 36 0.888888888888889 -2.77555756156289e-17 -0.388888888888889 2.46655994240452e-17 0.733688776948746
+64 0 2 1 0 36 24 36 0.888888888888889 -2.77555756156289e-17 -0.333333333333333 2.46655994240452e-17 0.729218296316213
+64 0 2 1 0 36 26 36 0.888888888888889 -2.77555756156289e-17 -0.277777777777778 2.46655994240452e-17 0.726552055334392
+64 0 2 1 0 36 28 36 0.888888888888889 -2.77555756156289e-17 -0.222222222222222 2.46655994240452e-17 0.725100663327575
+64 0 2 1 0 36 30 36 0.888888888888889 -2.77555756156289e-17 -0.166666666666667 2.46655994240452e-17 0.724502518106703
+64 0 2 1 0 36 32 36 0.888888888888889 -2.77555756156289e-17 -0.111111111111111 2.46655994240452e-17 0.724342898925177
+64 0 2 1 0 36 34 36 0.888888888888889 -2.77555756156289e-17 -0.0555555555555556 2.46655994240452e-17 0.72395273727097
+64 0 2 1 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298
+64 0 2 1 0 36 38 36 0.888888888888889 -2.77555756156289e-17 0.0555555555555555 2.46655994240452e-17 0.72395273727097
+64 0 2 1 0 36 40 36 0.888888888888889 -2.77555756156289e-17 0.111111111111111 2.46655994240452e-17 0.724342898925177
+64 0 2 1 0 36 42 36 0.888888888888889 -2.77555756156289e-17 0.166666666666667 2.46655994240452e-17 0.724502518106703
+64 0 2 1 0 36 44 36 0.888888888888889 -2.77555756156289e-17 0.222222222222222 2.46655994240452e-17 0.725100663327574
+64 0 2 1 0 36 46 36 0.888888888888889 -2.77555756156289e-17 0.277777777777778 2.46655994240452e-17 0.726552055334392
+64 0 2 1 0 36 48 36 0.888888888888889 -2.77555756156289e-17 0.333333333333333 2.46655994240452e-17 0.729218296316213
+64 0 2 1 0 36 50 36 0.888888888888889 -2.77555756156289e-17 0.388888888888889 2.46655994240452e-17 0.733688776948745
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 2 0 36 22 36 0.888888888888889 2.46655994240452e-17 -0.388888888888889 -2.77555756156289e-17 0.733688776948746
+64 0 2 2 0 36 24 36 0.888888888888889 2.46655994240452e-17 -0.333333333333333 -2.77555756156289e-17 0.729218296316213
+64 0 2 2 0 36 26 36 0.888888888888889 2.46655994240452e-17 -0.277777777777778 -2.77555756156289e-17 0.726552055334392
+64 0 2 2 0 36 28 36 0.888888888888889 2.46655994240452e-17 -0.222222222222222 -2.77555756156289e-17 0.725100663327575
+64 0 2 2 0 36 30 36 0.888888888888889 2.46655994240452e-17 -0.166666666666667 -2.77555756156289e-17 0.724502518106703
+64 0 2 2 0 36 32 36 0.888888888888889 2.46655994240452e-17 -0.111111111111111 -2.77555756156289e-17 0.724342898925177
+64 0 2 2 0 36 34 36 0.888888888888889 2.46655994240452e-17 -0.0555555555555556 -2.77555756156289e-17 0.72395273727097
+64 0 2 2 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298
+64 0 2 2 0 36 38 36 0.888888888888889 2.46655994240452e-17 0.0555555555555555 -2.77555756156289e-17 0.72395273727097
+64 0 2 2 0 36 40 36 0.888888888888889 2.46655994240452e-17 0.111111111111111 -2.77555756156289e-17 0.724342898925177
+64 0 2 2 0 36 42 36 0.888888888888889 2.46655994240452e-17 0.166666666666667 -2.77555756156289e-17 0.724502518106703
+64 0 2 2 0 36 44 36 0.888888888888889 2.46655994240452e-17 0.222222222222222 -2.77555756156289e-17 0.725100663327574
+64 0 2 2 0 36 46 36 0.888888888888889 2.46655994240452e-17 0.277777777777778 -2.77555756156289e-17 0.726552055334392
+64 0 2 2 0 36 48 36 0.888888888888889 2.46655994240452e-17 0.333333333333333 -2.77555756156289e-17 0.729218296316213
+64 0 2 2 0 36 50 36 0.888888888888889 2.46655994240452e-17 0.388888888888889 -2.77555756156289e-17 0.733688776948745
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 3 0 36 22 36 0.888888888888889 -2.77555756156289e-17 -0.388888888888889 -2.77555756156289e-17 0.733688776948746
+64 0 2 3 0 36 24 36 0.888888888888889 -2.77555756156289e-17 -0.333333333333333 -2.77555756156289e-17 0.729218296316213
+64 0 2 3 0 36 26 36 0.888888888888889 -2.77555756156289e-17 -0.277777777777778 -2.77555756156289e-17 0.726552055334392
+64 0 2 3 0 36 28 36 0.888888888888889 -2.77555756156289e-17 -0.222222222222222 -2.77555756156289e-17 0.725100663327575
+64 0 2 3 0 36 30 36 0.888888888888889 -2.77555756156289e-17 -0.166666666666667 -2.77555756156289e-17 0.724502518106703
+64 0 2 3 0 36 32 36 0.888888888888889 -2.77555756156289e-17 -0.111111111111111 -2.77555756156289e-17 0.724342898925177
+64 0 2 3 0 36 34 36 0.888888888888889 -2.77555756156289e-17 -0.0555555555555556 -2.77555756156289e-17 0.72395273727097
+64 0 2 3 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298
+64 0 2 3 0 36 38 36 0.888888888888889 -2.77555756156289e-17 0.0555555555555555 -2.77555756156289e-17 0.72395273727097
+64 0 2 3 0 36 40 36 0.888888888888889 -2.77555756156289e-17 0.111111111111111 -2.77555756156289e-17 0.724342898925177
+64 0 2 3 0 36 42 36 0.888888888888889 -2.77555756156289e-17 0.166666666666667 -2.77555756156289e-17 0.724502518106703
+64 0 2 3 0 36 44 36 0.888888888888889 -2.77555756156289e-17 0.222222222222222 -2.77555756156289e-17 0.725100663327574
+64 0 2 3 0 36 46 36 0.888888888888889 -2.77555756156289e-17 0.277777777777778 -2.77555756156289e-17 0.726552055334392
+64 0 2 3 0 36 48 36 0.888888888888889 -2.77555756156289e-17 0.333333333333333 -2.77555756156289e-17 0.729218296316213
+64 0 2 3 0 36 50 36 0.888888888888889 -2.77555756156289e-17 0.388888888888889 -2.77555756156289e-17 0.733688776948745
+
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 0 0 36 29 36 0.888888888888889 0 -0.194444444444445 0 0.724720854915558
+64 0 3 0 0 36 30 36 0.888888888888889 0 -0.166666666666667 0 0.724502518106703
+64 0 3 0 0 36 31 36 0.888888888888889 0 -0.138888888888889 0 0.724409709543024
+64 0 3 0 0 36 32 36 0.888888888888889 0 -0.111111111111111 0 0.724342898925177
+64 0 3 0 0 36 33 36 0.888888888888889 0 -0.0833333333333334 0 0.724151545837958
+64 0 3 0 0 36 34 36 0.888888888888889 0 -0.0555555555555556 0 0.72395273727097
+64 0 3 0 0 36 35 36 0.888888888888889 0 -0.0277777777777778 0 0.723805016719017
+64 0 3 0 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 0 0.723733474251298
+64 0 3 0 0 36 37 36 0.888888888888889 0 0.0277777777777777 0 0.723805016719017
+64 0 3 0 0 36 38 36 0.888888888888889 0 0.0555555555555555 0 0.72395273727097
+64 0 3 0 0 36 39 36 0.888888888888889 0 0.0833333333333333 0 0.724151545837958
+64 0 3 0 0 36 40 36 0.888888888888889 0 0.111111111111111 0 0.724342898925177
+64 0 3 0 0 36 41 36 0.888888888888889 0 0.138888888888889 0 0.724409709543024
+64 0 3 0 0 36 42 36 0.888888888888889 0 0.166666666666667 0 0.724502518106703
+64 0 3 0 0 36 43 36 0.888888888888889 0 0.194444444444444 0 0.724720854915558
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 1 0 36 29 36 0.888888888888889 -1.38777878078145e-17 -0.194444444444445 0 0.724720854915558
+64 0 3 1 0 36 30 36 0.888888888888889 -1.38777878078145e-17 -0.166666666666667 0 0.724502518106703
+64 0 3 1 0 36 31 36 0.888888888888889 -1.38777878078145e-17 -0.138888888888889 0 0.724409709543024
+64 0 3 1 0 36 32 36 0.888888888888889 -1.38777878078145e-17 -0.111111111111111 0 0.724342898925177
+64 0 3 1 0 36 33 36 0.888888888888889 -1.38777878078145e-17 -0.0833333333333334 0 0.724151545837958
+64 0 3 1 0 36 34 36 0.888888888888889 -1.38777878078145e-17 -0.0555555555555556 0 0.72395273727097
+64 0 3 1 0 36 35 36 0.888888888888889 -1.38777878078145e-17 -0.0277777777777778 0 0.723805016719017
+64 0 3 1 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0 0.723733474251298
+64 0 3 1 0 36 37 36 0.888888888888889 -1.38777878078145e-17 0.0277777777777777 0 0.723805016719017
+64 0 3 1 0 36 38 36 0.888888888888889 -1.38777878078145e-17 0.0555555555555555 0 0.72395273727097
+64 0 3 1 0 36 39 36 0.888888888888889 -1.38777878078145e-17 0.0833333333333333 0 0.724151545837958
+64 0 3 1 0 36 40 36 0.888888888888889 -1.38777878078145e-17 0.111111111111111 0 0.724342898925177
+64 0 3 1 0 36 41 36 0.888888888888889 -1.38777878078145e-17 0.138888888888889 0 0.724409709543024
+64 0 3 1 0 36 42 36 0.888888888888889 -1.38777878078145e-17 0.166666666666667 0 0.724502518106703
+64 0 3 1 0 36 43 36 0.888888888888889 -1.38777878078145e-17 0.194444444444444 0 0.724720854915558
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 2 0 36 29 36 0.888888888888889 0 -0.194444444444445 -1.38777878078145e-17 0.724720854915558
+64 0 3 2 0 36 30 36 0.888888888888889 0 -0.166666666666667 -1.38777878078145e-17 0.724502518106703
+64 0 3 2 0 36 31 36 0.888888888888889 0 -0.138888888888889 -1.38777878078145e-17 0.724409709543024
+64 0 3 2 0 36 32 36 0.888888888888889 0 -0.111111111111111 -1.38777878078145e-17 0.724342898925177
+64 0 3 2 0 36 33 36 0.888888888888889 0 -0.0833333333333334 -1.38777878078145e-17 0.724151545837958
+64 0 3 2 0 36 34 36 0.888888888888889 0 -0.0555555555555556 -1.38777878078145e-17 0.72395273727097
+64 0 3 2 0 36 35 36 0.888888888888889 0 -0.0277777777777778 -1.38777878078145e-17 0.723805016719017
+64 0 3 2 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298
+64 0 3 2 0 36 37 36 0.888888888888889 0 0.0277777777777777 -1.38777878078145e-17 0.723805016719017
+64 0 3 2 0 36 38 36 0.888888888888889 0 0.0555555555555555 -1.38777878078145e-17 0.72395273727097
+64 0 3 2 0 36 39 36 0.888888888888889 0 0.0833333333333333 -1.38777878078145e-17 0.724151545837958
+64 0 3 2 0 36 40 36 0.888888888888889 0 0.111111111111111 -1.38777878078145e-17 0.724342898925177
+64 0 3 2 0 36 41 36 0.888888888888889 0 0.138888888888889 -1.38777878078145e-17 0.724409709543024
+64 0 3 2 0 36 42 36 0.888888888888889 0 0.166666666666667 -1.38777878078145e-17 0.724502518106703
+64 0 3 2 0 36 43 36 0.888888888888889 0 0.194444444444444 -1.38777878078145e-17 0.724720854915558
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 3 0 36 29 36 0.888888888888889 -1.38777878078145e-17 -0.194444444444445 -1.38777878078145e-17 0.724720854915558
+64 0 3 3 0 36 30 36 0.888888888888889 -1.38777878078145e-17 -0.166666666666667 -1.38777878078145e-17 0.724502518106703
+64 0 3 3 0 36 31 36 0.888888888888889 -1.38777878078145e-17 -0.138888888888889 -1.38777878078145e-17 0.724409709543024
+64 0 3 3 0 36 32 36 0.888888888888889 -1.38777878078145e-17 -0.111111111111111 -1.38777878078145e-17 0.724342898925177
+64 0 3 3 0 36 33 36 0.888888888888889 -1.38777878078145e-17 -0.0833333333333334 -1.38777878078145e-17 0.724151545837958
+64 0 3 3 0 36 34 36 0.888888888888889 -1.38777878078145e-17 -0.0555555555555556 -1.38777878078145e-17 0.72395273727097
+64 0 3 3 0 36 35 36 0.888888888888889 -1.38777878078145e-17 -0.0277777777777778 -1.38777878078145e-17 0.723805016719017
+64 0 3 3 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298
+64 0 3 3 0 36 37 36 0.888888888888889 -1.38777878078145e-17 0.0277777777777777 -1.38777878078145e-17 0.723805016719017
+64 0 3 3 0 36 38 36 0.888888888888889 -1.38777878078145e-17 0.0555555555555555 -1.38777878078145e-17 0.72395273727097
+64 0 3 3 0 36 39 36 0.888888888888889 -1.38777878078145e-17 0.0833333333333333 -1.38777878078145e-17 0.724151545837958
+64 0 3 3 0 36 40 36 0.888888888888889 -1.38777878078145e-17 0.111111111111111 -1.38777878078145e-17 0.724342898925177
+64 0 3 3 0 36 41 36 0.888888888888889 -1.38777878078145e-17 0.138888888888889 -1.38777878078145e-17 0.724409709543024
+64 0 3 3 0 36 42 36 0.888888888888889 -1.38777878078145e-17 0.166666666666667 -1.38777878078145e-17 0.724502518106703
+64 0 3 3 0 36 43 36 0.888888888888889 -1.38777878078145e-17 0.194444444444444 -1.38777878078145e-17 0.724720854915558
+
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 0 0 40 0 40 1.33333333333333 0.111111111111111 -1 0.111111111111111 0.877480603359996
+96 0 0 0 0 40 8 40 1.33333333333333 0.111111111111111 -0.777777777777778 0.111111111111111 0.798008089475601
+96 0 0 0 0 40 16 40 1.33333333333333 0.111111111111111 -0.555555555555556 0.111111111111111 0.735090597558599
+96 0 0 0 0 40 24 40 1.33333333333333 0.111111111111111 -0.333333333333333 0.111111111111111 0.677899959110667
+96 0 0 0 0 40 32 40 1.33333333333333 0.111111111111111 -0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 0 0 40 48 40 1.33333333333333 0.111111111111111 0.333333333333333 0.111111111111111 0.677899959110667
+96 0 0 0 0 40 56 40 1.33333333333333 0.111111111111111 0.555555555555556 0.111111111111111 0.735090597558599
+96 0 0 0 0 40 64 40 1.33333333333333 0.111111111111111 0.777777777777778 0.111111111111111 0.798008089475601
+96 0 0 0 0 40 72 40 1.33333333333333 0.111111111111111 1 0.111111111111111 0.877480603359996
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 1 0 40 0 40 1.33333333333333 0.111111111111111 -1 0.111111111111111 0.877480603359996
+96 0 0 1 0 40 8 40 1.33333333333333 0.111111111111111 -0.777777777777778 0.111111111111111 0.798008089475601
+96 0 0 1 0 40 16 40 1.33333333333333 0.111111111111111 -0.555555555555556 0.111111111111111 0.735090597558599
+96 0 0 1 0 40 24 40 1.33333333333333 0.111111111111111 -0.333333333333333 0.111111111111111 0.677899959110667
+96 0 0 1 0 40 32 40 1.33333333333333 0.111111111111111 -0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 1 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 1 0 40 48 40 1.33333333333333 0.111111111111111 0.333333333333333 0.111111111111111 0.677899959110667
+96 0 0 1 0 40 56 40 1.33333333333333 0.111111111111111 0.555555555555556 0.111111111111111 0.735090597558599
+96 0 0 1 0 40 64 40 1.33333333333333 0.111111111111111 0.777777777777778 0.111111111111111 0.798008089475601
+96 0 0 1 0 40 72 40 1.33333333333333 0.111111111111111 1 0.111111111111111 0.877480603359996
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 2 0 40 0 40 1.33333333333333 0.111111111111111 -1 0.111111111111111 0.877480603359996
+96 0 0 2 0 40 8 40 1.33333333333333 0.111111111111111 -0.777777777777778 0.111111111111111 0.798008089475601
+96 0 0 2 0 40 16 40 1.33333333333333 0.111111111111111 -0.555555555555556 0.111111111111111 0.735090597558599
+96 0 0 2 0 40 24 40 1.33333333333333 0.111111111111111 -0.333333333333333 0.111111111111111 0.677899959110667
+96 0 0 2 0 40 32 40 1.33333333333333 0.111111111111111 -0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 2 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 2 0 40 48 40 1.33333333333333 0.111111111111111 0.333333333333333 0.111111111111111 0.677899959110667
+96 0 0 2 0 40 56 40 1.33333333333333 0.111111111111111 0.555555555555556 0.111111111111111 0.735090597558599
+96 0 0 2 0 40 64 40 1.33333333333333 0.111111111111111 0.777777777777778 0.111111111111111 0.798008089475601
+96 0 0 2 0 40 72 40 1.33333333333333 0.111111111111111 1 0.111111111111111 0.877480603359996
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 3 0 40 0 40 1.33333333333333 0.111111111111111 -1 0.111111111111111 0.877480603359996
+96 0 0 3 0 40 8 40 1.33333333333333 0.111111111111111 -0.777777777777778 0.111111111111111 0.798008089475601
+96 0 0 3 0 40 16 40 1.33333333333333 0.111111111111111 -0.555555555555556 0.111111111111111 0.735090597558599
+96 0 0 3 0 40 24 40 1.33333333333333 0.111111111111111 -0.333333333333333 0.111111111111111 0.677899959110667
+96 0 0 3 0 40 32 40 1.33333333333333 0.111111111111111 -0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 3 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 3 0 40 48 40 1.33333333333333 0.111111111111111 0.333333333333333 0.111111111111111 0.677899959110667
+96 0 0 3 0 40 56 40 1.33333333333333 0.111111111111111 0.555555555555556 0.111111111111111 0.735090597558599
+96 0 0 3 0 40 64 40 1.33333333333333 0.111111111111111 0.777777777777778 0.111111111111111 0.798008089475601
+96 0 0 3 0 40 72 40 1.33333333333333 0.111111111111111 1 0.111111111111111 0.877480603359996
+
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 0 0 36 8 36 1.33333333333333 -9.86623976961809e-17 -0.777777777777778 -9.86623976961809e-17 0.796688784792057
+96 0 1 0 0 36 12 36 1.33333333333333 -9.86623976961809e-17 -0.666666666666667 -9.86623976961809e-17 0.76190136189151
+96 0 1 0 0 36 16 36 1.33333333333333 -9.86623976961809e-17 -0.555555555555556 -9.86623976961809e-17 0.729928937348657
+96 0 1 0 0 36 20 36 1.33333333333333 -9.86623976961809e-17 -0.444444444444444 -9.86623976961809e-17 0.698215010923196
+96 0 1 0 0 36 24 36 1.33333333333333 -9.86623976961809e-17 -0.333333333333333 -9.86623976961809e-17 0.668908746807157
+96 0 1 0 0 36 28 36 1.33333333333333 -9.86623976961809e-17 -0.222222222222222 -9.86623976961809e-17 0.641345710414296
+96 0 1 0 0 36 32 36 1.33333333333333 -9.86623976961809e-17 -0.111111111111111 -9.86623976961809e-17 0.621410197839124
+96 0 1 0 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812
+96 0 1 0 0 36 40 36 1.33333333333333 -9.86623976961809e-17 0.111111111111111 -9.86623976961809e-17 0.621410197839125
+96 0 1 0 0 36 44 36 1.33333333333333 -9.86623976961809e-17 0.222222222222222 -9.86623976961809e-17 0.641345710414297
+96 0 1 0 0 36 48 36 1.33333333333333 -9.86623976961809e-17 0.333333333333333 -9.86623976961809e-17 0.668908746807157
+96 0 1 0 0 36 52 36 1.33333333333333 -9.86623976961809e-17 0.444444444444444 -9.86623976961809e-17 0.698215010923196
+96 0 1 0 0 36 56 36 1.33333333333333 -9.86623976961809e-17 0.555555555555555 -9.86623976961809e-17 0.729928937348657
+96 0 1 0 0 36 60 36 1.33333333333333 -9.86623976961809e-17 0.666666666666667 -9.86623976961809e-17 0.76190136189151
+96 0 1 0 0 36 64 36 1.33333333333333 -9.86623976961809e-17 0.777777777777778 -9.86623976961809e-17 0.796688784792057
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 1 0 36 8 36 1.33333333333333 -5.55111512312578e-17 -0.777777777777778 -9.86623976961809e-17 0.796688784792057
+96 0 1 1 0 36 12 36 1.33333333333333 -5.55111512312578e-17 -0.666666666666667 -9.86623976961809e-17 0.76190136189151
+96 0 1 1 0 36 16 36 1.33333333333333 -5.55111512312578e-17 -0.555555555555556 -9.86623976961809e-17 0.729928937348657
+96 0 1 1 0 36 20 36 1.33333333333333 -5.55111512312578e-17 -0.444444444444444 -9.86623976961809e-17 0.698215010923196
+96 0 1 1 0 36 24 36 1.33333333333333 -5.55111512312578e-17 -0.333333333333333 -9.86623976961809e-17 0.668908746807157
+96 0 1 1 0 36 28 36 1.33333333333333 -5.55111512312578e-17 -0.222222222222222 -9.86623976961809e-17 0.641345710414296
+96 0 1 1 0 36 32 36 1.33333333333333 -5.55111512312578e-17 -0.111111111111111 -9.86623976961809e-17 0.621410197839124
+96 0 1 1 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812
+96 0 1 1 0 36 40 36 1.33333333333333 -5.55111512312578e-17 0.111111111111111 -9.86623976961809e-17 0.621410197839125
+96 0 1 1 0 36 44 36 1.33333333333333 -5.55111512312578e-17 0.222222222222222 -9.86623976961809e-17 0.641345710414297
+96 0 1 1 0 36 48 36 1.33333333333333 -5.55111512312578e-17 0.333333333333333 -9.86623976961809e-17 0.668908746807157
+96 0 1 1 0 36 52 36 1.33333333333333 -5.55111512312578e-17 0.444444444444444 -9.86623976961809e-17 0.698215010923196
+96 0 1 1 0 36 56 36 1.33333333333333 -5.55111512312578e-17 0.555555555555555 -9.86623976961809e-17 0.729928937348657
+96 0 1 1 0 36 60 36 1.33333333333333 -5.55111512312578e-17 0.666666666666667 -9.86623976961809e-17 0.76190136189151
+96 0 1 1 0 36 64 36 1.33333333333333 -5.55111512312578e-17 0.777777777777778 -9.86623976961809e-17 0.796688784792057
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 2 0 36 8 36 1.33333333333333 -9.86623976961809e-17 -0.777777777777778 -5.55111512312578e-17 0.796688784792057
+96 0 1 2 0 36 12 36 1.33333333333333 -9.86623976961809e-17 -0.666666666666667 -5.55111512312578e-17 0.76190136189151
+96 0 1 2 0 36 16 36 1.33333333333333 -9.86623976961809e-17 -0.555555555555556 -5.55111512312578e-17 0.729928937348657
+96 0 1 2 0 36 20 36 1.33333333333333 -9.86623976961809e-17 -0.444444444444444 -5.55111512312578e-17 0.698215010923196
+96 0 1 2 0 36 24 36 1.33333333333333 -9.86623976961809e-17 -0.333333333333333 -5.55111512312578e-17 0.668908746807157
+96 0 1 2 0 36 28 36 1.33333333333333 -9.86623976961809e-17 -0.222222222222222 -5.55111512312578e-17 0.641345710414296
+96 0 1 2 0 36 32 36 1.33333333333333 -9.86623976961809e-17 -0.111111111111111 -5.55111512312578e-17 0.621410197839124
+96 0 1 2 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 1 2 0 36 40 36 1.33333333333333 -9.86623976961809e-17 0.111111111111111 -5.55111512312578e-17 0.621410197839125
+96 0 1 2 0 36 44 36 1.33333333333333 -9.86623976961809e-17 0.222222222222222 -5.55111512312578e-17 0.641345710414297
+96 0 1 2 0 36 48 36 1.33333333333333 -9.86623976961809e-17 0.333333333333333 -5.55111512312578e-17 0.668908746807157
+96 0 1 2 0 36 52 36 1.33333333333333 -9.86623976961809e-17 0.444444444444444 -5.55111512312578e-17 0.698215010923196
+96 0 1 2 0 36 56 36 1.33333333333333 -9.86623976961809e-17 0.555555555555555 -5.55111512312578e-17 0.729928937348657
+96 0 1 2 0 36 60 36 1.33333333333333 -9.86623976961809e-17 0.666666666666667 -5.55111512312578e-17 0.76190136189151
+96 0 1 2 0 36 64 36 1.33333333333333 -9.86623976961809e-17 0.777777777777778 -5.55111512312578e-17 0.796688784792057
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 3 0 36 8 36 1.33333333333333 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.796688784792057
+96 0 1 3 0 36 12 36 1.33333333333333 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.76190136189151
+96 0 1 3 0 36 16 36 1.33333333333333 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.729928937348657
+96 0 1 3 0 36 20 36 1.33333333333333 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.698215010923196
+96 0 1 3 0 36 24 36 1.33333333333333 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.668908746807157
+96 0 1 3 0 36 28 36 1.33333333333333 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.641345710414296
+96 0 1 3 0 36 32 36 1.33333333333333 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.621410197839124
+96 0 1 3 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 1 3 0 36 40 36 1.33333333333333 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.621410197839125
+96 0 1 3 0 36 44 36 1.33333333333333 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.641345710414297
+96 0 1 3 0 36 48 36 1.33333333333333 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.668908746807157
+96 0 1 3 0 36 52 36 1.33333333333333 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.698215010923196
+96 0 1 3 0 36 56 36 1.33333333333333 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.729928937348657
+96 0 1 3 0 36 60 36 1.33333333333333 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.76190136189151
+96 0 1 3 0 36 64 36 1.33333333333333 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.796688784792057
+
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 0 0 36 22 36 1.33333333333333 2.46655994240452e-17 -0.388888888888889 2.46655994240452e-17 0.683302448238139
+96 0 2 0 0 36 24 36 1.33333333333333 2.46655994240452e-17 -0.333333333333333 2.46655994240452e-17 0.668908746807157
+96 0 2 0 0 36 26 36 1.33333333333333 2.46655994240452e-17 -0.277777777777778 2.46655994240452e-17 0.654541556639422
+96 0 2 0 0 36 28 36 1.33333333333333 2.46655994240452e-17 -0.222222222222222 2.46655994240452e-17 0.641345710414296
+96 0 2 0 0 36 30 36 1.33333333333333 2.46655994240452e-17 -0.166666666666667 2.46655994240452e-17 0.630026346765969
+96 0 2 0 0 36 32 36 1.33333333333333 2.46655994240452e-17 -0.111111111111111 2.46655994240452e-17 0.621410197839124
+96 0 2 0 0 36 34 36 1.33333333333333 2.46655994240452e-17 -0.0555555555555556 2.46655994240452e-17 0.616824486578861
+96 0 2 0 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812
+96 0 2 0 0 36 38 36 1.33333333333333 2.46655994240452e-17 0.0555555555555555 2.46655994240452e-17 0.616824486578861
+96 0 2 0 0 36 40 36 1.33333333333333 2.46655994240452e-17 0.111111111111111 2.46655994240452e-17 0.621410197839125
+96 0 2 0 0 36 42 36 1.33333333333333 2.46655994240452e-17 0.166666666666667 2.46655994240452e-17 0.63002634676597
+96 0 2 0 0 36 44 36 1.33333333333333 2.46655994240452e-17 0.222222222222222 2.46655994240452e-17 0.641345710414297
+96 0 2 0 0 36 46 36 1.33333333333333 2.46655994240452e-17 0.277777777777778 2.46655994240452e-17 0.654541556639422
+96 0 2 0 0 36 48 36 1.33333333333333 2.46655994240452e-17 0.333333333333333 2.46655994240452e-17 0.668908746807157
+96 0 2 0 0 36 50 36 1.33333333333333 2.46655994240452e-17 0.388888888888889 2.46655994240452e-17 0.683302448238139
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 1 0 36 22 36 1.33333333333333 -2.77555756156289e-17 -0.388888888888889 2.46655994240452e-17 0.683302448238139
+96 0 2 1 0 36 24 36 1.33333333333333 -2.77555756156289e-17 -0.333333333333333 2.46655994240452e-17 0.668908746807157
+96 0 2 1 0 36 26 36 1.33333333333333 -2.77555756156289e-17 -0.277777777777778 2.46655994240452e-17 0.654541556639422
+96 0 2 1 0 36 28 36 1.33333333333333 -2.77555756156289e-17 -0.222222222222222 2.46655994240452e-17 0.641345710414296
+96 0 2 1 0 36 30 36 1.33333333333333 -2.77555756156289e-17 -0.166666666666667 2.46655994240452e-17 0.630026346765969
+96 0 2 1 0 36 32 36 1.33333333333333 -2.77555756156289e-17 -0.111111111111111 2.46655994240452e-17 0.621410197839124
+96 0 2 1 0 36 34 36 1.33333333333333 -2.77555756156289e-17 -0.0555555555555556 2.46655994240452e-17 0.616824486578861
+96 0 2 1 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812
+96 0 2 1 0 36 38 36 1.33333333333333 -2.77555756156289e-17 0.0555555555555555 2.46655994240452e-17 0.616824486578861
+96 0 2 1 0 36 40 36 1.33333333333333 -2.77555756156289e-17 0.111111111111111 2.46655994240452e-17 0.621410197839125
+96 0 2 1 0 36 42 36 1.33333333333333 -2.77555756156289e-17 0.166666666666667 2.46655994240452e-17 0.63002634676597
+96 0 2 1 0 36 44 36 1.33333333333333 -2.77555756156289e-17 0.222222222222222 2.46655994240452e-17 0.641345710414297
+96 0 2 1 0 36 46 36 1.33333333333333 -2.77555756156289e-17 0.277777777777778 2.46655994240452e-17 0.654541556639422
+96 0 2 1 0 36 48 36 1.33333333333333 -2.77555756156289e-17 0.333333333333333 2.46655994240452e-17 0.668908746807157
+96 0 2 1 0 36 50 36 1.33333333333333 -2.77555756156289e-17 0.388888888888889 2.46655994240452e-17 0.683302448238139
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 2 0 36 22 36 1.33333333333333 2.46655994240452e-17 -0.388888888888889 -2.77555756156289e-17 0.683302448238139
+96 0 2 2 0 36 24 36 1.33333333333333 2.46655994240452e-17 -0.333333333333333 -2.77555756156289e-17 0.668908746807157
+96 0 2 2 0 36 26 36 1.33333333333333 2.46655994240452e-17 -0.277777777777778 -2.77555756156289e-17 0.654541556639422
+96 0 2 2 0 36 28 36 1.33333333333333 2.46655994240452e-17 -0.222222222222222 -2.77555756156289e-17 0.641345710414296
+96 0 2 2 0 36 30 36 1.33333333333333 2.46655994240452e-17 -0.166666666666667 -2.77555756156289e-17 0.630026346765969
+96 0 2 2 0 36 32 36 1.33333333333333 2.46655994240452e-17 -0.111111111111111 -2.77555756156289e-17 0.621410197839124
+96 0 2 2 0 36 34 36 1.33333333333333 2.46655994240452e-17 -0.0555555555555556 -2.77555756156289e-17 0.616824486578861
+96 0 2 2 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812
+96 0 2 2 0 36 38 36 1.33333333333333 2.46655994240452e-17 0.0555555555555555 -2.77555756156289e-17 0.616824486578861
+96 0 2 2 0 36 40 36 1.33333333333333 2.46655994240452e-17 0.111111111111111 -2.77555756156289e-17 0.621410197839125
+96 0 2 2 0 36 42 36 1.33333333333333 2.46655994240452e-17 0.166666666666667 -2.77555756156289e-17 0.63002634676597
+96 0 2 2 0 36 44 36 1.33333333333333 2.46655994240452e-17 0.222222222222222 -2.77555756156289e-17 0.641345710414297
+96 0 2 2 0 36 46 36 1.33333333333333 2.46655994240452e-17 0.277777777777778 -2.77555756156289e-17 0.654541556639422
+96 0 2 2 0 36 48 36 1.33333333333333 2.46655994240452e-17 0.333333333333333 -2.77555756156289e-17 0.668908746807157
+96 0 2 2 0 36 50 36 1.33333333333333 2.46655994240452e-17 0.388888888888889 -2.77555756156289e-17 0.683302448238139
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 3 0 36 22 36 1.33333333333333 -2.77555756156289e-17 -0.388888888888889 -2.77555756156289e-17 0.683302448238139
+96 0 2 3 0 36 24 36 1.33333333333333 -2.77555756156289e-17 -0.333333333333333 -2.77555756156289e-17 0.668908746807157
+96 0 2 3 0 36 26 36 1.33333333333333 -2.77555756156289e-17 -0.277777777777778 -2.77555756156289e-17 0.654541556639422
+96 0 2 3 0 36 28 36 1.33333333333333 -2.77555756156289e-17 -0.222222222222222 -2.77555756156289e-17 0.641345710414296
+96 0 2 3 0 36 30 36 1.33333333333333 -2.77555756156289e-17 -0.166666666666667 -2.77555756156289e-17 0.630026346765969
+96 0 2 3 0 36 32 36 1.33333333333333 -2.77555756156289e-17 -0.111111111111111 -2.77555756156289e-17 0.621410197839124
+96 0 2 3 0 36 34 36 1.33333333333333 -2.77555756156289e-17 -0.0555555555555556 -2.77555756156289e-17 0.616824486578861
+96 0 2 3 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812
+96 0 2 3 0 36 38 36 1.33333333333333 -2.77555756156289e-17 0.0555555555555555 -2.77555756156289e-17 0.616824486578861
+96 0 2 3 0 36 40 36 1.33333333333333 -2.77555756156289e-17 0.111111111111111 -2.77555756156289e-17 0.621410197839125
+96 0 2 3 0 36 42 36 1.33333333333333 -2.77555756156289e-17 0.166666666666667 -2.77555756156289e-17 0.63002634676597
+96 0 2 3 0 36 44 36 1.33333333333333 -2.77555756156289e-17 0.222222222222222 -2.77555756156289e-17 0.641345710414297
+96 0 2 3 0 36 46 36 1.33333333333333 -2.77555756156289e-17 0.277777777777778 -2.77555756156289e-17 0.654541556639422
+96 0 2 3 0 36 48 36 1.33333333333333 -2.77555756156289e-17 0.333333333333333 -2.77555756156289e-17 0.668908746807157
+96 0 2 3 0 36 50 36 1.33333333333333 -2.77555756156289e-17 0.388888888888889 -2.77555756156289e-17 0.683302448238139
+
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 0 0 36 29 36 1.33333333333333 0 -0.194444444444445 0 0.63539979750899
+96 0 3 0 0 36 30 36 1.33333333333333 0 -0.166666666666667 0 0.630026346765969
+96 0 3 0 0 36 31 36 1.33333333333333 0 -0.138888888888889 0 0.625297419028293
+96 0 3 0 0 36 32 36 1.33333333333333 0 -0.111111111111111 0 0.621410197839124
+96 0 3 0 0 36 33 36 1.33333333333333 0 -0.0833333333333334 0 0.618663308361111
+96 0 3 0 0 36 34 36 1.33333333333333 0 -0.0555555555555556 0 0.616824486578861
+96 0 3 0 0 36 35 36 1.33333333333333 0 -0.0277777777777778 0 0.615777600484678
+96 0 3 0 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 0 0.61547287921812
+96 0 3 0 0 36 37 36 1.33333333333333 0 0.0277777777777777 0 0.615777600484678
+96 0 3 0 0 36 38 36 1.33333333333333 0 0.0555555555555555 0 0.616824486578861
+96 0 3 0 0 36 39 36 1.33333333333333 0 0.0833333333333333 0 0.618663308361111
+96 0 3 0 0 36 40 36 1.33333333333333 0 0.111111111111111 0 0.621410197839125
+96 0 3 0 0 36 41 36 1.33333333333333 0 0.138888888888889 0 0.625297419028293
+96 0 3 0 0 36 42 36 1.33333333333333 0 0.166666666666667 0 0.63002634676597
+96 0 3 0 0 36 43 36 1.33333333333333 0 0.194444444444444 0 0.63539979750899
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 1 0 36 29 36 1.33333333333333 -1.38777878078145e-17 -0.194444444444445 0 0.63539979750899
+96 0 3 1 0 36 30 36 1.33333333333333 -1.38777878078145e-17 -0.166666666666667 0 0.630026346765969
+96 0 3 1 0 36 31 36 1.33333333333333 -1.38777878078145e-17 -0.138888888888889 0 0.625297419028293
+96 0 3 1 0 36 32 36 1.33333333333333 -1.38777878078145e-17 -0.111111111111111 0 0.621410197839124
+96 0 3 1 0 36 33 36 1.33333333333333 -1.38777878078145e-17 -0.0833333333333334 0 0.618663308361111
+96 0 3 1 0 36 34 36 1.33333333333333 -1.38777878078145e-17 -0.0555555555555556 0 0.616824486578861
+96 0 3 1 0 36 35 36 1.33333333333333 -1.38777878078145e-17 -0.0277777777777778 0 0.615777600484678
+96 0 3 1 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0 0.61547287921812
+96 0 3 1 0 36 37 36 1.33333333333333 -1.38777878078145e-17 0.0277777777777777 0 0.615777600484678
+96 0 3 1 0 36 38 36 1.33333333333333 -1.38777878078145e-17 0.0555555555555555 0 0.616824486578861
+96 0 3 1 0 36 39 36 1.33333333333333 -1.38777878078145e-17 0.0833333333333333 0 0.618663308361111
+96 0 3 1 0 36 40 36 1.33333333333333 -1.38777878078145e-17 0.111111111111111 0 0.621410197839125
+96 0 3 1 0 36 41 36 1.33333333333333 -1.38777878078145e-17 0.138888888888889 0 0.625297419028293
+96 0 3 1 0 36 42 36 1.33333333333333 -1.38777878078145e-17 0.166666666666667 0 0.63002634676597
+96 0 3 1 0 36 43 36 1.33333333333333 -1.38777878078145e-17 0.194444444444444 0 0.63539979750899
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 2 0 36 29 36 1.33333333333333 0 -0.194444444444445 -1.38777878078145e-17 0.63539979750899
+96 0 3 2 0 36 30 36 1.33333333333333 0 -0.166666666666667 -1.38777878078145e-17 0.630026346765969
+96 0 3 2 0 36 31 36 1.33333333333333 0 -0.138888888888889 -1.38777878078145e-17 0.625297419028293
+96 0 3 2 0 36 32 36 1.33333333333333 0 -0.111111111111111 -1.38777878078145e-17 0.621410197839124
+96 0 3 2 0 36 33 36 1.33333333333333 0 -0.0833333333333334 -1.38777878078145e-17 0.618663308361111
+96 0 3 2 0 36 34 36 1.33333333333333 0 -0.0555555555555556 -1.38777878078145e-17 0.616824486578861
+96 0 3 2 0 36 35 36 1.33333333333333 0 -0.0277777777777778 -1.38777878078145e-17 0.615777600484678
+96 0 3 2 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812
+96 0 3 2 0 36 37 36 1.33333333333333 0 0.0277777777777777 -1.38777878078145e-17 0.615777600484678
+96 0 3 2 0 36 38 36 1.33333333333333 0 0.0555555555555555 -1.38777878078145e-17 0.616824486578861
+96 0 3 2 0 36 39 36 1.33333333333333 0 0.0833333333333333 -1.38777878078145e-17 0.618663308361111
+96 0 3 2 0 36 40 36 1.33333333333333 0 0.111111111111111 -1.38777878078145e-17 0.621410197839125
+96 0 3 2 0 36 41 36 1.33333333333333 0 0.138888888888889 -1.38777878078145e-17 0.625297419028293
+96 0 3 2 0 36 42 36 1.33333333333333 0 0.166666666666667 -1.38777878078145e-17 0.63002634676597
+96 0 3 2 0 36 43 36 1.33333333333333 0 0.194444444444444 -1.38777878078145e-17 0.63539979750899
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 3 0 36 29 36 1.33333333333333 -1.38777878078145e-17 -0.194444444444445 -1.38777878078145e-17 0.63539979750899
+96 0 3 3 0 36 30 36 1.33333333333333 -1.38777878078145e-17 -0.166666666666667 -1.38777878078145e-17 0.630026346765969
+96 0 3 3 0 36 31 36 1.33333333333333 -1.38777878078145e-17 -0.138888888888889 -1.38777878078145e-17 0.625297419028293
+96 0 3 3 0 36 32 36 1.33333333333333 -1.38777878078145e-17 -0.111111111111111 -1.38777878078145e-17 0.621410197839124
+96 0 3 3 0 36 33 36 1.33333333333333 -1.38777878078145e-17 -0.0833333333333334 -1.38777878078145e-17 0.618663308361111
+96 0 3 3 0 36 34 36 1.33333333333333 -1.38777878078145e-17 -0.0555555555555556 -1.38777878078145e-17 0.616824486578861
+96 0 3 3 0 36 35 36 1.33333333333333 -1.38777878078145e-17 -0.0277777777777778 -1.38777878078145e-17 0.615777600484678
+96 0 3 3 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812
+96 0 3 3 0 36 37 36 1.33333333333333 -1.38777878078145e-17 0.0277777777777777 -1.38777878078145e-17 0.615777600484678
+96 0 3 3 0 36 38 36 1.33333333333333 -1.38777878078145e-17 0.0555555555555555 -1.38777878078145e-17 0.616824486578861
+96 0 3 3 0 36 39 36 1.33333333333333 -1.38777878078145e-17 0.0833333333333333 -1.38777878078145e-17 0.618663308361111
+96 0 3 3 0 36 40 36 1.33333333333333 -1.38777878078145e-17 0.111111111111111 -1.38777878078145e-17 0.621410197839125
+96 0 3 3 0 36 41 36 1.33333333333333 -1.38777878078145e-17 0.138888888888889 -1.38777878078145e-17 0.625297419028293
+96 0 3 3 0 36 42 36 1.33333333333333 -1.38777878078145e-17 0.166666666666667 -1.38777878078145e-17 0.63002634676597
+96 0 3 3 0 36 43 36 1.33333333333333 -1.38777878078145e-17 0.194444444444444 -1.38777878078145e-17 0.63539979750899
+
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 0 0 40 0 40 1.77777777777778 0.111111111111111 -1 0.111111111111111 0.873700996777018
+128 0 0 0 0 40 8 40 1.77777777777778 0.111111111111111 -0.777777777777778 0.111111111111111 0.859471717622308
+128 0 0 0 0 40 16 40 1.77777777777778 0.111111111111111 -0.555555555555556 0.111111111111111 0.863004424640887
+128 0 0 0 0 40 24 40 1.77777777777778 0.111111111111111 -0.333333333333333 0.111111111111111 0.883486952153519
+128 0 0 0 0 40 32 40 1.77777777777778 0.111111111111111 -0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 0 0 40 48 40 1.77777777777778 0.111111111111111 0.333333333333333 0.111111111111111 0.883486952153519
+128 0 0 0 0 40 56 40 1.77777777777778 0.111111111111111 0.555555555555556 0.111111111111111 0.863004424640887
+128 0 0 0 0 40 64 40 1.77777777777778 0.111111111111111 0.777777777777778 0.111111111111111 0.859471717622308
+128 0 0 0 0 40 72 40 1.77777777777778 0.111111111111111 1 0.111111111111111 0.873700996777018
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 1 0 40 0 40 1.77777777777778 0.111111111111111 -1 0.111111111111111 0.873700996777018
+128 0 0 1 0 40 8 40 1.77777777777778 0.111111111111111 -0.777777777777778 0.111111111111111 0.859471717622308
+128 0 0 1 0 40 16 40 1.77777777777778 0.111111111111111 -0.555555555555556 0.111111111111111 0.863004424640887
+128 0 0 1 0 40 24 40 1.77777777777778 0.111111111111111 -0.333333333333333 0.111111111111111 0.883486952153519
+128 0 0 1 0 40 32 40 1.77777777777778 0.111111111111111 -0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 1 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 1 0 40 48 40 1.77777777777778 0.111111111111111 0.333333333333333 0.111111111111111 0.883486952153519
+128 0 0 1 0 40 56 40 1.77777777777778 0.111111111111111 0.555555555555556 0.111111111111111 0.863004424640887
+128 0 0 1 0 40 64 40 1.77777777777778 0.111111111111111 0.777777777777778 0.111111111111111 0.859471717622308
+128 0 0 1 0 40 72 40 1.77777777777778 0.111111111111111 1 0.111111111111111 0.873700996777018
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 2 0 40 0 40 1.77777777777778 0.111111111111111 -1 0.111111111111111 0.873700996777018
+128 0 0 2 0 40 8 40 1.77777777777778 0.111111111111111 -0.777777777777778 0.111111111111111 0.859471717622308
+128 0 0 2 0 40 16 40 1.77777777777778 0.111111111111111 -0.555555555555556 0.111111111111111 0.863004424640887
+128 0 0 2 0 40 24 40 1.77777777777778 0.111111111111111 -0.333333333333333 0.111111111111111 0.883486952153519
+128 0 0 2 0 40 32 40 1.77777777777778 0.111111111111111 -0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 2 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 2 0 40 48 40 1.77777777777778 0.111111111111111 0.333333333333333 0.111111111111111 0.883486952153519
+128 0 0 2 0 40 56 40 1.77777777777778 0.111111111111111 0.555555555555556 0.111111111111111 0.863004424640887
+128 0 0 2 0 40 64 40 1.77777777777778 0.111111111111111 0.777777777777778 0.111111111111111 0.859471717622308
+128 0 0 2 0 40 72 40 1.77777777777778 0.111111111111111 1 0.111111111111111 0.873700996777018
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 3 0 40 0 40 1.77777777777778 0.111111111111111 -1 0.111111111111111 0.873700996777018
+128 0 0 3 0 40 8 40 1.77777777777778 0.111111111111111 -0.777777777777778 0.111111111111111 0.859471717622308
+128 0 0 3 0 40 16 40 1.77777777777778 0.111111111111111 -0.555555555555556 0.111111111111111 0.863004424640887
+128 0 0 3 0 40 24 40 1.77777777777778 0.111111111111111 -0.333333333333333 0.111111111111111 0.883486952153519
+128 0 0 3 0 40 32 40 1.77777777777778 0.111111111111111 -0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 3 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 3 0 40 48 40 1.77777777777778 0.111111111111111 0.333333333333333 0.111111111111111 0.883486952153519
+128 0 0 3 0 40 56 40 1.77777777777778 0.111111111111111 0.555555555555556 0.111111111111111 0.863004424640887
+128 0 0 3 0 40 64 40 1.77777777777778 0.111111111111111 0.777777777777778 0.111111111111111 0.859471717622308
+128 0 0 3 0 40 72 40 1.77777777777778 0.111111111111111 1 0.111111111111111 0.873700996777018
+
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 0 0 36 8 36 1.77777777777778 -9.86623976961809e-17 -0.777777777777778 -9.86623976961809e-17 0.862653663591007
+128 0 1 0 0 36 12 36 1.77777777777778 -9.86623976961809e-17 -0.666666666666667 -9.86623976961809e-17 0.862560028606905
+128 0 1 0 0 36 16 36 1.77777777777778 -9.86623976961809e-17 -0.555555555555556 -9.86623976961809e-17 0.866965759785718
+128 0 1 0 0 36 20 36 1.77777777777778 -9.86623976961809e-17 -0.444444444444444 -9.86623976961809e-17 0.876167092595071
+128 0 1 0 0 36 24 36 1.77777777777778 -9.86623976961809e-17 -0.333333333333333 -9.86623976961809e-17 0.889185421864397
+128 0 1 0 0 36 28 36 1.77777777777778 -9.86623976961809e-17 -0.222222222222222 -9.86623976961809e-17 0.907998184681559
+128 0 1 0 0 36 32 36 1.77777777777778 -9.86623976961809e-17 -0.111111111111111 -9.86623976961809e-17 0.924033489738888
+128 0 1 0 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199
+128 0 1 0 0 36 40 36 1.77777777777778 -9.86623976961809e-17 0.111111111111111 -9.86623976961809e-17 0.924033489738888
+128 0 1 0 0 36 44 36 1.77777777777778 -9.86623976961809e-17 0.222222222222222 -9.86623976961809e-17 0.907998184681559
+128 0 1 0 0 36 48 36 1.77777777777778 -9.86623976961809e-17 0.333333333333333 -9.86623976961809e-17 0.889185421864397
+128 0 1 0 0 36 52 36 1.77777777777778 -9.86623976961809e-17 0.444444444444444 -9.86623976961809e-17 0.876167092595071
+128 0 1 0 0 36 56 36 1.77777777777778 -9.86623976961809e-17 0.555555555555555 -9.86623976961809e-17 0.866965759785718
+128 0 1 0 0 36 60 36 1.77777777777778 -9.86623976961809e-17 0.666666666666667 -9.86623976961809e-17 0.862560028606905
+128 0 1 0 0 36 64 36 1.77777777777778 -9.86623976961809e-17 0.777777777777778 -9.86623976961809e-17 0.862653663591007
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 1 0 36 8 36 1.77777777777778 -5.55111512312578e-17 -0.777777777777778 -9.86623976961809e-17 0.862653663591007
+128 0 1 1 0 36 12 36 1.77777777777778 -5.55111512312578e-17 -0.666666666666667 -9.86623976961809e-17 0.862560028606905
+128 0 1 1 0 36 16 36 1.77777777777778 -5.55111512312578e-17 -0.555555555555556 -9.86623976961809e-17 0.866965759785718
+128 0 1 1 0 36 20 36 1.77777777777778 -5.55111512312578e-17 -0.444444444444444 -9.86623976961809e-17 0.876167092595071
+128 0 1 1 0 36 24 36 1.77777777777778 -5.55111512312578e-17 -0.333333333333333 -9.86623976961809e-17 0.889185421864397
+128 0 1 1 0 36 28 36 1.77777777777778 -5.55111512312578e-17 -0.222222222222222 -9.86623976961809e-17 0.907998184681559
+128 0 1 1 0 36 32 36 1.77777777777778 -5.55111512312578e-17 -0.111111111111111 -9.86623976961809e-17 0.924033489738888
+128 0 1 1 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199
+128 0 1 1 0 36 40 36 1.77777777777778 -5.55111512312578e-17 0.111111111111111 -9.86623976961809e-17 0.924033489738888
+128 0 1 1 0 36 44 36 1.77777777777778 -5.55111512312578e-17 0.222222222222222 -9.86623976961809e-17 0.907998184681559
+128 0 1 1 0 36 48 36 1.77777777777778 -5.55111512312578e-17 0.333333333333333 -9.86623976961809e-17 0.889185421864397
+128 0 1 1 0 36 52 36 1.77777777777778 -5.55111512312578e-17 0.444444444444444 -9.86623976961809e-17 0.876167092595071
+128 0 1 1 0 36 56 36 1.77777777777778 -5.55111512312578e-17 0.555555555555555 -9.86623976961809e-17 0.866965759785718
+128 0 1 1 0 36 60 36 1.77777777777778 -5.55111512312578e-17 0.666666666666667 -9.86623976961809e-17 0.862560028606905
+128 0 1 1 0 36 64 36 1.77777777777778 -5.55111512312578e-17 0.777777777777778 -9.86623976961809e-17 0.862653663591007
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 2 0 36 8 36 1.77777777777778 -9.86623976961809e-17 -0.777777777777778 -5.55111512312578e-17 0.862653663591007
+128 0 1 2 0 36 12 36 1.77777777777778 -9.86623976961809e-17 -0.666666666666667 -5.55111512312578e-17 0.862560028606905
+128 0 1 2 0 36 16 36 1.77777777777778 -9.86623976961809e-17 -0.555555555555556 -5.55111512312578e-17 0.866965759785718
+128 0 1 2 0 36 20 36 1.77777777777778 -9.86623976961809e-17 -0.444444444444444 -5.55111512312578e-17 0.876167092595071
+128 0 1 2 0 36 24 36 1.77777777777778 -9.86623976961809e-17 -0.333333333333333 -5.55111512312578e-17 0.889185421864397
+128 0 1 2 0 36 28 36 1.77777777777778 -9.86623976961809e-17 -0.222222222222222 -5.55111512312578e-17 0.907998184681559
+128 0 1 2 0 36 32 36 1.77777777777778 -9.86623976961809e-17 -0.111111111111111 -5.55111512312578e-17 0.924033489738888
+128 0 1 2 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 1 2 0 36 40 36 1.77777777777778 -9.86623976961809e-17 0.111111111111111 -5.55111512312578e-17 0.924033489738888
+128 0 1 2 0 36 44 36 1.77777777777778 -9.86623976961809e-17 0.222222222222222 -5.55111512312578e-17 0.907998184681559
+128 0 1 2 0 36 48 36 1.77777777777778 -9.86623976961809e-17 0.333333333333333 -5.55111512312578e-17 0.889185421864397
+128 0 1 2 0 36 52 36 1.77777777777778 -9.86623976961809e-17 0.444444444444444 -5.55111512312578e-17 0.876167092595071
+128 0 1 2 0 36 56 36 1.77777777777778 -9.86623976961809e-17 0.555555555555555 -5.55111512312578e-17 0.866965759785718
+128 0 1 2 0 36 60 36 1.77777777777778 -9.86623976961809e-17 0.666666666666667 -5.55111512312578e-17 0.862560028606905
+128 0 1 2 0 36 64 36 1.77777777777778 -9.86623976961809e-17 0.777777777777778 -5.55111512312578e-17 0.862653663591007
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 3 0 36 8 36 1.77777777777778 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.862653663591007
+128 0 1 3 0 36 12 36 1.77777777777778 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.862560028606905
+128 0 1 3 0 36 16 36 1.77777777777778 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.866965759785718
+128 0 1 3 0 36 20 36 1.77777777777778 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.876167092595071
+128 0 1 3 0 36 24 36 1.77777777777778 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.889185421864397
+128 0 1 3 0 36 28 36 1.77777777777778 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.907998184681559
+128 0 1 3 0 36 32 36 1.77777777777778 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.924033489738888
+128 0 1 3 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 1 3 0 36 40 36 1.77777777777778 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.924033489738888
+128 0 1 3 0 36 44 36 1.77777777777778 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.907998184681559
+128 0 1 3 0 36 48 36 1.77777777777778 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.889185421864397
+128 0 1 3 0 36 52 36 1.77777777777778 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.876167092595071
+128 0 1 3 0 36 56 36 1.77777777777778 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.866965759785718
+128 0 1 3 0 36 60 36 1.77777777777778 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.862560028606905
+128 0 1 3 0 36 64 36 1.77777777777778 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.862653663591007
+
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 0 0 36 22 36 1.77777777777778 2.46655994240452e-17 -0.388888888888889 2.46655994240452e-17 0.882075542854246
+128 0 2 0 0 36 24 36 1.77777777777778 2.46655994240452e-17 -0.333333333333333 2.46655994240452e-17 0.889185421864397
+128 0 2 0 0 36 26 36 1.77777777777778 2.46655994240452e-17 -0.277777777777778 2.46655994240452e-17 0.898403242286228
+128 0 2 0 0 36 28 36 1.77777777777778 2.46655994240452e-17 -0.222222222222222 2.46655994240452e-17 0.907998184681559
+128 0 2 0 0 36 30 36 1.77777777777778 2.46655994240452e-17 -0.166666666666667 2.46655994240452e-17 0.916919384356027
+128 0 2 0 0 36 32 36 1.77777777777778 2.46655994240452e-17 -0.111111111111111 2.46655994240452e-17 0.924033489738888
+128 0 2 0 0 36 34 36 1.77777777777778 2.46655994240452e-17 -0.0555555555555556 2.46655994240452e-17 0.927485951077396
+128 0 2 0 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199
+128 0 2 0 0 36 38 36 1.77777777777778 2.46655994240452e-17 0.0555555555555555 2.46655994240452e-17 0.927485951077396
+128 0 2 0 0 36 40 36 1.77777777777778 2.46655994240452e-17 0.111111111111111 2.46655994240452e-17 0.924033489738888
+128 0 2 0 0 36 42 36 1.77777777777778 2.46655994240452e-17 0.166666666666667 2.46655994240452e-17 0.916919384356027
+128 0 2 0 0 36 44 36 1.77777777777778 2.46655994240452e-17 0.222222222222222 2.46655994240452e-17 0.907998184681559
+128 0 2 0 0 36 46 36 1.77777777777778 2.46655994240452e-17 0.277777777777778 2.46655994240452e-17 0.898403242286228
+128 0 2 0 0 36 48 36 1.77777777777778 2.46655994240452e-17 0.333333333333333 2.46655994240452e-17 0.889185421864397
+128 0 2 0 0 36 50 36 1.77777777777778 2.46655994240452e-17 0.388888888888889 2.46655994240452e-17 0.882075542854246
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 1 0 36 22 36 1.77777777777778 -2.77555756156289e-17 -0.388888888888889 2.46655994240452e-17 0.882075542854246
+128 0 2 1 0 36 24 36 1.77777777777778 -2.77555756156289e-17 -0.333333333333333 2.46655994240452e-17 0.889185421864397
+128 0 2 1 0 36 26 36 1.77777777777778 -2.77555756156289e-17 -0.277777777777778 2.46655994240452e-17 0.898403242286228
+128 0 2 1 0 36 28 36 1.77777777777778 -2.77555756156289e-17 -0.222222222222222 2.46655994240452e-17 0.907998184681559
+128 0 2 1 0 36 30 36 1.77777777777778 -2.77555756156289e-17 -0.166666666666667 2.46655994240452e-17 0.916919384356027
+128 0 2 1 0 36 32 36 1.77777777777778 -2.77555756156289e-17 -0.111111111111111 2.46655994240452e-17 0.924033489738888
+128 0 2 1 0 36 34 36 1.77777777777778 -2.77555756156289e-17 -0.0555555555555556 2.46655994240452e-17 0.927485951077396
+128 0 2 1 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199
+128 0 2 1 0 36 38 36 1.77777777777778 -2.77555756156289e-17 0.0555555555555555 2.46655994240452e-17 0.927485951077396
+128 0 2 1 0 36 40 36 1.77777777777778 -2.77555756156289e-17 0.111111111111111 2.46655994240452e-17 0.924033489738888
+128 0 2 1 0 36 42 36 1.77777777777778 -2.77555756156289e-17 0.166666666666667 2.46655994240452e-17 0.916919384356027
+128 0 2 1 0 36 44 36 1.77777777777778 -2.77555756156289e-17 0.222222222222222 2.46655994240452e-17 0.907998184681559
+128 0 2 1 0 36 46 36 1.77777777777778 -2.77555756156289e-17 0.277777777777778 2.46655994240452e-17 0.898403242286228
+128 0 2 1 0 36 48 36 1.77777777777778 -2.77555756156289e-17 0.333333333333333 2.46655994240452e-17 0.889185421864397
+128 0 2 1 0 36 50 36 1.77777777777778 -2.77555756156289e-17 0.388888888888889 2.46655994240452e-17 0.882075542854246
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 2 0 36 22 36 1.77777777777778 2.46655994240452e-17 -0.388888888888889 -2.77555756156289e-17 0.882075542854246
+128 0 2 2 0 36 24 36 1.77777777777778 2.46655994240452e-17 -0.333333333333333 -2.77555756156289e-17 0.889185421864397
+128 0 2 2 0 36 26 36 1.77777777777778 2.46655994240452e-17 -0.277777777777778 -2.77555756156289e-17 0.898403242286228
+128 0 2 2 0 36 28 36 1.77777777777778 2.46655994240452e-17 -0.222222222222222 -2.77555756156289e-17 0.907998184681559
+128 0 2 2 0 36 30 36 1.77777777777778 2.46655994240452e-17 -0.166666666666667 -2.77555756156289e-17 0.916919384356027
+128 0 2 2 0 36 32 36 1.77777777777778 2.46655994240452e-17 -0.111111111111111 -2.77555756156289e-17 0.924033489738888
+128 0 2 2 0 36 34 36 1.77777777777778 2.46655994240452e-17 -0.0555555555555556 -2.77555756156289e-17 0.927485951077396
+128 0 2 2 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199
+128 0 2 2 0 36 38 36 1.77777777777778 2.46655994240452e-17 0.0555555555555555 -2.77555756156289e-17 0.927485951077396
+128 0 2 2 0 36 40 36 1.77777777777778 2.46655994240452e-17 0.111111111111111 -2.77555756156289e-17 0.924033489738888
+128 0 2 2 0 36 42 36 1.77777777777778 2.46655994240452e-17 0.166666666666667 -2.77555756156289e-17 0.916919384356027
+128 0 2 2 0 36 44 36 1.77777777777778 2.46655994240452e-17 0.222222222222222 -2.77555756156289e-17 0.907998184681559
+128 0 2 2 0 36 46 36 1.77777777777778 2.46655994240452e-17 0.277777777777778 -2.77555756156289e-17 0.898403242286228
+128 0 2 2 0 36 48 36 1.77777777777778 2.46655994240452e-17 0.333333333333333 -2.77555756156289e-17 0.889185421864397
+128 0 2 2 0 36 50 36 1.77777777777778 2.46655994240452e-17 0.388888888888889 -2.77555756156289e-17 0.882075542854246
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 3 0 36 22 36 1.77777777777778 -2.77555756156289e-17 -0.388888888888889 -2.77555756156289e-17 0.882075542854246
+128 0 2 3 0 36 24 36 1.77777777777778 -2.77555756156289e-17 -0.333333333333333 -2.77555756156289e-17 0.889185421864397
+128 0 2 3 0 36 26 36 1.77777777777778 -2.77555756156289e-17 -0.277777777777778 -2.77555756156289e-17 0.898403242286228
+128 0 2 3 0 36 28 36 1.77777777777778 -2.77555756156289e-17 -0.222222222222222 -2.77555756156289e-17 0.907998184681559
+128 0 2 3 0 36 30 36 1.77777777777778 -2.77555756156289e-17 -0.166666666666667 -2.77555756156289e-17 0.916919384356027
+128 0 2 3 0 36 32 36 1.77777777777778 -2.77555756156289e-17 -0.111111111111111 -2.77555756156289e-17 0.924033489738888
+128 0 2 3 0 36 34 36 1.77777777777778 -2.77555756156289e-17 -0.0555555555555556 -2.77555756156289e-17 0.927485951077396
+128 0 2 3 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199
+128 0 2 3 0 36 38 36 1.77777777777778 -2.77555756156289e-17 0.0555555555555555 -2.77555756156289e-17 0.927485951077396
+128 0 2 3 0 36 40 36 1.77777777777778 -2.77555756156289e-17 0.111111111111111 -2.77555756156289e-17 0.924033489738888
+128 0 2 3 0 36 42 36 1.77777777777778 -2.77555756156289e-17 0.166666666666667 -2.77555756156289e-17 0.916919384356027
+128 0 2 3 0 36 44 36 1.77777777777778 -2.77555756156289e-17 0.222222222222222 -2.77555756156289e-17 0.907998184681559
+128 0 2 3 0 36 46 36 1.77777777777778 -2.77555756156289e-17 0.277777777777778 -2.77555756156289e-17 0.898403242286228
+128 0 2 3 0 36 48 36 1.77777777777778 -2.77555756156289e-17 0.333333333333333 -2.77555756156289e-17 0.889185421864397
+128 0 2 3 0 36 50 36 1.77777777777778 -2.77555756156289e-17 0.388888888888889 -2.77555756156289e-17 0.882075542854246
+
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 0 0 36 29 36 1.77777777777778 0 -0.194444444444445 0 0.912613836832073
+128 0 3 0 0 36 30 36 1.77777777777778 0 -0.166666666666667 0 0.916919384356027
+128 0 3 0 0 36 31 36 1.77777777777778 0 -0.138888888888889 0 0.920818233193455
+128 0 3 0 0 36 32 36 1.77777777777778 0 -0.111111111111111 0 0.924033489738888
+128 0 3 0 0 36 33 36 1.77777777777778 0 -0.0833333333333334 0 0.926147880297958
+128 0 3 0 0 36 34 36 1.77777777777778 0 -0.0555555555555556 0 0.927485951077396
+128 0 3 0 0 36 35 36 1.77777777777778 0 -0.0277777777777778 0 0.928209975180567
+128 0 3 0 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 0 0.928389498223199
+128 0 3 0 0 36 37 36 1.77777777777778 0 0.0277777777777777 0 0.928209975180567
+128 0 3 0 0 36 38 36 1.77777777777778 0 0.0555555555555555 0 0.927485951077396
+128 0 3 0 0 36 39 36 1.77777777777778 0 0.0833333333333333 0 0.926147880297958
+128 0 3 0 0 36 40 36 1.77777777777778 0 0.111111111111111 0 0.924033489738888
+128 0 3 0 0 36 41 36 1.77777777777778 0 0.138888888888889 0 0.920818233193455
+128 0 3 0 0 36 42 36 1.77777777777778 0 0.166666666666667 0 0.916919384356027
+128 0 3 0 0 36 43 36 1.77777777777778 0 0.194444444444444 0 0.912613836832073
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 1 0 36 29 36 1.77777777777778 -1.38777878078145e-17 -0.194444444444445 0 0.912613836832073
+128 0 3 1 0 36 30 36 1.77777777777778 -1.38777878078145e-17 -0.166666666666667 0 0.916919384356027
+128 0 3 1 0 36 31 36 1.77777777777778 -1.38777878078145e-17 -0.138888888888889 0 0.920818233193455
+128 0 3 1 0 36 32 36 1.77777777777778 -1.38777878078145e-17 -0.111111111111111 0 0.924033489738888
+128 0 3 1 0 36 33 36 1.77777777777778 -1.38777878078145e-17 -0.0833333333333334 0 0.926147880297958
+128 0 3 1 0 36 34 36 1.77777777777778 -1.38777878078145e-17 -0.0555555555555556 0 0.927485951077396
+128 0 3 1 0 36 35 36 1.77777777777778 -1.38777878078145e-17 -0.0277777777777778 0 0.928209975180567
+128 0 3 1 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0 0.928389498223199
+128 0 3 1 0 36 37 36 1.77777777777778 -1.38777878078145e-17 0.0277777777777777 0 0.928209975180567
+128 0 3 1 0 36 38 36 1.77777777777778 -1.38777878078145e-17 0.0555555555555555 0 0.927485951077396
+128 0 3 1 0 36 39 36 1.77777777777778 -1.38777878078145e-17 0.0833333333333333 0 0.926147880297958
+128 0 3 1 0 36 40 36 1.77777777777778 -1.38777878078145e-17 0.111111111111111 0 0.924033489738888
+128 0 3 1 0 36 41 36 1.77777777777778 -1.38777878078145e-17 0.138888888888889 0 0.920818233193455
+128 0 3 1 0 36 42 36 1.77777777777778 -1.38777878078145e-17 0.166666666666667 0 0.916919384356027
+128 0 3 1 0 36 43 36 1.77777777777778 -1.38777878078145e-17 0.194444444444444 0 0.912613836832073
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 2 0 36 29 36 1.77777777777778 0 -0.194444444444445 -1.38777878078145e-17 0.912613836832073
+128 0 3 2 0 36 30 36 1.77777777777778 0 -0.166666666666667 -1.38777878078145e-17 0.916919384356027
+128 0 3 2 0 36 31 36 1.77777777777778 0 -0.138888888888889 -1.38777878078145e-17 0.920818233193455
+128 0 3 2 0 36 32 36 1.77777777777778 0 -0.111111111111111 -1.38777878078145e-17 0.924033489738888
+128 0 3 2 0 36 33 36 1.77777777777778 0 -0.0833333333333334 -1.38777878078145e-17 0.926147880297958
+128 0 3 2 0 36 34 36 1.77777777777778 0 -0.0555555555555556 -1.38777878078145e-17 0.927485951077396
+128 0 3 2 0 36 35 36 1.77777777777778 0 -0.0277777777777778 -1.38777878078145e-17 0.928209975180567
+128 0 3 2 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199
+128 0 3 2 0 36 37 36 1.77777777777778 0 0.0277777777777777 -1.38777878078145e-17 0.928209975180567
+128 0 3 2 0 36 38 36 1.77777777777778 0 0.0555555555555555 -1.38777878078145e-17 0.927485951077396
+128 0 3 2 0 36 39 36 1.77777777777778 0 0.0833333333333333 -1.38777878078145e-17 0.926147880297958
+128 0 3 2 0 36 40 36 1.77777777777778 0 0.111111111111111 -1.38777878078145e-17 0.924033489738888
+128 0 3 2 0 36 41 36 1.77777777777778 0 0.138888888888889 -1.38777878078145e-17 0.920818233193455
+128 0 3 2 0 36 42 36 1.77777777777778 0 0.166666666666667 -1.38777878078145e-17 0.916919384356027
+128 0 3 2 0 36 43 36 1.77777777777778 0 0.194444444444444 -1.38777878078145e-17 0.912613836832073
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 3 0 36 29 36 1.77777777777778 -1.38777878078145e-17 -0.194444444444445 -1.38777878078145e-17 0.912613836832073
+128 0 3 3 0 36 30 36 1.77777777777778 -1.38777878078145e-17 -0.166666666666667 -1.38777878078145e-17 0.916919384356027
+128 0 3 3 0 36 31 36 1.77777777777778 -1.38777878078145e-17 -0.138888888888889 -1.38777878078145e-17 0.920818233193455
+128 0 3 3 0 36 32 36 1.77777777777778 -1.38777878078145e-17 -0.111111111111111 -1.38777878078145e-17 0.924033489738888
+128 0 3 3 0 36 33 36 1.77777777777778 -1.38777878078145e-17 -0.0833333333333334 -1.38777878078145e-17 0.926147880297958
+128 0 3 3 0 36 34 36 1.77777777777778 -1.38777878078145e-17 -0.0555555555555556 -1.38777878078145e-17 0.927485951077396
+128 0 3 3 0 36 35 36 1.77777777777778 -1.38777878078145e-17 -0.0277777777777778 -1.38777878078145e-17 0.928209975180567
+128 0 3 3 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199
+128 0 3 3 0 36 37 36 1.77777777777778 -1.38777878078145e-17 0.0277777777777777 -1.38777878078145e-17 0.928209975180567
+128 0 3 3 0 36 38 36 1.77777777777778 -1.38777878078145e-17 0.0555555555555555 -1.38777878078145e-17 0.927485951077396
+128 0 3 3 0 36 39 36 1.77777777777778 -1.38777878078145e-17 0.0833333333333333 -1.38777878078145e-17 0.926147880297958
+128 0 3 3 0 36 40 36 1.77777777777778 -1.38777878078145e-17 0.111111111111111 -1.38777878078145e-17 0.924033489738888
+128 0 3 3 0 36 41 36 1.77777777777778 -1.38777878078145e-17 0.138888888888889 -1.38777878078145e-17 0.920818233193455
+128 0 3 3 0 36 42 36 1.77777777777778 -1.38777878078145e-17 0.166666666666667 -1.38777878078145e-17 0.916919384356027
+128 0 3 3 0 36 43 36 1.77777777777778 -1.38777878078145e-17 0.194444444444444 -1.38777878078145e-17 0.912613836832073
+
+
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.z.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.z.asc
new file mode 100644
index 000000000..343b8054b
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.z.asc
@@ -0,0 +1,632 @@
+# WAVETOY::phi z (phi)
+#
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 0 0 40 40 0 0.888888888888889 0.111111111111111 0.111111111111111 -1 0.873700996777018
+64 0 0 0 0 40 40 8 0.888888888888889 0.111111111111111 0.111111111111111 -0.777777777777778 0.807676282684182
+64 0 0 0 0 40 40 16 0.888888888888889 0.111111111111111 0.111111111111111 -0.555555555555556 0.756699260944861
+64 0 0 0 0 40 40 24 0.888888888888889 0.111111111111111 0.111111111111111 -0.333333333333333 0.730294733882952
+64 0 0 0 0 40 40 32 0.888888888888889 0.111111111111111 0.111111111111111 -0.111111111111111 0.725539249473295
+64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 0 0 40 40 48 0.888888888888889 0.111111111111111 0.111111111111111 0.333333333333333 0.730294733882952
+
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 1 0 40 40 0 0.888888888888889 0.111111111111111 0.111111111111111 -1 0.873700996777018
+64 0 0 1 0 40 40 8 0.888888888888889 0.111111111111111 0.111111111111111 -0.777777777777778 0.807676282684182
+64 0 0 1 0 40 40 16 0.888888888888889 0.111111111111111 0.111111111111111 -0.555555555555556 0.756699260944861
+64 0 0 1 0 40 40 24 0.888888888888889 0.111111111111111 0.111111111111111 -0.333333333333333 0.730294733882952
+64 0 0 1 0 40 40 32 0.888888888888889 0.111111111111111 0.111111111111111 -0.111111111111111 0.725539249473295
+64 0 0 1 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 1 0 40 40 48 0.888888888888889 0.111111111111111 0.111111111111111 0.333333333333333 0.730294733882952
+
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 2 0 40 40 24 0.888888888888889 0.111111111111111 0.111111111111111 -0.333333333333333 0.730294733882952
+64 0 0 2 0 40 40 32 0.888888888888889 0.111111111111111 0.111111111111111 -0.111111111111111 0.725539249473295
+64 0 0 2 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 2 0 40 40 48 0.888888888888889 0.111111111111111 0.111111111111111 0.333333333333333 0.730294733882952
+64 0 0 2 0 40 40 56 0.888888888888889 0.111111111111111 0.111111111111111 0.555555555555556 0.756699260944861
+64 0 0 2 0 40 40 64 0.888888888888889 0.111111111111111 0.111111111111111 0.777777777777778 0.807676282684182
+64 0 0 2 0 40 40 72 0.888888888888889 0.111111111111111 0.111111111111111 1 0.873700996777018
+
+# iteration 64
+# refinement level 0 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 0 3 0 40 40 24 0.888888888888889 0.111111111111111 0.111111111111111 -0.333333333333333 0.730294733882952
+64 0 0 3 0 40 40 32 0.888888888888889 0.111111111111111 0.111111111111111 -0.111111111111111 0.725539249473295
+64 0 0 3 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295
+64 0 0 3 0 40 40 48 0.888888888888889 0.111111111111111 0.111111111111111 0.333333333333333 0.730294733882952
+64 0 0 3 0 40 40 56 0.888888888888889 0.111111111111111 0.111111111111111 0.555555555555556 0.756699260944861
+64 0 0 3 0 40 40 64 0.888888888888889 0.111111111111111 0.111111111111111 0.777777777777778 0.807676282684182
+64 0 0 3 0 40 40 72 0.888888888888889 0.111111111111111 0.111111111111111 1 0.873700996777018
+
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 0 0 36 36 8 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.777777777777778 0.808379332677938
+64 0 1 0 0 36 36 12 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.666666666666667 0.779665123251562
+64 0 1 0 0 36 36 16 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.555555555555556 0.756097245006156
+64 0 1 0 0 36 36 20 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.444444444444444 0.739694852518638
+64 0 1 0 0 36 36 24 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213
+64 0 1 0 0 36 36 28 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574
+64 0 1 0 0 36 36 32 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177
+64 0 1 0 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298
+64 0 1 0 0 36 36 40 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+64 0 1 0 0 36 36 44 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 1 0 36 36 8 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.808379332677938
+64 0 1 1 0 36 36 12 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.779665123251562
+64 0 1 1 0 36 36 16 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.756097245006156
+64 0 1 1 0 36 36 20 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.739694852518638
+64 0 1 1 0 36 36 24 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213
+64 0 1 1 0 36 36 28 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574
+64 0 1 1 0 36 36 32 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177
+64 0 1 1 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298
+64 0 1 1 0 36 36 40 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+64 0 1 1 0 36 36 44 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 2 0 36 36 32 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177
+64 0 1 2 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 1 2 0 36 36 40 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+64 0 1 2 0 36 36 44 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574
+64 0 1 2 0 36 36 48 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213
+64 0 1 2 0 36 36 52 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.444444444444444 0.739694852518638
+64 0 1 2 0 36 36 56 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.555555555555555 0.756097245006155
+64 0 1 2 0 36 36 60 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.666666666666667 0.779665123251561
+64 0 1 2 0 36 36 64 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.777777777777778 0.808379332677938
+
+# iteration 64
+# refinement level 1 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 1 3 0 36 36 32 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177
+64 0 1 3 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298
+64 0 1 3 0 36 36 40 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+64 0 1 3 0 36 36 44 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574
+64 0 1 3 0 36 36 48 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213
+64 0 1 3 0 36 36 52 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.739694852518638
+64 0 1 3 0 36 36 56 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.756097245006155
+64 0 1 3 0 36 36 60 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.779665123251561
+64 0 1 3 0 36 36 64 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.808379332677938
+
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 0 0 36 36 22 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.388888888888889 0.733688776948746
+64 0 2 0 0 36 36 24 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213
+64 0 2 0 0 36 36 26 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.277777777777778 0.726552055334392
+64 0 2 0 0 36 36 28 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574
+64 0 2 0 0 36 36 30 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.166666666666667 0.724502518106703
+64 0 2 0 0 36 36 32 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177
+64 0 2 0 0 36 36 34 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555555 0.72395273727097
+64 0 2 0 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298
+64 0 2 0 0 36 36 38 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555556 0.72395273727097
+64 0 2 0 0 36 36 40 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 1 0 36 36 22 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.388888888888889 0.733688776948746
+64 0 2 1 0 36 36 24 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213
+64 0 2 1 0 36 36 26 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.277777777777778 0.726552055334392
+64 0 2 1 0 36 36 28 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574
+64 0 2 1 0 36 36 30 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.166666666666667 0.724502518106703
+64 0 2 1 0 36 36 32 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177
+64 0 2 1 0 36 36 34 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555555 0.72395273727097
+64 0 2 1 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298
+64 0 2 1 0 36 36 38 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555556 0.72395273727097
+64 0 2 1 0 36 36 40 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 2 0 36 36 34 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097
+64 0 2 2 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298
+64 0 2 2 0 36 36 38 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555555 0.72395273727097
+64 0 2 2 0 36 36 40 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+64 0 2 2 0 36 36 42 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.166666666666667 0.724502518106703
+64 0 2 2 0 36 36 44 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574
+64 0 2 2 0 36 36 46 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.277777777777778 0.726552055334391
+64 0 2 2 0 36 36 48 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213
+64 0 2 2 0 36 36 50 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.388888888888889 0.733688776948745
+
+# iteration 64
+# refinement level 2 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 2 3 0 36 36 34 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097
+64 0 2 3 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298
+64 0 2 3 0 36 36 38 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555555 0.72395273727097
+64 0 2 3 0 36 36 40 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+64 0 2 3 0 36 36 42 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.166666666666667 0.724502518106703
+64 0 2 3 0 36 36 44 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574
+64 0 2 3 0 36 36 46 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.277777777777778 0.726552055334391
+64 0 2 3 0 36 36 48 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213
+64 0 2 3 0 36 36 50 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.388888888888889 0.733688776948745
+
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 0 0 36 36 29 0.888888888888889 0 -5.55111512312578e-17 -0.194444444444445 0.724720854915558
+64 0 3 0 0 36 36 30 0.888888888888889 0 -5.55111512312578e-17 -0.166666666666667 0.724502518106703
+64 0 3 0 0 36 36 31 0.888888888888889 0 -5.55111512312578e-17 -0.138888888888889 0.724409709543024
+64 0 3 0 0 36 36 32 0.888888888888889 0 -5.55111512312578e-17 -0.111111111111111 0.724342898925177
+64 0 3 0 0 36 36 33 0.888888888888889 0 -5.55111512312578e-17 -0.0833333333333334 0.724151545837958
+64 0 3 0 0 36 36 34 0.888888888888889 0 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097
+64 0 3 0 0 36 36 35 0.888888888888889 0 -5.55111512312578e-17 -0.0277777777777778 0.723805016719017
+64 0 3 0 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 0 0.723733474251298
+64 0 3 0 0 36 36 37 0.888888888888889 0 -5.55111512312578e-17 0.0277777777777778 0.723805016719017
+64 0 3 0 0 36 36 38 0.888888888888889 0 -5.55111512312578e-17 0.0555555555555556 0.72395273727097
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 1 0 36 36 29 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.194444444444445 0.724720854915558
+64 0 3 1 0 36 36 30 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.166666666666667 0.724502518106703
+64 0 3 1 0 36 36 31 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.138888888888889 0.724409709543024
+64 0 3 1 0 36 36 32 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177
+64 0 3 1 0 36 36 33 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.0833333333333334 0.724151545837958
+64 0 3 1 0 36 36 34 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097
+64 0 3 1 0 36 36 35 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.723805016719017
+64 0 3 1 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0 0.723733474251298
+64 0 3 1 0 36 36 37 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.723805016719017
+64 0 3 1 0 36 36 38 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555556 0.72395273727097
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 2 0 36 36 35 0.888888888888889 0 -5.55111512312578e-17 -0.0277777777777778 0.723805016719017
+64 0 3 2 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298
+64 0 3 2 0 36 36 37 0.888888888888889 0 -5.55111512312578e-17 0.0277777777777778 0.723805016719017
+64 0 3 2 0 36 36 38 0.888888888888889 0 -5.55111512312578e-17 0.0555555555555555 0.72395273727097
+64 0 3 2 0 36 36 39 0.888888888888889 0 -5.55111512312578e-17 0.0833333333333333 0.724151545837958
+64 0 3 2 0 36 36 40 0.888888888888889 0 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+64 0 3 2 0 36 36 41 0.888888888888889 0 -5.55111512312578e-17 0.138888888888889 0.724409709543024
+64 0 3 2 0 36 36 42 0.888888888888889 0 -5.55111512312578e-17 0.166666666666667 0.724502518106703
+64 0 3 2 0 36 36 43 0.888888888888889 0 -5.55111512312578e-17 0.194444444444444 0.724720854915557
+
+# iteration 64
+# refinement level 3 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+64 0 3 3 0 36 36 35 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.723805016719017
+64 0 3 3 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298
+64 0 3 3 0 36 36 37 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.723805016719017
+64 0 3 3 0 36 36 38 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555555 0.72395273727097
+64 0 3 3 0 36 36 39 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.0833333333333333 0.724151545837958
+64 0 3 3 0 36 36 40 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177
+64 0 3 3 0 36 36 41 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.138888888888889 0.724409709543024
+64 0 3 3 0 36 36 42 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.166666666666667 0.724502518106703
+64 0 3 3 0 36 36 43 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.194444444444444 0.724720854915557
+
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 0 0 40 40 0 1.33333333333333 0.111111111111111 0.111111111111111 -1 0.877480603359996
+96 0 0 0 0 40 40 8 1.33333333333333 0.111111111111111 0.111111111111111 -0.777777777777778 0.798008089475601
+96 0 0 0 0 40 40 16 1.33333333333333 0.111111111111111 0.111111111111111 -0.555555555555556 0.735090597558599
+96 0 0 0 0 40 40 24 1.33333333333333 0.111111111111111 0.111111111111111 -0.333333333333333 0.677899959110667
+96 0 0 0 0 40 40 32 1.33333333333333 0.111111111111111 0.111111111111111 -0.111111111111111 0.632828813666694
+96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 0 0 40 40 48 1.33333333333333 0.111111111111111 0.111111111111111 0.333333333333333 0.677899959110667
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 1 0 40 40 0 1.33333333333333 0.111111111111111 0.111111111111111 -1 0.877480603359996
+96 0 0 1 0 40 40 8 1.33333333333333 0.111111111111111 0.111111111111111 -0.777777777777778 0.798008089475601
+96 0 0 1 0 40 40 16 1.33333333333333 0.111111111111111 0.111111111111111 -0.555555555555556 0.735090597558599
+96 0 0 1 0 40 40 24 1.33333333333333 0.111111111111111 0.111111111111111 -0.333333333333333 0.677899959110667
+96 0 0 1 0 40 40 32 1.33333333333333 0.111111111111111 0.111111111111111 -0.111111111111111 0.632828813666694
+96 0 0 1 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 1 0 40 40 48 1.33333333333333 0.111111111111111 0.111111111111111 0.333333333333333 0.677899959110667
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 2 0 40 40 24 1.33333333333333 0.111111111111111 0.111111111111111 -0.333333333333333 0.677899959110667
+96 0 0 2 0 40 40 32 1.33333333333333 0.111111111111111 0.111111111111111 -0.111111111111111 0.632828813666694
+96 0 0 2 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 2 0 40 40 48 1.33333333333333 0.111111111111111 0.111111111111111 0.333333333333333 0.677899959110667
+96 0 0 2 0 40 40 56 1.33333333333333 0.111111111111111 0.111111111111111 0.555555555555556 0.735090597558599
+96 0 0 2 0 40 40 64 1.33333333333333 0.111111111111111 0.111111111111111 0.777777777777778 0.798008089475601
+96 0 0 2 0 40 40 72 1.33333333333333 0.111111111111111 0.111111111111111 1 0.877480603359996
+
+# iteration 96
+# refinement level 0 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 0 3 0 40 40 24 1.33333333333333 0.111111111111111 0.111111111111111 -0.333333333333333 0.677899959110667
+96 0 0 3 0 40 40 32 1.33333333333333 0.111111111111111 0.111111111111111 -0.111111111111111 0.632828813666694
+96 0 0 3 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694
+96 0 0 3 0 40 40 48 1.33333333333333 0.111111111111111 0.111111111111111 0.333333333333333 0.677899959110667
+96 0 0 3 0 40 40 56 1.33333333333333 0.111111111111111 0.111111111111111 0.555555555555556 0.735090597558599
+96 0 0 3 0 40 40 64 1.33333333333333 0.111111111111111 0.111111111111111 0.777777777777778 0.798008089475601
+96 0 0 3 0 40 40 72 1.33333333333333 0.111111111111111 0.111111111111111 1 0.877480603359996
+
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 0 0 36 36 8 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.777777777777778 0.796688784792057
+96 0 1 0 0 36 36 12 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.666666666666667 0.76190136189151
+96 0 1 0 0 36 36 16 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.555555555555556 0.729928937348657
+96 0 1 0 0 36 36 20 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.444444444444444 0.698215010923196
+96 0 1 0 0 36 36 24 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157
+96 0 1 0 0 36 36 28 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296
+96 0 1 0 0 36 36 32 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124
+96 0 1 0 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812
+96 0 1 0 0 36 36 40 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+96 0 1 0 0 36 36 44 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 1 0 36 36 8 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.796688784792057
+96 0 1 1 0 36 36 12 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.76190136189151
+96 0 1 1 0 36 36 16 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.729928937348657
+96 0 1 1 0 36 36 20 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.698215010923196
+96 0 1 1 0 36 36 24 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157
+96 0 1 1 0 36 36 28 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296
+96 0 1 1 0 36 36 32 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124
+96 0 1 1 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812
+96 0 1 1 0 36 36 40 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+96 0 1 1 0 36 36 44 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 2 0 36 36 32 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124
+96 0 1 2 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 1 2 0 36 36 40 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+96 0 1 2 0 36 36 44 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297
+96 0 1 2 0 36 36 48 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157
+96 0 1 2 0 36 36 52 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.444444444444444 0.698215010923196
+96 0 1 2 0 36 36 56 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.555555555555555 0.729928937348657
+96 0 1 2 0 36 36 60 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.666666666666667 0.76190136189151
+96 0 1 2 0 36 36 64 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.777777777777778 0.796688784792057
+
+# iteration 96
+# refinement level 1 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 1 3 0 36 36 32 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124
+96 0 1 3 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812
+96 0 1 3 0 36 36 40 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+96 0 1 3 0 36 36 44 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297
+96 0 1 3 0 36 36 48 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157
+96 0 1 3 0 36 36 52 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.698215010923196
+96 0 1 3 0 36 36 56 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.729928937348657
+96 0 1 3 0 36 36 60 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.76190136189151
+96 0 1 3 0 36 36 64 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.796688784792057
+
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 0 0 36 36 22 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.388888888888889 0.683302448238139
+96 0 2 0 0 36 36 24 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157
+96 0 2 0 0 36 36 26 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.277777777777778 0.654541556639422
+96 0 2 0 0 36 36 28 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296
+96 0 2 0 0 36 36 30 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.166666666666667 0.630026346765969
+96 0 2 0 0 36 36 32 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124
+96 0 2 0 0 36 36 34 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555555 0.616824486578861
+96 0 2 0 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812
+96 0 2 0 0 36 36 38 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555556 0.616824486578861
+96 0 2 0 0 36 36 40 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 1 0 36 36 22 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.388888888888889 0.683302448238139
+96 0 2 1 0 36 36 24 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157
+96 0 2 1 0 36 36 26 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.277777777777778 0.654541556639422
+96 0 2 1 0 36 36 28 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296
+96 0 2 1 0 36 36 30 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.166666666666667 0.630026346765969
+96 0 2 1 0 36 36 32 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124
+96 0 2 1 0 36 36 34 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555555 0.616824486578861
+96 0 2 1 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812
+96 0 2 1 0 36 36 38 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555556 0.616824486578861
+96 0 2 1 0 36 36 40 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 2 0 36 36 34 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861
+96 0 2 2 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812
+96 0 2 2 0 36 36 38 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555555 0.616824486578861
+96 0 2 2 0 36 36 40 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+96 0 2 2 0 36 36 42 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.166666666666667 0.63002634676597
+96 0 2 2 0 36 36 44 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297
+96 0 2 2 0 36 36 46 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.277777777777778 0.654541556639422
+96 0 2 2 0 36 36 48 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157
+96 0 2 2 0 36 36 50 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.388888888888889 0.683302448238139
+
+# iteration 96
+# refinement level 2 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 2 3 0 36 36 34 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861
+96 0 2 3 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812
+96 0 2 3 0 36 36 38 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555555 0.616824486578861
+96 0 2 3 0 36 36 40 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+96 0 2 3 0 36 36 42 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.166666666666667 0.63002634676597
+96 0 2 3 0 36 36 44 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297
+96 0 2 3 0 36 36 46 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.277777777777778 0.654541556639422
+96 0 2 3 0 36 36 48 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157
+96 0 2 3 0 36 36 50 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.388888888888889 0.683302448238139
+
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 0 0 36 36 29 1.33333333333333 0 -5.55111512312578e-17 -0.194444444444445 0.63539979750899
+96 0 3 0 0 36 36 30 1.33333333333333 0 -5.55111512312578e-17 -0.166666666666667 0.630026346765969
+96 0 3 0 0 36 36 31 1.33333333333333 0 -5.55111512312578e-17 -0.138888888888889 0.625297419028293
+96 0 3 0 0 36 36 32 1.33333333333333 0 -5.55111512312578e-17 -0.111111111111111 0.621410197839124
+96 0 3 0 0 36 36 33 1.33333333333333 0 -5.55111512312578e-17 -0.0833333333333334 0.618663308361111
+96 0 3 0 0 36 36 34 1.33333333333333 0 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861
+96 0 3 0 0 36 36 35 1.33333333333333 0 -5.55111512312578e-17 -0.0277777777777778 0.615777600484678
+96 0 3 0 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 0 0.61547287921812
+96 0 3 0 0 36 36 37 1.33333333333333 0 -5.55111512312578e-17 0.0277777777777778 0.615777600484678
+96 0 3 0 0 36 36 38 1.33333333333333 0 -5.55111512312578e-17 0.0555555555555556 0.616824486578861
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 1 0 36 36 29 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.194444444444445 0.63539979750899
+96 0 3 1 0 36 36 30 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.166666666666667 0.630026346765969
+96 0 3 1 0 36 36 31 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.138888888888889 0.625297419028293
+96 0 3 1 0 36 36 32 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124
+96 0 3 1 0 36 36 33 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.0833333333333334 0.618663308361111
+96 0 3 1 0 36 36 34 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861
+96 0 3 1 0 36 36 35 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.615777600484678
+96 0 3 1 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0 0.61547287921812
+96 0 3 1 0 36 36 37 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.615777600484678
+96 0 3 1 0 36 36 38 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555556 0.616824486578861
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 2 0 36 36 35 1.33333333333333 0 -5.55111512312578e-17 -0.0277777777777778 0.615777600484678
+96 0 3 2 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812
+96 0 3 2 0 36 36 37 1.33333333333333 0 -5.55111512312578e-17 0.0277777777777778 0.615777600484678
+96 0 3 2 0 36 36 38 1.33333333333333 0 -5.55111512312578e-17 0.0555555555555555 0.616824486578861
+96 0 3 2 0 36 36 39 1.33333333333333 0 -5.55111512312578e-17 0.0833333333333333 0.618663308361111
+96 0 3 2 0 36 36 40 1.33333333333333 0 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+96 0 3 2 0 36 36 41 1.33333333333333 0 -5.55111512312578e-17 0.138888888888889 0.625297419028293
+96 0 3 2 0 36 36 42 1.33333333333333 0 -5.55111512312578e-17 0.166666666666667 0.63002634676597
+96 0 3 2 0 36 36 43 1.33333333333333 0 -5.55111512312578e-17 0.194444444444444 0.63539979750899
+
+# iteration 96
+# refinement level 3 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+96 0 3 3 0 36 36 35 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.615777600484678
+96 0 3 3 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812
+96 0 3 3 0 36 36 37 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.615777600484678
+96 0 3 3 0 36 36 38 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555555 0.616824486578861
+96 0 3 3 0 36 36 39 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.0833333333333333 0.618663308361111
+96 0 3 3 0 36 36 40 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124
+96 0 3 3 0 36 36 41 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.138888888888889 0.625297419028293
+96 0 3 3 0 36 36 42 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.166666666666667 0.63002634676597
+96 0 3 3 0 36 36 43 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.194444444444444 0.63539979750899
+
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 0 0 40 40 0 1.77777777777778 0.111111111111111 0.111111111111111 -1 0.873700996777018
+128 0 0 0 0 40 40 8 1.77777777777778 0.111111111111111 0.111111111111111 -0.777777777777778 0.859471717622308
+128 0 0 0 0 40 40 16 1.77777777777778 0.111111111111111 0.111111111111111 -0.555555555555556 0.863004424640887
+128 0 0 0 0 40 40 24 1.77777777777778 0.111111111111111 0.111111111111111 -0.333333333333333 0.883486952153519
+128 0 0 0 0 40 40 32 1.77777777777778 0.111111111111111 0.111111111111111 -0.111111111111111 0.915799135771738
+128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 0 0 40 40 48 1.77777777777778 0.111111111111111 0.111111111111111 0.333333333333333 0.883486952153519
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 1 0 40 40 0 1.77777777777778 0.111111111111111 0.111111111111111 -1 0.873700996777018
+128 0 0 1 0 40 40 8 1.77777777777778 0.111111111111111 0.111111111111111 -0.777777777777778 0.859471717622308
+128 0 0 1 0 40 40 16 1.77777777777778 0.111111111111111 0.111111111111111 -0.555555555555556 0.863004424640887
+128 0 0 1 0 40 40 24 1.77777777777778 0.111111111111111 0.111111111111111 -0.333333333333333 0.883486952153519
+128 0 0 1 0 40 40 32 1.77777777777778 0.111111111111111 0.111111111111111 -0.111111111111111 0.915799135771738
+128 0 0 1 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 1 0 40 40 48 1.77777777777778 0.111111111111111 0.111111111111111 0.333333333333333 0.883486952153519
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 2 0 40 40 24 1.77777777777778 0.111111111111111 0.111111111111111 -0.333333333333333 0.883486952153519
+128 0 0 2 0 40 40 32 1.77777777777778 0.111111111111111 0.111111111111111 -0.111111111111111 0.915799135771738
+128 0 0 2 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 2 0 40 40 48 1.77777777777778 0.111111111111111 0.111111111111111 0.333333333333333 0.883486952153519
+128 0 0 2 0 40 40 56 1.77777777777778 0.111111111111111 0.111111111111111 0.555555555555556 0.863004424640887
+128 0 0 2 0 40 40 64 1.77777777777778 0.111111111111111 0.111111111111111 0.777777777777778 0.859471717622308
+128 0 0 2 0 40 40 72 1.77777777777778 0.111111111111111 0.111111111111111 1 0.873700996777018
+
+# iteration 128
+# refinement level 0 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 0 3 0 40 40 24 1.77777777777778 0.111111111111111 0.111111111111111 -0.333333333333333 0.883486952153519
+128 0 0 3 0 40 40 32 1.77777777777778 0.111111111111111 0.111111111111111 -0.111111111111111 0.915799135771738
+128 0 0 3 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738
+128 0 0 3 0 40 40 48 1.77777777777778 0.111111111111111 0.111111111111111 0.333333333333333 0.883486952153519
+128 0 0 3 0 40 40 56 1.77777777777778 0.111111111111111 0.111111111111111 0.555555555555556 0.863004424640887
+128 0 0 3 0 40 40 64 1.77777777777778 0.111111111111111 0.111111111111111 0.777777777777778 0.859471717622308
+128 0 0 3 0 40 40 72 1.77777777777778 0.111111111111111 0.111111111111111 1 0.873700996777018
+
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 0 0 36 36 8 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.777777777777778 0.862653663591007
+128 0 1 0 0 36 36 12 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.666666666666667 0.862560028606905
+128 0 1 0 0 36 36 16 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.555555555555556 0.866965759785718
+128 0 1 0 0 36 36 20 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.444444444444444 0.876167092595071
+128 0 1 0 0 36 36 24 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397
+128 0 1 0 0 36 36 28 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156
+128 0 1 0 0 36 36 32 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888
+128 0 1 0 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199
+128 0 1 0 0 36 36 40 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+128 0 1 0 0 36 36 44 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 1 0 36 36 8 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.862653663591007
+128 0 1 1 0 36 36 12 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.862560028606905
+128 0 1 1 0 36 36 16 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.866965759785718
+128 0 1 1 0 36 36 20 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.876167092595071
+128 0 1 1 0 36 36 24 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397
+128 0 1 1 0 36 36 28 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156
+128 0 1 1 0 36 36 32 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888
+128 0 1 1 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199
+128 0 1 1 0 36 36 40 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+128 0 1 1 0 36 36 44 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 2 0 36 36 32 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888
+128 0 1 2 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 1 2 0 36 36 40 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+128 0 1 2 0 36 36 44 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156
+128 0 1 2 0 36 36 48 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397
+128 0 1 2 0 36 36 52 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.444444444444444 0.876167092595071
+128 0 1 2 0 36 36 56 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.555555555555555 0.866965759785718
+128 0 1 2 0 36 36 60 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.666666666666667 0.862560028606905
+128 0 1 2 0 36 36 64 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.777777777777778 0.862653663591007
+
+# iteration 128
+# refinement level 1 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 1 3 0 36 36 32 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888
+128 0 1 3 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199
+128 0 1 3 0 36 36 40 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+128 0 1 3 0 36 36 44 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156
+128 0 1 3 0 36 36 48 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397
+128 0 1 3 0 36 36 52 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.876167092595071
+128 0 1 3 0 36 36 56 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.866965759785718
+128 0 1 3 0 36 36 60 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.862560028606905
+128 0 1 3 0 36 36 64 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.862653663591007
+
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 0 0 36 36 22 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.388888888888889 0.882075542854246
+128 0 2 0 0 36 36 24 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397
+128 0 2 0 0 36 36 26 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.277777777777778 0.898403242286228
+128 0 2 0 0 36 36 28 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156
+128 0 2 0 0 36 36 30 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.166666666666667 0.916919384356027
+128 0 2 0 0 36 36 32 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888
+128 0 2 0 0 36 36 34 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555555 0.927485951077396
+128 0 2 0 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199
+128 0 2 0 0 36 36 38 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555556 0.927485951077396
+128 0 2 0 0 36 36 40 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 1 0 36 36 22 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.388888888888889 0.882075542854246
+128 0 2 1 0 36 36 24 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397
+128 0 2 1 0 36 36 26 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.277777777777778 0.898403242286228
+128 0 2 1 0 36 36 28 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156
+128 0 2 1 0 36 36 30 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.166666666666667 0.916919384356027
+128 0 2 1 0 36 36 32 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888
+128 0 2 1 0 36 36 34 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555555 0.927485951077396
+128 0 2 1 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199
+128 0 2 1 0 36 36 38 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555556 0.927485951077396
+128 0 2 1 0 36 36 40 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 2 0 36 36 34 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396
+128 0 2 2 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199
+128 0 2 2 0 36 36 38 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555555 0.927485951077396
+128 0 2 2 0 36 36 40 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+128 0 2 2 0 36 36 42 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.166666666666667 0.916919384356027
+128 0 2 2 0 36 36 44 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156
+128 0 2 2 0 36 36 46 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.277777777777778 0.898403242286228
+128 0 2 2 0 36 36 48 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397
+128 0 2 2 0 36 36 50 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.388888888888889 0.882075542854246
+
+# iteration 128
+# refinement level 2 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 2 3 0 36 36 34 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396
+128 0 2 3 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199
+128 0 2 3 0 36 36 38 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555555 0.927485951077396
+128 0 2 3 0 36 36 40 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+128 0 2 3 0 36 36 42 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.166666666666667 0.916919384356027
+128 0 2 3 0 36 36 44 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156
+128 0 2 3 0 36 36 46 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.277777777777778 0.898403242286228
+128 0 2 3 0 36 36 48 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397
+128 0 2 3 0 36 36 50 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.388888888888889 0.882075542854246
+
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 0 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 0 0 36 36 29 1.77777777777778 0 -5.55111512312578e-17 -0.194444444444445 0.912613836832073
+128 0 3 0 0 36 36 30 1.77777777777778 0 -5.55111512312578e-17 -0.166666666666667 0.916919384356027
+128 0 3 0 0 36 36 31 1.77777777777778 0 -5.55111512312578e-17 -0.138888888888889 0.920818233193455
+128 0 3 0 0 36 36 32 1.77777777777778 0 -5.55111512312578e-17 -0.111111111111111 0.924033489738888
+128 0 3 0 0 36 36 33 1.77777777777778 0 -5.55111512312578e-17 -0.0833333333333334 0.926147880297958
+128 0 3 0 0 36 36 34 1.77777777777778 0 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396
+128 0 3 0 0 36 36 35 1.77777777777778 0 -5.55111512312578e-17 -0.0277777777777778 0.928209975180567
+128 0 3 0 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 0 0.928389498223199
+128 0 3 0 0 36 36 37 1.77777777777778 0 -5.55111512312578e-17 0.0277777777777778 0.928209975180567
+128 0 3 0 0 36 36 38 1.77777777777778 0 -5.55111512312578e-17 0.0555555555555556 0.927485951077396
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 1 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 1 0 36 36 29 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.194444444444445 0.912613836832073
+128 0 3 1 0 36 36 30 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.166666666666667 0.916919384356027
+128 0 3 1 0 36 36 31 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.138888888888889 0.920818233193455
+128 0 3 1 0 36 36 32 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888
+128 0 3 1 0 36 36 33 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.0833333333333334 0.926147880297958
+128 0 3 1 0 36 36 34 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396
+128 0 3 1 0 36 36 35 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.928209975180567
+128 0 3 1 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0 0.928389498223199
+128 0 3 1 0 36 36 37 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.928209975180567
+128 0 3 1 0 36 36 38 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555556 0.927485951077396
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 2 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 2 0 36 36 35 1.77777777777778 0 -5.55111512312578e-17 -0.0277777777777778 0.928209975180567
+128 0 3 2 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199
+128 0 3 2 0 36 36 37 1.77777777777778 0 -5.55111512312578e-17 0.0277777777777778 0.928209975180567
+128 0 3 2 0 36 36 38 1.77777777777778 0 -5.55111512312578e-17 0.0555555555555555 0.927485951077396
+128 0 3 2 0 36 36 39 1.77777777777778 0 -5.55111512312578e-17 0.0833333333333333 0.926147880297958
+128 0 3 2 0 36 36 40 1.77777777777778 0 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+128 0 3 2 0 36 36 41 1.77777777777778 0 -5.55111512312578e-17 0.138888888888889 0.920818233193455
+128 0 3 2 0 36 36 42 1.77777777777778 0 -5.55111512312578e-17 0.166666666666667 0.916919384356027
+128 0 3 2 0 36 36 43 1.77777777777778 0 -5.55111512312578e-17 0.194444444444444 0.912613836832073
+
+# iteration 128
+# refinement level 3 multigrid level 0 map 0 component 3 time level 0
+# column format: it tl rl c ml ix iy iz time x y z data
+128 0 3 3 0 36 36 35 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.928209975180567
+128 0 3 3 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199
+128 0 3 3 0 36 36 37 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.928209975180567
+128 0 3 3 0 36 36 38 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555555 0.927485951077396
+128 0 3 3 0 36 36 39 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.0833333333333333 0.926147880297958
+128 0 3 3 0 36 36 40 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888
+128 0 3 3 0 36 36 41 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.138888888888889 0.920818233193455
+128 0 3 3 0 36 36 42 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.166666666666667 0.916919384356027
+128 0 3 3 0 36 36 43 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.194444444444444 0.912613836832073
+
+
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_maximum.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_maximum.xg
new file mode 100644
index 000000000..e25d17d43
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_maximum.xg
@@ -0,0 +1,4 @@
+"phi v time
+0.8888888888889 0.8737009967770
+1.3333333333333 0.8774806033600
+1.7777777777778 0.9157991357717
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_minimum.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_minimum.xg
new file mode 100644
index 000000000..973172b6d
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_minimum.xg
@@ -0,0 +1,4 @@
+"phi v time
+0.8888888888889 0.6796516032334
+1.3333333333333 0.6328288136667
+1.7777777777778 0.6796516032334
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm1.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm1.xg
new file mode 100644
index 000000000..6e8792bca
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm1.xg
@@ -0,0 +1,4 @@
+"phi v time
+0.8888888888889 0.7927895664365
+1.3333333333333 0.7914772512610
+1.7777777777778 0.8208628581415
diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm2.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm2.xg
new file mode 100644
index 000000000..124c22eda
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm2.xg
@@ -0,0 +1,4 @@
+"phi v time
+0.8888888888889 0.7937177688028
+1.3333333333333 0.7927587735574
+1.7777777777778 0.8218200985038
diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data.par b/Carpet/CarpetIOHDF5/test/input_initial_data.par
new file mode 100644
index 000000000..a16e312c6
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/input_initial_data.par
@@ -0,0 +1,57 @@
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/test/input_initial_data.par,v 1.3 2004/08/19 11:47:31 tradke Exp $
+
+# deactivate the IDScalarWaveMoL thorn
+# initial data is read from files using the filereader
+ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab Boundary CoordBase SymBase CartGrid3D Periodic LocalInterp NaNChecker Slab Time MoL WaveToyMoL IOUtil IOBasic CarpetIOHDF5"
+#ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab Boundary CoordBase SymBase CartGrid3D Periodic LocalInterp NaNChecker Slab Time MoL IDScalarWaveMoL WaveToyMoL IOUtil IOBasic CarpetIOHDF5"
+
+
+Cactus::cctk_itlast = 128
+
+Driver::global_nx = 24
+Driver::global_ny = 5
+Driver::global_nz = 5
+Driver::ghost_size = 2
+
+Carpet::max_refinement_levels = 3
+Carpet::prolongation_order_space = 3
+Carpet::prolongation_order_time = 2
+Carpet::init_each_timelevel = "yes"
+
+CarpetRegrid::refinement_levels = 1
+CarpetRegrid::refined_regions = "manual-gridpoint-list"
+CarpetRegrid::gridpoints = "[[ ([28,4,4]:[68,12,12]:[2,2,2]) ]]"
+CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]"
+
+NaNChecker::check_every = 16
+NaNChecker::check_vars = "all"
+NaNChecker::action_if_found = "terminate"
+
+Grid::domain = full
+Grid::type = byrange
+Grid::xmin = -0.1
+Grid::ymin = -0.15
+Grid::zmin = -0.15
+Grid::xmax = +1.05
+Grid::ymax = +0.15
+Grid::zmax = +0.15
+
+Periodic::periodic = "yes"
+
+Time::dtfac = 0.25
+
+MoL::ODE_Method = "ICN"
+
+IO::out_dir = $parfilename
+IO::out_fileinfo = "none"
+IO::parfile_write = "no"
+IO::out_every = 1
+IO::out_yline_x = 0.5
+IO::out_zline_x = 0.5
+
+IOBasic::outInfo_vars = "WaveToyMoL::scalarevolve"
+IOBasic::outScalar_vars = "WaveToyMoL::scalarevolve"
+
+# filereader input files and directory
+IO::filereader_ID_files = "psi phi"
+IO::recover_dir = "../../../arrangements/Carpet/CarpetIOHDF5/test/input_initial_data"
diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/phi.h5 b/Carpet/CarpetIOHDF5/test/input_initial_data/phi.h5
new file mode 100644
index 000000000..86ad6542c
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/input_initial_data/phi.h5
Binary files differ
diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/phi_maximum.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_maximum.xg
new file mode 100644
index 000000000..78ce3fbaa
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_maximum.xg
@@ -0,0 +1,34 @@
+"phi v time
+0.0000000000000 1.0000000000000
+0.0125000000000 0.9986404587860
+0.0250000000000 0.9945673789444
+0.0375000000000 1.0119432126264
+0.0500000000000 1.0268055861612
+0.0625000000000 1.0388778598256
+0.0750000000000 1.0481272355649
+0.0875000000000 1.0716903046796
+0.1000000000000 1.0982829974947
+0.1125000000000 1.1218913478250
+0.1250000000000 1.1424512117393
+0.1375000000000 1.1599067288796
+0.1500000000000 1.1900017850006
+0.1625000000000 1.2219191687257
+0.1750000000000 1.2505162515579
+0.1875000000000 1.2757153346263
+0.2000000000000 1.2974479523686
+0.2125000000000 1.3156550585508
+0.2250000000000 1.3380762519805
+0.2375000000000 1.3673894350252
+0.2500000000000 1.3929870450400
+0.2625000000000 1.4147995341575
+0.2750000000000 1.4327676397030
+0.2875000000000 1.4468425452064
+0.3000000000000 1.4569860130280
+0.3125000000000 1.4631704882406
+0.3250000000000 1.4713646259286
+0.3375000000000 1.4861345916159
+0.3500000000000 1.4968663526009
+0.3625000000000 1.5035307556225
+0.3750000000000 1.5061096994421
+0.3875000000000 1.5045961840087
+0.4000000000000 1.4989943294590
diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/phi_minimum.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_minimum.xg
new file mode 100644
index 000000000..d62cc5b13
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_minimum.xg
@@ -0,0 +1,34 @@
+"phi v time
+0.0000000000000 -1.0000000000000
+0.0125000000000 -0.9986404587860
+0.0250000000000 -0.9945673789444
+0.0375000000000 -1.0119432126264
+0.0500000000000 -1.0268055861612
+0.0625000000000 -1.0388778598256
+0.0750000000000 -1.0481272355649
+0.0875000000000 -1.0716903046796
+0.1000000000000 -1.0982829974947
+0.1125000000000 -1.1218913478250
+0.1250000000000 -1.1424512117393
+0.1375000000000 -1.1599067288796
+0.1500000000000 -1.1900017850006
+0.1625000000000 -1.2219191687257
+0.1750000000000 -1.2505162515579
+0.1875000000000 -1.2757153346263
+0.2000000000000 -1.2974479523686
+0.2125000000000 -1.3156550585508
+0.2250000000000 -1.3380762519805
+0.2375000000000 -1.3673894350252
+0.2500000000000 -1.3929870450400
+0.2625000000000 -1.4147995341575
+0.2750000000000 -1.4327676397030
+0.2875000000000 -1.4468425452064
+0.3000000000000 -1.4569860130280
+0.3125000000000 -1.4631704882406
+0.3250000000000 -1.4713646259286
+0.3375000000000 -1.4861345916159
+0.3500000000000 -1.4968663526009
+0.3625000000000 -1.5035307556225
+0.3750000000000 -1.5061096994421
+0.3875000000000 -1.5045961840087
+0.4000000000000 -1.4989943294590
diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm1.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm1.xg
new file mode 100644
index 000000000..c3618d28a
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm1.xg
@@ -0,0 +1,34 @@
+"phi v time
+0.0000000000000 0.6807763773465
+0.0125000000000 0.6883135845966
+0.0250000000000 0.6939804679330
+0.0375000000000 0.6977616325549
+0.0500000000000 0.6996468076312
+0.0625000000000 0.7113978965384
+0.0750000000000 0.7221770888255
+0.0875000000000 0.7309939361006
+0.1000000000000 0.7378244845393
+0.1125000000000 0.7471033499543
+0.1250000000000 0.7616523319997
+0.1375000000000 0.7741316985445
+0.1500000000000 0.7845075440356
+0.1625000000000 0.7927516787444
+0.1750000000000 0.7988417053545
+0.1875000000000 0.8110731791327
+0.2000000000000 0.8232064841264
+0.2125000000000 0.8331029209643
+0.2250000000000 0.8407356028304
+0.2375000000000 0.8460837941132
+0.2500000000000 0.8491329667380
+0.2625000000000 0.8498748396317
+0.2750000000000 0.8565790617590
+0.2875000000000 0.8664821742987
+0.3000000000000 0.8740308325676
+0.3125000000000 0.8792045294337
+0.3250000000000 0.8819892111320
+0.3375000000000 0.8823773154395
+0.3500000000000 0.8803677922124
+0.3625000000000 0.8759661062267
+0.3750000000000 0.8691842223177
+0.3875000000000 0.8713683085882
+0.4000000000000 0.8728859333298
diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm2.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm2.xg
new file mode 100644
index 000000000..bd291cc98
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm2.xg
@@ -0,0 +1,34 @@
+"phi v time
+0.0000000000000 0.7489861339271
+0.0125000000000 0.7518419444399
+0.0250000000000 0.7562195954773
+0.0375000000000 0.7620457996251
+0.0500000000000 0.7692251813885
+0.0625000000000 0.7776434804038
+0.0750000000000 0.7871711042100
+0.0875000000000 0.7976667955515
+0.1000000000000 0.8089812100628
+0.1125000000000 0.8209602464387
+0.1250000000000 0.8334480229821
+0.1375000000000 0.8462894436775
+0.1500000000000 0.8593323383447
+0.1625000000000 0.8724291925272
+0.1750000000000 0.8854385033832
+0.1875000000000 0.8982258092504
+0.2000000000000 0.9106644447590
+0.2125000000000 0.9226360724714
+0.2250000000000 0.9340310379450
+0.2375000000000 0.9447485893398
+0.2500000000000 0.9546969963259
+0.2625000000000 0.9637935967973
+0.2750000000000 0.9719647941895
+0.2875000000000 0.9791460232367
+0.3000000000000 0.9852816978433
+0.3125000000000 0.9903251513560
+0.3250000000000 0.9942385768297
+0.3375000000000 0.9969929727762
+0.3500000000000 0.9985680982614
+0.3625000000000 0.9989524399743
+0.3750000000000 0.9981431929225
+0.3875000000000 0.9961462556366
+0.4000000000000 0.9929762400874
diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/psi.h5 b/Carpet/CarpetIOHDF5/test/input_initial_data/psi.h5
new file mode 100644
index 000000000..fbb911bff
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/input_initial_data/psi.h5
Binary files differ
diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/psi_maximum.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_maximum.xg
new file mode 100644
index 000000000..27be32935
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_maximum.xg
@@ -0,0 +1,34 @@
+"psi v time
+0.0000000000000 6.2831853071796
+0.0125000000000 6.2746430577991
+0.0250000000000 6.2490511423835
+0.0375000000000 6.2064791316818
+0.0500000000000 6.1470427352297
+0.0625000000000 6.1059995615621
+0.0750000000000 6.0823508015521
+0.0875000000000 6.0421749067230
+0.1000000000000 5.9855810749628
+0.1125000000000 5.9127231153562
+0.1250000000000 5.8237990301668
+0.1375000000000 5.7190504767363
+0.1500000000000 5.5987621107645
+0.1625000000000 5.4972069587517
+0.1750000000000 5.4231800426911
+0.1875000000000 5.3344172069405
+0.2000000000000 5.2311596682320
+0.2125000000000 5.1136880283712
+0.2250000000000 4.9823215117033
+0.2375000000000 4.8471541168578
+0.2500000000000 4.7760344394342
+0.2625000000000 4.6919372838490
+0.2750000000000 4.5950911858351
+0.2875000000000 4.4857593225805
+0.3000000000000 4.3764423117654
+0.3125000000000 4.3393959614856
+0.3250000000000 4.2905585196070
+0.3375000000000 4.2300627107315
+0.3500000000000 4.1580729377426
+0.3625000000000 4.1642308303415
+0.3750000000000 4.1713735624227
+0.3875000000000 4.1671816776830
+0.4000000000000 4.1516665873958
diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/psi_minimum.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_minimum.xg
new file mode 100644
index 000000000..fb6cf4909
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_minimum.xg
@@ -0,0 +1,34 @@
+"psi v time
+0.0000000000000 -6.2831853071796
+0.0125000000000 -6.2746430577991
+0.0250000000000 -6.2490511423835
+0.0375000000000 -6.2064791316818
+0.0500000000000 -6.1470427352296
+0.0625000000000 -6.1059995615621
+0.0750000000000 -6.0823508015522
+0.0875000000000 -6.0421749067230
+0.1000000000000 -5.9855810749628
+0.1125000000000 -5.9127231153562
+0.1250000000000 -5.8237990301668
+0.1375000000000 -5.7190504767363
+0.1500000000000 -5.5987621107645
+0.1625000000000 -5.4972069587517
+0.1750000000000 -5.4231800426911
+0.1875000000000 -5.3344172069405
+0.2000000000000 -5.2311596682320
+0.2125000000000 -5.1136880283712
+0.2250000000000 -4.9823215117033
+0.2375000000000 -4.8471541168578
+0.2500000000000 -4.7760344394342
+0.2625000000000 -4.6919372838490
+0.2750000000000 -4.5950911858351
+0.2875000000000 -4.4857593225805
+0.3000000000000 -4.3764423117654
+0.3125000000000 -4.3393959614856
+0.3250000000000 -4.2905585196070
+0.3375000000000 -4.2300627107315
+0.3500000000000 -4.1580729377426
+0.3625000000000 -4.1642308303415
+0.3750000000000 -4.1713735624227
+0.3875000000000 -4.1671816776830
+0.4000000000000 -4.1516665873958
diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm1.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm1.xg
new file mode 100644
index 000000000..8fd7f80b2
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm1.xg
@@ -0,0 +1,34 @@
+"psi v time
+0.0000000000000 3.6215553016171
+0.0125000000000 3.6364763601998
+0.0250000000000 3.6415162291713
+0.0375000000000 3.6366612322730
+0.0500000000000 3.6219245799508
+0.0625000000000 3.5973463334095
+0.0750000000000 3.5629932957073
+0.0875000000000 3.5189588301869
+0.1000000000000 3.4653626067366
+0.1125000000000 3.4178909850438
+0.1250000000000 3.4031487535687
+0.1375000000000 3.3791593932900
+0.1500000000000 3.3459881060254
+0.1625000000000 3.3037250429285
+0.1750000000000 3.2524850594811
+0.1875000000000 3.1924074033578
+0.2000000000000 3.1283204712833
+0.2125000000000 3.1162479409102
+0.2250000000000 3.0957078538273
+0.2375000000000 3.0667560379254
+0.2500000000000 3.0294711776388
+0.2625000000000 2.9839546000991
+0.2750000000000 2.9543847137139
+0.2875000000000 2.9417629539386
+0.3000000000000 2.9211477552395
+0.3125000000000 2.8925951487277
+0.3250000000000 2.8561827332153
+0.3375000000000 2.8621799018707
+0.3500000000000 2.8633237516454
+0.3625000000000 2.8566872748419
+0.3750000000000 2.8422885187004
+0.3875000000000 2.8676161308430
+0.4000000000000 2.8922779097055
diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm2.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm2.xg
new file mode 100644
index 000000000..f6e6af93d
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm2.xg
@@ -0,0 +1,34 @@
+"psi v time
+0.0000000000000 4.1631485516862
+0.0125000000000 4.1541748755646
+0.0250000000000 4.1403181106482
+0.0375000000000 4.1216804330909
+0.0500000000000 4.0984006495679
+0.0625000000000 4.0706544048325
+0.0750000000000 4.0386544211818
+0.0875000000000 4.0026507506396
+0.1000000000000 3.9629310129817
+0.1125000000000 3.9198205828109
+0.1250000000000 3.8736826762988
+0.1375000000000 3.8249182725450
+0.1500000000000 3.7739657855260
+0.1625000000000 3.7213003803309
+0.1750000000000 3.6674328023249
+0.1875000000000 3.6129075612872
+0.2000000000000 3.5583002867509
+0.2125000000000 3.5042140494355
+0.2250000000000 3.4512744321941
+0.2375000000000 3.4001231394120
+0.2500000000000 3.3514099647860
+0.2625000000000 3.3057830027058
+0.2750000000000 3.2638770952932
+0.2875000000000 3.2263006583662
+0.3000000000000 3.1936212201833
+0.3125000000000 3.1663502209452
+0.3250000000000 3.1449278306735
+0.3375000000000 3.1297087101756
+0.3500000000000 3.1209497227563
+0.3625000000000 3.1188005684516
+0.3750000000000 3.1232981418444
+0.3875000000000 3.1343651203794
+0.4000000000000 3.1518129128318
diff --git a/Carpet/CarpetIOHDF5/test/output_initial_data.parfile b/Carpet/CarpetIOHDF5/test/output_initial_data.parfile
new file mode 100644
index 000000000..2b69c050c
--- /dev/null
+++ b/Carpet/CarpetIOHDF5/test/output_initial_data.parfile
@@ -0,0 +1,57 @@
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/test/output_initial_data.parfile,v 1.1 2004/08/23 13:44:41 tradke Exp $
+
+ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab Boundary CoordBase SymBase CartGrid3D Periodic LocalInterp NaNChecker Slab Time MoL IDScalarWaveMoL WaveToyMoL IOUtil IOBasic CarpetIOHDF5"
+
+
+Cactus::cctk_itlast = 128
+
+Driver::global_nx = 24
+Driver::global_ny = 5
+Driver::global_nz = 5
+Driver::ghost_size = 2
+
+Carpet::max_refinement_levels = 3
+Carpet::prolongation_order_space = 3
+Carpet::prolongation_order_time = 2
+Carpet::init_each_timelevel = "yes"
+
+CarpetRegrid::refinement_levels = 1
+CarpetRegrid::refined_regions = "manual-gridpoint-list"
+CarpetRegrid::gridpoints = "[[ ([28,4,4]:[68,12,12]:[2,2,2]) ]]"
+CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]"
+
+NaNChecker::check_every = 16
+NaNChecker::check_vars = "all"
+NaNChecker::action_if_found = "terminate"
+
+Grid::domain = full
+Grid::type = byrange
+Grid::xmin = -0.1
+Grid::ymin = -0.15
+Grid::zmin = -0.15
+Grid::xmax = +1.05
+Grid::ymax = +0.15
+Grid::zmax = +0.15
+
+Periodic::periodic = "yes"
+
+Time::dtfac = 0.25
+
+MoL::ODE_Method = "ICN"
+
+IDScalarWaveMoL::wave_number[0] = 1.0
+
+IO::out_dir = "input_initial_data"
+IO::out_fileinfo = "none"
+IO::parfile_write = "no"
+IO::out_every = 1
+IO::out_yline_x = 0.5
+IO::out_zline_x = 0.5
+
+IOBasic::outInfo_vars = "WaveToyMoL::scalarevolve"
+IOBasic::outScalar_vars = "WaveToyMoL::scalarevolve"
+
+# HDF5 output only for initial data
+IOHDF5::out3D_every = 513
+IOHDF5::out3D_vars = "WaveToyMoL::scalarevolve"
+IOHDF5::out3D_dir = "input_initial_data"