diff options
author | schnetter <> | 2004-03-03 08:44:00 +0000 |
---|---|---|
committer | schnetter <> | 2004-03-03 08:44:00 +0000 |
commit | c337c4f7839d1fb7b97224feae1ba73025f6d145 (patch) | |
tree | 1a28c5ec745724beaf9326b2851cf23d271fb9b5 /Carpet/CarpetIOHDF5/doc | |
parent | aaf469aa8f8fadd7fb046daf02aeb61327e7f05e (diff) |
A thorn for HDF5 output without using the FlexIO library.
darcs-hash:20040303084459-07bb3-4aed4fedaa19c030886252e05b792452f0c92671.gz
Diffstat (limited to 'Carpet/CarpetIOHDF5/doc')
-rw-r--r-- | Carpet/CarpetIOHDF5/doc/documentation.tex | 208 |
1 files changed, 17 insertions, 191 deletions
diff --git a/Carpet/CarpetIOHDF5/doc/documentation.tex b/Carpet/CarpetIOHDF5/doc/documentation.tex index b07dd73d1..c08164240 100644 --- a/Carpet/CarpetIOHDF5/doc/documentation.tex +++ b/Carpet/CarpetIOHDF5/doc/documentation.tex @@ -2,7 +2,7 @@ % 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 $ +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/doc/documentation.tex,v 1.1 2004/03/03 09:44:26 schnetter Exp $ % % Thorn documentation in the latex file doc/documentation.tex % will be included in ThornGuides built with the Cactus make system. @@ -64,7 +64,7 @@ % *======================================================================* % 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 $ +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/doc/documentation.tex,v 1.1 2004/03/03 09:44:26 schnetter Exp $ \documentclass{article} @@ -77,15 +77,15 @@ \begin{document} % The author of the documentation -\author{Erik Schnetter $<$schnetter@uni-tuebingen.de$>$, Christian D. Ott $<$cott@aei.mpg.de$>$} +\author{Erik Schnetter $<$schnetter@uni-tuebingen.de$>$} % The title of the document (not necessarily the name of the Thorn) -\title{CarpetIOHDF5} +\title{} % 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} +% \date{$ $Date: 2004/03/03 09:44:26 $ $} +\date{November 11 2002} \maketitle @@ -97,9 +97,7 @@ % 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. @@ -107,207 +105,35 @@ CarpetIOHDF5 file format that was adapted from John Shalf's FlexIO library. \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{Physical System} +\section{Numerical Implementation} \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} +\subsection{Interaction With Other Thorns} -The HDF5 file layout of CarpetIOHDF5 is quite simple. There are no groups besides the -standard HDF5 root data object group: +\subsection{Support and Feedback} -\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: +\section{History} - \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)) +\subsection{Thorn Source Code} - \end{itemize} -\end{itemize} +\subsection{Thorn Documentation} -\subsection{Attributes needed by the file reader} +\subsection{Acknowledgements} -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} +\begin{thebibliography}{9} +\end{thebibliography} -%\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 |