Compare commits

..

319 Commits

Author SHA1 Message Date
Marc Howison 39cee80bc7 1.6.5 release: Fixed several build errors reported by Iuri Prilepov on Ubuntu 11.04. 2011-09-23 14:47:11 +00:00
gsell 819ddc4704 work around to use env.vars removed 2011-08-15 14:08:08 +00:00
gsell 3894452bc9 target 'clean' replaced with 'clean-local' 2011-08-15 13:27:48 +00:00
gsell 58be7a8318 ignore property edited 2011-08-15 10:15:29 +00:00
gsell 9a06157427 config.{guess,sub} removed from repo 2011-08-15 10:11:37 +00:00
gsell a44e2b6a05 missing H5P_DEFAULT added to H5Gopen() if 1.8 API is used 2011-08-15 10:08:58 +00:00
gsell ac8d16c0b6 libtoolize must be called first, use try 'glibtoolize' if 'libtoolize dosn't exists 2011-08-15 09:36:43 +00:00
gsell 6c944f2b16 meaningless comment removed 2011-08-15 09:34:15 +00:00
Marc Howison b1aa655b22 1.6.3 release 2011-07-25 14:09:43 +00:00
Marc Howison efb1e39233 more fixes to the new libtool build system 2011-07-19 01:31:21 +00:00
Marc Howison 5b611ab155 new build system for both H5hut and H5Part; preparing 1.6.3 release of H5Part 2011-07-16 18:30:25 +00:00
Marc Howison 66449ee44d fixed mismatched function names and uncorrected indices in Fortran API; incorporated bug report for Fortran test 2011-02-01 16:36:00 +00:00
Marc Howison d368a60202 bug fixes in Fortran API for 1.6.2 2010-07-28 21:44:48 +00:00
Marc Howison 6b4b556ff1 removed H5PartSetViewEmpty and enabled 0 as input to H5PartSetNumParticles 2010-06-29 16:39:29 +00:00
Marc Howison 0857443617 fixed spelling errors in NEWS 2010-06-11 17:48:42 +00:00
Marc Howison e3b93e4383 removed redundant VFD code in _H5Part_open and added an option for CORE VFD 2010-05-13 17:54:38 +00:00
Marc Howison 3e99a8ccfa fixed autoconf issue with PGI compilers and #define issue with OpenMPI 2010-05-03 20:04:34 +00:00
Marc Howison bb41cc3288 added documentation for file open flags; added flags to h5pt_openr_par_align(); added H5PartSetViewEmpty() and h5pt_setview_empty() calls for creating empty hyperslab selections (previously kludge was to use H5PartSetViewIndices with a null list); fixed memory leak with file open flags in the Fortran interface; fixed missing statement in 1.6.x logic for _H5Part_have_group() 2010-04-29 16:17:51 +00:00
Marc Howison cf1368291d fixed the H5PART_HAVE_HDF5_18 logic to work with the 1.9 snapshot; fixed broken test in _H5Part_have_group in the codepath for HDF5 1.6 2010-03-23 22:18:40 +00:00
Marc Howison 698b5e0c76 removed config.h.in 2010-03-11 23:04:27 +00:00
Marc Howison ea40b3272e fixes to lustre optimizations 2010-03-11 23:00:43 +00:00
Marc Howison 90f8506628 changed print functions to only print from proc 0 in parallel mode, except for 'debug detail' level which prints from all procs 2010-02-23 19:45:43 +00:00
Marc Howison a7727635a7 reverted the rename of xfer_prop because it is used in OPAL 2010-02-22 21:18:37 +00:00
Marc Howison 66476adf6a removed overloaded use of H5_USE_16_API so that it can be used with HDF 1.85 without invoking the HDF5 1.6 codepath in places 2010-02-22 18:35:37 +00:00
Marc Howison 1c4c62192d added chunking for H5Part; had to remove open object test because out-of-order file handle / property list closes were causing errors 2010-02-18 21:08:03 +00:00
Marc Howison fb660f8459 changed throttling routine; removed read-only restriction for setting step to existing steps; revised NEWS 2010-02-18 18:56:39 +00:00
Marc Howison 20bff7f87c fixes for HDF5 1.6.x 2010-02-17 03:19:20 +00:00
Marc Howison 64c2b96f27 incorporated fixes from Gunther for 1.6.0 release 2010-02-16 18:46:57 +00:00
Marc Howison 1d23bdab85 1.6 release: moved 1.5 to 1.6; copied 1.6 to tags/H5Part-1.6.0; copied 1.6 to 1.7 2010-02-16 17:06:40 +00:00
Marc Howison 0de2f00b08 fixed H5PartGetNumParticles to correctly count indexed views; added type parameter to H5BlockGetFieldInfo/ByName 2010-02-11 22:28:49 +00:00
Marc Howison 3300a665b5 updates to makefiles; added CrayXT configure crutch 2010-02-11 19:39:25 +00:00
Marc Howison f671d1ab9f fixed missing test/testf.F90 2010-02-11 17:42:56 +00:00
Marc Howison ec7184bf2d fixed missing test/read.c 2010-02-11 17:42:18 +00:00
Marc Howison 46574c2482 fixed bug in strided selection; added examples dir with a strided write Fortran program (more examples to come...) 2010-02-11 17:34:50 +00:00
Marc Howison 2bb96c6f69 updated NEWS with details about 1.6 changes; changed hsize_t type in H5PartSetViewIndices; fixes to the build system; fixed bugs that were preventing the use of H5PartSetView during writes; added open object checks to regression test 2010-02-10 23:33:32 +00:00
Marc Howison 181c03008f major changes in preparations for 1.6 release: will add details to CHANGES 2010-02-10 01:02:14 +00:00
Marc Howison 7c4126c2c8 integrated changes to iterators from Allen; refactored the HDF 1.6 vs. 1.8 API #ifs 2010-01-14 21:25:29 +00:00
Marc Howison 90c6032c34 fixed type id leaks found by Allen 2010-01-11 21:29:26 +00:00
Marc Howison f40afd9670 fixed H5Oget_info() bug from Allen 2010-01-11 20:37:05 +00:00
Marc Howison c8b49c520f fixed attribute read functions to use string type 2010-01-06 00:12:55 +00:00
Marc Howison a65e9586c5 fixed string attribute bug reported by Allen Sanderson 2010-01-05 23:26:23 +00:00
Marc Howison 3c6065e2f9 flags are now stored in H5PartFile struct; added the 'throttle' as a runtime parameter instead of a compiler flag; merged H5Bench into the tests suite; compiles but need to perform regression tests 2009-10-16 22:37:20 +00:00
Marc Howison c3cd4d7c99 set collective mode as default for H5Part 2009-10-12 22:13:19 +00:00
Marc Howison fdd69338ea updated doxygen groups for H5(Multi)Block 2009-10-07 18:12:03 +00:00
Marc Howison 5d4d62f5c2 typo in Fortran linkage; fixed doxygen to use parallel flag 2009-10-06 17:58:39 +00:00
Marc Howison 195d58693a added throttling for reading 2009-09-10 04:45:48 +00:00
Marc Howison d149d8a5dd added write throttling for large concurency jobs with MPI-POSIX VFD 2009-09-10 02:49:59 +00:00
Marc Howison 8dac86872b added a proc shift option to H5MultiBlock, used in I/O benchmarking to defeat caching 2009-08-30 18:02:04 +00:00
Marc Howison 15ad7b21c5 added MPI_Comm_f2c in Fortran-C bindings 2009-08-25 17:40:49 +00:00
Marc Howison 1b8073b82b added API calls for int32 and float32 step attribs 2009-08-18 15:47:50 +00:00
Marc Howison 06aef8a08f fixed bug in halo exchange when there is only one proc in the direction of the exchange 2009-07-10 21:34:44 +00:00
Marc Howison 57ce44db8b fixed format flag for H5MultiBlock timing output 2009-07-09 01:36:26 +00:00
Marc Howison 1104b9ff93 added timing output for H5MultiBlock reads 2009-07-08 20:14:56 +00:00
Marc Howison 01aa167339 changes to _H5Block_init so that only 1 dataset creation plist is created and reused 2009-07-06 21:31:42 +00:00
Marc Howison cd0391db7e added a test for existing datasets to write calls 2009-07-06 21:07:30 +00:00
Marc Howison 207e49716c Implemented two halo exchange routines: one uses an MPI vector datatype and the other manually packs and unpacks the send and recv buffers. The MPI datatype method is not currently working due to a "double free" error in libc. The manual buffering method has been debuged and works. 2009-07-06 16:42:03 +00:00
Marc Howison 97a14cc488 fixed Fortran compile error with gfortran (had to move f90 files to F90) 2009-07-02 18:46:06 +00:00
Marc Howison 13d7784c44 added file open flags for Fortran interface 2009-07-02 18:22:30 +00:00
Marc Howison 00b0e87f10 forgot to remove existing write attrib functions from H5BlockF.inc and H5BlockF.c after adding them to the code generator 2009-07-02 17:06:12 +00:00
Marc Howison 6d38bf442d * H5Block: added attribute writing functions to code generator: still need to add reading functions
* H5MultiBlock: added halo exchange routine: still needs debugging
2009-07-02 16:46:07 +00:00
Marc Howison 3d4da8653a fixed bug with layout debug info always printing the layout for proc 0 2009-06-24 18:45:23 +00:00
Marc Howison 0e853656cd * fixed bug in h5bl_defin3dchunkdims call that was using variables addresses ins
* added new MultiBlock module that is used for efficiently loading regular
rectilinear grid blocks (using chunking) and handling ghost zones in a
distributed-memory environment
** still need to add the "halo exchange" routine for reshuffling ghost regions
** performed some basic testing of read/write functionality

~Mark
2009-06-24 18:11:39 +00:00
Marc Howison 3d1ed0e92a found incorrect == comparison with read flag; replaced with & 2009-06-19 22:34:22 +00:00
Marc Howison b5e3756f57 fixed bug in H5Gopen2 where I was using the wrong group id 2009-06-19 18:34:57 +00:00
Marc Howison 122e913f08 Merged changes from LBL, including:
* read/write call variants for different datatypes
* HDF5 properties tuned for lustre filesystems and the Cray XT (enabled using flags passed during file open)
* HDF5 chunking for field data
* HDF5 alignment (set during file open)
* support for both HDF5 1.6 and 1.8 using #if statements
* a new error reporting level: debug_detail (HDF5 errors are now printed at debug level 1 by default)

These changes have undergone limited testing.
I will begin using this version for my H5Part projects so that I can test it more thoroughly.

~Mark
2009-06-18 20:29:02 +00:00
gsell a2d2a02cd2 branch new development verson 2008-06-24 19:04:45 +00:00
gsell 249117c89e serial and parallel code merged 2008-06-24 18:59:06 +00:00
gsell 463ef08da9 branch stable 1.4 version 2007-09-21 09:53:26 +00:00
Kurt Stockinger 607d1e86ab Corrected version number 2007-08-29 01:59:47 +00:00
Kurt Stockinger 3ebc9de7a9 Prepare new tag with updates on H5Block. 2007-08-29 01:26:50 +00:00
gsell d8ce890902 src/H5Block.c
_normalize_partition()
	* wrong type for 'x' fixed
_open_block_group()
_open_field_group()
	* 'herr' type error fixed
_select_hyperslab_for_reading()
	* 'herr' type error fixed
	* type cast boundaries to 'hsize_t'
_create_field_group()
	* 'herr' type error fixed
H5BlockWriteFieldAttrib()
	* type cast 'attrib_type' to 'hid_t'
H5Block3dSetFieldOrigin()
H5Block3dGetFieldSpacing()
	* type cast 'H5PART_FLOAT64' to 'hid_t'
2007-07-12 09:50:42 +00:00
gsell b191ac7a6a src/H5Part.c
- H5PartDefineStepName()
	* type cast 'width'
- _H5Part_iteration_operator()
	* type cast error return
- _H5Part_get_object_name()
	* type cast of arg 'idx' and 'len_obj_name' added
- H5PartGetDatasetInfo()
	* type of 'herr' changed from 'herr_t' to 'h5part_int64_t'
- _get_diskshape_for_reading()
 	* 'CHECK_FILEHANDLE()' removed
	* type cast error return to 'hid_t'
- _get_memshape_for_reading()
 	* 'CHECK_FILEHANDLE()' removed
	* type cast error return to 'hid_t'
2007-07-12 09:15:21 +00:00
gsell 356f7149c5 src/H5Part.c
- _read_data()
	* type error fixed
- H5PartAbortErrorHandler()
	* type cast exit code
- H5PartSetVerbosityLevel()
	* type cast 'level' to 'unsigned int'
2007-07-11 15:34:15 +00:00
gsell a0dd21b79e src/H5Part.c
- _H5Part_set_step()
	* revert use of 'snprintf()' (Windows doesn't have it!)
2007-07-11 15:10:06 +00:00
gsell 08ce0ee46a src/H5Part.c
- _H5Part_get_attrib_info():
	* type cast 'attrib_type' in call to '_H5Part_write_attrib()'
- H5PartWriteStepAttrib()
	* change type of 'herr' to 'h5part_int64_t'
	* type cast 'attrib_type' in call to '_H5Part_write_attrib()'
- H5PartWriteFileAttrib()
	* change type of 'herr' to 'h5part_int64_t'
	* type cast 'attrib_type' in call to '_H5Part_write_attrib()'
- H5PartGetStepAttribInfo()
  H5PartGetFileAttribInfo()
  H5PartReadStepAttrib()
  H5PartReadFileAttrib()
	* change type of 'herr' to 'h5part_int64_t'
- _H5Part_set_step()
	* use 'snprintf()' instead of 'sprintf()'
2007-07-11 15:06:49 +00:00
gsell 7085e22448 src/H5PartTypes.h
- revert last change
2007-07-11 14:58:20 +00:00
gsell 74a31f9b8f src/H5Part.c
- several implicit type conversions fixed
2007-07-11 14:37:39 +00:00
gsell a38a56865f src/H5PartTypes.h:
- change type 'stepno_width' in 'struct H5PartFile' from 'int' to
  'h5part_int64-t'
2007-07-11 14:35:51 +00:00
Kurt Stockinger 1a20e25a84 Added nSteps as command line parameter 2007-07-10 22:41:55 +00:00
gsell 43ff5d2ca0 src/H5PartF90.inc
- declarations for open in append mode functions added
2007-06-29 10:02:04 +00:00
gsell 8080f5e2e5 src/H5PartF.c
- h5pt_opena() open in append mode added
- h5pt_opena_par() open in append mode paralell version added
2007-06-29 10:01:06 +00:00
Kurt Stockinger 4f870ccbf7 Fixed H5PartGetDatasetInfo. 2007-06-27 23:12:51 +00:00
gsell e6364c637d src/H5BlockF.c
* correct macro definition of FORTRAN library names for field spacing/origin attribute
2007-06-16 21:35:37 +00:00
gsell 28c0ac78ad src/H5BlocF90.inc
* declaration of h5bl_3d_{g,s}et_field_origin() added
2007-06-14 15:13:26 +00:00
gsell a642074d85 src/H5Block.c
* Attribute name for field spacing renamed from "Spacing" to "__Spacing__"
* Attribute name for field origin renamed from "Origin" to "__Origin__"
2007-06-14 15:12:22 +00:00
gsell e962caf1b9 src/H5BlockF.c
* h5b_3d_set_field_origin() and h5b_3d_get_field_origin() added
* wrong types in h5b_3d_{g,s}et_field_spacing fixed
2007-06-14 15:10:37 +00:00
gsell 8cad5e3aea src/H5BlockF.c
* h5b_3d_set_field_spacing() and h5b_3d_get_field_spacing() added
2007-06-13 12:33:38 +00:00
gsell a2dfad7b69 src/H5BlockF90.inc
* Declarations to set/get field spacing functions added
2007-06-13 12:32:33 +00:00
Kurt Stockinger 15c2e1260a Removed trailing backslash. 2007-06-12 16:39:03 +00:00
gsell 655511a02a src/H5Block.c
* Documentation added
2007-06-12 09:59:35 +00:00
gsell 0231ece31b src/H5Block.h
* Obsolete declarations removed
2007-06-12 08:40:58 +00:00
Kurt Stockinger b64ddd03d1 Added MPI-IO for large block I/O + switch for COLLECTIVE/NON-COLLECTIVE IO. 2007-06-08 17:02:17 +00:00
Kurt Stockinger 853837477e Fixed wrong include file and variable types. 2007-06-07 00:35:31 +00:00
Kurt Stockinger 4956504d17 Fixed dataset name in _get_field_info 2007-06-06 23:47:27 +00:00
gsell e4c8f743ae src/H5Block.c
* doxygen documentation added
2007-06-06 09:30:05 +00:00
gsell df627138dc src/H5Part
* _H5Part_open_file()
	- set f->comm to 0 in serial caseI_COMM_WORLD;
2007-06-06 09:29:04 +00:00
gsell a4e77a138a doc/Makefile.am: web-pages removed 2007-05-21 13:29:31 +00:00
gsell 9a09f11631 undelete 2007-05-21 13:28:49 +00:00
gsell 783a1ce2b5 Web-pages moved to new repo "H5Webpages" 2007-05-21 12:57:37 +00:00
gsell c43f785ab0 src/H5Block.c
- more doxygen doc added
2007-05-17 16:30:37 +00:00
gsell e1a18b62e2 src/H5Part.h
- function H5PartHasStep() added
2007-05-17 16:29:08 +00:00
gsell 3ae60f8e46 src/H5Part.c
- _H5Part_open_file()
		* allocate mem for pnparticles in any case
	- H5PartHasStep()
		* function added
2007-05-17 16:28:24 +00:00
gsell 949505517c doc/H5X_File_Format.txt 2007-05-15 15:59:42 +00:00
gsell ae9fd98dac src/H5PartTypes.h
- "typdef" typo fixed in WIN32 section
2007-05-11 16:05:59 +00:00
gsell 70bc6af59f test/H5BlockTestAttributes.c
- include mpi.h removed if PARRALLEL_IO
	- typedef MPI_Comm removed if not PARALLEL_IO
2007-05-10 20:37:34 +00:00
gsell 825322c576 src/H5Part.c
- some type-casts added
	- internal error variable '_errno' renamed to '_h5part_errno'
2007-05-10 19:18:00 +00:00
gsell 58bd753fad src/H5Block.c
- type cast all malloc's
2007-05-10 19:15:22 +00:00
gsell 904e609377 src/H5Part.h
- don't wrap system include files in 'extern "C"'
2007-05-10 19:13:36 +00:00
gsell d1b594a788 src/H5Part/Types:
- tydef of int64_t added for Windows
2007-05-10 19:08:32 +00:00
gsell 3bafbc6029 continue writing 2007-05-10 15:03:37 +00:00
gsell 8d760dc264 configure.ac: incr version number to 1.3.3 and bug-report address changed 2007-04-25 07:21:56 +00:00
Kurt Stockinger 4546846f06 Delete all files are benchmark is done. 2007-04-24 22:48:53 +00:00
Kurt Stockinger 62c46dc8bf Minor documentation updates. 2007-04-24 21:57:28 +00:00
gsell 9516e493bc doc/Downloading
- fix links to software
	- HDF5 build instructions removed
2007-04-20 12:00:40 +00:00
gsell 9df1d56714 doc/BuildingHDF5.html
- SSI statements removed
	- bgcolor removed
2007-04-20 11:59:54 +00:00
gsell 98e1055b7b doc/UsingC.html
doc/UsingF.html
	- SSI statements removed
2007-04-20 11:58:58 +00:00
gsell 436cce16c7 doc/H5PartTools.html
- SSI statements removed
	- bgcolor removed
2007-04-20 11:57:57 +00:00
gsell ec6f30bbd8 - doc/H5X_File_Format.txt
* added
2007-04-20 08:33:47 +00:00
Kurt Stockinger d356142bc4 Commented out some dead links. 2007-04-19 22:06:53 +00:00
Kurt Stockinger 00c9b0804b Updated doxygen information. 2007-04-19 21:43:57 +00:00
gsell 172ceff05a doc/Downloading.html
- update H5Part download instructions
2007-04-19 15:17:57 +00:00
gsell 030985c9a4 test 2007-04-19 10:39:00 +00:00
gsell 359b699464 test 2007-04-19 10:31:09 +00:00
gsell 6e1ce25417 - testfile removed 2007-04-19 10:25:20 +00:00
gsell 4144c2b696 src/H5Part.c
* H5PartOpenFileParallel()
		- MPI hints removed, they are useless
		- delegate real work to new function "_H5Part_open_file()"
	* H5PartOpenFile()
		- delegate real work to new function "_H5Part_open_file()"
	* _H5Part_open_file()
		- new function perfoming the real work
		- set step name and number format in file structure
	* H5PartDefineStepName()
		- new function to define step name and format of step number
	* _H5Part_set_step()
	* H5PartGetNumDatasets()
	* H5PartGetDatasetName()
	* H5PartGetDatasetInfo()
	* _H5Part_get_num_particles()
		- use step name und step number format defined in file struct
2007-04-19 10:15:34 +00:00
gsell bad33a75d2 src/H5Part.h
- function declaration "H5PartDefineStepName()" added
2007-04-19 09:26:54 +00:00
gsell 7240f26378 - typdef for MPI_Comm add in non-parallel case
- "struct H5PartFile" extended:
	* new member for step name
	* new member to specify the format of the step number
	* new member to flag whether the file is still empty
2007-04-19 09:17:34 +00:00
gsell b9d82c2fda - build of "homdynToH5p" removed 2007-04-19 09:06:27 +00:00
gsell 1bdd5268ed - "homdynToH5p" from tools build list removed 2007-04-19 09:00:23 +00:00
adelmann 92e057e4cf Add MPI IO hints according to the Benchmark.c program by R. Geus given to me by Valerie 2007-02-13 04:30:55 +00:00
gsell aa72af797b testtest 2007-02-12 21:26:45 +00:00
gsell 9974b6b44c srv/H5Part.c
_H5Part_get_attrib_info():
		- code optimization
2007-01-25 13:09:42 +00:00
Christina Siegerist 82c594c17d Made the new api changes again. They were probably lost in overlapping
commits.
2006-12-07 18:48:41 +00:00
gsell c96b859f88 configure.ac
- forgot to check MPIPATH
2006-12-07 16:48:40 +00:00
gsell d580292235 configure.ac
- check in this order: MPIROOT, MPIHOME, --with-mpipath, other paths
- same for HDF5ROOT
2006-12-07 16:46:51 +00:00
gsell 4dd379ff2f src/H5Part.c
_H5Part_iteration_operator():
		- call H5Gget_objinfo() only if type != H5G_UNKNOWN
	H5PartGetNumSteps():
		- count all objects beginning with H5PART_GROUPNAME_STEP
		  not only groups
2006-12-06 10:50:26 +00:00
gsell e13c4e8d8d configure.ac
- more cosmetic changes (--enable-xxx and --with-xxx definitiona
  are now at the very top, so you see all available options all together)
2006-12-02 22:35:19 +00:00
gsell 4d0ffd58df configure.ac
- configure aborts, if HDF5 cannot be found
- ADDFLAFS merged into FFLAGS
- several cosmetic changes
2006-12-02 17:55:41 +00:00
gsell b105b19d4d src/H5Part.c
- _set_view(): "end" is now inclusive
2006-12-02 17:53:32 +00:00
gsell f0d51def4e test/Makefile.am
- ADDFLAGS removed: content of ADDFLAGS is now in FFLAGS
2006-12-02 17:51:46 +00:00
gsell 5325a7a24f Test 2006-12-01 13:02:39 +00:00
gsell 9c6d4e48a3 Test 2006-12-01 13:01:13 +00:00
gsell 150f623c03 Test 2006-12-01 12:56:37 +00:00
gsell 14536c6d84 Test 2006-12-01 12:56:26 +00:00
gsell 94779f185f Test 2006-12-01 09:46:39 +00:00
gsell 07ff9e52ef test bla 2006-12-01 09:43:03 +00:00
adelmann 4de6c55220 Add unit attributes and fix units 2006-11-28 09:22:27 +00:00
gsell e21e1bf4f4 "homdynToH5p" added to tools 2006-11-27 15:09:41 +00:00
gsell 42e023ea71 set version number to 1.3.1 2006-11-27 14:52:29 +00:00
adelmann 7a7a90b5df Initial update 2006-11-13 20:00:07 +00:00
gsell cf40adf301 src/addToDoxygenMainPage.h
- removed (content moved to "H5Part.c")
test/H5ecloudExample.cc
src/H5Units.h
src/H5Part.cc
src/H5Part++.hh
src/H5Part.hh
src/H5Part++.cc
tools/h5pToGNUplot.py
	- removed
doc/Makefile.am
	- added
doc/H5tools/H5tools.htm
	- renamed to "doc/H5tools/H5tools.html"
2006-10-27 15:13:31 +00:00
gsell cc383bff11 src/H5Block.c
- doxygen:
		* group "h5block_api" renamed to "h5block_c_api"
		* documentation added/revised
	- _allgather()
		* defined static
	- unused code "#if OLD_DISSOLVE_GHOSTZONES" removed
	- Macro "H5BLOCK_GROUP_NAME" replaced with "H5BLOCK_GROUPNAME_BLOCK"
2006-10-27 15:10:11 +00:00
gsell 712bbf30b2 src/H5Part.c
- doxygen group "h5part_api" renamed to "h5part_c_api"
	- default error-handler renamed to "H5PartReportErrorHandler"
	- macro "H5PART_PARTICLES_GROUP" replaced with "H5PART_GROUPNAME_STEP"
2006-10-27 15:00:13 +00:00
gsell 1b55e6c536 src/H5PartPrivate.h
- time-steps renamed from "Particles" to "Steps".
	- the macro defining the groupname of time-steps is now
	  "H5PART_GROUPNAME_STEP"
2006-10-27 14:57:02 +00:00
gsell 615cbf3bbd src/H5BlockPrivate.h
- "H5BLOCK_GROUP_NAME" renamed to "H5BLOCK_GROUPNAME_BLOCK"
2006-10-27 14:54:02 +00:00
gsell a5e5d3f2a8 test/H5BlockParTestScalarFieldF.f90
- interface definition for "IARGC()" added, pgi-fortran
	  complains about this (intrinsic!) function.
2006-10-27 14:52:54 +00:00
gsell 4d2b43576f test/Makefile.am
- several changes to "EXTRA_DIST"
2006-10-27 14:48:50 +00:00
gsell bcf06f51b1 src/H5Part.h
- H5PartDefaultErrorHandler:
		* renamed to "H5PartReportErrorHandler"
2006-10-27 14:46:57 +00:00
gsell f065eccdc4 src/Makefile.am
- several changes to "EXTRA_DIST", "include_HEADERS", "EXTRA_HEADERS",
	  "libH5PartF_a_SOURCES"
2006-10-27 14:14:38 +00:00
gsell 49df069686 configure.ac
- AC_INIT: Version number changed to "1.3.1"
	- AC_PROG_FC: "gfortran" added to list
	- option "--enable-mpipath" changed to "--with-mpipath"
	- option "--enable-hdf5path" changed to "--with-hdf5path"
	- set env.variable "FC" to "MPIFC" if "MPIFC" is set
	- "H5BlockDissolveGhosts" removed from TTARGET
	- AC_CONFIG_FILES: "doc/Makefile" added
2006-10-27 14:08:44 +00:00
gsell 6ad99f01cd Makefile.am
- doc added to list SUBDIRS
2006-10-27 14:02:35 +00:00
gsell 67ffffae9d src/H5BlockF.c
- h5bl_get_partition_of_proc()
		* bugfix: we have to increment the values by 1
2006-10-10 15:59:08 +00:00
gsell ddd7c0f0bd test/H5BlockParTestScalarFieldF.f90
- read_field()
		* bugfixes
2006-10-10 15:57:07 +00:00
gsell bef930c76b src/H5Block.c
- H5BlockDefine3dLayout()
		* debug-print user layout
2006-10-10 15:49:39 +00:00
Christina Siegerist 78add071f1 changed to September 2006 2006-10-02 20:50:00 +00:00
Christina Siegerist c7e88d59af Changed to email to andreas to avoid svn wrong addresses. 2006-10-02 20:47:52 +00:00
adelmann cb9ba14d80 delcared IARGC 2006-09-29 04:26:29 +00:00
gsell 791a9be790 test/H5BlockParTestScalarFieldF.f90
- read_field()
		* bugfix in calculation of expected value
2006-09-29 00:19:09 +00:00
gsell ac632c5ed4 src/H5PartF.c
- h5pt_set_verbosity_level()
		* bugfix: level was not a pointer
2006-09-29 00:01:41 +00:00
gsell 146d0cd28d test/H5BlockParTestScalarFieldF.f90
- more layout fixes
2006-09-28 23:44:35 +00:00
gsell 415c037076 test/H5BlockParTestScalarFieldF.f90
- more layout fixes
2006-09-28 23:39:19 +00:00
gsell 3653baecd0 test/H5BlockParTestScalarFieldF.f90
- more layout error fixed
2006-09-28 23:32:10 +00:00
gsell 2e6ec2fe01 test/H5BlockParTestScalarFieldF.f90
- bugfixes in layout
2006-09-28 23:22:07 +00:00
gsell cab19eece1 test/H5BlockParTestScalarFieldF.f90
- added
2006-09-28 22:47:51 +00:00
gsell 5b50d9b362 configure
- H5BlockParTestScalarFieldF
		* added to parallel, fortran TTARGET
2006-09-28 22:42:17 +00:00
gsell 6c4c222f4d src/H5BlockF.c
- h5bl_get_reduced_partition_of_proc()
		* bugfix: we have increment the value by one
	- h5bl_get_proc_of()
		* bugfix: we have to decrement the value by one
2006-09-28 22:41:15 +00:00
gsell e76b2ed356 src/H5BlockF90.inc
- h5bl_get_partition_of_proc()
	  h5bl_get_reduced_partition_of_proc()
		* bugfix in declaration, proc was missing
2006-09-28 22:38:18 +00:00
gsell b64f8ad80e test/Makefile.am
- rules to build "H5BlockParTestScalarFieldF" added
2006-09-28 22:36:41 +00:00
gsell de7c07e47f src/H5PartF.c
- attribute interface
		* bugfixes, was completly messed up, what did I do?
2006-09-28 19:02:41 +00:00
gsell 1b10ffe18b src/H5PartF90.inc
- declare dimensions of arrays as (*) not (:)
2006-09-28 16:59:49 +00:00
gsell 489110ba92 Hdf5fed moved to own repo 2006-09-27 20:55:14 +00:00
gsell 2c4d12b36c test 2006-09-27 19:57:35 +00:00
gsell dbdb76fff7 test 2006-09-27 19:57:05 +00:00
adelmann 634ed00d24 add merlin00 configure 2006-09-27 19:13:20 +00:00
gsell ac6f828fbc src/H5PartPrivate.h
- _H5Part_set_step()
		* was static and is public now
2006-09-27 04:45:49 +00:00
gsell 14f0702eee src/H5PartF.c
- h5pt_openpar_r()
	  h5pt_openpar_w()
		* bugfix: arg "comm" as been pass as pointer instead of value
2006-09-27 04:44:39 +00:00
gsell e4c712e067 src/H5Part.c
- _H5Part_set_step()
		* was static is public now
2006-09-27 04:42:09 +00:00
adelmann 9e6208836e add howto for GELE the small Crat XT3 system 2006-09-27 04:10:51 +00:00
gsell c43e918ddc doc/doxyfooter
- added
2006-09-26 23:39:01 +00:00
gsell 353689b4eb src/H5Part.c
- grouping function in doxygen groups
2006-09-26 23:33:04 +00:00
gsell bf22238a3e src/H5Block.c
- grouping of functions in doxygen groups
	- moved doc from "H5Block.h"
2006-09-26 23:09:00 +00:00
gsell 9c73b23b48 src/H5Block.h
- part of doxygen doc moved to "H5Block.c"
2006-09-26 23:07:08 +00:00
gsell 9c3040e429 doc/Doxyfile
- several changes to get a better layout and structure
2006-09-26 23:05:37 +00:00
gsell 4f96e94098 doc/ReferencePages
- removed, can be generated with Doxygen
2006-09-26 04:45:04 +00:00
gsell 84cc3c7a19 doc/hdf5.pdf
- moved to repo "H5Papers"
2006-09-26 04:43:04 +00:00
gsell 56f13c3b68 doc/2006-Berkeley-Visit
doc/H5xxx
	- moved to repo "H5Memo"
2006-09-26 04:41:46 +00:00
gsell 70d1a26d4c test/H5BlockTestAttributes.c
- tests for "H5Bloc3d{Set,Get}Field{Spacing,Origin}() added
2006-09-25 23:20:50 +00:00
gsell 980a192922 src/H5PartPrivate.h
- _H5Part_set_step()
		* declaration added
2006-09-25 23:02:40 +00:00
gsell bef9820f71 src/H5Part.c
- H5PartSetNumParticles()
		* fix undeclared var error in parallel code
	- _set_step()
		* renamed to "_H5Part_set_step()"
2006-09-25 23:01:28 +00:00
gsell 6e32226992 src/H5Part.c
- use "-1" to indicate an uninitialized "timegroup" in "H5PartFile"
	  a valid "timegroup" is greater or equal zeros
	- _set_step()
		* added, derived from "H5PartSetStep()"
	- H5PartSetStep()
		* call "_set_step()" to do the real work
	- _H5Part_get_num_particles()
		* added, derived from "H5PartGetNumParticles()"
	- H5PartGetNumParticles()
		* call "_H5Part_get_num_particles()" to do the real work
	- H5PartSetNumParticles()
		* use new function "_set_step()" instead of "H5PartSetStep()"
		* print no extra error message if "_set_step()" returns
		  with an errror
	- _reset_view()
		* added, derived from "H5PartSetView()"
	- H5PartResetView()
		* added, was a macro before
	- H5PartHasView()
		* added, was a macro before
	- _set_view()
		* added, derived from "H5PartSetView()"
		* "#ifdef HDF5V160" block removed
	-  H5PartSetView()
		* call "_set_view()" to do the real work
	- H5PartGetView()
		* use vars "viewend" and "viewstart" to instead "range[0]"
		  and range[1]
		* call "_set_step()" if timegroup not initialized
	- H5PartSetCanonicalView()
		* check whether we are in read-only mode replaced with macro
		* "_reset_view()" used instead of "H5PartSetView(f,-1,-1)
2006-09-25 20:05:47 +00:00
gsell 1d011f5482 src/H5PartErrors.h
- macro CHECK_READONLY_MODE added
2006-09-25 19:23:18 +00:00
gsell 0b151cd0aa src/H5Part.h
src/H5Part.c
	- H5PartOpenFile()
	  H5PartOpenFileParallel()
		* "const" qualifier added to arg "flags"
	- H5PartReadDataInt64()
		* "const" qualifier added to arg "name"
      	- H5PartResetView()
	  H5PartHasView()
		* are real function now, not macros any more
2006-09-25 19:22:26 +00:00
gsell e560303db3 src/H5Block.c
- unused code between #if 0 ... #endif removed
	- _dissolve_ghostzones()
		* faster algorithm implemented
2006-09-25 19:17:23 +00:00
gsell 591a37855d src/H5PartPrivate.h
- _H5Part_get_num_particles()
		* declaration added
2006-09-25 19:15:13 +00:00
gsell 8cedb2d7f5 test/H5BlockDissolveGhosts.c
- _dissolve_ghostzones()
		* faster algorithm implemented
2006-09-25 19:14:08 +00:00
Patrik Leidenberger df20b6e0ea Restructure the Hdf5fed directory. 2006-09-25 12:41:31 +00:00
Patrik Leidenberger 6f34b0a4c5 Restructure the Hdf5fed directory. 2006-09-25 09:57:32 +00:00
Patrik Leidenberger 43000dabe1 Restructure the Hdf5fed directory. 2006-09-25 09:55:50 +00:00
Patrik Leidenberger 40a9898f92 Restructure the Hdf5fed directory. 2006-09-25 09:47:15 +00:00
Patrik Leidenberger 5bd504becf Restructure the Hdf5fed directory. 2006-09-25 09:45:56 +00:00
Patrik Leidenberger 9a16c66724 Restructure the Hdf5fed directory. 2006-09-25 09:34:15 +00:00
Patrik Leidenberger 83f931607b Restructure the Hdf5fed directory 2006-09-25 09:31:11 +00:00
Patrik Leidenberger ad79b097d2 Hdf5fed little update. 2006-09-25 08:20:38 +00:00
Patrik Leidenberger 24a080298d H5Fed: Add function for triangle boundary. 2006-09-24 17:04:05 +00:00
Patrik Leidenberger 0e2cc3ec8c Addaped H5Fed api to Dune. 2006-09-24 12:15:09 +00:00
gsell bb7f1c5f38 src/H5PartF.c
- h5pt_openr_par()
		* fixed typo
	- h5pt_openw_par()
		* fixed typo
2006-09-22 22:59:54 +00:00
gsell bb15e96150 src/H5Block.h
- H5BlockGetFieldInfoByName()
		* added
	- H5Block3dGetFieldOrigin()
		* added
	- H5Block3dSetFieldOrigin()
		* added
	- H5Block3dGetFieldSpacing()
		* added
	- H5Block3dSetFieldSpacing()
		* added
2006-09-22 22:55:40 +00:00
gsell 2217b10b01 src/H5Block.c
- H5Block3dWriteScalarField()
	- H5Block3dReadScalarField()
		* dataset renamed from "x" to "0"
	- H5Block3dWrite3dVectorField()
	- H5Block3dRead3dVectorField()
		* datasets renamed from "x", "y", "z"  to "0", "1", "2"
	- _get_field_info()
		* added, derived from "H5BlockGetFieldInfo()"
	- H5BlockGetFieldInfo()
		* call "_get_field_info()" to do the real work
	- H5BlockGetFieldInfoByName()
		* added
	- _write_field_attrib()
		* defined as static function, was non-static
	- _read_field_attrib()
		* added, derived form "H5BlockFieldReadAttrib()"
	- H5BlockReadFieldAttrib()
		* call "_read_field_attrib()" to do the real work
	- H5Block3dGetFieldOrigin()
		* added
	- H5Block3dSetFieldOrigin()
		* added
	- H5Block3dGetFieldSpacing()
		* added
	- H5Block3dSetFieldSpacing()
		* added
2006-09-22 22:53:46 +00:00
gsell b66e4587f5 src/H5BlockF.c
- include "H5PartPrivate.h" added
	- include <hdf5.h> removed
2006-09-22 22:45:23 +00:00
gsell 06530aff19 src/H5Part.c
- H5PartSetStep()
		* fix conversion to different size in debug output
2006-09-22 22:44:08 +00:00
gsell 7f2cb8bcaf test/Makefile.am
- bugfix in rule to build "H5test"
2006-09-22 22:42:28 +00:00
gsell 49022b6838 test/H5test.cc
- empty PARALLEL_IO conditional part removed
2006-09-22 22:41:30 +00:00
gsell 1b15551170 src/H5Part.c
- declare arguments as "const" where possible
2006-09-22 20:55:23 +00:00
gsell 09fc6fd570 src/H5PartPrivate.h
- _H5Part_strdupfor2c()
	- _H5Part_strc2for()
		* added
2006-09-22 20:54:34 +00:00
gsell db0a1bd448 src/H5Part.h
- declare arguments as "const" where possible
2006-09-22 20:53:36 +00:00
gsell 921746273d src/H5Block.c
- printf for debug output removed
2006-09-22 20:52:12 +00:00
gsell 990a359f14 src/H5BlockF90.inc
- h5bl_3d_write_scalar_field()
	- h5bl_3d_write_3dvector_field()
	- h5bl_3d_read_3dvector_field()
		* bugfix in type of data
2006-09-22 20:51:05 +00:00
gsell b3da7610f1 src/H5PartF.c
src/H5BlockF.c
	- use Fortron function name in definition, define macros for
	  function names only, if we have to rename them
	- use function "_H5Part_strdupfor2c()" and "_H5Part_strc2for()" 
	  for string conversion
2006-09-22 20:49:17 +00:00
gsell 9e9f2fdb9a test/H5BlockTestAttributesF.f90
- write file and attributes implemented
2006-09-22 20:31:59 +00:00
Patrik Leidenberger cf14e818db Extension of the H5Fed API and adding a dump program to test the API. 2006-09-22 13:30:03 +00:00
gsell cdf1ce5e9d src/H5BlockF90.inc
- all (:,:,:) and (:) changed to (*)
2006-09-21 23:48:36 +00:00
gsell 0ca05f63a0 src/H5BlockF.c
- h5bl_readfieldattrib_*
		* bugfix: C function has not been called with copy
2006-09-21 23:46:18 +00:00
gsell cb4bceb4bb src/H5Block.c
- some debug print removed
2006-09-21 23:44:39 +00:00
gsell c40ae0bb4e test/H5BlockTestAttributesF.f90
- attribute read tests added
2006-09-21 23:43:22 +00:00
gsell 90c2a260c2 src/H5BlockTestAttributes.c
- bugfixes
2006-09-21 21:26:46 +00:00
gsell 4f423dbdda test/H5BlockTestAttributesF.f90
- more coding
2006-09-21 21:26:01 +00:00
gsell 624edd3be3 test/Makefile.am
- rule to build "H5BlockTestAttributesF"
		* link to non-parallel versions of the library
2006-09-21 21:25:17 +00:00
gsell f698ae762e src/H5Part.c
- H5PartOpenFileParallel()
		* debug-print info about file also in non-parallel case
		* print value of "f" not "f->file" 
	- H5PartOpenFile()
		* print value of "f" not "f->file"
2006-09-21 21:23:28 +00:00
gsell 782d67c1a0 src/H5PartF.c
- f_h5pt_openr()
		* type-cast result to get rid of the warning
2006-09-21 21:21:07 +00:00
gsell 51560ad3fa src/H5Block
- several debug-prints added
2006-09-21 21:16:41 +00:00
gsell e35679ba56 src/H5BlockF90.inc
- h5bl_getfieldinfo()
		* syntax error fixed
2006-09-21 21:15:55 +00:00
gsell f45fb3f465 src/H5BlockF.c
- all function
		* type of file-handle changed to "h5part_int64_t"
2006-09-21 21:13:30 +00:00
gsell 5425ae0847 configure.ac
- prog "H5BlockTestAttributesF" moved to the non-parallel test
	  targets
2006-09-21 21:11:42 +00:00
Patrik Leidenberger 15abcafd84 Add H5Fed changes in h5fed api. 2006-09-21 12:26:37 +00:00
Patrik Leidenberger 4c4cdc9a2f Add H5Fed. 2006-09-21 10:19:39 +00:00
gsell 8f31d8ddd5 test/H5BlockTestAttributesF.f90
- added
2006-09-20 21:07:25 +00:00
gsell 011128ef54 test/Makefile.am
- rule to build target "H5BlockTestAttributesF" added
2006-09-20 21:06:47 +00:00
gsell 333332537c configure.ac
- prog "H5BlockTestAttributesF" added to TTARGET
2006-09-20 21:05:52 +00:00
gsell 65470f307b test/H5BlockTestAttributes.c
- main()
		* declaration of var "nprocs" added
2006-09-20 21:03:42 +00:00
gsell 9647274842 src/H5PartF.c
- f_h5pt_set_verbosity_level()
		* added
	- f_h5pt_getstepattribinfo()
	  f_h5pt_getfileattribinfo()
		* type of var "type" changed from "hid_t" to
		  "h5part_int64_t"
2006-09-20 21:02:23 +00:00
gsell 76549133c4 src/H5PartF90.inc
- declaration of "h5pt_set_verbosity_level()" added
2006-09-20 20:59:16 +00:00
gsell bf9793e18a src/H5Part.h
- H5PartSetVerbosityLevel()
		* type of arg "level" changed from "unsigned int" to
		  "h5part_int64_t"
2006-09-20 20:58:13 +00:00
gsell 523c2ae212 src/H5Part.c
- H5PartSetVerbosityLevel()
		* type of arg "level" changed from "unsigned int" to
		  "h5part_int64_t"
2006-09-20 20:57:04 +00:00
gsell c892a7c748 src/H5Part.c
- use macro "H5PART_PARTICLES_GROUP" insteed of string
	- print_{debug,info,warn,error}()
		* prints now a prefix "D", "I", "W", "E" corresponding to
		  type of message
		* print value of "__funcname" before message text
		* print everything in one print statment
		* all calls to these functions have been change accordingly
2006-09-20 18:00:46 +00:00
gsell 54313b4882 src/H5Block.c
- use macro "H5BLOCK_GROUP_NAME" insteed string of "Block"
2006-09-20 17:54:36 +00:00
gsell e6b3c12e77 src/H5BlockPrivate.h
- macro "H5BLOCK_GROUP_NAME" added
2006-09-20 17:53:25 +00:00
gsell cc9487757b src/H5PartPrivate.h
- macro "H5PART_PARTICLES_GROUP" added
2006-09-20 17:52:08 +00:00
gsell b795b592cb test/H5BlockTestAttributes.c
- can be compiled parallel and non-parallel now
2006-09-20 17:50:51 +00:00
gsell 26eb035ef8 test/H5BlockTestAttributes.c
- added
2006-09-20 01:50:04 +00:00
gsell 3c15cdf0c1 test/H5BlockWriteScalarField1Proc.c
test/H5BlockTest1.c
test/H5BlockReadParallel1.c
test/H5BlockReadScalarField1Proc.c
test/H5BlockWrite1.c
test/H5BlockParallelTest1.c
	- removed
2006-09-20 01:49:25 +00:00
gsell a205c9a93c src/H5Block.c
- all "H5Block.*" functions
		* call "_init()" at the very beginning
	- all "H5Block.*" functions where a layout must be defined before
	  the function can be called
		* error check, whether layout is defined or not
2006-09-20 01:48:03 +00:00
gsell 82c7f77e26 src/Makefile.am
- prog "H5BlockTestScalarField" removed
	- prog "H5BlockTestAttributes" added
2006-09-20 01:44:47 +00:00
gsell a4dd08d021 src/H5BlockTypes.h
- struct H5BlockStrukt
		* "have_layout" added
2006-09-20 01:43:15 +00:00
gsell 71eb102a30 src/H5BlockErrors.h
- macro "CHECK_LAYOUT" added
2006-09-20 01:42:09 +00:00
gsell 8aa2732876 src/H5Block.h
- H5Block3dGetProcOf()
		* arg "f" is not "const" any more
2006-09-20 01:41:08 +00:00
gsell b5c98e495b src/H5BlockF.c
- f_h5bl_get_proc_of()
		* arg "f" is not "const" any more
2006-09-20 01:40:02 +00:00
gsell 1440cd28a7 configure.ac
- prog "H5BlockTestAttributes" added to "TTARGET"
2006-09-20 01:38:44 +00:00
gsell 1dba6fb877 src/H5Part.h
- bugfix: #endif was at wrong place
2006-09-19 23:39:40 +00:00
gsell df8c5280c0 src/H5BlockF.c
- Fortran 90 bindings coded
2006-09-19 23:37:39 +00:00
gsell 9e6fc708f6 src/H5Block.c
- H5BlockDefine3DFieldLayout()
		* CHECK_FILEHANDLE() added
	- H5BlockGetNumFields()
		* CHECK_FILEHANDLE() added
	- H5BlockGetFieldInfo()
		* CHECK_FILEHANDLE() and CHECK_TIMEGROUP() added
	- H5BlockGetNumFieldAttribs()
		* bugfix: return value was always 0
	- H5PartReadFieldAttrib()
		* bugfix: CHECK_FILEHANDLE was called before _init()
2006-09-19 23:36:27 +00:00
gsell 600f887609 src/Makefile.am
- rules to build H5Block Fortran bindings added
2006-09-19 23:29:33 +00:00
gsell 79f6d8e19c src/H5Block.h
- declaration of "H5BlockHasFieldData()" added
2006-09-19 23:28:32 +00:00
gsell e893b8e448 src/H5BlockF90.inc
- coding
	- some fixes
2006-09-19 23:26:54 +00:00
gsell 1a623f0e81 configure.ac
- bugfix from last check-in
	- some formating changed
2006-09-19 23:25:30 +00:00
gsell 4d7653f2bd tools/Makefile.am
- add $(MPIINC) to macro INC
2006-09-19 01:25:21 +00:00
gsell 307aecaec9 tools/h5pToGNUplot.cc
- include "H5Part.h" insteed "H5Part.hh"
	- several format string fixes
2006-09-19 01:23:37 +00:00
gsell 06b04a75fb tools/h5pAttrib.cc
- include "H5Part.h" insteed "H5Part.hh"
	- several format string fixes
2006-09-19 01:23:04 +00:00
gsell 13bbd58004 src/Makefile.am
- if parallel is enabled, only this version will be builded
	- parallel/non-parallel macros merged
	- the library name is now "libH5Part.h" for non-parallel and 
	  parallel.
2006-09-19 01:21:18 +00:00
gsell 792ae9a597 src/H5Block.c
- H5PartReadFieldAttrib()
		* missing error handling added after reading attribute
2006-09-19 01:18:00 +00:00
gsell 5d9b13e15e src/H5Part.h
- C++ wrapper added
2006-09-19 01:16:46 +00:00
gsell b998848ed2 src/H5PartErrors.h
- fix format string error in "HANDLE_H5PART_SET_VIEW_ERR"
2006-09-19 01:11:17 +00:00
gsell 6e14b0aeab test/H5BlockParTestScalarField.c
- several format string fixes
2006-09-19 01:09:41 +00:00
gsell 8a9cdf320c test/H5test.cc
- include "H5Part.h" insteed of "H5Part.hh"
2006-09-19 01:08:53 +00:00
gsell 8e328d1dc5 src/H5PartTest.cc
- include "H5Part.h" insteed of "H5Part.hh"
	- several format string fixes
2006-09-19 01:07:54 +00:00
gsell c3f8c3e70e test/H5PartAndreasTest.cc
- include "H5Part.h" insteed of "H5Part.hh"
2006-09-19 01:06:18 +00:00
gsell 13660dea05 test/Makefile.am
- parallel/non-parallel version of macros merged
	- use CC, CXX und FC insteed of MPICC, ...
2006-09-19 01:04:42 +00:00
gsell 8608d1e63f configure.ac
- parallel/non-parallel versions of macros merged
        - in parallel case: CC=MPICC, CXX=MPICXX und FC=MPIFC
2006-09-19 00:58:22 +00:00
gsell 837c329840 src/H5Block.h
- C++ wrapper added
2006-09-19 00:53:55 +00:00
gsell ec71b9eaa6 src/H5Block.h
- declaration of "H5Block3dGetReducedPartitionOfProc()" added
2006-09-15 23:50:40 +00:00
gsell 27dc5819f2 src/H5Block.c
- H5Block3dGetReducedPartitionOfProc()
		* added
	- _select_hyperslab_for_writing()
		* missing selection of hyperslab for memshape added
2006-09-15 23:49:06 +00:00
gsell 6e3b010eff test/H5BlockParTestScalarField.c
- return on error removed
2006-09-15 23:45:22 +00:00
gsell c0216d2da7 test/Makefile.am
- bugfix in rule to build "H5BlockDissolveGhosts"
2006-09-15 23:43:17 +00:00
gsell acccf9b457 test/H5BlockDissolveGhosts.c
- added
2006-09-15 21:56:48 +00:00
gsell bc0499e859 src/H5Block.c
- new algorithm for dissolving ghost-zone
2006-09-15 21:54:58 +00:00
gsell f8f384dcc2 configure.ac
- "H5BlockDissolveGhosts" added to parallel TTARGET
	- "H5BlockTest1" removed from serial TTARGET
2006-09-15 21:50:10 +00:00
gsell 6008f5579e test/Makefile.am
- rules added to build "H5BlockDissolveGhosts"
2006-09-15 21:48:10 +00:00
gsell aa487aa4be test/H5BlockParTestScalarField.c
- main()
		* call to "MPI_Finalize()" added
2006-09-14 23:08:25 +00:00
gsell 8d76d9d9bd src/H5Block.c
- _dissolve_ghostzone()
		* debug prints edited
2006-09-14 23:07:17 +00:00
gsell ab9ee7406b test/H5BlockParTestScalarField.pbs
- added
2006-09-14 21:43:09 +00:00
gsell 814a9a86e7 src/H5Block.c
_dissolve_ghostzones()
		* dissolve all ghost-zones, not only for the processor the code
		  is running on.
2006-09-14 21:08:36 +00:00
gsell 8948598fab test/H5BlockParTestScalarField.c
_read_data()
		* bugfix in calculating expected value
		* be more verbose in case of an error
2006-09-14 21:05:23 +00:00
gsell dddeaeba27 - src/H5Part.c
- H5PartOpenFileParallel()
		* in the parallel code there were some not yet
		  renamed calls to "print_debug()"
	- H5PartSetStep()
		* in the parallel code there was a not yet
		  renamed call to "print_info()"
2006-09-14 18:23:11 +00:00
gsell 53f286b421 test/H5BlockParTestScalarField.c
- added
2006-09-14 16:57:24 +00:00
gsell 0975564af3 src/H5Part.c
- H5PartWriteFileAttrib()
		* return code of "_H5Part_write_attrib()" was not assigned
		  to "herr"
	- H5PartSetView()
		* var "r" to handle error renamed to "herr" and changed
		  to type "h5part_int64_t"
2006-09-14 16:56:29 +00:00
gsell 29efcefae3 src/H5Block.c
- H5Block3dGetPartitionOfProc()
	  H5Block3dGetProcOf()
		* added
2006-09-14 16:51:52 +00:00
gsell 3873af56a0 src/H5Block.h
- H5Block3dGetPartitionOfProc()
	- H5Block3dGetProcOf
		* declaration added
2006-09-14 16:50:37 +00:00
gsell dd75b5da79 configure.ac
- block tests cleanup
2006-09-14 16:48:56 +00:00
gsell 7112492fe8 test/Makefile.am
- use of macros in most rules
	- block tests cleanup
2006-09-14 16:47:56 +00:00
gsell 77b1b40ea9 test/H5BlockWriteScalarField1Proc.c
test/H5BlockReadScalarField1Proc.c
	- added
2006-09-12 22:19:39 +00:00
gsell 4f35ba1356 test/H5testFpar.f
- renamed to "H5testFpar.f90"
2006-09-12 22:18:58 +00:00
gsell 3dff13c491 src/configure.ac
- add test targets to TTARGET
2006-09-12 22:17:53 +00:00
gsell 18c2c89cd5 src/H5Block.h
- fixed bug in declaration of "H5BlockReadFieldAttrib()"
2006-09-12 22:16:31 +00:00
gsell 1f6d43b25d test/Makefile.am
- rules to build "H5BlockReadScalarField1Proc" added
2006-09-12 22:15:21 +00:00
gsell 1b2e7a1f75 2006-09-12 22:14:09 +00:00
gsell e962e9d778 test/Bench.c
- declarations of unused variable removed
2006-09-12 22:13:40 +00:00
gsell 1df562f90c test/Makefile.am
- use macros in rule to build "H5testFpar", "H5testFpar.o"
      	- rules to build "H5BlockWriteScalarField1Proc" added
2006-09-12 20:47:31 +00:00
gsell 6c1ce219d1 test/H5testFpar.f90
- renamed, was "H5testFpar.f"
2006-09-12 20:44:11 +00:00
gsell c039ee7322 test/BlockTestSpecs.txt
- added
2006-09-12 17:43:49 +00:00
gsell 41511462f9 repo migration 2006-09-11 20:19:10 +00:00
222 changed files with 22854 additions and 81173 deletions
+58 -140
View File
@@ -1,175 +1,93 @@
* text=auto !eol
/AUTHORS -text
/COPYRIGHT -text
/COPYING -text
/ChangeLog -text
/GNUmakefile.orig -text
/INSTALL -text
/Makefile.am -text
/Makefile.in -text
/Makefile.orig -text
/NEWS -text
/README -text
/aclocal.m4 -text
/autogen.sh -text
/config.guess -text
/config.h.in -text
/config.sub -text
/configure -text
/configure-crayxt -text
/configure.ac -text
/depcomp -text
doc/2006-Berkeley-Visit/BethelSAP_1page-4.doc -text
doc/2006-Berkeley-Visit/H5Part.ppt -text
doc/2006-Berkeley-Visit/H5xxx.ppt -text
doc/2006-Berkeley-Visit/H5xxxVisIt.fig -text
doc/2006-Berkeley-Visit/SAP-Combined-v6.doc -text
doc/2006-Berkeley-Visit/aqpsi2006mar22.pdf -text
doc/2006-Berkeley-Visit/hdf.ps -text
doc/Building.html -text
doc/BuildingHDF5.html -text
doc/Downloading.html -text
doc/Doxyfile -text
doc/H5PartExpress.html -text
doc/H5PartIDL.html -text
doc/H5PartParaview.html -text
doc/H5PartTools.html -text
doc/H5PartVisIt.html -text
doc/H5PartVisIt/cloud_visit.png -text
doc/H5PartVisIt/cloud_visit.s.png -text
doc/H5PartVisIt/cloud_visit_2D.png -text
doc/H5PartVisIt/cloud_visit_2D.s.png -text
doc/H5PartVisIt/visit_query1.png -text
doc/H5PartVisIt/visit_query1.s.png -text
doc/H5tools/H5tools.htm -text
doc/H5tools/H5tools_files/snapshot1.jpg -text
doc/H5xxx/H5xxx.tex -text
doc/H5xxx/JAC2003.cls -text
doc/H5xxx/makefile -text
doc/InternalLayout.html -text
doc/ReferencePages/H5PartF_8c.html -text
doc/ReferencePages/H5Part_8c.html -text
doc/ReferencePages/H5Part_8h-source.html -text
doc/ReferencePages/H5Part_8h.html -text
doc/ReferencePages/annotated.html -text
doc/ReferencePages/doxygen.css -text
doc/ReferencePages/doxygen.png -text
doc/ReferencePages/files.html -text
doc/ReferencePages/functions.html -text
doc/ReferencePages/functions_vars.html -text
doc/ReferencePages/globals.html -text
doc/ReferencePages/globals_defs.html -text
doc/ReferencePages/globals_func.html -text
doc/ReferencePages/globals_type.html -text
doc/ReferencePages/index.html -text
doc/ReferencePages/structH5IO__getname__t-members.html -text
doc/ReferencePages/structH5IO__getname__t.html -text
doc/ReferencePages/structH5PartFile-members.html -text
doc/ReferencePages/structH5PartFile.html -text
doc/UsingC.html -text
doc/UsingF.html -text
doc/collision_6.png -text
doc/collision_6.s.png -text
doc/h5part.html -text
doc/hdf5.pdf -text
doc/layout.png -text
doc/H5X_File_Format.txt -text
doc/Makefile.am -text
doc/doxyfooter -text
examples/core_vfd.c -text
examples/fields.c -text
examples/particles.c -text
examples/simplef.F90 -text
examples/stridedf.F90 -text
examples/write_setview.c -text
/install-sh -text
/license.txt -text
/missing -text
/rules.make -text
src/H5Block.c -text
src/H5Block.f90 -text
src/H5Block.h -text
src/H5Part++.cc -text
src/H5Part++.hh -text
src/H5BlockErrors.h -text
src/H5BlockF.c -text
src/H5BlockPrivate.h -text
src/H5BlockReadWrite.c -text
src/H5BlockReadWrite.f90 -text
src/H5BlockReadWrite.h -text
src/H5BlockReadWriteF.c -text
src/H5BlockTypes.h -text
src/H5MultiBlock.c -text
src/H5MultiBlock.h -text
src/H5MultiBlockErrors.h -text
src/H5MultiBlockPrivate.h -text
src/H5MultiBlockReadWrite.c -text
src/H5MultiBlockReadWrite.h -text
src/H5MultiBlockTypes.h -text
src/H5Part.c -text
src/H5Part.cc -text
src/H5Part.f90 -text
src/H5Part.h -text
src/H5Part.hh -text
src/H5Part.inc -text
src/H5Part.py -text
src/H5PartAttrib.c -text
src/H5PartAttrib.f90 -text
src/H5PartAttrib.h -text
src/H5PartAttribF.c -text
src/H5PartErrors.h -text
src/H5PartF.c -text
src/H5Part_py.i -text
src/H5Part_py_wrap.c -text
src/H5PartPrivate.h -text
src/H5PartTypes.h -text
src/Makefile.am -text
src/Makefile.in -text
src/TestUnderscore.f -text
src/TestUnderscoreC.c -text
src/addToDoxygenMainPage.h -text
src/generate-attr.py -text
src/generate-h5bl-readwrite.py -text
src/generate-h5multi-readwrite.py -text
test/Bench.c -text
test/BlockTestSpecs.txt -text
test/H5BlockDissolveGhosts.c -text
test/H5BlockParTestScalarField.c -text
test/H5BlockParTestScalarField.pbs -text
test/H5BlockParTestScalarFieldF.F90 -text
test/H5BlockTestAttributes.c -text
test/H5BlockTestAttributesF.F90 -text
test/H5ParallelTest.cc -text
test/H5PartAndreasTest.cc -text
test/H5PartTest.cc -text
test/H5PartTestParallel.cc -text
test/H5ecloudExample.cc -text
test/H5test.cc -text
test/H5test.py -text
test/H5testF.f -text
test/H5testFpar.f -text
test/H5testFpar.F90 -text
test/Makefile.am -text
test/Makefile.in -text
test/params.h -text
test/read.c -text
test/test.c -text
test/testf.F90 -text
test/testframe.c -text
test/testframe.h -text
test/write.c -text
tools/H5BlockBench.c -text
tools/H5PartBench.c -text
tools/Makefile.am -text
tools/Makefile.in -text
tools/README -text
tools/h5Proot/GNUmakefile -text
tools/h5Proot/H5Style.h -text
tools/h5Proot/H5root.cc -text
tools/h5Proot/H5rootLinkDef.h -text
tools/h5Proot/README -text
tools/h5Proot/TH5Dataset.cc -text
tools/h5Proot/TH5Dataset.h -text
tools/h5Proot/TH5Legend.cc -text
tools/h5Proot/TH5Legend.h -text
tools/h5Proot/TH5MainFrame.cc -text
tools/h5Proot/TH5MainFrame.h -text
tools/h5pAttrib.cc -text
tools/h5pToGNUplot.cc -text
tools/h5pToGNUplot.py -text
visit_plugins/databases/H5Part/.depend -text
visit_plugins/databases/H5Part/Makefile -text
visit_plugins/databases/H5Part/README.txt -text
visit_plugins/databases/H5Part/avth5partFileFormat.C -text
visit_plugins/databases/H5Part/avth5partFileFormat.h -text
visit_plugins/databases/H5Part/h5part.xml -text
visit_plugins/databases/H5Part/h5partCommonPluginInfo.C -text
visit_plugins/databases/H5Part/h5partEnginePluginInfo.C -text
visit_plugins/databases/H5Part/h5partMDServerPluginInfo.C -text
visit_plugins/databases/H5Part/h5partPluginInfo.C -text
visit_plugins/databases/H5Part/h5partPluginInfo.h -text
visit_plugins/operators/BinnerFilter/.depend -text
visit_plugins/operators/BinnerFilter/Binner.xml -text
visit_plugins/operators/BinnerFilter/BinnerCommonPluginInfo.C -text
visit_plugins/operators/BinnerFilter/BinnerEnginePluginInfo.C -text
visit_plugins/operators/BinnerFilter/BinnerFilter.C -text
visit_plugins/operators/BinnerFilter/BinnerFilter.h -text
visit_plugins/operators/BinnerFilter/BinnerFilter.java -text
visit_plugins/operators/BinnerFilter/BinnerGUIPluginInfo.C -text
visit_plugins/operators/BinnerFilter/BinnerMakefile -text
visit_plugins/operators/BinnerFilter/BinnerPluginInfo.C -text
visit_plugins/operators/BinnerFilter/BinnerPluginInfo.h -text
visit_plugins/operators/BinnerFilter/BinnerScriptingPluginInfo.C -text
visit_plugins/operators/BinnerFilter/BinnerViewerPluginInfo.C -text
visit_plugins/operators/BinnerFilter/Binnerreplace.txt -text
visit_plugins/operators/BinnerFilter/Makefile -text
visit_plugins/operators/BinnerFilter/PyBinner.C -text
visit_plugins/operators/BinnerFilter/PyBinner.h -text
visit_plugins/operators/BinnerFilter/QvisBinnerWindow.C -text
visit_plugins/operators/BinnerFilter/QvisBinnerWindow.h -text
visit_plugins/operators/BinnerFilter/avtBinnerFilter.C -text
visit_plugins/operators/BinnerFilter/avtBinnerFilter.h -text
visit_plugins/operators/BinnerFilter/icon.xpm -text
visit_plugins/operators/RandomSample/.depend -text
visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.C -text
visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.h -text
visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.java -text
visit_plugins/operators/RandomSample/H5PartRandomSampleCommonPluginInfo.C -text
visit_plugins/operators/RandomSample/H5PartRandomSampleEnginePluginInfo.C -text
visit_plugins/operators/RandomSample/H5PartRandomSampleGUIPluginInfo.C -text
visit_plugins/operators/RandomSample/H5PartRandomSamplePluginInfo.C -text
visit_plugins/operators/RandomSample/H5PartRandomSamplePluginInfo.h -text
visit_plugins/operators/RandomSample/H5PartRandomSampleScriptingPluginInfo.C -text
visit_plugins/operators/RandomSample/H5PartRandomSampleViewerPluginInfo.C -text
visit_plugins/operators/RandomSample/Makefile -text
visit_plugins/operators/RandomSample/PyH5PartRandomSampleAttributes.C -text
visit_plugins/operators/RandomSample/PyH5PartRandomSampleAttributes.h -text
visit_plugins/operators/RandomSample/QvisH5PartRandomSampleWindow.C -text
visit_plugins/operators/RandomSample/QvisH5PartRandomSampleWindow.h -text
visit_plugins/operators/RandomSample/RandomSample.xml -text
visit_plugins/operators/RandomSample/avtH5PartRandomSampleFilter.C -text
visit_plugins/operators/RandomSample/avtH5PartRandomSampleFilter.h -text
visit_plugins/operators/RandomSample/icon.xpm -text
tools/homdynToH5p.cc -text
+13
View File
@@ -0,0 +1,13 @@
/Makefile.in
/aclocal.m4
/autom4te.cache
/build
/config.h.in
/configure
doc/Makefile.in
/ltmain.sh
/m4
src/H5PartF.h
src/Makefile.in
test/Makefile.in
tools/Makefile.in
+1
View File
@@ -6,5 +6,6 @@ Benedikt Oswald (PSI)
Wes Bethel (NERSC/LBNL)
John Shalf (NERSC/LBNL)
Cristina Siegerist (NERSC/LBNL)
Mark Howison (NERSC/LBNL)
Please use h5part@lists.psi.ch for communicaion.
+71
View File
@@ -0,0 +1,71 @@
*** Copyright Notice ***
H5Part Copyright (c) 2006-2009, The Regents of the University of California,
through Lawrence Berkeley National Laboratory (subject to receipt of any
required approvals from the U.S. Dept. of Energy) and the Paul Scherrer
Institut (Switzerland). All rights reserved.
If you have questions about your rights to use or distribute this
software, please contact Berkeley Lab's Technology Transfer Department
at TTD@lbl.gov referring to "H5Part (LBNL Ref CR-2255)"
NOTICE. This software was developed under partial funding from the U.S.
Department of Energy. As such, the U.S. Government has been granted for
itself and others acting on its behalf a paid-up, nonexclusive,
irrevocable, worldwide license in the Software to reproduce, prepare
derivative works, and perform publicly and display publicly. Beginning
five (5) years after the date permission to assert copyright is obtained
from the U.S. Department of Energy, and subject to any subsequent five
(5) year renewals, the U.S. Government is granted for itself and others
acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide
license in the Software to reproduce, prepare derivative works,
distribute copies to the public, perform publicly and display publicly,
and to permit others to do so.
*** License agreement ***
H5Part Copyright (c) 2006-2009, The Regents of the University of California,
through Lawrence Berkeley National Laboratory (subject to receipt of any
required approvals from the U.S. Dept. of Energy) and the Paul Scherrer
Institut (Switzerland). All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
(1) Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
(2) Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
(3) Neither the name of the University of California, Lawrence Berkeley
National Laboratory, U.S. Dept. of Energy, Paul Scherrer Institut
(Switzerland) nor the names of its contributors may be used to endorse
or promote products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
You are under no obligation whatsoever to provide any bug fixes,
patches, or upgrades to the features, functionality or performance of
the source code ("Enhancements") to anyone; however, if you choose to
make your Enhancements available either publicly, or directly to
Lawrence Berkeley National Laboratory, without imposing a separate
written license agreement for such Enhancements, then you hereby grant
the following license: a non-exclusive, royalty-free perpetual license
to install, use, modify, prepare derivative works, incorporate into
other computer software, distribute, and sublicense such enhancements or
derivative works thereof, in binary and source code form.
-7
View File
@@ -1,7 +0,0 @@
*** Copyright Notice ***
H5Part Copyright (c) 2006, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy) and the Paul Scherrer Institut (Switzerland). All rights reserved.
If you have questions about your rights to use or distribute this software, please contact Berkeley Lab's Technology Transfer Department at TTD@lbl.gov referring to "H5Part (LBNL Ref CR-2255)"
NOTICE. This software was developed under partial funding from the U.S. Department of Energy. As such, the U.S. Government has been granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, prepare derivative works, and perform publicly and display publicly. Beginning five (5) years after the date permission to assert copyright is obtained from the U.S. Department of Energy, and subject to any subsequent five (5) year renewals, the U.S. Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, prepare derivative works, distribute copies to the public, perform publicly and display publicly, and to permit others to do so.
+437
View File
@@ -0,0 +1,437 @@
==============================================================================
README file for H5Part configure
==============================================================================
+ 0. HDF5 library
-----------------
Make sure you have a working version of the HDF5 library installed. If you plan
to use parallel I/O you need to use a parallel HDF5 version. Source files and
installation instructions are available from the HDF5 website:
http://www.hdfgroup.org/HDF5/
+ 1. Quick start (If you feel lucky...)
----------------------------------------
For many platforms, where compilers are installed in the "default" location
and all the environment variables are set correctly, it should be sufficient
to type:
./configure [OPTIONS] && make [install]
to have the libraries and test program compiled.
+ 2. Configure line options
----------------------------
To view a full list of configure option, use:
./configure --help
(1) Enable options
--enable-fortran
--enable-parallel
--enable-tools
--enable-python
--enable-64 (only for AIX and Irix)
(2) Setting compilers related variables manually
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE before running configure. For example, if you are using the bash
shell, you might type:
export CC=gcc
to set the default C compiler. See below for descriptions of some useful
variables.
Compiler environment variables:
CC C compiler command
CXX C++ compiler command
FC Fortran compiler command
MPICC MPI-enabled C compiler command
MPICXX MPI-enabled C++ compiler command
MPIFC MPI-enabled Fortran compiler command
CFLAGS flags to append when invoking the C compiler
Library environment variables:
LDFLAGS flags to append when invoking the linker
(3) Setting prefix for installation manually (by default, the package will
install itself in the 'build' subdirectory of your source directory)
--prefix=PREFIX install files in PREFIX
+ 3. Platform specific settings for compiling libraries & test programs
------------------------------------------------------------------------
Building
make : builds the libraries and test programs
make install: builds and installs
make clean : removes extraneous object files
make distclean : returns configuration to unconfigured state
As tested on hosts:
(0) Franklin <franklin.nersc.gov> (CNL - Cray XT4)
--------------------------------------------------
module add hdf5_par
module add zlib
module add szip
export CC=cc CXX=CC FC=ftn MPICC=cc MPICXX=CC MPIFC=ftn
export LDFLAGS=$HDF5
./configure --enable-fortran --enable-parallel --with-hdf5path=$HDF5_PAR_DIR --with-mpiposix
make install
(1) Davinci <davinci.nersc.gov> (Linux"SUSE"-ia64)
---------------------------------------------------
FIRST THING FIRST!! Type:
module load intel
to have the proper compilers set up for use.
module load hdf5_par
[NOTE: module load hdf5 does not work at this moment.
Possible installation error of HDF5 on Davinci.]
Brief profile:
CC = icc
CXX = icc
FC = ifort
MPICC = icc
MPICXX = icc
MPIFC = ifort
If default doesn't work, try:
For C shell:
env CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure && make install
For Korn or Bourne shell:
CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure && make install
And, of course, you should add configure options, such as --enable-fortran --enable-parallel.
On this host, executing:
For C shell:
env CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure --enable-fortran --enable-parallel && make install
For Korn or Bourne shell:
CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure --enable-fortran --enable-parallel && make install
has functioned correctly.
To run test program, go to test directory:
(i) Serial test
run:
./H5testF
./H5PartTest
(ii) Parallel test
run:
mpirun 2 H5testFpar
mpirun 2 H5PartTestP
NOTE: Number 2 above is a arbitrary number that indicates the number of processes.
(2) Jacquard <jacquard.nersc.gov> (Linux"SUSE"-x86_64)
-------------------------------------------------------
Brief profile:
CC = pathcc
CXX = pathCC
FC = pathf90
MPICC = mpicc
MPICXX = mpicxx
MPIFC = mpif90
If default doesn't work, try:
For C shell:
env CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure && make install
For Korn or Bourne shell:
CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure && make install
And, of course, you should add configure options, such as --enable-fortran --enable-parallel.
On this host, executing:
For C shell:
env CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure --enable-fortran --enable-parallel && make install
For Korn or Bourne shell:
CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure --enable-fortran --enable-parallel && make install
has functioned correctly.
To run test program, go to test directory:
(i) Serial test
run:
./H5testF
./H5PartTest
(ii) Parallel test
In Jacquard, we need a script to run parallel programs, since Jacquard does not support interactive parallel processing. Instead, we need to submit the task to a queue. A sample script (run_H5testFpar.scr) may look like below:
+++++++++++++++++++++++++++++++++++++++
#!/bin/csh
#PBS -l nodes=1:ppn=2,walltime=00:05:00
#PBS -N H5testFpar
#PBS -o H5testFpar.out
#PBS -e H5testFpar.err
#PBS -q debug
#PBS -A mpccc
#PBS -V
setenv PBS_OWORKDIR /home/H5Part/test
cd $PBS_O_WORKDIR
mpirun -np 2 ./H5testFpar
+++++++++++++++++++++++++++++++++++++++
Then, we need to submit the task to a queue by running:
qsub run_H5testFpar.scr
After processed, the result will appear in H5testFpar.out, and error messages will appear in H5testFpar.err.
(3) Bassi <bassi.nersc.ogv> (AIX5.3.0.0-Power 3)
-------------------------------------------------
FIRST THING FIRST!! Type:
module load gcc
to have the proper compilers set up for use.
Brief profile:
CC = cc_r
CXX = cc_r
FC = xlf_r
MPICC = mpcc_r
MPICXX = mpcc_r
MPIFC = mpxlf_r
If default doesn't work, try:
For C shell:
env CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure && make install
For Korn or Bourne shell:
CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure && make install
And, of course, you should add configure options, such as --enable-fortran --enable-parallel.
On this host, executing:
For C shell:
env CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure --enable-fortran --enable-parallel && make install
For Korn or Bourne shell:
CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure --enable-fortran --enable-parallel && make install
has functioned correctly.
To run test program, go to test directory:
(i) Serial test
run:
./H5testF
./H5PartTest
(ii) Parallel test
run:
unsetenv MP_SINGLE_THREAD
poe ./H5PartTestP -procs 2 -nodes 1
poe ./H5testFpar -procs 2 -nodes 1
For more details on how to run parallel programs on Bassi, go to:
http://www.nersc.gov/nusers/resources/bassi/running_jobs/
(4) Starsky <starsky.lbl.gov> (Darwin8.5.0-PowerPC)
----------------------------------------------------
FIRST THING FIRST!! Set environment variables: (in tcsh)
setenv LD_LIBRARY_PATH /usr/local/g95/lib/gcc-lib/powerpc-apple-darwin8.5.0/4.0.3/
setenv PATH ${PATH}:/usr/local/g95/bin
NOTE: This environment variable setting is specifit to Starsky. It is to make configure find the fortran compiler.
Brief profile:
CC = gcc
CXX = g++
FC = g95
If default doesn't work, try:
For C shell:
env CC=gcc CXX=g++ FC=g95 ./configure && make install
For Korn or Bourne shell:
CC=gcc CXX=g++ FC=g95 ./configure && make install
And, of course, you should add configure options, such as --enable-fortran --enable-parallel.
On this host, executing:
For C shell:
env CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install
For Korn or Bourne shell:
CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install
has functioned correctly.
To run test program, go to test directory:
(i) Serial test
run:
./H5testF
./H5PartTest
(5) Linux AMD64 Visualization group workstations (Linux"SUSE"-x86_64)
---------------------------------------------------------
Brief profile:
CC = gcc
CXX = g++
FC = g95
If default doesn't work, try:
For C shell:
env CC=gcc CXX=g++ FC=g95 ./configure && make install
For Korn or Bourne shell:
CC=gcc CXX=g++ FC=g95 ./configure && make install
And, of course, you should add configure options, such as --enable-fortran --enable-parallel.
On this host, executing:
For C shell:
env CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install
For Korn or Bourne shell:
CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install
has functioned correctly.
To run test program, go to test directory:
(i) Serial test
run:
./H5testF
./H5PartTest
(6) Cray XT3 @ CSCS gele
1) modules/3.1.6 9) PrgEnv-pgi/1.4.26 17) xt-lustre-ss/1.4.26
2) MySQL/4.0.26 10) xt-pbs/5.3.4 18) Base-opts/1.4.26
3) acml/3.0 11) xt-service/1.4.26 19) subversion/1.3.2
4) pgi/6.1.4 12) xt-libc/1.4.26 20) zlib/1.2.3
5) totalview/7.2.0 13) xt-os/1.4.26 21) szip/2.0
6) xt-libsci/1.4.26 14) xt-catamount/1.4.26 22) hdf5/1.6.5
7) xt-mpt/1.4.26 15) xt-boot/1.4.26
8) xt-pe/1.4.26 16) xt-crms/1.4.26
CFLAGS="-I$H5HOME/include -DF77_SINGLE_UNDERSCORE" LDFLAGS="-L$H5HOME/lib -L$ZHOME/lib" ./configure --enable-parallel --enable-fortran
(7) merlin00 / merlin3
Currently Loaded Modulefiles:
1) hdf5/hdf5-1.6.5 2) root/root-5.10.00 3) mpi/mpich2-1.0.3-pgi-6.1 4) pgi/pgi_64-6.1
FC=mpif90 ./configure --enable-parallel --enable-fortran
==============================================================================
+ 4. Trouble shooting (Things to check for...)
--------------------------------------------
(0) Have you set the LD_LIBRARY_PATH?
---Some systems require the user to manually set the environment variable, LD_LIBRARY_PATH. To do so:
set the environment variable HDF5ROOT or PHDF5ROOT to point to your installation of HDF5 (serial and/or parallel respectively).
For Korn or Bourne shell:
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HDF5ROOT}/lib;export LD_LIBRARY_PATH
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:{PHDF5ROOT}/lib;export LD_LIBRARY_PATH
For C shell:
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${HDF5ROOT}/lib
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${PHDF5ROOT}/lib
Note that the values of HDF5ROOT & PHDF5ROOT will be in the "summary" section when you run configure.
Not properly set LD_LIBRARY_PATH value may result in a runtime error:
./H5PartTest: error while loading shared libraries: libhdf5.so.0: cannot open shared object file: No such file or directory
(1) Are the compilers set correctly?
---Check with: which COMPILER
(2) Have you installed HDF5?
---You can get it at: http://vis.lbl.gov/Research/AcceleratorSAPP/index.html
(3) Have you loaded the proper modules?
---It is necessary in Davinci & Bassi, and configure && make install may not work without it.
+3 -7
View File
@@ -1,18 +1,14 @@
# Trial by Antino Kim
# Top level Makefile.am
ACLOCAL_AMFLAGS=-I m4
SUBDIRS = \
doc \
src \
test \
tools
MAINTAINTERCLEANFILES = \
Makefile.in \
aclocal.m4 \
MAINTAINERCLEANFILES = \
config.h \
config.h.in \
config.log \
config.status \
configure \
stamp-h.in \
stamp-h1
-632
View File
@@ -1,632 +0,0 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# Trial by Antino Kim
# Top level Makefile.am
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure AUTHORS ChangeLog NEWS config.guess \
config.sub depcomp install-sh missing
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno configure.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
ADDFLAGS = @ADDFLAGS@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BAS_CC = @BAS_CC@
BUILD_TOOLS = @BUILD_TOOLS@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FC = @FC@
FCFLAGS = @FCFLAGS@
FFLAGS = @FFLAGS@
H5P_LIB_LOC = @H5P_LIB_LOC@
HDF5ROOT = @HDF5ROOT@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MPICC = @MPICC@
MPICXX = @MPICXX@
MPIFC = @MPIFC@
MPIINC = @MPIINC@
MPILIB = @MPILIB@
MPIROOT = @MPIROOT@
MTARGET = @MTARGET@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PHDF5ROOT = @PHDF5ROOT@
PYTHON_PATH = @PYTHON_PATH@
PY_WRAPPER = @PY_WRAPPER@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STDCXX = @STDCXX@
STRIP = @STRIP@
SZLIB = @SZLIB@
TOOLS_CXX = @TOOLS_CXX@
TOOLS_H5PART_LIB = @TOOLS_H5PART_LIB@
TOOLS_HDFLIB = @TOOLS_HDFLIB@
TTARGET = @TTARGET@
UNDERSCORE_H = @UNDERSCORE_H@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_FC = @ac_ct_FC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
SUBDIRS = \
src \
test \
tools
MAINTAINTERCLEANFILES = \
Makefile.in \
aclocal.m4 \
config.h \
config.h.in \
config.log \
config.status \
configure \
stamp-h.in \
stamp-h1
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
cd $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am:
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
check-am clean clean-generic clean-recursive ctags \
ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
dist-tarZ dist-zip distcheck distclean distclean-generic \
distclean-hdr distclean-recursive distclean-tags \
distcleancheck distdir distuninstallcheck dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-exec install-exec-am install-info \
install-info-am install-man install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic maintainer-clean-recursive \
mostlyclean mostlyclean-generic mostlyclean-recursive pdf \
pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
uninstall-info-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+358
View File
@@ -0,0 +1,358 @@
#### H5PART 1.6.5 ############################################################
Fixed several build errors reported by Iuri Prilepov on Ubuntu 11.04.
#### H5PART 1.6.4 ############################################################
Fixed bug where H5PartSetViewIndices was not setting an empty view when the
number of elements is 0.
Set a threshold on the HDF5 alignment parameter so that small metadata writes
are not aligned, which causes large gaps in the file.
#### H5PART 1.6.3 ############################################################
New build system uses libtool and can build shared libraries.
Fixed a bug that incorrectly identifies the number of selected points in a view
when using H5PartSetViewIndices.
Fixed bug in Fortran test reported by several people, as well as several
incorrect views set in the C test that were causing segfaults.
Fixed name mismatches in the Fortran interface, and an off-by-one indexing
problem.
#### H5PART 1.6.2 ############################################################
Removed H5PartSetViewEmpty
--------------------------
An empty view can now be selected with:
H5PartSetNumParticles(file, 0);
Bug Fixes to Attribute Calls in Fortran API
-------------------------------------------
Fixed a problem where attribute values were reverting to zero.
#### H5PART 1.6.1 ############################################################
Chunking in the H5Part API
--------------------------
There is now an H5Part equivalent H5PartSetChunkSize to the existing
H5BlockDefine3DChunkDims call. Both of these calls enable the chunking
mechanism in the underlying HDF5 layer. Chunking is used in combination
with the aligned open calls to pad datasets to alignment multiples
on disk.
All Steps Available on Write
----------------------------
Previously, existing steps in a file were only accessible in read-only mode.
Now, all steps are available in all modes, including write-truncate and
write-append. Thus, it is now possible to overwrite existing data in write
mode. To help alert the user to this possibility, a warning is issued every
time an existing dataset is written to. Warnings can be printed by setting
the verbosity to H5PART_VERB_WARN or higher.
New Throttling Routine
----------------------
Previously, a throttle factor of N meant that for P processors, the total
number of P writes were divided into N batches of P/N writes.
To better accommodate round-robin lustre striping, the new policy is to
execute P/N batches of N writes. Thus, matching N to the number of stripes
results in the desirable 1-1 matching of writers to stripes.
Other Fixes
-----------
* The configure script should correctly detect PGI compilers now.
* There was a small memory leak in the Fortran file open calls.
* There was a compile error with HDF5 1.6.x due to a missing assignment.
#### H5PART 1.6 ##############################################################
Updated Documentation
---------------------
The Fortran API has been added to the doxygen documentation. Most entries have
a reference to their respective C API call.
Regression Test Suite
---------------------
The test subdirectory has been reorganized to include a systematic series
of regression tests of common use cases for the API. The goal is to have both
complete coverage of the API (every call is exercised) and testing of some
unlikely or unsuspected values and cases.
Currently, the C test covers the entire H5Part API and the Fortran test is
still in development.
Benchmark Utilities
-------------------
Two benchmarking utilities, H5PartBench and H5BlockBench, have been added to
the tools collection. Both require the parallel library and have functionality
and syntax similar to the IOR benchmark:
http://sourceforge.net/projects/ior-sio/
File Mode Flags
---------------
Previously, the only flags used were H5PART_READ, H5PART_WRITE, and
H5PART_APPEND, and these were mutually exclusive. Additional flags have been
added to select the underlying virtual file driver (VFD) that HDF5 uses in
parallel mode and to accommodate the lustre filesystem:
H5PART_VFD_MPIPOSIX (use the MPI-POSIX driver, which bypasses MPI-IO)
H5PART_VFD_MPIIO_IND (use MPI-IO in independent mode)
H5PART_FS_LUSTRE (activate H5P tunings for the lustre stripe size)
These flags can be specified using the typical bitwise OR method, e.g.
char flag = H5PART_WRITE | H5PART_VFD_MPIPOSIX | H5PART_FS_LUSTRE;
will select write mode with these two additional options.
The parallel library now defaults to using the MPI-IO collective mode driver
(previously it used independent mode). The collective buffering algorithm in
the Cray XT4/5 environment has been substantially improved in the last year,
and defaulting to collective mode allows us to take advantage of these
improvements automatically.
There are also new open calls H5PartOpenAlign and H5PartOpenParallelAlign that
take an additional 'alignment' value. This value is passed to HDF5 and used to
pad out objects so that they align to filesystem boundaries. For instance, it
would make sense to use the stripe size as the alignment value when writing to
a lustre filesystem.
Unified 'View' Model
--------------------
Views are now supported in both read and write mode (previously only supported
in read mode). It is possible to specify non-sensical views: you could for
instance specify a read view that is larger than the dataset on disk. Or you
could create a write view that is larger than the data in memory. In those
cases, you will encounter an error when you try to perform a read or write
operation on a dataset.
There are two new methods for selecting views. H5PartSetNumParticlesStrided
selects a view with $n$ particles per processor, but such that the data in
memory is expected to have a 'stride' factor. For instance, if you have
particle data with fields $x$ and $y$ and a single array with entries
$x1,y1,x2,y2...$, then the stride factor is 2. Striding works for both reads
and writes and only affects the view of memory: individual fields are still
stored as individual arrays on disk.
The second new method is H5PartSetViewIndices, which allows for point
selections of datasets. You can pass a list of indices for the points you
want to select. This is useful, for instance, when interfacing with FastBit
to perform queries that select a small subset of non-contiguous particles.
Because views are now supported on write, it is possible to write a dataset
using multiple 'passes' or to leave some values unwritten.
Also, all views are now *inclusive*, so that a view of (0,9) corresponds
to the 10 items 0, 1, 2, ... 9.
Internal Handling of Dataspaces
-------------------------------
H5PartSetNumParticles and H5PartSetNumParticlesStrided now share the same
HDF5 dataspace state in the H5PartFile struct with the calls that modify
the view (H5PartSetView etc.). Previously, the memory and disk dataspaces
were regenerated from the view on every read access, which was unnecessary.
Autogeneration of API Calls
---------------------------
Python scripts have been added to automatically generate read/write call
variants for different data types.
Renamed Fortran Include
-----------------------
The automake system no longer greps the *F90.inc files to generate an include
called 'H5Part.inc'. Instead, the *F90.inc files have been renamed to *.f90,
and awk is used to generate an 'H5PartF.h' file (the same naming convention
as in MPI's 'mpif.h').
The change to *.f90 was necessary to facilitate integration of the Fortran
API into doxygen. Note that the *.f90 files will not compile, nor can they
be included directly. Simply use
include 'H5PartF.h'
in your Fortran code to include all the definitions for Fortran H5Part/H5Block
calls.
64 Char Limit on Dataset Names
------------------------------
Previously, a user could overrun internal buffers for dataset names. Now, a
fixed limit of 64 chars is imposed. Dataset names that are longer than this are
truncated and a warning is printed. We expect that most users are using
short canonical names like x, px, id, etc.
Changes to Existing API
-----------------------
The H5BlockGetFieldInfo and H5BlockGetFieldInfoByName calls now both include
a parameter for the 'type' of the field.
#### H5PART 1.4 ##############################################################
Error Handling
--------------
Now all functions, in which an error could occure, are returning a
value. This value is either a 64bit integer or a pointer.
A negative 64bit integer as result indicates an error. Values >= 0
indicates successfull execution. This is similiar to the convention
used in UNIX system calls, but we do not return -1 but the error
number (which is always negative).
For functions returning a pointer the NULL-pointer is used to indicate
an error. You can call the function H5PartGetErrno() to get the error
number. For the time being there is no strerror(3) or perror(3)
equivalent.
API Changes
-----------
There are several changes in the API of H5Part. The biggest change is
a side-effect of the implementation of strict error handling. The
impact to the existing C/C++ code is very small. But now you *can*
and *should* implement some kind of error handling. The simplest
error handling is to set an error handler which aborts the program as
soon as an error occured.
The next "biggest" change is the use of H5Part types instead of "long
long" and "double". The replacement of "long long" is "h5part_int64_t"
and for "double" "h5part_float64_t". This change has now effect in
Fortran.
In some functions the argument type changed from "int" to
"h5part_int64_t". Since on most systems "int" is a 32bit integer,
calls to these functions must be adapted to the new API. In C/C++ the
compiler will complain about it. But in Fortran you will *not* get an
error message.So, you must check your Fortran code carefully.
Changes in detail (not listed are functions where only the return
type changed from any to "h5part_int64_t"):
New API Changes to old API
h5part_int64_t void
H5PartSetNumParticles (
H5PartFile *f,
h5part_int64_t nparticles long long
);
h5part_int64_t int
H5PartWriteDataFloat64 (
H5PartFile *f,
char *name,
h5part_float64_t *dta double
);
h5part_int64_t int
H5PartWriteDataInt64 (
H5PartFile *f,
char *name,
h5part_int64_t *dta long long
);
h5part_int64_t void
H5PartSetStep (
H5PartFile *f,
h5part_int64_t step int
);
h5part_int64_t void
H5PartSetView (
H5PartFile *f,
h5part_int64_t start, long long
h5part_int64_t end long long
);
h5part_int64_t int
H5PartGetView (
H5PartFile *f,
h5part_int64_t *start, long long
h5part_int64_t *end long long
);
h5part_int64_t int
H5PartReadDataFloat64 (
H5PartFile *f,
char *name,
h5part_float64_t *dta double
);
h5part_int64_t int
H5PartReadDataInt64 (
H5PartFile *f,
char *name,
h5part_int64_t *dta long long
);
h5part_int64_t void
H5PartReadParticleStep (
H5PartFile *f,
h5part_int64_t step, int
h5part_float64_t *x, double
h5part_float64_t *y, double
h5part_float64_t *z, double
h5part_float64_t *px, double
h5part_float64_t *py, double
h5part_float64_t *pz, double
h5part_int64_t *id long long
);
New functions:
h5part_int64_t
H5PartSetVerbosityLevel (
unsigned int
);
h5part_int64_t
H5PartSetErrorHandler (
h5part_error_handler handler
);
h5part_int64_t
H5PartGetErrno (
void
);
h5part_int64_t
H5PartDefaultErrorHandler (
const char *funcname,
const h5part_int64_t eno,
const char *fmt,
...
);
h5part_int64_t
H5PartAbortErrorHandler (
const char *funcname,
const h5part_int64_t eno,
const char *fmt,
...
);
Removed functions:
int
H5PartFileIsValid (
H5PartFile *f
);
+28 -392
View File
@@ -1,393 +1,29 @@
==============================================================================
README file for H5Part configure
==============================================================================
+ 0. HDF5 library
-----------------
Make sure you have a working version of the HDF5 library in your computer. If you plan
to use parallel I/O you need to use a parallel HDF5 version. If you don't have the
library download the sources from http://hdf.ncsa.uiuc.edu/HDF5/
+ 1. Quick start (If you feel lucky...)
----------------------------------------
For many platforms, where compilers are installed in the "default" location
and all the environment variables are set correctly, it should be sufficient
to type:
./configure [OPTIONS] && make [install]
to have the libraries and test program compiled.
==============================================================================
+ 2. configure line options
----------------------------
(1) Enable options
--enable-fortran
--enable-parallel
--enable-tools
--enable-python
--enable-64 (only for AIX and Irix)
(2) Setting compilers related variables manually
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Compiler environment variables:
CC C compiler command
CXX C++ compiler command
FC Fortran compiler command
(3) Setting prefix for installation manually
--prefix=PREFIX install files in PREFIX
For more information, type:
./configure --help
==============================================================================
+ 3. Platform specific settings for compiling libraries & test programs
------------------------------------------------------------------------
Building
make : builds the libraries and test programs
make install: builds and installs
make clean : removes extraneous object files
make distclean : returns configuration to unconfigured state
As tested on hosts:
(1) Davinci <davinci.nersc.gov> (Linux"SUSE"-ia64)
---------------------------------------------------
FIRST THING FIRST!! Type:
module load intel
to have the proper compilers set up for use.
module load hdf5_par
[NOTE: module load hdf5 does not work at this moment.
Possible installation error of HDF5 on Davinci.]
Brief profile:
CC = icc
CXX = icc
FC = ifort
MPICC = icc
MPICXX = icc
MPIFC = ifort
If default doesn't work, try:
For C shell:
env CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure && make install
For Korn or Bourne shell:
CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure && make install
And, of course, you should add configure options, such as --enable-fortran --enable-parallel.
On this host, executing:
For C shell:
env CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure --enable-fortran --enable-parallel && make install
For Korn or Bourne shell:
CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure --enable-fortran --enable-parallel && make install
has functioned correctly.
To run test program, go to test directory:
(i) Serial test
run:
./H5testF
./H5PartTest
(ii) Parallel test
run:
mpirun 2 H5testFpar
mpirun 2 H5PartTestP
NOTE: Number 2 above is a arbitrary number that indicates the number of processes.
(2) Jacquard <jacquard.nersc.gov> (Linux"SUSE"-x86_64)
-------------------------------------------------------
Brief profile:
CC = pathcc
CXX = pathCC
FC = pathf90
MPICC = mpicc
MPICXX = mpicxx
MPIFC = mpif90
If default doesn't work, try:
For C shell:
env CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure && make install
For Korn or Bourne shell:
CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure && make install
And, of course, you should add configure options, such as --enable-fortran --enable-parallel.
On this host, executing:
For C shell:
env CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure --enable-fortran --enable-parallel && make install
For Korn or Bourne shell:
CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure --enable-fortran --enable-parallel && make install
has functioned correctly.
To run test program, go to test directory:
(i) Serial test
run:
./H5testF
./H5PartTest
(ii) Parallel test
In Jacquard, we need a script to run parallel programs, since Jacquard does not support interactive parallel processing. Instead, we need to submit the task to a queue. A sample script (run_H5testFpar.scr) may look like below:
+++++++++++++++++++++++++++++++++++++++
#!/bin/csh
#PBS -l nodes=1:ppn=2,walltime=00:05:00
#PBS -N H5testFpar
#PBS -o H5testFpar.out
#PBS -e H5testFpar.err
#PBS -q debug
#PBS -A mpccc
#PBS -V
setenv PBS_OWORKDIR /home/H5Part/test
cd $PBS_O_WORKDIR
mpirun -np 2 ./H5testFpar
+++++++++++++++++++++++++++++++++++++++
Then, we need to submit the task to a queue by running:
qsub run_H5testFpar.scr
After processed, the result will appear in H5testFpar.out, and error messages will appear in H5testFpar.err.
(3) Bassi <bassi.nersc.ogv> (AIX5.3.0.0-Power 3)
-------------------------------------------------
FIRST THING FIRST!! Type:
module load gcc
to have the proper compilers set up for use.
Brief profile:
CC = cc_r
CXX = cc_r
FC = xlf_r
MPICC = mpcc_r
MPICXX = mpcc_r
MPIFC = mpxlf_r
If default doesn't work, try:
For C shell:
env CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure && make install
For Korn or Bourne shell:
CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure && make install
And, of course, you should add configure options, such as --enable-fortran --enable-parallel.
On this host, executing:
For C shell:
env CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure --enable-fortran --enable-parallel && make install
For Korn or Bourne shell:
CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure --enable-fortran --enable-parallel && make install
has functioned correctly.
To run test program, go to test directory:
(i) Serial test
run:
./H5testF
./H5PartTest
(ii) Parallel test
run:
unsetenv MP_SINGLE_THREAD
poe ./H5PartTestP -procs 2 -nodes 1
poe ./H5testFpar -procs 2 -nodes 1
For more details on how to run parallel programs on Bassi, go to:
http://www.nersc.gov/nusers/resources/bassi/running_jobs/
(4) Starsky <starsky.lbl.gov> (Darwin8.5.0-PowerPC)
----------------------------------------------------
FIRST THING FIRST!! Set environment variables: (in tcsh)
setenv LD_LIBRARY_PATH /usr/local/g95/lib/gcc-lib/powerpc-apple-darwin8.5.0/4.0.3/
setenv PATH ${PATH}:/usr/local/g95/bin
NOTE: This environment variable setting is specifit to Starsky. It is to make configure find the fortran compiler.
Brief profile:
CC = gcc
CXX = g++
FC = g95
If default doesn't work, try:
For C shell:
env CC=gcc CXX=g++ FC=g95 ./configure && make install
For Korn or Bourne shell:
CC=gcc CXX=g++ FC=g95 ./configure && make install
And, of course, you should add configure options, such as --enable-fortran --enable-parallel.
On this host, executing:
For C shell:
env CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install
For Korn or Bourne shell:
CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install
has functioned correctly.
To run test program, go to test directory:
(i) Serial test
run:
./H5testF
./H5PartTest
(5) Linux AMD64 Visualization group workstations (Linux"SUSE"-x86_64)
---------------------------------------------------------
Brief profile:
CC = gcc
CXX = g++
FC = g95
If default doesn't work, try:
For C shell:
env CC=gcc CXX=g++ FC=g95 ./configure && make install
For Korn or Bourne shell:
CC=gcc CXX=g++ FC=g95 ./configure && make install
And, of course, you should add configure options, such as --enable-fortran --enable-parallel.
On this host, executing:
For C shell:
env CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install
For Korn or Bourne shell:
CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install
has functioned correctly.
To run test program, go to test directory:
(i) Serial test
run:
./H5testF
./H5PartTest
==============================================================================
+ 4. Trouble shooting (Things to check for...)
--------------------------------------------
(0) Have you set the LD_LIBRARY_PATH?
---Some systems require the user to manually set the environment variable, LD_LIBRARY_PATH. To do so:
set the environment variable HDF5ROOT or PHDF5ROOT to point to your installation of HDF5 (serial and/or parallel respectively).
For Korn or Bourne shell:
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HDF5ROOT}/lib;export LD_LIBRARY_PATH
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:{PHDF5ROOT}/lib;export LD_LIBRARY_PATH
For C shell:
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${HDF5ROOT}/lib
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${PHDF5ROOT}/lib
Note that the values of HDF5ROOT & PHDF5ROOT will be in the "summary" section when you run configure.
Not properly set LD_LIBRARY_PATH value may result in a runtime error:
./H5PartTest: error while loading shared libraries: libhdf5.so.0: cannot open shared object file: No such file or directory
(1) Are the compilers set correctly?
---Check with: which COMPILER
(2) Have you installed HDF5?
---You can get it at: http://vis.lbl.gov/Research/AcceleratorSAPP/index.html
(3) Have you loaded the proper modules?
---It is necessary in Davinci & Bassi, and configure && make install may not work without it.
Website:
http://vis.lbl.gov/Research/AcceleratorSAPP/
Particle based simulations of accelerator beam-lines, especially in six
dimensional phase space, generate vast amounts of data. Even though a subset of
statistical information regarding phase space or analysis needs to be preserved,
reading and writing such enormous restart files on massively parallel
supercomputing systems remains challenging.
H5Part is a very simple data storage schema and provides an API that simplifies
the reading/writing of the data to the HDF5 file format. An important
foundation for a stable visualization and data analysis environment is a stable
and portable file storage format and its associated APIs. The presence of a
"common file storage format," including associated APIs, will help foster a
fundamental level of interoperability across the project's software
infrastructure. It will also help ensure that key data analysis capabilities
are present during the earliest phases of the software development effort.
H5Part is built on top of the HDF5 (Hierarchical Data Format). HDF5 offers a
self-describing machine-independent binary file format that supports scalable
parallel I/O performance for MPI codes on a variety of supercomputing systems,
and works equally well on laptop computers. The API is available for C, C++, and
Fortran codes. The H5Part file format and APIs enable disparate research groups
with different simulation implementations to transparently share datasets and
data analysis tools. For instance, the common file format will enable groups
that depend on completely different simulation implementations to share data
analysis tools.
Vendored
-850
View File
@@ -1,850 +0,0 @@
# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
# AM_SET_CURRENT_AUTOMAKE_VERSION
# -------------------------------
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.9.5])])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
#
# Of course, Automake must honor this variable whenever it calls a
# tool from the auxiliary directory. The problem is that $srcdir (and
# therefore $ac_aux_dir as well) can be either absolute or relative,
# depending on how configure is run. This is pretty annoying, since
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
# source directory, any form will work fine, but in subdirectories a
# relative path needs to be adjusted first.
#
# $ac_aux_dir/missing
# fails when called from a subdirectory if $ac_aux_dir is relative
# $top_srcdir/$ac_aux_dir/missing
# fails if $ac_aux_dir is absolute,
# fails when called from a subdirectory in a VPATH build with
# a relative $ac_aux_dir
#
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
# are both prefixed by $srcdir. In an in-source build this is usually
# harmless because $srcdir is `.', but things will broke when you
# start a VPATH build or use an absolute $srcdir.
#
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
# and then we would define $MISSING as
# MISSING="\${SHELL} $am_aux_dir/missing"
# This will work as long as MISSING is not called from configure, because
# unfortunately $(top_srcdir) has no meaning in configure.
# However there are other variables, like CC, which are often used in
# configure, and could therefore not use this "fixed" $ac_aux_dir.
#
# Another solution, used here, is to always expand $ac_aux_dir to an
# absolute PATH. The drawback is that using absolute paths prevent a
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
[dnl Rely on autoconf to set up CDPATH properly.
AC_PREREQ([2.50])dnl
# expand $ac_aux_dir to an absolute path
am_aux_dir=`cd $ac_aux_dir && pwd`
])
# AM_CONDITIONAL -*- Autoconf -*-
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 7
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
# Define a conditional.
AC_DEFUN([AM_CONDITIONAL],
[AC_PREREQ(2.52)dnl
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
AC_SUBST([$1_TRUE])
AC_SUBST([$1_FALSE])
if $2; then
$1_TRUE=
$1_FALSE='#'
else
$1_TRUE='#'
$1_FALSE=
fi
AC_CONFIG_COMMANDS_PRE(
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
AC_MSG_ERROR([[conditional "$1" was never defined.
Usually this means the macro was only invoked conditionally.]])
fi])])
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 8
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
# will think it sees a *use*, and therefore will trigger all it's
# C support machinery. Also note that it means that autoscan, seeing
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
# NAME is "CC", "CXX", "GCJ", or "OBJC".
# We try a few techniques and use that to set a single cache variable.
#
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
# dependency, and given that the user is not expected to run this macro,
# just rely on AC_PROG_CC.
AC_DEFUN([_AM_DEPENDENCIES],
[AC_REQUIRE([AM_SET_DEPDIR])dnl
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
AC_REQUIRE([AM_DEP_TRACK])dnl
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
[$1], CXX, [depcc="$CXX" am_compiler_list=],
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
[depcc="$$1" am_compiler_list=])
AC_CACHE_CHECK([dependency style of $depcc],
[am_cv_$1_dependencies_compiler_type],
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
cp "$am_depcomp" conftest.dir
cd conftest.dir
# We will build objects and dependencies in a subdirectory because
# it helps to detect inapplicable dependency modes. For instance
# both Tru64's cc and ICC support -MD to output dependencies as a
# side effect of compilation, but ICC will put the dependencies in
# the current directory while Tru64 will put them in the object
# directory.
mkdir sub
am_cv_$1_dependencies_compiler_type=none
if test "$am_compiler_list" = ""; then
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
fi
for depmode in $am_compiler_list; do
# Setup a source with many dependencies, because some compilers
# like to wrap large dependency lists on column 80 (with \), and
# we should not choose a depcomp mode which is confused by this.
#
# We need to recreate these files for each test, as the compiler may
# overwrite some of them when testing with obscure command lines.
# This happens at least with the AIX C compiler.
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
# Solaris 8's {/usr,}/bin/sh.
touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
case $depmode in
nosideeffect)
# after this tag, mechanisms are not by side-effect, so they'll
# only be used when explicitly requested
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
none) break ;;
esac
# We check with `-c' and `-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
# handle `-M -o', and we need to detect this.
if depmode=$depmode \
source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
$SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
>/dev/null 2>conftest.err &&
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
# When given -MP, icc 7.0 and 7.1 complain thusly:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
if (grep 'ignoring option' conftest.err ||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_$1_dependencies_compiler_type=$depmode
break
fi
fi
done
cd ..
rm -rf conftest.dir
else
am_cv_$1_dependencies_compiler_type=none
fi
])
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
AM_CONDITIONAL([am__fastdep$1], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
])
# AM_SET_DEPDIR
# -------------
# Choose a directory name for dependency files.
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
AC_DEFUN([AM_SET_DEPDIR],
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
])
# AM_DEP_TRACK
# ------------
AC_DEFUN([AM_DEP_TRACK],
[AC_ARG_ENABLE(dependency-tracking,
[ --disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])
])
# Generate code to set up dependency tracking. -*- Autoconf -*-
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
#serial 3
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[for mf in $CONFIG_FILES; do
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
# We used to match only the files named `Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
# So let's grep whole file.
if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
dirpart=`AS_DIRNAME("$mf")`
else
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
# from the Makefile without running `make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`AS_DIRNAME(["$file"])`
AS_MKDIR_P([$dirpart/$fdir])
# echo "creating $dirpart/$file"
echo '# dummy' > "$dirpart/$file"
done
done
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
# AM_OUTPUT_DEPENDENCY_COMMANDS
# -----------------------------
# This macro should only be invoked once -- use via AC_REQUIRE.
#
# This code is only required when automatic dependency tracking
# is enabled. FIXME. This creates each `.P' file that we will
# need in order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
# Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 12
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
# -----------------------------------------------
# The call with PACKAGE and VERSION arguments is the old style
# call (pre autoconf-2.50), which is being phased out. PACKAGE
# and VERSION should now be passed to AC_INIT and removed from
# the call to AM_INIT_AUTOMAKE.
# We support both call styles for the transition. After
# the next Automake release, Autoconf can make the AC_INIT
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.58])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
# test to see if srcdir already configured
if test "`cd $srcdir && pwd`" != "`pwd`" &&
test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
# test whether we have cygpath
if test -z "$CYGPATH_W"; then
if (cygpath --version) >/dev/null 2>/dev/null; then
CYGPATH_W='cygpath -w'
else
CYGPATH_W=echo
fi
fi
AC_SUBST([CYGPATH_W])
# Define the identity of the package.
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
_AM_IF_OPTION([no-define],,
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
AM_MISSING_PROG(AUTOCONF, autoconf)
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
AM_MISSING_PROG(AUTOHEADER, autoheader)
AM_MISSING_PROG(MAKEINFO, makeinfo)
AM_PROG_INSTALL_SH
AM_PROG_INSTALL_STRIP
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
[_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
[_AM_DEPENDENCIES(CC)],
[define([AC_PROG_CC],
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
[_AM_DEPENDENCIES(CXX)],
[define([AC_PROG_CXX],
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
])
])
# When config.status generates a header, we must update the stamp-h file.
# This file resides in the same directory as the config header
# that is generated. The stamp files are numbered to have different names.
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
# loop where config.status creates the headers, so we can generate
# our stamp files there.
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
[# Compute $1's index in $config_headers.
_am_stamp_count=1
for _am_header in $config_headers :; do
case $_am_header in
$1 | $1:* )
break ;;
* )
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
esac
done
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
install_sh=${install_sh-"$am_aux_dir/install-sh"}
AC_SUBST(install_sh)])
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
[rm -rf .tst 2>/dev/null
mkdir .tst 2>/dev/null
if test -d .tst; then
am__leading_dot=.
else
am__leading_dot=_
fi
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 3
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
AC_DEFUN([AM_MAKE_INCLUDE],
[am_make=${MAKE-make}
cat > confinc << 'END'
am__doit:
@echo done
.PHONY: am__doit
END
# If we don't find an include directive, just comment out the code.
AC_MSG_CHECKING([for style of include used by $am_make])
am__include="#"
am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
# We grep out `Entering directory' and `Leaving directory'
# messages which can occur if `w' ends up in MAKEFLAGS.
# In particular we don't look at `^make:' because GNU make might
# be invoked under some other name (usually "gmake"), in which
# case it prints its new name instead of `make'.
if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
am__include=include
am__quote=
_am_result=GNU
fi
# Now try BSD make style include.
if test "$am__include" = "#"; then
echo '.include "confinc"' > confmf
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
am__include=.include
am__quote="\""
_am_result=BSD
fi
fi
AC_SUBST([am__include])
AC_SUBST([am__quote])
AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 4
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
[AC_REQUIRE([AM_MISSING_HAS_RUN])
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
# AM_MISSING_HAS_RUN
# ------------------
# Define MISSING if not defined so far and test if it supports --run.
# If it does, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
# Use eval to expand $SHELL
if eval "$MISSING --run true"; then
am_missing_run="$MISSING --run "
else
am_missing_run=
AC_MSG_WARN([`missing' script is too old or missing])
fi
])
# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_MKDIR_P
# ---------------
# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
#
# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
# created by `make install' are always world readable, even if the
# installer happens to have an overly restrictive umask (e.g. 077).
# This was a mistake. There are at least two reasons why we must not
# use `-m 0755':
# - it causes special bits like SGID to be ignored,
# - it may be too restrictive (some setups expect 775 directories).
#
# Do not use -m 0755 and let people choose whatever they expect by
# setting umask.
#
# We cannot accept any implementation of `mkdir' that recognizes `-p'.
# Some implementations (such as Solaris 8's) are not thread-safe: if a
# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
# concurrently, both version can detect that a/ is missing, but only
# one can create it and the other will error out. Consequently we
# restrict ourselves to GNU make (using the --version option ensures
# this.)
AC_DEFUN([AM_PROG_MKDIR_P],
[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
# We used to keeping the `.' as first argument, in order to
# allow $(mkdir_p) to be used without argument. As in
# $(mkdir_p) $(somedir)
# where $(somedir) is conditionally defined. However this is wrong
# for two reasons:
# 1. if the package is installed by a user who cannot write `.'
# make install will fail,
# 2. the above comment should most certainly read
# $(mkdir_p) $(DESTDIR)$(somedir)
# so it does not work when $(somedir) is undefined and
# $(DESTDIR) is not.
# To support the latter case, we have to write
# test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
# so the `.' trick is pointless.
mkdir_p='mkdir -p --'
else
# On NextStep and OpenStep, the `mkdir' command does not
# recognize any option. It will interpret all options as
# directories to create, and then abort because `.' already
# exists.
for d in ./-p ./--version;
do
test -d $d && rmdir $d
done
# $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
if test -f "$ac_aux_dir/mkinstalldirs"; then
mkdir_p='$(mkinstalldirs)'
else
mkdir_p='$(install_sh) -d'
fi
fi
AC_SUBST([mkdir_p])])
# Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 3
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
# ------------------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
# _AM_SET_OPTIONS(OPTIONS)
# ----------------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
# -------------------------------------------
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 4
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
# Just in case
sleep 1
echo timestamp > conftest.file
# Do `set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
if test "$[*]" = "X"; then
# -L didn't work.
set X `ls -t $srcdir/configure conftest.file`
fi
rm -f conftest.file
if test "$[*]" != "X $srcdir/configure conftest.file" \
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
test "$[2]" = conftest.file
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
AC_MSG_RESULT(yes)])
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor `install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
# is unlikely to handle the host's binaries.
# Fortunately install-sh will honor a STRIPPROG variable, so we
# always use install-sh in `make install-strip', and initialize
# STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
# Installed binaries are usually stripped using `strip' when the user
# run `make install-strip'. However `strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
# will honor the `STRIP' environment variable to overrule this program.
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
if test "$cross_compiling" != no; then
AC_CHECK_TOOL([STRIP], [strip], :)
fi
INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
# FORMAT should be one of `v7', `ustar', or `pax'.
#
# Substitute a variable $(am__tar) that is a command
# writing to stdout a FORMAT-tarball containing the directory
# $tardir.
# tardir=directory && $(am__tar) > result.tar
#
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility.
AM_MISSING_PROG([AMTAR], [tar])
m4_if([$1], [v7],
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
[m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
# Loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
# Do not fold the above two line into one, because Tru64 sh and
# Solaris sh will not grok spaces in the rhs of `-'.
for _am_tool in $_am_tools
do
case $_am_tool in
gnutar)
for _am_tar in tar gnutar gtar;
do
AM_RUN_LOG([$_am_tar --version]) && break
done
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
am__untar="$_am_tar -xf -"
;;
plaintar)
# Must skip GNU tar: if it does not support --format= it doesn't create
# ustar tarball either.
(tar --version) >/dev/null 2>&1 && continue
am__tar='tar chf - "$$tardir"'
am__tar_='tar chf - "$tardir"'
am__untar='tar xf -'
;;
pax)
am__tar='pax -L -x $1 -w "$$tardir"'
am__tar_='pax -L -x $1 -w "$tardir"'
am__untar='pax -r'
;;
cpio)
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
am__untar='cpio -i -H $1 -d'
;;
none)
am__tar=false
am__tar_=false
am__untar=false
;;
esac
# If the value was cached, stop now. We just wanted to have am__tar
# and am__untar set.
test -n "${am_cv_prog_tar_$1}" && break
# tar/untar a dummy directory, and stop if the command works
rm -rf conftest.dir
mkdir conftest.dir
echo GrepMe > conftest.dir/file
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
rm -rf conftest.dir
if test -s conftest.tar; then
AM_RUN_LOG([$am__untar <conftest.tar])
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
fi
done
rm -rf conftest.dir
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
+26 -24
View File
@@ -1,46 +1,48 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
ACLOCAL_FLAGS="-I m4 $ACLOCAL_FLAGS"
LIBTOOLIZE_FLAGS="--force $LIBTOOLIZE_FLAGS"
AUTOMAKE_FLAGS="--add-missing --copy --foreign $AUTOMAKE_FLAGS"
LIBTOOLIZE=`which libtoolize`
if [ "$LIBTOOLIZE" = "" ]; then
LIBTOOLIZE=`which glibtoolize`
fi
if [ "$LIBTOOLIZE" = "" ]; then
echo "libtoolize not found" 1>&2
exit 1
fi
echo "+ making misc files ..."
touch NEWS README AUTHORS ChangeLog
echo
echo
$LIBTOOLIZE $LIBTOOLIZE_FLAGS || {
echo "libtoolize failed"
exit 1
}
echo
echo "+ running aclocal ..."
aclocal $ACLOCAL_FLAGS || {
echo
echo "aclocal failed - check that all needed development files are present on system"
exit 1
echo "aclocal failed - check that all needed development files are present on system"
exit 1
}
echo
echo
echo
echo
echo "+ running autoheader ... "
autoheader || {
echo
echo "autoheader failed"
exit 1
echo "autoheader failed"
exit 1
}
echo
echo
echo
echo "+ running autoconf ... "
autoconf || {
echo
echo "autoconf failed"
exit 1
echo "autoconf failed"
exit 1
}
echo
echo
echo
echo "+ running automake ... "
automake -a -c --foreign || {
echo
echo "automake failed"
exit 1
automake $AUTOMAKE_FLAGS || {
echo "automake failed"
exit 1
}
echo
echo
echo
-1469
View File
File diff suppressed because it is too large Load Diff
-44
View File
@@ -1,44 +0,0 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* "" */
#undef MY_BUILD_CPU
/* "" */
#undef MY_BUILD_OS
/* "" */
#undef MY_BUILD_VENDOR
/* "" */
#undef MY_GNUNAME
/* "" */
#undef MY_UNAME
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Version number of package */
#undef VERSION
/* Define to 1 if on AIX 3.
System headers sometimes define this.
We just want to avoid a redefinition error message. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
Vendored
-1563
View File
File diff suppressed because it is too large Load Diff
Vendored
-6703
View File
File diff suppressed because it is too large Load Diff
+20
View File
@@ -0,0 +1,20 @@
#!/bin/sh
F90=gfortran
./configure \
$@ \
--enable-parallel \
--enable-fortran \
--enable-tools \
CC=cc CXX=CC FC=$F90 \
MPICC=cc MPICXX=CC MPIFC=ftn
sed -e 's/$F90/ftn/g' <Makefile > newMakefile
mv newMakefile Makefile
sed -e 's/$F90/ftn/g' <src/Makefile > newMakefile
mv newMakefile src/Makefile
sed -e 's/$F90/ftn/g' <test/Makefile > newMakefile
mv newMakefile test/Makefile
sed -e 's/$F90/ftn/g' <tools/Makefile > newMakefile
mv newMakefile tools/Makefile
+257 -470
View File
@@ -1,45 +1,62 @@
# Every configure script must call AC_INIT before doing anything else.
# AC_INIT (package, version, [bug-report], [tarname])
AC_INIT([H5Part], [Ver.1.0], [vis@hpcrdm.lbl.gov])
AC_INIT([H5Part], [1.6.5], [h5part@lists.psi.ch], H5Part)
# Ensure that a recent enough version of Autoconf is being used.
# If the version of Autoconf being used to create configure is earlier than version,
# print an error message to the standard error output and do not create configure.
AC_PREREQ(2.59)
# should be called right after AC_INIT.
# configure scripts can create a C header file containing `#define' directives.
# The AC_CONFIG_HEADERS macro selects this kind of output.
AC_CONFIG_HEADER(config.h)
AC_CONFIG_HEADERS(config.h)
AC_CONFIG_MACRO_DIR([m4])
##################################################################################
#################### A SIMPLE WORK AROUND TO USE ENV. VARS #######################
##################################################################################
# AM_INIT_AUTOMAKE is required to use autoconf with automake
AM_INIT_AUTOMAKE
BUILD_LIBS='libH5Part'
BUILD_TESTS='test'
SAVE_CC=$CC
SAVE_CXX=$CXX
SAVE_FC=$FC
SAVE_MPICC=$MPICC
SAVE_MPICXX=$MPICXX
SAVE_MPIFC=$MPIFC
SAVE_MPILIB=$MPILIB
SAVE_MPIINC=$MPIINC
SAVE_CFLAGS=$CFLAGS
SAVE_FFLAGS=$FFLAGS
SAVE_MPIROOT=$MPIROOT
SAVE_HDF5ROOT=$HDF5ROOT
SAVE_PHDF5ROOT=$PHDF5ROOT
SAVE_PYTHON_PATH=$PYTHON_PATH
SAVE_LDFLAGS=$LDFLAGS
###############################################################################
################# --enable-xxx and --with-xxx Argument ########################
###############################################################################
AC_ARG_ENABLE(
[debug],
[AC_HELP_STRING([--enable-debug],
[Compile with debug flags [default=no]])],
[USE_DEBUG=$enableval])
##################################################################################
################## PATH SERACH FUNCTION - to be used later... ####################
##################################################################################
AC_ARG_ENABLE(
[fortran],
[AC_HELP_STRING([--enable-fortran],
[Compile the Fortran interface [default=no]])],
[USE_FORTRAN=$enableval])
AC_ARG_ENABLE(
[parallel],
[AC_HELP_STRING([--enable-parallel],
[Compile the MPI/IO interface [default=no]])],
[USE_PARALLEL=$enableval])
AC_ARG_ENABLE(
[tools],
[AC_HELP_STRING([--enable-tools],
[Compile h5part tools [default=no]])],
[USE_TOOLS=$enableval])
AC_ARG_WITH(
[hdf5],
[AC_HELP_STRING([--with-hdf5],
[path to HDF5 installation [default=""]])],
[HDF5PATH=$withval], [HDF5PATH=""])
###############################################################################
############### PATH SERACH FUNCTION - to be used later... ####################
###############################################################################
# /*@@
# @routine CCTK_Search
# @date Wed Jul 21 11:16:35 1999
@@ -49,122 +66,64 @@ SAVE_LDFLAGS=$LDFLAGS
# @enddesc
#@@*/
PATH_Search()
{
eval $1=""
if test $# -lt 4 ; then
h5part_basedir=""
else
h5part_basedir="$4/"
fi
for h5part_place in $2
do
echo "Looking in $h5part_place ... $ac_c" #1>&6
if test -r "$h5part_basedir$h5part_place/$3" ; then
echo "$ac_t""... Found" #1>&6
eval $1="$h5part_place"
break
fi
if test -d "$h5part_basedir$h5part_place/$3" ; then
echo "$ac_t""... Found" #1>&6
eval $1="$h5part_place"
break
fi
echo "$ac_t"" No" #1>&6
done
return
PATH_Search() {
eval $1=""
if test $# -lt 4 ; then
h5part_basedir=""
else
h5part_basedir="$4/"
fi
for h5part_place in $2; do
AC_MSG_CHECKING([looking in $h5part_place ... ])
if test -r "$h5part_basedir$h5part_place/$3" ; then
AC_MSG_RESULT([found])
eval $1="$h5part_place"
break
fi
AC_MSG_RESULT([no])
done
return
}
##################################################################################
################ MISC SETTINGS INCLUDING C & C++ COMPILER SETTING ################
##################################################################################
# Compute the canonical host-system type variable, host, and its three individual
# parts host_cpu, host_vendor, and host_os.
###############################################################################
############# MISC SETTINGS INCLUDING C & C++ COMPILER SETTING ################
###############################################################################
# Compute the canonical host-system type variable, host, and its three
# individual parts host_cpu, host_vendor, and host_os.
AC_CANONICAL_HOST
AC_PROG_MAKE_SET
uname=`uname -s`
if test $uname = "AIX"; then
# Notify the user that configure is checking for a particular feature.
# This macro prints a message that starts with `checking ' and ends with `...' and no newline.
# It must be (?) followed by a call to AC_MSG_RESULT to print the result of the check and the newline.
AC_MSG_CHECKING([if system is AIX])
# AC_MSG_RESULT (result-description)
# Notify the user of the results of a check
AC_MSG_RESULT([OK])
# If on AIX, define _ALL_SOURCE. Allows the use of some BSD functions.
# Should be called before any macros that run the C compiler.
AC_AIX
fi
# DAVINCI SPECIFIC!!!
if test `uname -n` = "davinci"; then
echo "DAVINCI SPECIFIC TESTING FOR STDC++ LIBRARY!"
PATH_Search STDCXX_CHECK '/usr/lib64 /usr/lib' libstdc++.a
# if STDCXX_CHECK is set...
if test "$STDCXX_CHECK" = "/usr/lib64"; then
echo "STDCXX setting ..."
echo "STDCXX_CHECK = $STDCXX_CHECK ..."
STDCXX="-L/usr/lib64 -lstdc++"
echo "STDCXX = $STDCXX ..."
elif test "$STDCXX_CHECK" = "/usr/lib"; then
echo "STDCXX setting ..."
echo "STDCXX_CHECK = $STDCXX_CHECK ..."
STDCXX="-L/usr/lib -lstdc++"
echo "STDCXX = $STDCXX ..."
fi
fi
# Determine a C compiler to use.
# If CC is not already set in the environment, check for gcc and cc, then for other C compilers.
# Determine a C/C++ compiler to use.
# If CC is not already set in the environment, check for gcc and cc, then
# for other C compilers.
# Set output variable CC to the name of the compiler found.
# Look for mpicc first, then icc, mpcc_r
AC_PROG_CC(pathcc icc cc_r gcc cc)
if test "x$USE_PARALLEL" = "xyes"; then
CCOMPILERS="mpicc cc"
CXXCOMPILERS="mpic++ mpicxx CC"
else
CCOMPILERS="pgcc pathcc icc gcc cc_r cc"
CXXCOMPILERS="pgCC pathCC icpc g++"
fi
# AC_PROG_CC doesn't pick up cc_r in Bassi. The following AC_PATH_PROGS is the fix.
AC_PATH_PROGS([BAS_CC], [cc_r], [], [$PATH])
AC_PROG_CC($CCOMPILERS)
# if BAS_CC not empty
if test -n "$BAS_CC"; then
echo "CC setting for Bassi ..."
CC=$BAS_CC
echo "CC = $CC ..."
fi
# Only need C++ for some of the tools
#if test "x$USE_TOOLS" = "xyes"; then
AC_PROG_CXX($CXXCOMPILERS)
#fi
# Determine a C++ compiler to use.
# Check if the environment variable CXX or CCC (in that order) is set;
# if so, then set output variable CXX to its value.
# Otherwise, if the macro is invoked without an argument,
# then search for a C++ compiler under the likely names (first g++ and c++ then other names).
# If none of those checks succeed, then as a last resort set CXX to g++.
AC_PROG_CXX(pathCC icc cc_r g++ gcc cc)
# Set output variable INSTALL to the path of a BSD-compatible install program, if one is
# found in the current PATH.
# Set output variable INSTALL to the path of a BSD-compatible install program,
# if one is found in the current PATH.
# Otherwise, set INSTALL to `dir/install-sh -c`
AC_PROG_INSTALL
# AM_INIT_AUTOMAKE is required to use autoconf with automake
AM_INIT_AUTOMAKE()
AC_PROG_RANLIB
AC_PROG_AWK
# Default prefix for bindir, etc... (eg >> ./build/bin)
AC_PREFIX_DEFAULT(`pwd`/build)
# AC_DEFINE_UNQUOTED (variable, value, [description])
# Define the C preprocessor variable variable to value
# Use this macro instead of AC_DEFINE when variable or value is a shell variable.
@@ -175,399 +134,227 @@ AC_DEFINE_UNQUOTED(MY_GNUNAME, "${host_cpu}-${host_vendor}-${host_os}", "")
AC_DEFINE_UNQUOTED(MY_UNAME, "$uname", "")
###############################################################################
######################## CONFIGURE LINE OPTIONS ###############################
###############################################################################
##################################################################################
########################### CONFIGURE LINE OPTIONS ###############################
##################################################################################
AC_MSG_CHECKING([if debug is enabled])
######################### 64-bit compilation enabled #############################
AC_MSG_CHECKING([if 64-bit compilation is enabled])
# AC_ARG_ENABLE (feature, help-string, [action-if-given], [action-if-not-given])
# If the user gave configure the option `--enable-feature' or `--disable-feature',
# run shell commands action-if-given.
# You should format your help-string with the macro AC_HELP_STRING.
AC_ARG_ENABLE([64],
[AC_HELP_STRING([--enable-64],[Compile using 64-bit flags [default=no]])],
[USE_64=$enableval])
# If --enable-64 is set in the configure line
if test "X$USE_64" = "Xyes"; then
echo "YES, 64-BIT ENABLED"
if test $uname = "AIX"; then
CFLAGS="$CFLAGS -q64"
FFLAGS="$FFLAGS -q64"
fi
if test $uname = "IRIX64"; then
CFLAGS="$CFLAGS -64"
FFLAGS="$FFLAGS -64 -fPIC -fno-second-underscore"
fi
if test "X$USE_DEBUG" = "Xyes"; then
AC_MSG_RESULT([yes])
CFLAGS="$CFLAGS -g"
CXXFLAGS="$CXXFLAGS -g"
FFLAGS="$FFLAGS -g"
else
echo "NO, 64-BIT NOT ENABLED"
AC_MSG_RESULT([no])
fi
############################### fortran enabled ##################################
############################ fortran enabled ##################################
AC_MSG_CHECKING([if fortran interface enabled])
AC_MSG_RESULT([OK])
AC_ARG_ENABLE([fortran],
[AC_HELP_STRING([--enable-fortran], [Compile the Fortran interface [default=no]])],
[USE_FORTRAN=$enableval])
if test "X$USE_FORTRAN" = "Xyes"; then
echo "YES, FORTRAN ENABLED"
AC_MSG_RESULT([yes])
LIB_FORTRAN="libH5PartF.la"
BUILD_LIBS="$BUILD_LIBS libH5PartF"
BUILD_TESTS="$BUILD_TESTS testf"
# Start looking for ifort first
AC_PROG_FC(ifort xlf_r pathf90 g95 g90)
if test "X$USE_PARALLEL" = "Xyes"; then
AC_PROG_FC(mpif90 mpif77 ftn)
else
AC_PROG_FC(pgf90 pathf90 ifort ftn xlf_r g95 g90 gfortran)
fi
if test -z "$FC" ; then
AC_MSG_ERROR([Cannot find a Fortran compiler!])
exit 1
fi
if test -n $FC ; then
AC_MSG_CHECKING([Test Number of FC Underscores])
AC_MSG_RESULT([OK])
`cd src && rm -f TestUnderscore.o TestUnderscoreC.o TestUnderscore`
`cd src && ${FC} ${FFLAGS} -c TestUnderscore.f`
`cd src && ${CC} ${CFLAGS} -c TestUnderscoreC.c`
`cd src && ${FC} ${FFLAGS} -o TestUnderscore TestUnderscore.o TestUnderscoreC.o -lc`
if test $FC = "g90"; then
FFLAGS="${FFLAGS} -fno-second-underscore"
fi
if test $FC = "g95"; then
FFLAGS="${FFLAGS} -fno-second-underscore"
fi
AC_MSG_CHECKING([symbol convention in object files])
`cd src && rm -f TestUnderscore.o TestUnderscoreC.o TestUnderscore`
`cd src && ${FC} ${FFLAGS} -c TestUnderscore.f`
`cd src && ${CC} ${CFLAGS} -c TestUnderscoreC.c`
`cd src && ${FC} ${FFLAGS} -o TestUnderscore TestUnderscore.o TestUnderscoreC.o`
if test -f src/TestUnderscore ; then
UNDERSCORE_H=Underscore.h
`cd src && ./TestUnderscore > Underscore.h`
AC_MSG_RESULT([ok])
else
AC_MSG_RESULT([nok])
AC_MSG_ERROR([Cannot determine the symbon convention for Fortran object files!])
exit 1
fi
if test -f src/TestUnderscore ; then
UNDERSCORE_H=Underscore.h
`cd src && cat COPYRIGHT > Underscore.h`
`cd src && ./TestUnderscore >> Underscore.h`
echo "==== Underscore.h contains ============="
cat src/Underscore.h
echo "========================================"
else
AC_MSG_ERROR(could not build fortran executable)
USE_FORTRAN = "no"
fi
else
AC_MSG_ERROR(could not find a fortran compiler)
USE_FORTRAN = "no"
fi
else
echo "NO, FORTRAN NOT ENABLED"
AC_MSG_RESULT([no])
fi
########################### parallel interface enabled ###########################
# Disable shared libraries by default: can be enabled with --enable-shared
LT_INIT([disable-shared])
AC_PROG_LIBTOOL
######################## parallel interface enabled ###########################
AC_MSG_CHECKING([if parallel interface enabled])
AC_ARG_ENABLE([parallel],
[AC_HELP_STRING([--enable-parallel], [Compile the MPI/IO interface [default=no]])],
[USE_PARALLEL=$enableval])
# if parallel
if test "X$USE_PARALLEL" = "Xyes"; then
echo "YES, PARALLEL ENABLED"
AC_MSG_CHECKING([ for location of MPI libs------------])
AC_MSG_RESULT([OK])
PATH_Search MPIROOT '/usr /usr/local /usr/local/mpi /usr/local/packages/mpi' include/mpi.h
AC_MSG_RESULT([yes])
# AC_PATH_PROGS (variable, progs-to-check-for, [value-if-not-found], [path])
# Like AC_CHECK_PROGS, but if any of progs-to-check-for are found, set variable to the
# entire path of the program found.
AC_PATH_PROGS([MPICC], [mpicc mpcc_r], [], [$PATH])
AC_PATH_PROGS([MPICXX], [mpicxx mpcc_r], [], [$PATH])
CFLAGS="${CFLAGS} -DPARALLEL_IO -DMPICH_IGNORE_CXX_SEEK"
CXXFLAGS="${CXXFLAGS} -DPARALLEL_IO -DMPICH_IGNORE_CXX_SEEK"
FFLAGS="${FFLAGS} -DPARALLEL_IO"
# if MPICC empty
if test ! -n "$MPICC"; then
AC_MSG_CHECKING([ No MPICC detected. Setting MPICC to CC ------------])
MPICC=$CC
echo "MPICC = $MPICC ..."
else
MPIINC = "-I${MPIROOT}/include"
MPILIB = "-L${MPIROOT}/lib -lmpi"
fi
AC_MSG_CHECKING([if we can compile MPI code without setting flags])
AC_TRY_LINK([#include "mpi.h"], [
MPI_Comm comm;
int n;
MPI_Comm_size( comm, &n ); ],
[AC_MSG_RESULT([yes]); r='yes'], [AC_MSG_RESULT([no]); r='no'] )
# if MPICXX empty
if test ! -n "$MPICXX"; then
AC_MSG_CHECKING([ No MPICXX detected. Setting MPICXX to CXX ------------])
MPICXX=$CXX
echo "MPICXX = $MPICXX ..."
fi
if test "X$r" = "Xno"; then
AC_MSG_ERROR([MPI wrapper can't compile or link MPI program! Please set the INCLUDE and LIBS variables manually.])
exit 1
fi
# parallel + fortran
if test "X$USE_FORTRAN" = "Xyes"; then
echo "PARALLEL ENABLED WITH FORTRAN"
AC_PATH_PROGS([MPIFC], [mpxlf_r mpif90], [], [$PATH])
# if MPIFC empty
if test ! -n "$MPIFC"; then
AC_MSG_CHECKING([ No MPIFC detected. Setting MPIFC to FC ------------])
MPIFC=$FC
echo "MPIFC = $MPIFC ..."
fi
MTARGET="libpH5Part.a libpH5PartF.a"
TTARGET="H5PartTestP H5PartAndreasTest H5testFpar Bench"
else
echo "PARALLEL ENABLED WITHOUT FORTRAN"
MTARGET="libpH5Part.a"
TTARGET="H5PartTestP H5PartAndreasTest Bench"
fi
#if not parallel
else
echo "NO, PARALLEL NOT ENABLED"
if test "X$USE_FORTRAN" = "Xyes"; then
echo "PARALLEL NOT ENABLED WITH FORTRAN ENABLED"
MTARGET="libH5Part.a libH5PartF.a"
TTARGET="H5PartTest H5testF H5test"
else
echo "BOTH PARALLEL & FORTRAN NOT ENABLED"
MTARGET="libH5Part.a"
TTARGET="H5PartTest H5test"
fi
else # --enable-parallel=no
AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([ for h5pTools file ---------------])
AC_MSG_RESULT([OK])
AC_ARG_ENABLE([tools],
[AC_HELP_STRING([--enable-tools], [Compile h5part tools [default=no]])],
[USE_TOOLS=$enableval])
######################## tools enabled ###########################
AC_MSG_CHECKING([whether tools are enabled])
if test "X$USE_TOOLS" = "Xyes"; then
BUILD_TOOLS="h5pAttrib h5pToGNUplot"
fi
##################################################################################
############################ PATH CHECKING & SETTING #############################
##################################################################################
AC_MSG_CHECKING([ for HDF5 library location------------])
AC_MSG_RESULT([OK])
if test "X$USE_64" = "Xyes"; then
############## FIRST ARG TEMPORARILY SET FOR BASSI!!! ##################
PATH_Search HDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_serial /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5_64/1.6.4/serial /usr/common/usg/hdf5_64/1.6.1/serial /usr/local/hdf5/hdf5_serial' include/hdf5.h
AC_MSG_RESULT([yes])
BUILD_TOOLS="h5pAttrib h5pToGNUplot homdynToH5p"
# tools + parallel
if test "X$USE_PARALLEL" = "Xyes"; then
BUILD_TOOLS="${BUILD_TOOLS} H5PartBench H5BlockBench"
fi
else
PATH_Search HDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_serial /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5/1.6.4/serial /usr/common/usg/hdf5/1.6.1/serial /usr/local/hdf5/hdf5_serial' include/hdf5.h
AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([ for Parallel HDF5 root---------------])
AC_MSG_RESULT([OK])
if test "X$USE_64" = "Xyes"; then
PATH_Search PHDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_par /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5_64/1.6.4/parallel /usr/common/usg/hdf5_64/1.6.1/parallel /usr/local/hdf5/hdf5_par' include/hdf5.h
###############################################################################
######################### PATH CHECKING & SETTING #############################
###############################################################################
AC_MSG_CHECKING([for HDF5 root ])
AC_MSG_RESULT([])
if test -n "${HDF5PATH}" ; then
P=${HDF5PATH}
elif test -n "${HDF5ROOT}"; then
P=${HDF5ROOT}
elif test -n "${HDF5HOME}" ; then
P=${HDF5HOME}
elif test -n "${HDF5_DIR}" ; then
P=${HDF5_DIR}
else
PATH_Search PHDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_par /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5/1.6.4/parallel /usr/common/usg/hdf5/1.6.1/parallel /usr/local/hdf5/hdf5_par' include/hdf5.h
P=''
P="$P /usr"
P="$P /usr/local"
P="$P /usr/local/hdf5"
P="$P /usr/local/packages/hdf5"
P="$P /apps/hdf5"
P="$P /opt/hdf5"
fi
PATH_Search HDF5ROOT "$P" include/hdf5.h
if test -z "$HDF5ROOT"; then
AC_MSG_ERROR([Cannot find an HDF5 library!])
exit 1
fi
AC_MSG_CHECKING([if we need to link to libsz])
AC_MSG_RESULT([OK])
INCLUDES="$INCLUDES -I$HDF5ROOT/include"
LDFLAGS="$LDFLAGS -L$HDF5ROOT/lib"
LIBS="$LIBS -lhdf5"
if test -n HDF5ROOT; then
if test -f $HDF5ROOT/lib/libsz.a; then
echo "yes"
SZLIB="-L$HDF5ROOT/lib/ -lsz"
else
echo "no"
SZLIB=""
fi
else
if test -f $PHDF5ROOT/lib/libsz.a; then
echo "yes"
SZLIB="-L$PHDF5ROOT/lib/ -lsz"
else
echo "no"
SZLIB=""
fi
AC_MSG_CHECKING([if we need to link to libsz ])
if test -n "$HDF5ROOT"; then
if test -f $HDF5ROOT/lib/libsz.a; then
AC_MSG_RESULT([yes])
LDFLAGS="$LDFLAGS -L$HDF5ROOT/lib"
LIBS="$LIBS -lsz"
else
AC_MSG_RESULT([no])
fi
fi
####################### FOR PYTHON WRAPPER ###########################
AC_MSG_CHECKING([ for Python header file ---------------])
AC_MSG_RESULT([OK])
AC_ARG_ENABLE([python],
[AC_HELP_STRING([--enable-python], [Compile Python wrapper [default=no]])],
[USE_PYTHON=$enableval])
LIBS="$LIBS -lz -lm"
if test "X$USE_PYTHON" = "Xyes"; then
# Checks for header files.
AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h])
#ADD PATH TO MATCH YOUR SPECIFICATION!!
PATH_Search PYTHON_PATH '/usr/local/include/python2.0 /d/visguests/kheehyon/PYTHON/include/python2.4 /usr/include/python2.3' Python.h
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_TYPE_INT64_T
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
#if PYTHON_PATH found...
if test -n "$PYTHON_PATH"; then
PY_WRAPPER="_H5Part.so"
fi
fi
# Checks for library functions.
AC_FUNC_MALLOC
AC_CHECK_FUNCS([memset pow strchr strdup])
##################################################################################
####################### MISC SETTINGS - path, flags, etc #########################
##################################################################################
# if not AIX
if test ! $uname = "AIX"; then
# Additional flags
echo "SETTING ADDITIONAL FLAGS"
ADDFLAGS="-fPIC -fno-second-underscore"
fi
H5P_LIB_LOC=`pwd`/src
##################################################################################
#################### A SIMPLE WORK AROUND TO USE ENV. VARS #######################
##################################################################################
#if there was an external input for the variable...
if test -n "$SAVE_CC"; then
CC=$SAVE_CC
fi
if test -n "$SAVE_CXX"; then
CXX=$SAVE_CXX
fi
if test -n "$SAVE_FC"; then
FC=$SAVE_FC
fi
if test -n "$SAVE_MPICC"; then
MPICC=$SAVE_MPICC
fi
if test -n "$SAVE_MPICXX"; then
MPICXX=$SAVE_MPICXX
fi
if test -n "$SAVE_MPIFC"; then
MPIFC=$SAVE_MPIFC
fi
if test -n "$SAVE_MPILIB"; then
MPILIB=$SAVE_MPILIB
fi
if test -n "$SAVE_MPIINC"; then
MPIINC=$SAVE_MPIINC
fi
if test -n "$SAVE_CFLAGS"; then
CFLAGS=$SAVE_CFLAGS
fi
if test -n "$SAVE_FFLAGS"; then
FFLAGS=$SAVE_FFLAGS
fi
if test -n "$SAVE_MPIROOT"; then
MPIROOT=$SAVE_MPIROOT
fi
if test -n "$SAVE_HDF5ROOT"; then
HDF5ROOT=$SAVE_HDF5ROOT
fi
if test -n "$SAVE_PHDF5ROOT"; then
PHDF5ROOT=$SAVE_PHDF5ROOT
fi
if test -n "$SAVE_PYTHON_PATH"; then
PYTHON_PATH=$SAVE_PYTHON_PATH
fi
if test -n "$SAVE_LDFLAGS"; then
LDFLAGS=$SAVE_LDFLAGS
fi
if test -n "$MPICXX"; then
TOOLS_CXX=$MPICXX
TOOLS_H5PART_LIB="-lpH5Part"
TOOLS_HDFLIB="-L$PHDF5ROOT/lib -lhdf5"
else
TOOLS_CXX=$CXX
TOOLS_H5PART_LIB="-lH5Part"
TOOLS_HDFLIB="-L$HDF5ROOT/lib -lhdf5"
fi
##################################################################################
############################# PRINTING SUMMARY ###################################
##################################################################################
echo "+++++++++++++++++++++++++++++++"
echo "+++++++++ SUMMARY for `(hostname || uname -n) 2>/dev/null | sed 1q` +++++++++"
echo "CC = $CC"
echo "CXX = $CXX"
echo "FC = $FC"
echo "MPICC = $MPICC"
echo "MPICXX = $MPICXX"
echo "MPIFC = $MPIFC"
echo "CFLAGS = $CFLAGS"
echo "FFLAGS = $FFLAGS"
echo "MPILIB = $MPILIB"
echo "MPIINC = $MPIINC"
echo "MPIROOT = $MPIROOT"
echo "HDF5ROOT = $HDF5ROOT"
echo "PHDF5ROOT = $PHDF5ROOT"
echo "PYTHON_PATH = $PYTHON_PATH"
echo "LDFLAGS = $LDFLAGS"
echo "host_os = $host_os"
echo "host_cpu = $host_cpu"
echo "host_vendor = $host_vendor"
echo "Will Be Building Libraries ... : $MTARGET"
echo "Will Be Building Test Programs ... : $TTARGET"
echo "TOOLS_CXX = $TOOLS_CXX"
echo "TOOLS_H5PART_LIB = $TOOLS_H5PART_LIB"
echo "TOOLS_HDFLIB = $TOOLS_HDFLIB"
echo "PY_WRAPPER = $PY_WRAPPER"
echo "BUILD_TOOLS = $BUILD_TOOLS"
echo "+++++++++++++++++++++++++++++++"
##################################################################################
################# EXPORTING VARIABLES & CREATING OUTPUT FILES ####################
##################################################################################
###############################################################################
############## EXPORTING VARIABLES & CREATING OUTPUT FILES ####################
###############################################################################
# AC_SUBST (variable, [value])
# Create an output variable from a shell variable.
# Make AC_OUTPUT substitute the variable variable into output files (typically one or more `Makefile's).
# This means that AC_OUTPUT will replace instances of `@variable@' in input files with the value that
# the shell variable variable has when AC_OUTPUT is called.
# This value of variable should not contain literal newlines.
# If value is given, in addition assign it to variable.
AC_SUBST(MPIROOT)
AC_SUBST(HDF5ROOT)
AC_SUBST(PHDF5ROOT)
AC_SUBST(MPIINC)
AC_SUBST(MPILIB)
AC_SUBST(MPICC)
AC_SUBST(MPICXX)
AC_SUBST(MPIFC)
AC_SUBST(MTARGET)
AC_SUBST(TTARGET)
AC_SUBST(SZLIB)
# Create an output variable from a shell variable. Make AC_OUTPUT substitute
# the variable variable into output files (typically one or more `Makefile's).
# This means that AC_OUTPUT will replace instances of `@variable@' in input
# files with the value that the shell variable variable has when AC_OUTPUT is
# called. This value of variable should not contain literal newlines. If
# value is given, in addition assign it to variable.
AC_SUBST(CFLAGS)
AC_SUBST(CXXFLAGS)
AC_SUBST(FFLAGS)
AC_SUBST(ADDFLAGS)
AC_SUBST(STDCXX)
AC_SUBST(H5P_LIB_LOC)
AC_SUBST(UNDERSCORE_H)
AC_SUBST(BUILD_TOOLS)
AC_SUBST(PYTHON_PATH)
AC_SUBST(PY_WRAPPER)
AC_SUBST(INCLUDES)
AC_SUBST(LDFLAGS)
AC_SUBST(TOOLS_CXX)
AC_SUBST(TOOLS_H5PART_LIB)
AC_SUBST(TOOLS_HDFLIB)
AC_SUBST(LIBS)
AC_SUBST(UNDERSCORE_H)
AC_SUBST(LIB_FORTRAN)
AC_SUBST(BUILD_TESTS)
AC_SUBST(BUILD_TOOLS)
# Make AC_OUTPUT create each `file' by copying an input file (by default `file.in'),
# substituting the output variable values.
AC_CONFIG_FILES([
Makefile
src/Makefile
test/Makefile
tools/Makefile
Makefile
src/Makefile
doc/Makefile
test/Makefile
tools/Makefile
])
AC_OUTPUT
###############################################################################
########################## PRINTING SUMMARY ###################################
###############################################################################
AC_MSG_RESULT([ ])
AC_MSG_RESULT([Summary:])
AC_MSG_RESULT([ ])
AC_MSG_RESULT([Host OS: $host_os])
AC_MSG_RESULT([Host CPU: $host_cpu])
AC_MSG_RESULT([Host vendor: $host_vendor])
AC_MSG_RESULT([Build libraries: $BUILD_LIBS])
AC_MSG_RESULT([Build test programs: $BUILD_TESTS])
AC_MSG_RESULT([Build tools: $BUILD_TOOLS])
AC_MSG_RESULT([CC = $CC])
AC_MSG_RESULT([CXX = $CXX])
AC_MSG_RESULT([FC = $FC])
AC_MSG_RESULT([CFLAGS = $CFLAGS])
AC_MSG_RESULT([CXXFLAGS = $CXXFLAGS])
AC_MSG_RESULT([FFLAGS = $FFLAGS])
AC_MSG_RESULT([INCLUDES = $INCLUDES])
AC_MSG_RESULT([LDFLAGS = $LDFLAGS])
AC_MSG_RESULT([LIBS = $LIBS])
AC_MSG_RESULT([HDF5ROOT = $HDF5ROOT])
AC_MSG_RESULT([ ])
Binary file not shown.
Binary file not shown.
Binary file not shown.
-294
View File
@@ -1,294 +0,0 @@
#FIG 3.2
Landscape
Center
Inches
Letter
100.00
Single
-2
1200 2
0 32 #c6b797
0 33 #eff8ff
0 34 #dccba6
0 35 #404040
0 36 #808080
0 37 #c0c0c0
0 38 #e0e0e0
0 39 #8e8f8e
0 40 #aaaaaa
0 41 #555555
0 42 #bebebe
0 43 #515151
0 44 #e7e3e7
0 45 #000049
0 46 #797979
0 47 #303430
0 48 #414141
0 49 #c7b696
0 50 #8e8e8e
0 51 #414541
0 52 #8e8e8e
0 53 #000079
0 54 #ff8200
0 55 #007d00
0 56 #0000be
# Desktop computer
6 375 2400 2025 4050
6 1575 3825 2025 4050
2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 8
1615 3916 1719 3874 1908 3874 1950 3853 1972 3853 1846 3937
1615 3937 1615 3916
2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 6
1888 3853 1846 3874 1908 3874 1950 3853 1908 3853 1888 3853
2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 5
1846 3874 1888 3853 1846 3853 1803 3874 1846 3874
2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 5
1803 3874 1740 3874 1803 3853 1824 3853 1803 3874
2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 6
1846 3958 1866 3916 1972 3853 1992 3895 1846 3979 1846 3958
2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 5
1615 3937 1866 3937 1846 3958 1615 3958 1615 3937
2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 9
1615 3958 1594 4000 1719 4000 1846 4000 1866 4000 1992 3916
1992 3895 1846 3958 1615 3958
-6
6 600 2400 1950 3675
2 3 0 1 -1 7 2 0 15 0.000 0 0 -1 0 0 6
669 2530 648 3307 1594 3307 1615 2468 1594 2468 669 2530
2 3 0 1 -1 7 0 0 10 0.000 0 0 -1 0 0 5
1615 2468 1594 3307 1719 3307 1719 2509 1615 2468
2 3 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
1762 2677 1908 2719 1908 3139 1762 3203 1762 2677
2 3 0 1 -1 7 2 0 15 0.000 0 0 -1 0 0 6
732 3349 732 3412 1594 3454 1594 3371 753 3349 732 3349
2 3 0 1 -1 7 1 0 15 0.000 0 0 -1 0 0 5
1594 3371 1846 3280 1846 3348 1594 3454 1594 3371
2 3 0 1 -1 7 2 0 15 0.000 0 0 -1 0 0 5
732 3433 732 3559 1594 3601 1594 3454 732 3433
2 3 0 1 -1 0 2 0 20 0.000 0 0 -1 0 0 5
1594 3454 732 3412 753 3433 1572 3454 1594 3454
2 3 0 1 -1 7 2 0 8 0.000 0 0 -1 0 0 5
1594 3454 1594 3601 1635 3580 1635 3433 1594 3454
2 3 0 1 -1 7 2 0 8 0.000 0 0 -1 0 0 5
1719 3538 1846 3475 1846 3349 1719 3391 1719 3538
2 3 0 1 -1 7 2 0 10 0.000 0 0 -1 0 0 5
1635 3496 1719 3454 1719 3391 1635 3433 1635 3496
2 3 0 1 -1 7 2 0 10 0.000 0 0 -1 0 0 5
1635 3580 1719 3538 1719 3475 1635 3517 1635 3580
2 1 0 2 -1 7 2 0 8 0.000 0 0 -1 0 0 2
1635 3496 1719 3454
2 1 0 2 -1 7 2 0 8 0.000 0 0 -1 0 0 2
1635 3517 1719 3475
2 3 0 1 -1 7 3 0 10 0.000 0 0 -1 0 0 7
732 3559 732 3601 816 3601 963 3559 963 3538 816 3559
732 3559
2 3 0 1 -1 7 3 0 10 0.000 1 0 -1 0 0 5
1490 3596 1490 3641 1594 3643 1594 3601 1490 3596
2 3 0 1 -1 7 3 0 10 0.000 1 0 -1 0 0 5
1594 3643 1635 3601 1635 3580 1594 3601 1594 3643
2 3 0 1 -1 7 3 0 10 0.000 0 0 -1 0 0 5
1846 3475 1846 3496 1803 3517 1803 3496 1846 3475
2 3 0 1 -1 7 3 0 10 0.000 0 0 -1 0 0 4
1803 3517 1740 3517 1803 3496 1803 3517
2 3 0 1 -1 7 4 0 15 0.000 1 0 -1 0 0 6
879 3307 732 3349 1594 3371 1846 3279 1762 3265 879 3307
2 3 0 1 -1 7 0 0 10 0.000 1 0 -1 0 0 5
1719 2509 1719 3307 1762 3265 1762 2552 1719 2509
3 1 0 1 -1 7 1 0 20 0.000 0 0 0 11
774 2656 816 2614 1488 2572 1510 2593 1530 2636 1530 3139
1510 3181 1467 3203 837 3203 795 3181 774 3160
1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
1.000 1.000 1.000
-6
6 375 3675 1650 4050
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 8
1207 3935 1205 3897 1229 3888 1265 3890 1264 3922 1244 3937
1212 3937 1207 3935
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 8
1264 3939 1261 3900 1285 3892 1320 3893 1319 3925 1300 3940
1268 3940 1264 3939
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 8
1318 3950 1315 3912 1339 3904 1374 3905 1374 3937 1355 3953
1322 3953 1318 3950
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 8
1151 3935 1150 3897 1173 3888 1209 3890 1207 3922 1188 3937
1157 3937 1151 3935
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
1169 3900 1166 3861 1190 3853 1226 3854 1224 3886 1205 3901
1173 3901 1169 3900
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
1225 3904 1223 3865 1247 3857 1282 3858 1281 3891 1262 3906
1230 3906 1225 3904
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
1281 3908 1279 3869 1303 3860 1338 3862 1337 3893 1318 3909
1286 3909 1281 3908
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
1344 3909 1342 3870 1366 3862 1401 3863 1399 3895 1381 3911
1349 3911 1344 3909
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
1214 3854 1214 3835 1233 3822 1272 3825 1272 3831 1260 3839
1258 3856 1211 3854 1214 3854
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
1258 3855 1258 3836 1277 3823 1315 3826 1315 3831 1304 3839
1302 3857 1255 3855 1258 3855
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
1300 3862 1300 3843 1319 3830 1359 3833 1359 3838 1346 3846
1344 3863 1297 3862 1300 3862
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
1344 3863 1344 3845 1363 3831 1402 3835 1402 3839 1390 3848
1389 3865 1341 3863 1344 3863
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
1387 3869 1387 3850 1406 3836 1444 3839 1444 3845 1436 3871
1417 3882 1383 3869 1387 3869
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
708 3798 708 3779 727 3766 766 3769 766 3774 755 3783
752 3800 705 3798 708 3798
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
747 3803 747 3784 766 3771 805 3775 805 3780 793 3788
791 3805 744 3803 747 3803
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
794 3805 794 3787 813 3773 852 3777 852 3781 840 3790
839 3807 791 3805 794 3805
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
832 3810 832 3792 850 3778 889 3781 889 3787 878 3795
876 3812 828 3810 832 3810
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
876 3812 876 3793 894 3780 934 3784 934 3788 921 3797
919 3814 872 3812 876 3812
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
919 3816 919 3797 938 3784 977 3787 977 3792 965 3800
964 3817 916 3816 919 3816
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
962 3816 962 3797 981 3784 1019 3787 1019 3792 1008 3800
1006 3817 959 3816 962 3816
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
1001 3819 1001 3800 1019 3787 1058 3790 1058 3795 1047 3803
1045 3820 997 3819 1001 3819
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
1049 3819 1049 3800 1067 3787 1106 3790 1106 3795 1094 3803
1092 3820 1045 3819 1049 3819
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
661 3822 661 3803 679 3790 718 3793 718 3799 706 3807
704 3824 658 3822 661 3822
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
704 3831 704 3812 724 3799 762 3802 762 3807 750 3816
748 3832 702 3831 704 3831
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
748 3834 748 3816 768 3802 806 3805 806 3810 794 3819
793 3835 746 3834 748 3834
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
789 3838 789 3819 808 3805 847 3808 847 3814 835 3822
833 3839 786 3838 789 3838
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
832 3840 832 3822 850 3808 889 3812 889 3817 878 3825
876 3842 828 3840 832 3840
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
874 3842 874 3824 893 3810 932 3814 932 3819 919 3827
918 3844 871 3842 874 3842
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
916 3846 916 3827 934 3814 974 3817 974 3822 962 3831
960 3847 913 3846 916 3846
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
961 3846 961 3828 980 3814 1018 3817 1018 3823 1007 3831
1005 3847 957 3846 961 3846
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
1005 3849 1005 3831 1023 3817 1062 3821 1062 3826 1050 3834
1049 3851 1002 3849 1005 3849
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
1049 3851 1049 3832 1067 3819 1107 3823 1107 3828 1095 3836
1093 3853 1045 3851 1049 3851
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
656 3866 655 3827 678 3819 714 3820 713 3853 693 3868
662 3868 656 3866
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
700 3869 698 3831 722 3822 757 3824 755 3856 737 3871
704 3871 700 3869
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
744 3876 741 3838 766 3829 801 3831 799 3862 781 3878
748 3878 744 3876
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
792 3882 790 3842 814 3834 849 3835 848 3868 829 3883
797 3883 792 3882
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
832 3884 830 3846 854 3837 889 3839 887 3870 869 3886
836 3886 832 3884
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
880 3890 879 3851 902 3842 938 3844 936 3876 918 3892
886 3892 880 3890
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
932 3893 930 3854 954 3846 989 3847 988 3879 969 3895
936 3895 932 3893
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
982 3895 981 3856 1004 3847 1040 3849 1038 3882 1019 3897
988 3897 982 3895
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
1025 3898 1023 3860 1047 3851 1082 3853 1080 3885 1062 3900
1029 3900 1025 3898
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
618 3861 616 3822 640 3814 675 3816 674 3847 655 3862
623 3862 618 3861
2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8
572 3888 571 3849 594 3840 630 3842 629 3875 609 3890
578 3890 572 3888
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
609 3888 609 3869 629 3856 667 3860 667 3864 655 3873
654 3890 607 3888 609 3888
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 7
654 3893 984 3934 988 3898 664 3866 652 3882 652 3888
654 3893
2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9
986 3931 986 3913 1004 3900 1043 3902 1043 3908 1032 3916
1029 3933 982 3931 986 3931
2 3 0 1 -1 7 5 0 15 0.000 0 0 -1 0 0 9
429 3871 683 3743 1551 3816 1576 3831 1573 3840 1426 3990
427 3883 427 3869 429 3871
2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 3
423 3910 1434 4014 1575 3875
2 3 0 0 -1 7 5 0 10 0.000 0 0 -1 0 0 8
429 3885 429 3928 1430 4050 1580 3895 1576 3831 1423 3990
425 3882 429 3885
-6
-6
6 4050 3000 7500 3750
2 1 0 1 0 0 0 0 -1 0.000 0 0 -1 0 0 4
7500 3000 5430 3000 6120 3690 4050 3690
-6
# TB Data
6 8025 6000 9000 7425
5 1 0 1 -1 -1 0 0 -1 0.000 0 1 0 0 8490.000 5700.000 8040 6300 8490 6450 8940 6300
5 1 0 1 -1 -1 0 0 -1 0.000 0 1 0 0 8490.000 6600.000 8040 7200 8490 7350 8940 7200
1 2 0 1 -1 -1 0 0 -1 0.000 1 0.0000 8490 6150 450 150 8040 6000 8940 6300
2 1 0 1 -1 -1 0 0 -1 0.000 0 0 0 0 0 2
8940 6225 8940 7200
2 1 0 1 -1 -1 0 0 -1 0.000 0 0 0 0 0 2
8040 6225 8040 7200
4 1 -1 0 0 2 12 0.0000 6 135 270 8490 6675 TB\001
4 1 -1 0 0 2 12 0.0000 6 135 405 8490 7275 Data\001
-6
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
0 0 1.00 60.00 120.00
0 0 1.00 60.00 120.00
2025 3075 2475 3075
2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
3750 4650 3750 2100 2550 2100 2550 4650 3750 4650
2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
9075 4650 9075 2100 7875 2100 7875 4650 9075 4650
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
0 0 3.00 60.00 120.00
8400 4800 8400 6000
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
0 0 3.00 60.00 120.00
8250 4800 8250 6000
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
0 0 3.00 60.00 120.00
8100 4800 8100 6000
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
0 0 3.00 60.00 120.00
8850 4800 8850 6000
2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
12000 4500 12000 3975 8175 3975 8175 4500 12000 4500
4 0 0 50 0 2 15 0.0000 4 30 360 8475 5550 ......\001
4 0 0 50 0 0 20 0.0000 4 195 570 2625 3375 VisIt\001
4 0 0 50 0 0 20 0.0000 4 195 570 7950 3375 VisIt\001
4 0 0 50 -1 2 16 0.0000 4 225 1410 9375 4275 H5xxx plugin\001
4 0 0 50 0 0 20 0.0000 4 255 1650 6450 5550 n-way parallel\001
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
-262
View File
@@ -1,262 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Put your title here!!</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<div id="maincenter">
<head>
<title>Building H5Part</title>
</head>
<body bgcolor="#F0F0F0">
<font face="arial,helvetica" size="+2" color="#555588"><h2>Building H5Part</h2></font>
<UL>
<LI><a href="#Quickstart">Quickstart guide for the impatient.</a>
<LI><a href="#Details">Details of the Configuration Script</a>
<!-- <LI><a href="UsingC++.html">Using the C++ interface</a> -->
<LI><a href="#ConfigOptions">Important Configure Options</a>
<LI><a href="#EnvVariables">Important Environment Variables</a>
</UL>
<hr>
<a name="Quickstart">
<h2>Quickstart <i>for the impatient</i></h2>
</a>
<OL>
<LI><b>Configure</b>:<br>
For the serial implementation
<pre>
./configure
</pre>
For the parallel implementation configure with
<pre>
./configure --enable-parallel
</pre>
If you also want to build fortran bindings, add the
<code>--enable-fortran</code> flag to the configure line.
</LI><p>
<LI><b>Make the Library</b>:<br>
Type <code>make</code> to build the library. The libraries are
named accordingly.
<UL>
<LI>libH5Part.a: Serial C/C++ Library.</LI>
<LI>libpH5Part.a: Parallel C/C++ library.</LI>
<LI>libH5PartF.a: Serial F77/F90 library.</LI>
<LI>libpH5PartF.a: Parallel F77/F90 library.</LI>
</UL>
</LI><p>
<LI><b>Make Regression Tests and Examples</b>:<br>
Just type <code>make tests</code> to build regression tests
and/or example programs for H5Part. These tests are
<UL>
<LI>H5PartF: Fortran example (only build if --enable-fortran
is specified).</LI>
<LI>H5PartFpar: Parallel Fortran example (only built if both
--enable-fortran and --enable-parallel are specified).</LI>
<LI>H5PartTest: Serial C example. This test writes a sample
datafile and then reopens it for reading. It demonstrates
the most basic reading/writing capabilities.</LI>
<LI>H5PartTestP: Parallel C example (only built if
--enable-parallel is specified). This program only works
as an MPI/parallel program.</LI>
<LI>Bench: This program will only be built if
--enable-parallel is specified. It compares the
performance of raw binary
I/O (one file per processor), raw binary MPI-IO based
parallel I/O to a single file, and the parallel H5Part/HDF5 to
a single file. Generally, H5Part should be very close to the
MPI-IO implementation in terms of performance, but slower
than one-file-per-processor. If HDF5 is slower the
MPI-IO, it would indicate that some performance tuning
will be required for your platform (contact us, and we will
see what we can do!).</LI>
</UL>
</LI><p>
<LI><b>Building Your Own Programs</b>:<br>
There are many different subtleties to linking on various
computer platforms, but typically one does the following.
<UL>
<LI>C/C++ Serial:
<br><code>#include
&lt H5Part.h &gt </code> into your
source file.
<br><code>$CC -I<i>path_to_H5Part.h</i>
-I<i>path_to_hdf5.h</i> -o outfile
MyFile.cc -L<i>path_to_libH5Part.a</i> -lH5Part
-L<i>path_to_libhdf5</i> -lhdf5 -lz <i>-lsz</i></code>
</LI>
<LI>C/C++ Parallel:
<br><code>#include
&lt H5Part.h &gt </code> into your
source file.
<br><code>$MPICC -I<i>path_to_H5Part.h</i>
-I<i>path_to_hdf5.h</i> -DPARALLEL_IO
-DH5_HAVE_PARALLEL -o outfile
MyFile.cc -L<i>path_to_libH5Part.a</i> -lH5Part
-L<i>path_to_libhdf5</i> -lhdf5 -lz <i>-lsz</i></code>
</LI>
<LI>Fortran Serial:
<br><code>include
'H5Part.inc'</code> into your
source file.
<br><code>$FC -I<i>path_to_H5Part.h</i>
-I<i>path_to_hdf5.h</i> -o outfile
MyFile.cc -L<i>path_to_libH5PartF.a</i> -lH5PartF
-L<i>path_to_libhdf5</i> -lhdf5 -lz <i>-lsz</i> -lc</code>
</LI>
<LI>Fortran Parallel:
<br><code>include
'H5Part.inc'</code> into your
source file.
<br><code>$MPIF90 -I<i>path_to_H5Part.h</i>
-o outfile
MyFile.cc -L<i>path_to_libpH5PartF.a</i> -lpH5PartF
-L<i>path_to_libhdf5</i> -lhdf5 -lz <i>-lsz</i> -lc</code>
</LI><p>
</UL>
</OL>
<hr>
<a name="Details">
<h1>Details for H5Part Configure and Build</h1>
</a>
<a name="ConfigOptions">
<h2>Configure Options</h2>
</a>
H5Part uses GNU Autoconf to generate a Makefile from the makefile
template called <code>Makefile.in</code>.
The configure script pays attention to the following
configure options;<p>
<UL>
<LI><b>--prefix=PREFIX</b> Install files in PREFIX</LI>
<LI><b>--enable-fortran</b> By default H5part will make no attempt to
build Fortran bindings. If you add the
<code>--enable-fortran</code> flag to the ./configure line, it
will create a small test program to determine how to generate
the fortran bindings and then create a library that includes
those bindings. You may need to set the fortran compiler by
setting the <code>FC</code> environment variable in your shell.</LI>
<LI><b>--enable-parallel</b> The version of HDF5 that you build for
Parallel I/O differs from the library you would build for
serial I/O. Consequently, the H5Part libraries must be built
specifically for the kind of I/O you have in mind (parallel or
serial). The configure script will attempt to find an
<code>mpicc</code> if it is available. If no
<code>mpicc</code> is available it will use the regular
C-compiler and will try to locate the location of the MPI
include files and libraries. You can assist the configure
program in its search by setting the <code>MPIROOT</code>
environment variable.</LI>
<LI><b>--enable-tools</b> Builds the currently available tools
<br>
<b>h5pAttrib</b>, an inspection tool that prints the number of timesteps in a file
the file attributes, the step attributes, the dataset names and their values.
<br>
<b>h5pToGNUplot</b>, a converter to two column ASCII format to load in GNUplot.
</LI>
<LI><b>--enable-python</b><font color=red> Under construction</font> Option to build python bindings. It has not been tested.
</LI>
<LI><b>--help</b> Prints configure options.
</LI>
</UL>
<p>
<a name="MakeOptions">
<h2>Make Options</h2>
</a>
<UL>
<LI>make</LI>builds the libraries and test programs
<LI>make install</LI>builds and installs
<LI>make clean</LI>removes extraneous object files
<LI>make distclean</LI>returns configuration to unconfigured state
</UL>
<a name="EnvVariables">
<h2>Environment Variables for Configure</h2>
</a>
The
configuration script is of limited intelligence. Sometimes, you
have to define the following environment variables in order to
help it on its way. You will often only need to tell it where to
find the HDF5 libraries (<code>H5ROOT</code> for serial or
<code>PHDF5ROOT</code> for parallel builds). All of these
environment variables can also be overidden in the Makefile that
is generated by the autoconfigure script.
The configure script pays attention to the following
environment variables;
<p>
<UL>
<LI><b>CC</b>: Use the <code>CC</code> environment variable to tell the
configure script where to find the C compiler. You can
also directly modify this variable in the
<code>Makefile</code> that is generated by the autoconfigure</LI>
<LI><b>CXX</b>: Use the <code>CXX</code> environment variable to tell the
configure script where to find the C++ compiler. You can
also directly modify this variable in the
<code>Makefile</code> that is generated by the autoconfigure</LI>
<LI><b>FC</b>: Use the <code>FC</code> environment variable to tell the
configure script where to find the fortran compiler. You can
also directly modify this variable in the
<code>Makefile</code> that is generated by the autoconfigure</LI>
<LI><b>MPICC</b>: If you are building for parallel C I/O, then it is
useful to tell the configure script where to find the
<code>mpicc</code> script. Normally, <code>mpicc</code> is
merely a wrapper script for a build using a regular C-compiler.
If no <code>mpicc</code> is available, then the
<code>configure</code> script will attempt to locate the mpi
header files and libraries. In that case, it may be useful to
define the <code>MPI_HOME</code> environment variable.</LI>
<LI><b>MPICXX</b>If you are building for parallel C++</LI>
<LI><b>MPIFC</b>: If you are building for parallel Fortran I/O, then it is
useful to tell the configure script where to find the parallel fortran compiler.
<LI><b>MPIROOT</b>: Set this environment variable to help the
configure script to locate the MPI libraries that should be
used to build the parallel version of the libraries. This
variable will be ignored if configured only to build the
serial implementation of the library.</LI>
<LI><b>HDF5ROOT</b>: Find the path to your serial HDF5 installation. If you
are building the serial version of H5part, then you should set
the <code>PHDF5ROOT</code> environment variable.</LI>
</UL><p>
<h3>Common compiler environemt variables for NERSC platforms</h3>
<UL>
<LI><b>DaVinci</b>: Linux ia64 </LI>
CC=icc CXX=icc F90=ifort MPICC=icc MPIFC=ifort MPILIB=-L/usr/lib/ -lmpi MPIINC=-I/usr/include
<LI><b>Bassi</b>: AIX</LI>
CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r
<LI><b>Jacquard</b>: Linux x86_64</LI>
CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90
<LI><b>Starsky.lbl.gov:</b> (Darwin) PowerPC</LI>
CC=gcc CXX=g++ FC=g95
</UL>
<br>
NOTE: You might need to set the MPI library path (MPILIB) and MPI includes (MPIIINC) if they are in non standard places. For example: <br>
MPILIB=-L/usr/lpp/ppe.poe/lib -lmpi_r MPIINC=-I/usr/lpp/ppe.poe/include/thread
<h3>How to set the variables for configure:</h3>
It is very simple just call env with the variables together with configure. Notice the quotes in MPILIB.
<pre>
% env CC=icc CXX=icc F90=ifort MPICC=icc MPILIB=-L/usr/lib/ -lmpi MPIINC=-I/usr/include ./configure (configure options follow here)
</pre>
In the worst case, you can edit the <code>src/Makefile.am</code> and <code>test/Makefile.am</code> as
needed to perform the proper build.
</div>
-68
View File
@@ -1,68 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Put your title here!!</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<!--#include virtual="/include/topIncludes.html"-->
<div id="maincenter">
<head>
<title>Building HDF5</title>
</head>
<body bgcolor="#F0F0F0">
<font face="arial,helvetica" size="+2" color="#555588"><h2>Building H5Part</h2></font>
<UL>
<LI><a href="#ConfigOptions">Configure Options</a>
<LI><a href="#EnvVariables">Important Environment Variables</a>
</UL>
<hr>
<a name="ConfigOptions">
<h2>Configure options</h2></a>
</a>
To set the installation path configure with
<pre>
./configure --prefix=your hdf5 installation full path, e.g.--prefix=/usr/local/hdf5
</pre>
For the serial implementation configure with
<pre>
./configure
</pre>
For the parallel implementation configure with
<pre>
./configure --enable-parallel
</pre>
To enable shared objects configure with
<pre>
./configure --enable-shared
</pre>
<a name="EnvVariables">
<h2>Environment Variables</h2></a>
</a>
To add HDF5 to your PATH and LD_LIBRARY_PATH edit your
.tcshr, or .cshrc depending on the shell you are using and add
<pre>
setenv HDF5 "your hdf5 installation full path"
setenv PATH ${PATH}:${HDF5}/bin
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${HDF5}/lib
</pre>
if you are using bash, add to your .bashrc
<pre>
export HDF5="your hdf5 installation full path"
export PATH=$PATH:${HDF5}/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${HDF5}/lib
</pre>
Open a new terminal or do a
source .tcshr (.cshrc, .bashrc) in the one that you are using.
You can <a href="http://vis.lbl.gov/Research/AcceleratorSAPP/Downloading.html">continue <a/>downloading and installing H5Part.
</div>
<!--#include virtual="/include/dateFooter.html"-->
-48
View File
@@ -1,48 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Put your title here!!</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<!--#include virtual="/include/topIncludes.html"-->
<div id="maincenter">
<head>
<title>Downloading H5Part</title>
</head>
<body bgcolor="#F0F0F0">
<font face="arial,helvetica" size="+2" color="#555588"><h2>Downloading H5Part</h2></font>
<UL>
<LI><a href="#svnano">Subversion access.</a>
</UL>
<hr>
<a name="svnano">
<h2>Subversion access</h2>
</a>
<LI><b>Anonymous via. Savannah</b>:<br>
Use svn from <a href="http://subversion.tigris.org"> tigris </a>
<pre>
svn checkout svn+ssh://svn@savannah.psi.ch/afs/psi.ch/project/amas/svn/root/amas/H5Part/ .
</pre>
Password is svn.
<LI><b>Using AFS</b>:<br>
You need AFS (openAFS) and must have an AFS-Account at PSI which in consequence gives you
the needed access right.
</LI><p>
<pre>
svn checkout file:///afs/psi.ch/project/amas/svn/root/amas/H5Part/ .
</pre>
In case of trouble please contact the person mentioned at the bottom of this page.
<hr>
<address><a href="mailto:andreas.adelmann@psi.ch">Andreas Adelmann</a></address>
<!-- Created: March 7 12:52:52 PST 2005 -->
<!-- hhmts start -->
Last modified: Mon Jan 9 22:18:55 CET 2006
<!-- hhmts end -->
</div>
<!--#include virtual="/include/dateFooter.html"-->
+39 -41
View File
@@ -4,8 +4,8 @@
# Project related configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = H5Part
PROJECT_NUMBER = V1.0
OUTPUT_DIRECTORY = ./doxydoc
PROJECT_NUMBER = 1.6.1
OUTPUT_DIRECTORY = ./ReferencePages
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = NO
@@ -43,10 +43,10 @@ SUBGROUPING = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = YES
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_CLASSES = NO
EXTRACT_LOCAL_METHODS = NO
HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES
@@ -55,18 +55,18 @@ HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO
SHOW_INCLUDE_FILES = YES
SHOW_INCLUDE_FILES = NO
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO
SORT_BY_SCOPE_NAME = NO
SORT_BRIEF_DOCS = YES
SORT_BY_SCOPE_NAME = YES
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
SHOW_USED_FILES = NO
SHOW_DIRECTORIES = YES
FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
@@ -82,21 +82,19 @@ WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.h \
*.hh \
*.C \
*.CC \
*.C++ \
*.H \
*.HH
INPUT += ../src/H5Part.c
INPUT += ../src/H5PartAttrib.c
INPUT += ../src/H5Block.c
INPUT += ../src/H5BlockReadWrite.c
INPUT += ../src/H5MultiBlock.c
INPUT += ../src/H5MultiBlockReadWrite.c
INPUT += ../src/H5Part.f90
INPUT += ../src/H5PartAttrib.f90
INPUT += ../src/H5Block.f90
INPUT += ../src/H5BlockReadWrite.f90
FILE_PATTERNS =
RECURSIVE = YES
EXCLUDE =
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
@@ -109,13 +107,13 @@ FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
USE_HTAGS = NO
VERBATIM_HEADERS = YES
VERBATIM_HEADERS = NO
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
@@ -126,10 +124,10 @@ IGNORE_PREFIX =
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_OUTPUT = .
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER =
HTML_FOOTER = doxyfooter
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
@@ -145,7 +143,7 @@ TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = YES
GENERATE_LATEX = no
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
@@ -201,13 +199,13 @@ EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
PREDEFINED = PARALLEL_IO
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
TAGFILES = YES
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
@@ -215,21 +213,21 @@ PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
CLASS_DIAGRAMS = NO
HIDE_UNDOC_RELATIONS = NO
HAVE_DOT = NO
CLASS_GRAPH = NO
COLLABORATION_GRAPH = NO
GROUP_GRAPHS = NO
UML_LOOK = NO
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = YES
INCLUDE_GRAPH = NO
INCLUDED_BY_GRAPH = NO
CALL_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
DOT_PATH = /Applications/Graphviz.app/Contents/MacOS
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
-14
View File
@@ -1,14 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Put your title here!!</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<div id="maincenter">
Under construction, will be here soon.
</div>
-15
View File
@@ -1,15 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Put your title here!!</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<div id="maincenter">
Under construction, will be here soon.
</div>
-15
View File
@@ -1,15 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Put your title here!!</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<div id="maincenter">
Under construction, will be here soon.
</div>
-99
View File
@@ -1,99 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Put your title here!!</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<!--#include virtual="/include/topIncludes.html"-->
<div id="maincenter">
<head>
<title>H5Part Utility Tools</title>
</head>
<body bgcolor="#F0F0F0">
<font face="arial,helvetica" size="+2" color="#555588"><h2>H5Part Utility Tools</h2></font>
<UL>
<LI><a href="h5pAttrib">h5pAttrib</a>
<LI><a href="h5pToGNUplot">h5pToGNUplot</a>
</UL>
<hr>
<a name="h5pAttrib">
<h2>h5pAttrib</h2>
</a>
<b>h5pAttrib</b> is an inspection tool that prints to stdout the number of timesteps in a file
the file attributes, the step attributes, the dataset names and their values. It's simpler to use than h5dump.
Usage options are given by typing:
<br><br>
<PRE>
% ./h5pAttrib -h
usage: h5pAttrib [OPTIONS] file
OPTIONS
-h, --help Print help page
-n, --nstep Print number of steps
-A, --fileA Print file attributes
-a, --stepA Print step attributes & values for time step n
-d, --dataset Print data sets names & values for time step n
-H, --header Print shorter version without the values
</PRE>
<h3>Examples</h3>
<OL>
<LI>
Show file attribute names & values of sample.h5part
</LI>
h5pAttrib -A sample.h5part
<LI>
Show step attribute names for time step 5 of sample.h5part
</LI>
h5pAttrib -a 5 -H sample.h5part
</OL>
<a name="h5pToGNUplot">
<h2>h5pToGNUplot</h2>
</a>
<b>h5pToGNUplot</b> is a converter from H5Part to two column ASCII text format for loading into GNUplot. Usage options are given by typing:
<br><br>
<PRE>
% ./h5pToGNUplot -h
usage: h5pToGNUplot -t TIMESTEP -1 VARIABLE#1 -2 VARIABLE#2 -i INPUTFILE [OPTIONAL_FLAGS]
FLAGS
-h, --help Print help page
-1, --1var (REQUIRED) Takes first variable parameter
-2, --2var (REQUIRED) Takes second variable parameter
-i, --input (REQUIRED) Takes input file name
-t, --timestep (REQUIRED) Sets the timestep (Value -1 will result in dumping values of all timesteps.)
-o, --output (OPTIONAL) Takes output file name (without this flag, the program will print to stdout)
-n, --number (OPTIONAL) Sets number of output points
-s, --start (OPTIONAL) Sets the starting particle index
</PRE>
<h3>Examples</h3>
<OL>
<LI>
Create a GNU plot file output.txt from sample.h5part by ploting x vs px for timestep 54
</LI>
h5pToGNUplot -t 54 -1 x -2 px -i sample.h5part -o output.txt
<LI>
Create a GNU plot file output.txt from sample.h5part by ploting x vs px for timestep 54
using 1200 points from particle index 76
</LI>
h5pToGNUplot -t 54 -1 x -2 px -i sample.h5part -o output.txt -s 76 -n 1200
</OL>
</div>
<!--#include virtual="/include/dateFooter.html"-->
-75
View File
@@ -1,75 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>H5Part: VisIt Plugins</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<div id="maincenter">
<font face="arial,helvetica"><h1>H5Part: VisIt Plugins</h1></font>
<font face="arial,helvetica" color="#555588"><h2>Introduction</h2></font>
<P>
<a href="http://www.llnl.gov/visit">VisIt</a> is an open source point-and-click 3D scientific visualization application that supports most of the common visualization techniques on structured and unstructured grids. One of its advantages is that it employs a distributed and parallel architecture in order to handle extremely large data sets interactively. VisIt's rendering and data processing capabilities are split into viewer and engine components that may be distributed across multiple machines. See this link for <a href="http://vis.lbl.gov/NERSC/Software/visit/">details</a> on how to run VisIt in NERSC.
</P>
<P>
VisIt achieves extensibility through the use of dynamically loaded plugins. All of VisIt's plots, operators, and database readers are implemented as plugins and are loaded at run-time from the plugin directory. New plugins can be added simply by installing them in this directory. VisIt comes with a graphical plugin creation tool, which greatly simplifies the process of creating new plugins. The user describes the properties of the plugin and then the tool generates most of the code necessary to implement the plugin. For example, in the case of an operator, the plugin creation tool creates the code necessary for the graphical user interface attribute window; the C++, Python, and Java interfaces; and the code necessary to interface to VisIt. The only code you need to write is the C++ code that actually performs the operation.
</P>
<font face="arial,helvetica" color="#555588"><h2>H5Part in VisIt</h2></font>
<font face="arial,helvetica" color="#555588"><h3>Database Reader Plugin</h3></font>
<P>
We wrote a Multiple Time Step Multiple Domain database reader to read H5Part data into VisIt. H5Part datasets should be named with the extension <font color=red>".h5part"</font> to be recognized by the reader since VisIt does not have a format selection mechanism at the time of reading. Figure 1 shows a Pseudocolor plot of a data set and Figure 2 shows a Scatter plot x-y (any combination of x, px, y, py, z, pz, id are possible).
</P>
<P>
<TABLE>
<TR>
<TD>
<a href="H5PartVisIt/cloud_visit.png"><img src="H5PartVisIt/cloud_visit.s.png" width=400 height=300></a>
</TD
></TR>
<TR>
<TD width=300>
Figure 1. VisIt User interface showing an H5Part particle file rendered as spheres using the Pseudocolor plot.
</TD>
</TR>
<TR>
<TD>
<a href="H5PartVisIt/cloud_visit_2D.png"><img src="H5PartVisIt/cloud_visit_2D.s.png" width=300 height=300></a>
</TD>
</TR>
<TR>
<TD>
Figure 2. A Scatter plot of the x-y projection of the particles.
</TD>
</TR>
</TABLE>
</P>
<P>
VisIt provides a Query interface, for single time steps and for time series. Figure 3 shows the query interace over time for the sum of the x position and the z position of the particoes.
</P>
<P>
<TABLE>
<TR>
<TD>
<a href="H5PartVisIt/visit_query1.png"><img src="H5PartVisIt/visit_query1.s.png" width=400 height=300></a>
</TD
></TR>
<TR>
<TD width=300>
Figure 3. VisIt's Time Query Output.
</TD>
</TR>
</TABLE>
</p>
<font face="arial,helvetica" color="#555588"><h2>Operator Plugins</h2></font>
<P>
<font face="arial,helvetica" color="#555588"><h3>Particle Random Sampler</h3></font>
</P>
<P>
<font face="arial,helvetica" color="#555588"><h3>Particle Binner</h3></font>
</P>
</div>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

+170
View File
@@ -0,0 +1,170 @@
Proposal for a more general file format used by H5Part/H5Block
Authors: Achim Gsell
Status: Draft
1. Introduction
H5X is the file format used by H5Part and H5Block. H5X is designed on
top of HDF5: A H5X file is a very special HDF5 file.
+--------------------+
| Application |
+--------------------+
| H5Part/H5Block API |
+--------------------+
| H5X API |
+--------------------+
| HDF5 API |
+--------------------+
| Filesystem of OS |
+--------------------+
2. H5X file format specification
2.1 The root group
2.1.1 File attributes
Attributes of the HDF5 root group are called "file attributes". There
are no restrictions on file attribute names. Names with "__" as prefix and
postfix are intended for internal use. Supported values for file attributes
are scalars and arrays of 64bit integer and 64bit floating point number as
well as string values. Arrays of strings are not supported.
2.1.1.1 Predefined file attributes
__stepname__ (optional)
See below.
__stepnumwidth__ (optional)
See below.
2.1.2 Members of the root group
Members of the root group are special formated HDF5 groups called
"step groups". The name of a step group is "<name>#<number>".
Whereby <name> is either defined by the optional file attribute
__stepname__ or set to "Step" by default. <number> is an
unsigned integer less than 2^63.
/
+- Step#0
+- Step#1
...
+- Step#n
+- StepProperties [NEW]
+- Mesh [NEW]
The optional file attribute __stepnumwidth__ defines the minimum width
of <number> in the name of the step group. The number is padded with
'0'. The minimum width defaults to zero, so that no paddings occurs.
Example: With __stepnumwidth__ := 5 the name of the step group with
number 42 is "Step#00042", with __stepnumwidth__ := 0 the name is
"Step#42".
Step groups may be unsorted in the HDF5 file und needn't be number
consecutively.
2.1.3 Other members of the root group
Other sub-groups of the root group are allowed, but the group names are restricted
to names not matching "Step#.*".
2.2 Format of a step group
2.2.1 Step attributes
Step attributes are HDF5 attributes asigned to a step group. There
are no restrictions on step attribute names. As with file attributes names
enclosed in "__" are intended for internal use. Supported values are the same
as for file attributes:
* 64bit integer value
* arrays of 64bit integer values
* 64bit floating point number
* array of 64bit floating point number
* strings
Note that array of strings are not supported!
2.2.2 Predefined step attributes
No predefined step attributes exists.
2.2.3 Members of a step group
Members of a step group are HDF5 datasets and optional one HDF5 group
with the name "Block". HDF5 datasets in a step group are called "step
datasets". The optional block group is called "block data".
Mesh?!
2.2.4 Step datasets
Step datasets are arrays of rank 1. The dataset size must be the same
for all datasets inside a step. The size of the dataset may vary
from step to step. Array values are 64bit integer or 64bit floating
point numbers. No limitations (other than given by HDF5) are given on
step dataset names.
2.2.5 Block Data
The block data group is a container for an arbitrary number of field
data. A field is a data structure to store arrays of rank m with
n-dimensional vector values. Fields are represented within HDF5
groups. The HDF5 group name is the unique identifier for a field in
the current step.
2.2.5.1 m-rank fields with n-dimensional-vector values
Values are stored per dimension in separate datasets. Thus we have n
datasets for a field with n-dimensional vector values. Each dataset
corresponse to one dimension. The datasets are numbered from '0' to
'n-1'. Arrays are stored in column major order (Fortran indexing
scheme).
/ # HDF5 root group
...
+- Step#<i> # HDF5 group
|
+- Block # HDF5 group
|
+- <field name> # HDF5 group
|
+- 0 # HDF5 dataset, first dim of vector
+- 1 # HDF5 dataset, second dim of vector
...
+- n-1 # HDF5 dataset, last dim of vector
...
2.2.5.2 m-rank fields with scalar values
Fields with scalar values are stored as special case of fields with
n-dimensional vector values with n := 1.
/ # HDF5 root group
...
+- Step#<i> # HDF5 group
|
+- Block # HDF5 group
|
+- <field name> # HDF5 group
|
+- 0 # HDF5 dataset, scalar value
...
2.3 Step properties [NEW]
Why? Much faster than step attributes if you need to access consecutive values
Group of root group with name "StepProperties"
Members are datasets
Supported values are the same as for step attributes
Mapping of value to step via object index of step group
-417
View File
@@ -1,417 +0,0 @@
<html><head><title>H5Part Tools How-to</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr"></head>
<body bgcolor="#ffffff" text="#000000">
<table border="0" cellpadding="0" cellspacing="0" width="987">
<tbody><tr>
<td height="6050" width="27"></td>
<td colspan="3" valign="top">
<div id="body">
<div id="mainleft"><font face="Arial, Helvetica, sans-serif"><a name="TOP"></a>
</font></div>
<div id="maincenter"> <font face="arial,helvetica">
<h1 align="center"><font face="Arial, Helvetica, sans-serif"><b><font color="#666699">H5Part
Tools How-to</font></b></font></h1>
</font><font color="#555588" face="arial,helvetica">
<h2><font color="#666699" face="Arial, Helvetica, sans-serif">Table
of Contents</font></h2>
</font>
<p><font face="Arial, Helvetica, sans-serif"><b><a href="#Quick%20Guide">
[1] Quick Guide</a></b> </font></p>
<p><font face="Arial, Helvetica, sans-serif" size="+1"><b><font color="#999999">---
For h5pAttrib</font></b></font><font face="Arial, Helvetica, sans-serif"><br>
<b><br>
<a href="#timesteps">[2] To see number of timesteps in a h5part file</a><br>
<br>
<a href="#file%20attributes">[3] To see file attributes in a h5part
file</a><br>
<br>
<a href="#step%20attributes"> [4] To see step attributes in a h5part
file</a><br>
<br>
<a href="#dataset">[5] To see dataset in a h5part file</a><br>
<br>
<a href="#flags">[6] Providing more than one flag at once for h5pAttrib</a></b></font></p>
<p><font face="Arial, Helvetica, sans-serif" size="+1"><b><font color="#999999">---
For h5pToGNUplot</font></b></font><font face="Arial, Helvetica, sans-serif"><br>
<br>
<b><a href="#parameters">[7] What parameters to provide</a><br>
<br>
<a href="#input%20file">[8] How to create an input file to GNUplot</a></b></font></p>
<p>&nbsp;</p>
<p align="center"><font face="Arial, Helvetica, sans-serif"><a href="#TOP">&lt;back
to top&gt;</a></font></p>
<p>&nbsp;</p>
<h2><font color="#555588" face="Arial, Helvetica, sans-serif"><a name="Quick Guide">[1]
Quick Guide</a></font></h2>
<p><font face="Arial, Helvetica, sans-serif">Executing the program with
-h option will display a concise help page.</font></p>
<p><font face="Arial, Helvetica, sans-serif"><b><font face="Courier New, Courier, mono" size="+1">$&gt;</font></b><font face="Courier New, Courier, mono">./h5pAttrib
-h</font></font></p>
<p><font face="Courier New, Courier, mono">usage: h5pAttrib [OPTIONS]
file</font></p>
<p><font face="Courier New, Courier, mono"> OPTIONS<br>
-h, --help Print help page<br>
-n, --nstep Print number of steps<br>
-A, --fileA Print file attributes<br>
-a n, --stepA n Print step attributes &amp; values for time step n<br>
-d n, --dataset n Print data sets names &amp; values for time step
n<br>
-H, --header Print shorter version without the values</font></p>
<p><font face="Courier New, Courier, mono"> Examples:</font></p>
<p><font face="Courier New, Courier, mono"> 1) Show file attribute names
&amp; values of sample.h5part</font></p>
<p><font face="Courier New, Courier, mono"> h5pAttrib -A sample.h5part<br>
OR<br>
h5pAttrib --fileA sample.h5part</font></p>
<p><font face="Courier New, Courier, mono"> 2) Show step attribute names
for time step 5 of sample.h5part</font></p>
<p><font face="Courier New, Courier, mono"> h5pAttrib -a 5 -H sample.h5part<br>
OR<br>
h5pAttrib --stepA 5 -H sample.h5part</font></p>
<p><font face="Courier New, Courier, mono"><br>
<b><font size="+1">$&gt;</font></b> ./h5pToGNUplot -h</font></p>
<p><font face="Courier New, Courier, mono">usage: h5pToGNUplot -t TIMESTEP
-1 VARIABLE#1 -2 VARIABLE#2 -i INPUTFILE [OPTIONAL_FLAGS]</font></p>
<p><font face="Courier New, Courier, mono"> FLAGS<br>
-h, --help Print help page</font><br>
<font face="Courier New, Courier, mono">-1 par, --1var par (REQUIRED)
Takes first variable parameter to "par"<br>
-2 par, --2var par (REQUIRED) Takes second variable parameter to "par"<br>
-i file, --input file (REQUIRED) Takes input file name to "file"<br>
</font><font face="Courier New, Courier, mono">-t step, --timestep
step (REQUIRED) Sets the timestep to "step" (Value -1 will
result in dumping values of all timesteps.)<br>
-o file, --output file (OPTIONAL) Takes output file name to "file"
(without this flag, the program will print to stdout)<br>
-n num, --number num (OPTIONAL) Sets number of output points to "num"<br>
-s idx, --start idx (OPTIONAL) Sets the starting particle index to
"idx"</font></p>
<p><font face="Courier New, Courier, mono"><br>
Examples:</font></p>
<p><font face="Courier New, Courier, mono"> 1) Create GNU plot file
output.txt from sample.h5part by ploting x vs px for timestep 54</font></p>
<p><font face="Courier New, Courier, mono"> h5pToGNUplot -t 54 -1 x
-2 px -i sample.h5part -o output.txt</font></p>
<p><font face="Courier New, Courier, mono"> 2) Create GNU plot file
output.txt from sample.h5part by ploting x vs px for timestep 54<br>
using 1200 points from particle index 76</font></p>
<p><font face="Courier New, Courier, mono"> h5pToGNUplot -t 54 -1 x
-2 px -i sample.h5part -o output.txt -s 76 -n 1200</font></p>
<p>&nbsp;</p>
<p align="center"><font face="Arial, Helvetica, sans-serif"><a href="#TOP">&lt;back
to top&gt;</a></font></p>
<p>&nbsp;</p>
<p><font face="Arial, Helvetica, sans-serif" size="+1"><b><font color="#999999">---
For h5pAttrib</font></b></font></p>
<p>&nbsp;</p>
<h2><font color="#555588" face="Arial, Helvetica, sans-serif"><a name="timesteps">[2]
To see number of timesteps in a h5part file</a></font></h2>
<p>Executing the program h5pAttrib with -n flag will display the number
of timesteps in the file.</p>
<p><font face="Arial, Helvetica, sans-serif"><b>EXAMPLE&gt;&gt;</b></font></p>
<p><font face="Arial, Helvetica, sans-serif" size="+1"><b><font face="Courier New, Courier, mono">$&gt;</font></b></font><font face="Courier New, Courier, mono">
./h5pAttrib -n sample.h5part</font></p>
<p><font face="Courier New, Courier, mono">++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono">Printing number of timesteps
for: sample.h5part ...</font></p>
<p><font face="Courier New, Courier, mono">There are total 252 number
of timesteps.<br>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono">done</font><font face="Arial, Helvetica, sans-serif"><br>
</font></p>
<p>&nbsp; </p>
<p align="center"><font face="Arial, Helvetica, sans-serif"><a href="#TOP">&lt;back
to top&gt;</a></font></p>
<h2><font color="#666699" face="Arial, Helvetica, sans-serif"><br>
<font color="#555588"><a name="file attributes">[3] To see file attributes
in a h5part file</a></font></font></h2>
<p>File attribute contains information about the file. (file description
etc...) Executing the program h5pAttrib with -A flag will display
the file attributes in the file.</p>
<p><font face="Arial, Helvetica, sans-serif"><b>EXAMPLE&gt;&gt;</b></font></p>
<p><font face="Arial, Helvetica, sans-serif" size="+1"><b><font face="Courier New, Courier, mono">$&gt;</font></b></font><font face="Courier New, Courier, mono">
./h5pAttrib -A sample.h5part</font></p>
<p><font face="Courier New, Courier, mono">++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono">Printing file attributes
for: sample.h5part ...</font></p>
<p><font face="Courier New, Courier, mono">The number of file attributes
for file sample.h5part is 0 ...<br>
There are no file attributes.<br>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono">done</font></p>
<p><font face="Arial, Helvetica, sans-serif"><br>
<i>NOTE: -H option will omit the list of values of file attributes.</i></font></p>
<p>&nbsp; </p>
<p align="center"><font face="Arial, Helvetica, sans-serif"><a href="#TOP">&lt;back
to top&gt;</a></font></p>
<p align="center">&nbsp;</p>
<h2><font color="#555588" face="Arial, Helvetica, sans-serif"><a name="step attributes">[4]
To see step attributes in a h5part file</a></font></h2>
<p>Step attribute contains information that belongs to a specific step.
(step name, timestep number, etc...) Executing the program h5pAttrib
with -a flag will display the step attributes in the file.<br>
Note that the timestep index should follow -a flag.</p>
<p><font face="Arial, Helvetica, sans-serif"><b>EXAMPLE&gt;&gt;</b></font></p>
<p><font face="Arial, Helvetica, sans-serif"><b><font face="Courier New, Courier, mono" size="+1">$&gt;</font></b><font face="Courier New, Courier, mono">
./h5pAttrib -a 2 sample.h5part</font></font></p>
<p><font face="Courier New, Courier, mono">++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono">Printing step attributes
for: sample.h5part ...</font></p>
<p><font face="Courier New, Courier, mono">The number of step attributes
for timestep #2 is 10 ...</font></p>
<p><font face="Courier New, Courier, mono">Attribute #0 = Step<br>
There are 1 elements in the attribute<br>
Attribute Type is H5T_NATIVE_INT64<br>
Printing 1 element value(s):<br>
COUNT[0]: 2</font></p>
<p><font face="Courier New, Courier, mono">Attribute #1 = Spos<br>
There are 1 elements in the attribute<br>
Attribute Type is H5T_NATIVE_DOUBLE<br>
Printing 1 element value(s):<br>
COUNT[0]: 0.143580</font></p>
<p><font face="Courier New, Courier, mono">Attribute #2 = structLen<br>
There are 1 elements in the attribute<br>
Attribute Type is H5T_NATIVE_DOUBLE<br>
Printing 1 element value(s):<br>
COUNT[0]: 2.393000</font></p>
<p><font face="Courier New, Courier, mono">.<br>
.<br>
.</font></p>
<p><font face="Courier New, Courier, mono"><br>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono">done</font></p>
<p><font face="Arial, Helvetica, sans-serif"><br>
<i>NOTE: -H option will omit the list of values of step attributes.</i></font></p>
<p>&nbsp; </p>
<p align="center"><font face="Arial, Helvetica, sans-serif"><a href="#TOP">&lt;back
to top&gt;</a></font></p>
<h2><font color="#555588" face="Arial, Helvetica, sans-serif"><br>
<a name="dataset">[5] To see dataset in a h5part file</a></font></h2>
<p>Executing the program h5pAttrib with -d flag will display the datasets
information in the file. (dataset name, type, number of elements,
etc...) Executing the program h5pAttrib with -d flag will display
the datasets information in the file.<br>
Note that the timestep index should follow -d flag.</p>
<p><font face="Arial, Helvetica, sans-serif"><b>EXAMPLE&gt;&gt;</b></font></p>
<p><font face="Arial, Helvetica, sans-serif" size="+1"><b><font face="Courier New, Courier, mono">$&gt;</font></b></font><font face="Courier New, Courier, mono">
./h5pAttrib -d 2 -H sample.h5part</font></p>
<p><font face="Courier New, Courier, mono">++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono">Printing names of datasets
for: sample.h5part ...</font></p>
<p><font face="Courier New, Courier, mono">The number of datasets for
timestep #2 is 7 ...</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #0 = id<br>
Dataset Type is H5T_NATIVE_INT64<br>
Number of elements: 67587</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #1 = px<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 67587</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #2 = py<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 67587</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #3 = pz<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 67587</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #4 = x<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 67587</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #5 = y<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 67587</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #6 = z<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 67587</font></p>
<p><font face="Courier New, Courier, mono">++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono">done</font></p>
<p><font face="Arial, Helvetica, sans-serif"><br>
<i>NOTE: -H option will omit the list of values of datasets.</i></font></p>
<p>&nbsp; </p>
<p align="center"><font face="Arial, Helvetica, sans-serif"><a href="#TOP">&lt;back
to top&gt;</a></font></p>
<p>&nbsp;</p>
<h2><font color="#555588" face="Arial, Helvetica, sans-serif"><a name="flags">[6]
Providing more than one flag at once</a></font></h2>
<p><font face="Arial, Helvetica, sans-serif">When more than one flags
are provided, one result after another will be displayed.</font></p>
<p><font face="Arial, Helvetica, sans-serif"><b>EXAMPLE&gt;&gt;</b></font></p>
<p><font face="Arial, Helvetica, sans-serif" size="+1"><b><font face="Courier New, Courier, mono">$&gt;</font></b></font><font face="Courier New, Courier, mono">
./h5pAttrib -H -a 1 -d 1 sample.h5part</font></p>
<p><font face="Courier New, Courier, mono">++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono">Printing step attributes
for: sample.h5part ...</font></p>
<p><font face="Courier New, Courier, mono">The number of step attributes
for timestep #1 is 10 ...</font></p>
<p><font face="Courier New, Courier, mono">Attribute #0 = Step<br>
Attribute #1 = Spos<br>
Attribute #2 = structLen<br>
Attribute #3 = org<br>
Attribute #4 = maxX<br>
Attribute #5 = minX<br>
Attribute #6 = maxP<br>
Attribute #7 = minP<br>
Attribute #8 = centroid<br>
Attribute #9 = nloc<br>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono"><br>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono">Printing names of datasets
for: sample.h5part ...</font></p>
<p><font face="Courier New, Courier, mono">The number of datasets for
timestep #1 is 7 ...</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #0 = id<br>
Dataset Type is H5T_NATIVE_INT64<br>
Number of elements: 60214</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #1 = px<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 60214</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #2 = py<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 60214</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #3 = pz<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 60214</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #4 = x<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 60214</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #5 = y<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 60214</font></p>
<p><font face="Courier New, Courier, mono">Dataset Name #6 = z<br>
Dataset Type is H5T_NATIVE_DOUBLE<br>
Number of elements: 60214</font></p>
<p><font face="Courier New, Courier, mono">++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></p>
<p><font face="Courier New, Courier, mono">done</font></p>
<p>&nbsp;</p>
<div align="center"><font face="Arial, Helvetica, sans-serif"><a href="#TOP">&lt;back
to top&gt;</a></font></div>
</div>
</div>
</td>
</tr>
<tr>
<td height="80"></td>
<td colspan="3" valign="top">
<h2><font face="Arial, Helvetica, sans-serif" size="+1"><b><font color="#999999">---
For h5pToGNUplot</font></b></font></h2>
<h2><font color="#555588" face="Arial, Helvetica, sans-serif"><a name="parameters">[7]
What parameters to provide</a></font></h2>
<p><font face="Arial, Helvetica, sans-serif">When you execute the program
with -h option, it displays what flags are necessary and what flags are
optional.</font></p>
</td>
</tr>
<tr>
<td height="200"></td>
<td valign="top" width="137">
<p align="left"><b><font face="Arial, Helvetica, sans-serif">Short Version</font></b></p>
<p><font face="Arial, Helvetica, sans-serif">-h<br>
-1<br>
-2<br>
-i<br>
-t<br>
-o<br>
-n<br>
-s </font></p>
</td>
<td valign="top" width="144">
<p align="left"><b><font face="Arial, Helvetica, sans-serif">Long Version</font></b></p>
<p><font face="Arial, Helvetica, sans-serif">--help<br>
--1var<br>
--2var<br>
--input<br>
--timestep<br>
--output<br>
--number<br>
--start </font></p>
</td>
<td valign="top" width="679">
<p align="left"><b><font face="Arial, Helvetica, sans-serif">Meanings</font></b></p>
<p><font face="Arial, Helvetica, sans-serif">Print help page<br>
(REQUIRED) Takes first variable parameter<br>
(REQUIRED) Takes second variable parameter<br>
(REQUIRED) Takes input file name<br>
(REQUIRED) Sets the timestep (Value -1 will result in dumping values of
all timesteps.)<br>
(OPTIONAL) Takes output file name (without this flag, the program will
print to stdout)<br>
(OPTIONAL) Sets number of output points<br>
(OPTIONAL) Sets the starting particle index</font> </p>
</td>
</tr>
<tr>
<td height="1786"></td>
<td colspan="3" valign="top">
<p>&nbsp;</p>
<p align="center"><font face="Arial, Helvetica, sans-serif"><a href="#TOP">&lt;back
to top&gt;</a></font></p>
<h2><font color="#555588" face="Arial, Helvetica, sans-serif"><br>
<a name="input file">[8] How to create an input file to GNUplot</a></font></h2>
<p><font face="Arial, Helvetica, sans-serif"><b>EXAMPLE&gt;&gt;</b><br>
<i>Create input file to GNUplot that plots x vs. y.</i></font></p>
<p><font face="Arial, Helvetica, sans-serif"><b><font face="Courier New, Courier, mono" size="+1">$&gt;</font></b><font face="Courier New, Courier, mono">
./h5pToGNUplot -1 x -2 y -t 1 -i sample.h5part -o output.txt<br>
<b><font size="+1">$&gt;</font></b> cat output.txt<br>
-0.390779 -0.254793<br>
-0.396527 -0.252781<br>
-0.375362 -0.285137<br>
-0.396527 -0.252781<br>
-0.379917 -0.283147<br>
-0.390779 -0.254793<br>
-0.387536 -0.287346<br>
-0.371787 -0.319797<br>
-0.379917 -0.283147<br>
-0.378967 -0.326058<br>
-0.378976 -0.326078<br>
-0.387536 -0.287346<br>
-0.378957 -0.326069<br>
-0.379917 -0.283147<br>
-0.388762 -0.265390<br>
-0.371787 -0.319797<br>
-0.390779 -0.254793<br>
-0.376825 -0.266804<br>
-0.379917 -0.283147<br>
-0.375362 -0.285137<br>
...</font></font></p>
<p><font face="Courier New, Courier, mono"><i>Then run GNUplot...</i></font></p>
<p><font face="Courier New, Courier, mono"><b><font size="+1">$&gt;</font></b>
gnuplot</font></p>
<p><font face="Courier New, Courier, mono"> G N U P L O T<br>
Version 4.0 patchlevel 0<br>
last modified Thu Apr 15 14:44:22 CEST 2004<br>
System: Linux 2.6.11.4-21.11-smp</font></p>
<p><font face="Courier New, Courier, mono"> Copyright (C) 1986 - 1993, 1998,
2004<br>
Thomas Williams, Colin Kelley and many others</font></p>
<p><font face="Courier New, Courier, mono"> This is gnuplot version 4.0.
Please refer to the documentation<br>
for command syntax changes. The old syntax will be accepted<br>
throughout the 4.0 series, but all save files use the new syntax.</font></p>
<p><font face="Courier New, Courier, mono"> Type `help` to access the on-line
reference manual.<br>
The gnuplot FAQ is available from<br>
http://www.gnuplot.info/faq/</font></p>
<p><font face="Courier New, Courier, mono"> Send comments and requests for
help to<br>
&lt;gnuplot-info@lists.sourceforge.net&gt;<br>
Send bugs, suggestions and mods to<br>
&lt;gnuplot-bugs@lists.sourceforge.net&gt;</font></p>
<p><font face="Courier New, Courier, mono"><br>
Terminal type set to 'x11'<br>
<font size="+1"><b>gnuplot&gt;</b></font> plot "output.txt"</font></p>
<p><font face="Arial, Helvetica, sans-serif"><i>This will open a GNUplot
window that plots output.txt.</i></font></p>
<p align="center"><img src="H5tools_files/snapshot1.jpg" height="541" width="672"><br>
<font face="Arial, Helvetica, sans-serif">&lt;Sample screen shot of GNUplot
with input datafile generated by h5pToGNUplot&gt;</font></p>
</td>
</tr>
<tr>
<td height="44"></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody></table>
</body></html>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

-345
View File
@@ -1,345 +0,0 @@
\documentclass[acus]{JAC2003}
%%
%% Use \documentclass[boxit]{JAC2003}
%% to draw a frame with the correct margins on the output.
%%
%% Use \documentclass[acus]{JAC2003}
%% for US letter paper layout
%%
\usepackage{graphicx}
%%
%% VARIABLE HEIGHT FOR THE TITLE BOX (default 35mm)
%%
\setlength{\titleblockheight}{40mm}
\begin{document}
\title{H5Pie: A Portable High Performance Parallel Data Interface for Electromagnetics Simulations Including Particles\thanks{
This work (LBNL-57607) was supported by the Director, Office of Science, Office of Advanced Scientific Computing Research, of the U.S. Department of Energy under Contract No. DE-AC03-76SF00098 and the DOE SciDAC project on ``Advanced Computing for 21st Century Accelerator Science and Technology.''.
}}
\author{A. Adelmann, A. Gsell, B. Oswald, PSI, Villigen, Switzerland \\
R.D. Ryne, LBNL/AFR, Berkeley, California, USA\\
W. Bethel, J.M. Shalf, C. Siegerist, LBNL/NERSC, Berkeley, California, USA}
\maketitle
\begin{abstract}
The very largest parallel particle simulations, for problems
involving six dimensional phase space,
generate vast quantities of data. It is desirable to
store such enormous datasets efficiently and also to share data
effortlessly between data analysis tools
such as VisIt or ParaView
among other groups who are working on particle-based accelerator
simulations. We define a very simple file schema built on top of HDF5~\cite{hdf5hp}
(Hierarchical Data Format version 5) as well as an API that simplifies
the reading/writing of the data to the HDF5 file format. HDF5 offers a
self-describing machine-independent binary file format that supports
scalable parallel I/O performance for MPI codes on computer systems
ranging from laptops to supercomputers.
H5Pie is actually a composition of three parts. On a very abstract view we have,
H5Part which handles the macro particles of a simulation. H5Mesh defines the (spatial) geometry of the
computational domain and H5Fields represents scalar and vector filds. (H5Pie = H5{\bf P} art + H5F{\bf i}eld+ H5M{\bf e}sh)
The sample H5Pie
API will be available for C, C++, and Fortran codes.
The common file format will enable groups that
use completely different simulation implementations to transparently share
datasets.
\end{abstract}
\section{Motivation}
The motivation for this undertaking is to create a file format that is
suitable for large-scale parallel simulation codes.
A suitable data format must have the following properties:
it must be a machine-independent binary representation that is
self-describing, easily extensible, language independent, efficient
(both for serial and parallel), and produces files that are seamlessly sharable
between different programs. In the following sections we describe
the motivation for these features and how they can be accomplished
using the proposed implementation.
\subsection{Machine Independence}
Processor architectures use different binary representations
for data. While the IEEE 754 standard has decreased the number of
differing floating point number represenations, byte-order still remains
a source of incompatibility. While it is trivial to byte-swap a file from
a programming standpoint, it creates a number of long-term file management
difficulties for groups that are sharing or maintaining a repository of simulation
data. Given files that store data structures with differently sized elements,
one must know the storage format precisely in order to apply byte-swapping
properly.
HDF5 does not suffer from these problems because the file format is completely
self-describing and the internal binary structures are all machine independent.
The HDF5 library is able to convert data that is stored in any native machine
represenation in the data file into a native binary representation in memory
as part of the reading process with little performance penalty.
\subsection{Language Independence}
The three most common languages used for implementing applications
in the arena of computational sciences are
Fortran, C and C++. The file format and associated API must hide
differences in the binary file-storage conventions of these languages
as well as offering native API bindings for each of these
programming languages.
For instance, Fortran unformatted binary files contain integer fields
at the beginning and the end of each record that describe the length
of the record. The size of these integer tags is usually 32-bits, but some
fortran compiler implementations will use larger tags in order to represent
larger record sizes. C and C++ binary files have no such convention for
record-oriented storage. The language-dependent differences in
binary storage layout conventions
can cause difficulties for scientists who wish to share data files between
Fortran and C/C++ implementations of a code, or with visualization tools
that are primarily written in C/C++. The API bindings and underlying file format
provided by the H5Part API and the underlying HDF5 file format are able to
hide these differences in order to provide symmetric access via all languages.
\subsection{Self-Describing}
The data is accessed by names, for example, one might ask for `the
column of data called $p_x$' -- affording a layer of file-layout independence.
In other words, self-describing data is
not accessed by a position in a file but by name of the datasets. Various attributes
of the data that may be necessary to using it are available. For
example, one can ask ``what are the units of column $p_x$?'.
There are a number of examples of self-describing file formats. Examples include HDF earlier HDF implementations leading up to HDF version 5 and the Unidata NetCDF format. Another
very popular approach is the Self Describing Data Sets (SDDS) \cite{SDDS} although it
is only serial in nature. HDF5 is a complete rewrite of the HDF file format that supports
parallel I/O and offers a much leaner, more flexible interface.
Because it is self-describing, the entire contents of an HDF5 file can be
browsed and even converted to ASCII text, including XML syntax text files,
using the built-in 'h5ls' and 'h5dump'
tools without specific knowledge of the internal file format.
\begin{figure}[htb]
\begin{minipage}[b]{0.5\textwidth}
%\includegraphics[scale=0.095]{./partview1.eps}
%\includegraphics[scale=0.097]{./density70.eps}
\end{minipage}
\caption{color: A common self-describing file format allows different codes to share a common set of visualization and data analysis tools. PartView and AVS/Express, pictured above, are able to read and display contents of an H5Part/HDF5 file written on any machine in any language, regardless of how many processors are used.}
\label{fig:vis}
\end{figure}
The primary advantage of accessing data and its attributes is that one
can then construct more flexible data manipulation tools that are capable
of surviving the natural evolution of file formats. Data formats can be extended
to include additional information without breaking older file readers.
Self-describing data contains all the information
that analysis tools need to manipulate various types of data
correctly. Two examples of such tools using the proposed file format
are shown in Figure ~\ref{fig:vis} As a result, data exchange between different simulations tools is
much simpler, robust and better defined by using self-describing data sets.
\subsection{High Performance}
The HDF5 file format allows data elements to be written to disk in the
native binary representation. The file format stores a description of
the native data representation of the machine that wrote the data so
that it can be automatically translated to the native binary
representation of the machine that reading the data (eg. if the byte
order differs). In contrast to XDR, where the data always gets
translated to/from an intermediate machine-neutral format, the HDF5
data conversion only occurs if the stored data represenation is
different from the native binary representation of the machine that is
reading the file, so there is no performance penalty if the machines
have the compatible binary data formats. [ada: need work] In general, HDF5 offers
performance that is very close to what can be achieved by writing an
ad-hoc machine-dependent binary for F77 unformatted data file.
\subsection{Parallel I/O}
HDF5 also supports parallel I/O capabilities for MPI programs.
The naive approach to writing data from a parallel program is to
write one file per processor. While this is simple to implement and
very efficient on most cluster filesystems, it leads to file management
headaches when it comes the time to analyze the data. One must either
recombine these separate files into a single file or create ponderous
user-interfaces that allow a data analysis application to read from a
directory full of files instead of just one file.
Parallel I/O methods, allow you to write data into a single file from all
of the tasks of a parallel program. The performance is typically lower
than that of writing one-file-per-processor, but it makes data management
much simpler after the program has finished. No additional recombining
steps are required to make the file accessible by vis-tools or for
restarting a simulation using a different number of processors.
Parallel HDF5 uses MPI-I/O for its low-level implementation. The
mechanics of using MPI-I/O are all hidden from the user by our
H5Part file API (the code looks nearly identical to reading/writing the data
from a serial program). While the performance is not as good as
writing one-file-per-processor, we demonstrate that writing files
with Parallel HDF5 is consistently faster than writing the data
in raw/native binary using the MPI-I/O library. This efficiency is
made possible through sophisticated HDF5 tuning directives that
control data alignment and caching within the HDF5 layer.
Therefore, we argue that it would be difficult to match
HDF5 performance even using a home-grown binary file format.
\section{H5Mesh File Organization and API}
\section{H5Field File Organization and API}
\section{H5Part File Organization and API}
The proposed file storage format uses HDF5 for the low-level file
storage and a simple API to provide a high-level interface to that
file format. A programmer can either use the H5Part API to access
the data files or write directly to the file format using some simple
conventions for organizing and naming the objects stored in the
file.
The HDF5 format, its benefits, and its file organization is decribed
at \cite{hdf5hp}. The file format was also adopted by the DOE
ASCI-VIEWS effort, so the library has been tuned and adapted to read
and write data efficiently on large-scale parallel computing
systems. We adopted HDF5 for our file storage needs because it offers
all that is needed as stipulated in the motivation section.
We describe now the H5Part conventions for storing
objects in the HDF5 file as well as some examples of the API.
\subsection{H5Part File Organization}
In order to store Particle Data in the HDF5 file format, we have
formalized the hierarchical arrangement of the datasets and naming
conventions for the groups and associated datasets. The sample H5Part API formally
encodes these conventions in order to provide a simple and uniform
way to access these files from C, C++, and Fortran codes. The API makes
it easier to write very portable data adaptors for visualization tools in order to
expand the number of tools available to access the data. Even so,
anyone can use the HDF5 $h5ls$ utility to examine the organization
of the H5Part files and even write their own HDF5-based interface for reading and writing the
file format. The standards offered by the sample API are completely independent of the
standard for organizing data within the file.
The file format supports the storage of multiple timesteps of
datasets that contain multiple fields. The fields correspond to different properties of
the particles at that particular time step -- for instance,
the 3-dimensional cartesian position of the particles
$(X,Y,Z)$ as well as the 3-dimensional phase of each
particle $(PX,PY,PZ)$. These two degrees of freedom
are organized such that the timesteps are groups (time groups) that are added sequentially
to the root group (``/''). The fields are datasets that are nested within the
time groups. The convention for naming the time group is $Particles<integer>$ where $<integer>$ is a monotonically increasing counter for the number of timesteps stored in the file.
The fields contained within a given time group are simply named for the property of the particle they represent. For instance, the phase of the particle stored in a simulation variable called 'px' is simply named $``px''$. The field names are user-defined and
can be understood automatically by the visualization
tools that read the file. The only other convention is that each time group must contain the same set of fields -- the contents of the fields will change, but the set of names for these fields must remain the same for all timesteps.
The fields can be either integer or real data types. Initially, the file format supports double precision float and 64-bit integers in order to simplify the requirements for file readers, but HDF5 is capable of automatically down-converting to 32-bit data types upon request. The API will be extended accordingly to support these conversions.
Finally, the file, the individual timesteps, and the individual data arrays can contain {\em attributes} that provide additional information about the data. For instance, the datasets can be annotated with attributes containing {\em units} for a given data field, simulation parameters, or code revision information. The {\em attributes} are key-value pairs where the $key$ is a string that is associated with the file, group, or dataset, and the $value$ is either a string, a real value, or an integer associated with that key.
%Visualization and data analysis tools can take advantage of this additional information if they are programmed to recognize it, but less-sophisticated tools can safely ignore it without compromising their ability to read the file format.
% ada: to philosophic for a 3 page paper, although it is very important and of course right!
%The ability to ignore such information is arguably one of the most powerful capabilities of the HDF5 file format. Whereas changes to headers or data layout in conventional, non-self-describing file formats can render an older reader interface useless, one can continuously add new descriptive information to the HDF5 file without having any detrimental effect on readers that were designed to work with older versions of the file format. This provides enormous benefits for the long term maintenance and evolution of the file format.
\section{GENERAL FORM IN PSEUDOCODE}
In Figure \ref{fig:usage} we show the very simple API for writing
data. The API for reading is almost symmetric. It is also worth to
note that there are minimal differences whether one read/write serial
or in parallel. The API consists of a small number of C, C++ and
Fortran functions and will be described elsewhere.
In the parallel case the original domain decomposition can be used or
the data can be decomposed according to the new number of processor
nodes available.
The resulting HDF5 file will contains a simple directory structure that can be navigated using the generic 'h5ls' utility;
\begin{figure}[h!] \label{fig:sbendVect}
\newsavebox{\gogo}
\setbox\gogo=\hbox{%
\begin{minipage}{0.4\textwidth}
\small
\begin{tabbing}
111111\=aaaa\=aaaa\=aaaa\=\kill
\texttt{if(not parallel);}\\
\quad\texttt{filehandle=OpenFile(filename,mode)} \\
\texttt{else}\\
\quad\texttt{filehandle=OpenFile(filename,mode,mpicomm)} \\
\texttt{SetNumberOfParticles(filehandle);}\\
\texttt{loop(step=1,NSteps);}\\
\quad\texttt{SetStep(filehandle,step);}\\
\quad\texttt{WriteData(filehandle,fieldname1,data1);}\\
\centerline{\texttt{{\bf write more data}}}\\
\quad\texttt{WriteData(filehandle,fieldname<n>,data<n>);}\\
\texttt{CloseFile(filehandle);}
\end{tabbing}
\end{minipage}
}
\fbox{\usebox{\gogo}}
\caption{Usage of H5Part in pseudo-code}
\label{fig:usage}
\end{figure}
% \begin{figure}[h!] \label{fig:sbendVect}
% \newsavebox{\gugu}
% \setbox\gugu=\hbox{%
% \begin{minipage}{0.4\textwidth}
% \small
% \begin{tabbing}
% 111111\=aaaa\=aaaa\=aaaa\=\kill
%\texttt{/Particles1/fieldname1 } \\
%\texttt{/Particles1/fieldname2} \\
%\texttt{ . . . } \\
%\texttt{/Particles1/fieldname<n> } \\
%\texttt{/Particles2/fieldname1} \\
%\texttt{ . . .}\\
%\texttt{ /Particles<nsteps>/fieldname<n>}
%\end{tabbing}
%\end{minipage}
%}
%\fbox{\usebox{\gugu}}
%\end{figure}
\vspace{-5mm}
\section{PERFORMANCE}
% [ada] We also have data for 4 procs
% [ada] name for one file per proc
Preliminary performance estimations, looking at global (GD) and local data (LD)
rates, suggests that our HDF5 writing has a very good performance even
with respect to raw mpi, as shown in Table \ref{tab:perf}.
\begin{table}[h!]
\begin{flushleft} \footnotesize
\begin{tabular}{|l|l|l|}
\hline
\bf Mode & \bf GD [MB/s] & \bf LD [MB/s]\\
\hline
mpi-io (one file) & 241 & 3.7 \\
\hline
one file per proc & 1288 & 20 \\
\hline
H5Part/pHDFf5 (one file) & 773 & 12 \\
\hline
\end{tabular}
\end{flushleft}
\caption{\label{tab:perf}{64 IBM SP-3 nodes writing $51e6$ particles (6D). }}
%, each having 6 double-precision floating point fields for 64 timesteps over 3 trials.}}
\end{table}
\vspace{-4mm}
\section{Conclusions and Future Work}
The file format will be extended in the near future to integrate fast bitmap indexing
technology~\cite{DEX} in order to provide accelerated queries of data
stored in the file. With fastbit technolgy, a user can efficiently extract subsets of data
using compound query expressions such
as {\it $(velocity > 1e6)$ AND $(0.4 < phase < 1.0)$}.
%Such a query-driven approach offers advantages over scalable technologies aimed at visualizing ever-larger datasets.
We are also constantly tuning the performance of the parallel data
file format implementation. We will also be porting the H5Part reader
to a wider variety of visualization tools.
%in order to expand the arena
%of tools available for analyzing the stored particle data.
\begin{thebibliography}{9} % Use for 1-9 references
\bibitem{FPAT082}
A. Adelmann, R.D Ryne, C. Siegerist, J. Shalf, "From Visualization to Data Mining With Large Datasets," PAC, 2005.
\bibitem{hdf5hp}
HDF5 Home Page, http://hdf.ncsa.uiuc.edu/HDF5.
\bibitem{SDDS}
Definitions and libraries for SDDS implementation may be found at the link http://www.aps.anl.gov/asd/oag/oagPackages.shtml.
\bibitem{DEX}
K. Stockinger, J. Shalf, W. Bethel, K. Wu. "DEX: Increasing the Capability of Scientific Data Analysis Pipelines by Using Efficient Bitmap Indices to Accelerate Scientific Visualization." Scientific and Statistical Database Management Conference (SDDBM), 2005.
\end{thebibliography}
\end{document}
-217
View File
@@ -1,217 +0,0 @@
%%
%% This file has been developed as a common template for papers
%% destined for electronic production using Adobe Acrobat
%% software for Accelerator Conferences
%%
%% See the JACo Website for more information
%%
%% http://www.cern.ch/accelconf/
%%
% Special thanks to John Jowett and Michel Goossens from CERN and
% Martin Comyn at TRIUMF for their significant contributions to
% this class file over the period 1996 to 2000.
% John Poole
% March 2000
% JAC2001.cls is a modified version of JAC2000.cls to produce indented
% first paragraphs after section, subsection and subsubsection headings.
%
% Martin Comyn April 2001
\def\fileversion{1.2}
\def\filedate{2003/03/10}
\def\docdate {2003/03/10}
\newlength{\dsep}
\newlength{\dwid}
\newlength{\dht}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{JAC2003}[\filedate\space Version \fileversion]
\DeclareOption{acus}
{\setlength{\dwid}{6mm}%
\setlength{\dht}{-18mm}
\setlength{\paperheight}{11in}
\setlength{\paperwidth}{8.5in}
\typeout{Setup for US LETTER PAPER}}
\DeclareOption{aca4}
{\setlength{\dwid}{0mm}%
\setlength{\dht}{0mm}}
\DeclareOption{boxit}
%%
%% This option draws a box on the output text with the correct margins
%%
{\special{!userdict begin /bop-hook{
gsave
newpath
58 55 moveto
58 737 lineto
539 737 lineto
539 55 lineto
closepath
stroke
grestore
}def end}}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ExecuteOptions{aca4}
\ProcessOptions
\LoadClass[10pt]{article}
%%
%% Using Times fonts produces a Uniform, compact document
%% suitable for the Acrobat Software and printable anywhere.
%%
%% In a 'modern' TeX installation
%% e.g TeXLive Version 3 or later (more information on the JACo Website)
%% one can use the following command
%%
\renewcommand{\rmdefault}{ptm}
%%
%% Older installations may require
%% \RequirePackage{times}
%%
\typeout{------------------------------------------------------------------------}
\typeout{LaTeX2e Class file for Accelerator Conference publication for LaTeX2e users}
\typeout{ }
\typeout{Use the boxit option to draw a box on page showing the correct margins}
\typeout{ }
\typeout{Itemize, Enumerate and Description environments are compact versions}
\typeout{------------------------------------------------------------------------}
\typeout{ }
%
% DIMENSION OF TEXT:
\setlength{\textheight}{241mm}
\setlength{\textwidth}{170mm}
\setlength{\topmargin}{23mm}
\addtolength{\topmargin}{\dht}
\setlength{\oddsidemargin}{20mm}
\setlength{\evensidemargin}{20mm}
\setlength{\columnsep}{5mm}
\hoffset -25.4mm
\voffset -25.4mm
\columnseprule 0pt % Width of rule between columns.
% Use Michel Goossens' dense lists
% Prevent infinite loops
\let\Otemize =\itemize
\let\Onumerate =\enumerate
\let\Oescription =\description
% Zero the vertical spacing parameters
\def\Nospacing{\itemsep=0pt\topsep=0pt\partopsep=0pt\parskip=0pt\parsep=0pt}
% Redefine the environments in terms of the original values
\newenvironment{Itemize}{\Otemize\Nospacing}{\endlist}
\newenvironment{Enumerate}{\Onumerate\Nospacing}{\endlist}
\newenvironment{Description}{\Oescription\Nospacing}{\endlist}
\renewcommand{\topfraction}{.95}
\renewcommand{\bottomfraction}{.95}
\renewcommand{\textfraction}{0.1}
\renewcommand{\floatpagefraction}{0.8}
\def\@oddhead{}\def\@evenhead{}
\def\@oddfoot{}
\def\@evenfoot{\@oddfoot}
%-----------------------------------------------------------------------
% We acknowledge the borrowing of the clever part of
% Steven Gildea's definition of \section
% from geophysi.sty.
%
% \section is tricky because we want to both support \section* and have
% the section title uppercased.
\def\section{\secdef\@sectionb\@sections}
\def\@sectionb[#1]#2{\@sections{#2}}
\def\@sections#1{\@startsection {section}{1}{\z@}
{2.8ex plus 0.8ex minus .1ex}{1.5ex plus .2ex}
{\large\bf\boldmath\centering}{\uppercase{#1}}}
% Should there be any problem with this, we can revert to the following
% but then the onus is on the user to type the argument of \section in
% uppercase in the input file.
%
%\def\section{\@startsection {section}{1}{\z@}{2.8ex plus 0.8ex minus.1ex}
% {1.5ex plus .2ex}{\large\bf\boldmath\centering}}
\def\subsection{\@startsection{subsection}{2}{\z@}{2.6ex plus .8ex minus
.17ex}{1.2ex plus .17ex}{\large\it}}
\def\subsubsection{\@startsection{subsubsection}{3}{\parindent}
{2.5ex plus .7ex minus .17ex}{-1em}{\normalsize\bf}}
\def\paragraph{\@startsection
{paragraph}{4}{\z@}{2.5ex plus .7ex minus .17ex}{-1em}{\normalsize\it}}
\def\subparagraph{\@startsection
{subparagraph}{4}{\parindent}{2.25ex plus .7ex minus
.17ex}{-1em}{\normalsize\bf}}
\setcounter{secnumdepth}{0}
% This definition of \maketitle taken from article.sty, and has been
% somewhat modified.
\def\maketitle{\par
\begingroup
\def\thefootnote{\fnsymbol{footnote}}
\def\@makefnmark{\hbox
to 5pt{$^{\@thefnmark}$\hss}}
\twocolumn[\@maketitle]
\@thanks
\endgroup
\setcounter{footnote}{0}
\let\maketitle\relax
\let\@maketitle\relax
\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
\newlength{\titleblockheight} % so user can change it if need be
\setlength{\titleblockheight}{3.5cm}
\def\@maketitle{\vbox to \titleblockheight {\hsize\textwidth
\linewidth\hsize \vskip 3pt \centering
{\Large\bf \@title \par}
\vskip 2em % Vertical space after title.
{\large\begin{tabular}[t]{@{}c@{}}\@author \end{tabular}\par}
\vfil}}
% The \copyrightspace command is used to produce a blank space in the first
% column where a copyright notice may go. It works by producing a
% blank footnote of the appropriate size. Note that it should appear
% after any \footnote commands that produce footnotes for the first
% column. Adjusted to leave just 1cm.
\def\copyrightspace{\footnotetext[0]{\mbox{}\vrule height 1cm width 0pt}}
\def\abstract{\subsection*{Abstract}}
\def\endabstract{\par}
% Redefine to use smaller fonts
\def\thebibliography#1{\setlength{\itemsep}{0pt}\setlength{\parsep}{0pt}
\section*{REFERENCES\@mkboth
{REFERENCES}{REFERENCES}}\small\list
{[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
\advance\leftmargin\labelsep
\usecounter{enumi}}
\def\newblock{\hskip .11em plus .33em minus .07em}
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}
\let\endthebibliography=\endlist
\twocolumn
\sloppy
\parindent 1em
\leftmargini 2em
\leftmargin\leftmargini
\leftmarginv .5em
\leftmarginvi .5em
\flushbottom
%-----------------------------------------------------------------------
-14
View File
@@ -1,14 +0,0 @@
#################################################
##BEGIN OF makefile "makefile" - using the gnu-compiler g++
##This file is used by the Make command.
###################################################
FILE=H5xxx
all: $(FILE).tex
latex $(FILE).tex
#bibtex $(FILE)
dvips -j0 $(FILE).dvi -o $(FILE).ps
# dvips $(FILE).dvi -o $(FILE).ps -x 1200 -O 10mm,15mm
clean:
rm *~ *.bbl *.aux *.blg *.log *.dvi *.ps
-54
View File
@@ -1,54 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>H5Part, Logical Internal HDF5 File Layout</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<div id="maincenter">
<font face="arial,helvetica"><h1>H5Part: Logical Internal HDF5 File Layout</h1></font>
<P>
HDF5 is extremely flexible in the sense that it allows the user to define a higher level data model to describe domain-specific data relationships. This flexibility however makes it necessary to develop an agreement on the logical layout of the data. The H5Part data model consists of Particle groups corresponding to the simulation time steps, each with seven datasets corresponding to x, px, y, py, z, pz, id for each particle. Attributes can be added to the file and to the datasets.
</P>
<center><img src="layout.png"></center>
<PRE>
HDF5 "parttest.h5" {
GROUP "/" {
GROUP "Particles#0" {
DATASET "id" {
DATATYPE H5T_STD_I64LE
DATASPACE SIMPLE { ( 10 ) / ( 10 ) }
}
DATASET "px" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 10 ) / ( 10 ) }
}
DATASET "py" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 10 ) / ( 10 ) }
}
DATASET "pz" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 10 ) / ( 10 ) }
}
DATASET "x" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 10 ) / ( 10 ) }
}
DATASET "y" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 10 ) / ( 10 ) }
}
DATASET "z" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 10 ) / ( 10 ) }
}
}
</PRE>
<P>
See <a href="http://www-vis.lbl.gov/Publications/2002/hdf5.pdf">hdf5.pdf</a> for an introduction on the use of HDF5.
</P>
</div>
+2
View File
@@ -0,0 +1,2 @@
EXTRA_DIST = \
Doxyfile doxyfooter
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-146
View File
@@ -1,146 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: H5Part.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>H5Part.h</h1><a href="H5Part_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _H5Part_H_</span>
<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _H5Part_H_</span>
<a name="l00003"></a>00003 <span class="preprocessor"></span>
<a name="l00004"></a>00004 <span class="preprocessor">#include &lt;hdf5.h&gt;</span>
<a name="l00005"></a>00005 <span class="preprocessor">#ifdef PARALLEL_IO</span>
<a name="l00006"></a>00006 <span class="preprocessor"></span><span class="preprocessor">#include &lt;mpi.h&gt;</span>
<a name="l00007"></a>00007 <span class="preprocessor">#endif</span>
<a name="l00008"></a>00008 <span class="preprocessor"></span>
<a name="l00016"></a><a class="code" href="structH5PartFile.html">00016</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structH5PartFile.html">H5PartFile</a> {
<a name="l00017"></a><a class="code" href="structH5PartFile.html#o0">00017</a> hid_t <a class="code" href="structH5PartFile.html#o0">file</a>;
<a name="l00018"></a><a class="code" href="structH5PartFile.html#o1">00018</a> <span class="keywordtype">int</span> <a class="code" href="structH5PartFile.html#o1">timestep</a>;
<a name="l00019"></a>00019
<a name="l00020"></a><a class="code" href="structH5PartFile.html#o2">00020</a> hid_t <a class="code" href="structH5PartFile.html#o2">timegroup</a>;
<a name="l00021"></a><a class="code" href="structH5PartFile.html#o3">00021</a> hid_t <a class="code" href="structH5PartFile.html#o3">properties</a>;
<a name="l00022"></a><a class="code" href="structH5PartFile.html#o4">00022</a> hsize_t <a class="code" href="structH5PartFile.html#o4">nparticles</a>;
<a name="l00023"></a><a class="code" href="structH5PartFile.html#o5">00023</a> hid_t <a class="code" href="structH5PartFile.html#o5">shape</a>;
<a name="l00024"></a><a class="code" href="structH5PartFile.html#o6">00024</a> <span class="keywordtype">unsigned</span> <a class="code" href="structH5PartFile.html#o6">mode</a>;
<a name="l00025"></a><a class="code" href="structH5PartFile.html#o7">00025</a> <span class="keywordtype">int</span> <a class="code" href="structH5PartFile.html#o7">maxstep</a>;
<a name="l00026"></a><a class="code" href="structH5PartFile.html#o8">00026</a> hid_t <a class="code" href="structH5PartFile.html#o8">xfer_prop</a>,<a class="code" href="structH5PartFile.html#o9">create_prop</a>,<a class="code" href="structH5PartFile.html#o10">access_prop</a>;
<a name="l00027"></a><a class="code" href="structH5PartFile.html#o12">00027</a> hid_t <a class="code" href="structH5PartFile.html#o11">diskshape</a>,<a class="code" href="structH5PartFile.html#o12">memshape</a>; <span class="comment">/* for parallel I/O (this is on-disk) H5S_ALL </span>
<a name="l00028"></a>00028 <span class="comment"> if serial I/O */</span>
<a name="l00029"></a><a class="code" href="structH5PartFile.html#o13">00029</a> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="structH5PartFile.html#o13">viewstart</a>,<a class="code" href="structH5PartFile.html#o14">viewend</a>; <span class="comment">/* -1 if no view is available: A "view" looks at a subset of the data. */</span>
<a name="l00030"></a>00030
<a name="l00031"></a>00031 <span class="preprocessor">#ifdef PARALLEL_IO</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> *pnparticles; <span class="comment">/* the number of particles in each processor.</span>
<a name="l00033"></a>00033 <span class="comment"> With respect to the "VIEW", these numbers</span>
<a name="l00034"></a>00034 <span class="comment"> can be regarded as non-overlapping subsections</span>
<a name="l00035"></a>00035 <span class="comment"> of the particle array stored in the file.</span>
<a name="l00036"></a>00036 <span class="comment"> So they can be used to compute the offset of</span>
<a name="l00037"></a>00037 <span class="comment"> the view for each processor */</span>
<a name="l00038"></a>00038 MPI_Comm comm;
<a name="l00039"></a>00039 <span class="keywordtype">int</span> nprocs,myproc;
<a name="l00040"></a>00040 <span class="preprocessor">#endif</span>
<a name="l00041"></a>00041 <span class="preprocessor"></span>}<a class="code" href="structH5PartFile.html">H5PartFile</a>;
<a name="l00042"></a>00042
<a name="l00043"></a><a class="code" href="H5Part_8h.html#a0">00043</a> <span class="preprocessor">#define H5PART_READ 0x01</span>
<a name="l00044"></a><a class="code" href="H5Part_8h.html#a1">00044</a> <span class="preprocessor"></span><span class="preprocessor">#define H5PART_WRITE 0x02</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span>
<a name="l00046"></a>00046 <span class="comment">/*========== File Opening/Closing ===============*/</span>
<a name="l00047"></a>00047 <span class="preprocessor">#ifdef PARALLEL_IO</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">#include &lt;mpi.h&gt;</span>
<a name="l00049"></a>00049 <a class="code" href="structH5PartFile.html">H5PartFile</a> *<a class="code" href="H5Part_8c.html#a3">H5PartOpenFileParallel</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename,
<a name="l00050"></a>00050 <span class="keywordtype">unsigned</span> flags,
<a name="l00051"></a>00051 MPI_Comm communicator);
<a name="l00052"></a>00052 <span class="preprocessor">#endif</span>
<a name="l00053"></a><a class="code" href="H5Part_8h.html#a2">00053</a> <span class="preprocessor"></span><span class="preprocessor">#define H5PartOpenFileSerial(x,y) H5PartOpenFile(x,y)</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span>
<a name="l00055"></a>00055 <a class="code" href="structH5PartFile.html">H5PartFile</a> *<a class="code" href="H5Part_8c.html#a4">H5PartOpenFile</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="comment">/* name of datafile */</span>
<a name="l00056"></a>00056 <span class="keywordtype">unsigned</span> flags); <span class="comment">/* H5PART_READ | H5PART_WRITE */</span>
<a name="l00057"></a>00057 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a5">H5PartFileIsValid</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f);
<a name="l00058"></a>00058 <span class="keywordtype">void</span> <a class="code" href="H5Part_8c.html#a6">H5PartCloseFile</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f);
<a name="l00059"></a>00059
<a name="l00060"></a>00060
<a name="l00061"></a>00061 <span class="comment">/*============== File Writing Functions ==================== */</span>
<a name="l00062"></a>00062 <span class="keywordtype">void</span> <a class="code" href="H5Part_8c.html#a7">H5PartSetNumParticles</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">long</span> <span class="keywordtype">long</span> nparticles);
<a name="l00063"></a>00063 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a8">H5PartWriteDataFloat64</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,<span class="keywordtype">double</span> *array);
<a name="l00064"></a>00064 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a9">H5PartWriteDataInt64</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,<span class="keywordtype">long</span> <span class="keywordtype">long</span> *array);
<a name="l00065"></a>00065
<a name="l00066"></a>00066 <span class="comment">/*================== File Reading Routines =================*/</span>
<a name="l00067"></a>00067 <span class="keywordtype">void</span> <a class="code" href="H5Part_8c.html#a24">H5PartSetStep</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f, <span class="comment">/* file handle */</span>
<a name="l00068"></a>00068 <span class="keywordtype">int</span> step); <span class="comment">/* current timestep to select (0 to n-1) */</span>
<a name="l00069"></a>00069 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a27">H5PartGetNumSteps</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f);
<a name="l00070"></a>00070 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a28">H5PartGetNumDatasets</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f);
<a name="l00071"></a>00071 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a29">H5PartGetDatasetName</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">int</span> index,<span class="keywordtype">char</span> *name,<span class="keywordtype">int</span> maxlen);
<a name="l00072"></a>00072 <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="H5Part_8c.html#a33">H5PartGetNumParticles</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f);
<a name="l00073"></a>00073 <span class="keywordtype">void</span> <a class="code" href="H5Part_8c.html#a34">H5PartSetView</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">long</span> <span class="keywordtype">long</span> start,<span class="keywordtype">long</span> <span class="keywordtype">long</span> end);
<a name="l00074"></a><a class="code" href="H5Part_8h.html#a3">00074</a> <span class="preprocessor">#define H5PartResetView(f) H5PartSetView(f,-1,-1)</span>
<a name="l00075"></a><a class="code" href="H5Part_8h.html#a4">00075</a> <span class="preprocessor"></span><span class="preprocessor">#define H5PartHasView(f) ((f-&gt;viewstart&lt;0||f-&gt;viewend&lt;0)?0:1)</span>
<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a35">H5PartGetView</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">long</span> <span class="keywordtype">long</span> *start,<span class="keywordtype">long</span> <span class="keywordtype">long</span> *end);
<a name="l00077"></a>00077 <span class="keywordtype">void</span> <a class="code" href="H5Part_8c.html#a36">H5PartSetCanonicalView</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f);
<a name="l00078"></a>00078
<a name="l00079"></a>00079 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a37">H5PartReadDataFloat64</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,
<a name="l00080"></a>00080 <span class="keywordtype">char</span> *name, <span class="comment">/* name of the array to read</span>
<a name="l00081"></a>00081 <span class="comment"> "x"=position in x direction (y,z)</span>
<a name="l00082"></a>00082 <span class="comment"> "vx"=velocity in x directio (y,z)</span>
<a name="l00083"></a>00083 <span class="comment"> "px"=position in x dir (y,z) */</span>
<a name="l00084"></a>00084 <span class="keywordtype">double</span> *array); <span class="comment">/* array to read data into */</span>
<a name="l00085"></a>00085 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a38">H5PartReadDataInt64</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,
<a name="l00086"></a>00086 <span class="keywordtype">char</span> *name, <span class="comment">/* name of the array to read</span>
<a name="l00087"></a>00087 <span class="comment"> "x"=position in x direction (y,z)</span>
<a name="l00088"></a>00088 <span class="comment"> "vx"=velocity in x directio (y,z)</span>
<a name="l00089"></a>00089 <span class="comment"> "px"=position in x dir (y,z) */</span>
<a name="l00090"></a>00090 <span class="keywordtype">long</span> <span class="keywordtype">long</span> *array); <span class="comment">/* array to read data into */</span>
<a name="l00091"></a>00091
<a name="l00092"></a>00092 <span class="comment">/* the following is a back-door for extensions to the data writing */</span>
<a name="l00093"></a>00093 <span class="preprocessor">#if 0</span>
<a name="l00094"></a>00094 <span class="preprocessor"></span><span class="keywordtype">int</span> H5PartReadData(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,<span class="keywordtype">void</span> *array,hid_t type);
<a name="l00095"></a>00095 <span class="keywordtype">int</span> H5PartWriteData(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,<span class="keywordtype">void</span> *array,hid_t type);
<a name="l00096"></a>00096 <span class="preprocessor">#endif</span>
<a name="l00097"></a>00097 <span class="preprocessor"></span><span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a39">H5PartReadParticleStep</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f, <span class="comment">/* filehandle */</span>
<a name="l00098"></a>00098 <span class="keywordtype">int</span> step, <span class="comment">/* selects timestep to read from*/</span>
<a name="l00099"></a>00099 <span class="keywordtype">double</span> *x,<span class="keywordtype">double</span> *y,<span class="keywordtype">double</span> *z, <span class="comment">/* particle positions */</span>
<a name="l00100"></a>00100 <span class="keywordtype">double</span> *px,<span class="keywordtype">double</span> *py,<span class="keywordtype">double</span> *pz, <span class="comment">/* particle momenta */</span>
<a name="l00101"></a>00101 <span class="keywordtype">long</span> <span class="keywordtype">long</span> *<span class="keywordtype">id</span>); <span class="comment">/* and phase */</span>
<a name="l00102"></a>00102 <span class="comment">/**********==============Attributes Interface============***************/</span>
<a name="l00103"></a>00103 <span class="comment">/* currently there is file attributes: Attributes bound to the file</span>
<a name="l00104"></a>00104 <span class="comment"> and step attributes which are bound to the current timestep. You </span>
<a name="l00105"></a>00105 <span class="comment"> must set the timestep explicitly before writing the attributes (just</span>
<a name="l00106"></a>00106 <span class="comment"> as you must do when you write a new dataset. Currently there are no</span>
<a name="l00107"></a>00107 <span class="comment"> attributes that are bound to a particular data array, but this could</span>
<a name="l00108"></a>00108 <span class="comment"> easily be done if required.</span>
<a name="l00109"></a>00109 <span class="comment">*/</span>
<a name="l00110"></a>00110 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a12">H5PartWriteStepAttrib</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,
<a name="l00111"></a>00111 hid_t type,<span class="keywordtype">void</span> *attrib,<span class="keywordtype">int</span> nelem);
<a name="l00112"></a>00112 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a14">H5PartWriteFileAttrib</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,
<a name="l00113"></a>00113 hid_t type,<span class="keywordtype">void</span> *attrib,<span class="keywordtype">int</span> nelem);
<a name="l00114"></a>00114 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a13">H5PartWriteAttrib</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,
<a name="l00115"></a>00115 hid_t type,<span class="keywordtype">void</span> *attrib,<span class="keywordtype">int</span> nelem); <span class="comment">/* this should be deprecated */</span>
<a name="l00116"></a>00116
<a name="l00117"></a>00117 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a10">H5PartWriteFileAttribString</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,
<a name="l00118"></a>00118 <span class="keywordtype">char</span> *attrib);
<a name="l00119"></a>00119 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a11">H5PartWriteStepAttribString</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,
<a name="l00120"></a>00120 <span class="keywordtype">char</span> *attrib);
<a name="l00121"></a>00121 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a16">H5PartGetNumStepAttribs</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f); <span class="comment">/* for current filestep */</span>
<a name="l00122"></a>00122 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a17">H5PartGetNumFileAttribs</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f);
<a name="l00123"></a>00123 <span class="keywordtype">void</span> <a class="code" href="H5Part_8c.html#a19">H5PartGetStepAttribInfo</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">int</span> idx,
<a name="l00124"></a>00124 <span class="keywordtype">char</span> *name,size_t maxnamelen,
<a name="l00125"></a>00125 hid_t *type,<span class="keywordtype">int</span> *nelem);
<a name="l00126"></a>00126 <span class="keywordtype">void</span> <a class="code" href="H5Part_8c.html#a20">H5PartGetFileAttribInfo</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">int</span> idx,
<a name="l00127"></a>00127 <span class="keywordtype">char</span> *name,size_t maxnamelen,
<a name="l00128"></a>00128 hid_t *type,<span class="keywordtype">int</span> *nelem);
<a name="l00129"></a>00129 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a21">H5PartReadStepAttrib</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,<span class="keywordtype">void</span> *data);
<a name="l00130"></a>00130 <span class="keywordtype">void</span> <a class="code" href="H5Part_8c.html#a22">H5PartReadAttrib</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,<span class="keywordtype">void</span> *data);
<a name="l00131"></a>00131 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a23">H5PartReadFileAttrib</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *name,<span class="keywordtype">void</span> *data);
<a name="l00132"></a>00132
<a name="l00133"></a>00133
<a name="l00134"></a>00134 <span class="comment">/**************** File Stashing Interfaces *************************/</span>
<a name="l00135"></a>00135 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a42">H5PartStashFile</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">char</span> *filename);
<a name="l00136"></a>00136 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a43">H5PartUnstashFile</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f, <span class="keywordtype">char</span> *filename, <span class="keywordtype">char</span> *outputpath); <span class="comment">/* outputpath can be null for cwd */</span>
<a name="l00137"></a>00137 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a44">H5PartGetNumStashFiles</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f);
<a name="l00138"></a>00138 <span class="keywordtype">int</span> <a class="code" href="H5Part_8c.html#a45">H5PartFileGetStashFileName</a>(<a class="code" href="structH5PartFile.html">H5PartFile</a> *f,<span class="keywordtype">int</span> nameindex,<span class="keywordtype">char</span> *filename,<span class="keywordtype">int</span> maxnamelen);
<a name="l00139"></a>00139
<a name="l00140"></a>00140
<a name="l00141"></a>00141 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
File diff suppressed because it is too large Load Diff
-16
View File
@@ -1,16 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: Class List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindexHL" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>H5Part Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="structH5IO__getname__t.html">H5IO_getname_t</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td class="indexvalue"></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
-309
View File
@@ -1,309 +0,0 @@
BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
font-family: Geneva, Arial, Helvetica, sans-serif;
}
BODY,TD {
font-size: 90%;
}
H1 {
text-align: center;
font-size: 160%;
}
H2 {
font-size: 120%;
}
H3 {
font-size: 100%;
}
CAPTION { font-weight: bold }
DIV.qindex {
width: 100%;
background-color: #eeeeff;
border: 1px solid #b0b0b0;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
DIV.nav {
width: 100%;
background-color: #eeeeff;
border: 1px solid #b0b0b0;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
DIV.navtab {
background-color: #eeeeff;
border: 1px solid #b0b0b0;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
TD.navtab {
font-size: 70%;
}
A.qindex {
text-decoration: none;
font-weight: bold;
color: #1A419D;
}
A.qindex:visited {
text-decoration: none;
font-weight: bold;
color: #1A419D
}
A.qindex:hover {
text-decoration: none;
background-color: #ddddff;
}
A.qindexHL {
text-decoration: none;
font-weight: bold;
background-color: #6666cc;
color: #ffffff;
border: 1px double #9295C2;
}
A.qindexHL:hover {
text-decoration: none;
background-color: #6666cc;
color: #ffffff;
}
A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
A.el { text-decoration: none; font-weight: bold }
A.elRef { font-weight: bold }
A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
A.codeRef:link { font-weight: normal; color: #0000FF}
A.codeRef:visited { font-weight: normal; color: #0000FF}
A:hover { text-decoration: none; background-color: #f2f2ff }
DL.el { margin-left: -1cm }
.fragment {
font-family: Fixed, monospace;
font-size: 95%;
}
PRE.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
margin-top: 4px;
margin-bottom: 4px;
margin-left: 2px;
margin-right: 8px;
padding-left: 6px;
padding-right: 6px;
padding-top: 4px;
padding-bottom: 4px;
}
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
TD.md { background-color: #F4F4FB; font-weight: bold; }
TD.mdPrefix {
background-color: #F4F4FB;
color: #606060;
font-size: 80%;
}
TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
DIV.groupHeader {
margin-left: 16px;
margin-top: 12px;
margin-bottom: 6px;
font-weight: bold;
}
DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
BODY {
background: white;
color: black;
margin-right: 20px;
margin-left: 20px;
}
TD.indexkey {
background-color: #eeeeff;
font-weight: bold;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
TD.indexvalue {
background-color: #eeeeff;
font-style: italic;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
TR.memlist {
background-color: #f0f0f0;
}
P.formulaDsp { text-align: center; }
IMG.formulaDsp { }
IMG.formulaInl { vertical-align: middle; }
SPAN.keyword { color: #008000 }
SPAN.keywordtype { color: #604020 }
SPAN.keywordflow { color: #e08000 }
SPAN.comment { color: #800000 }
SPAN.preprocessor { color: #806020 }
SPAN.stringliteral { color: #002080 }
SPAN.charliteral { color: #008080 }
.mdTable {
border: 1px solid #868686;
background-color: #F4F4FB;
}
.mdRow {
padding: 8px 10px;
}
.mdescLeft {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.mdescRight {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.memItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplParams {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
color: #606060;
background-color: #FAFAFA;
font-size: 80%;
}
.search { color: #003399;
font-weight: bold;
}
FORM.search {
margin-bottom: 0px;
margin-top: 0px;
}
INPUT.search { font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #eeeeff;
}
TD.tiny { font-size: 75%;
}
a {
color: #252E78;
}
a:visited {
color: #3D2185;
}
.dirtab { padding: 4px;
border-collapse: collapse;
border: 1px solid #b0b0b0;
}
TH.dirtab { background: #eeeeff;
font-weight: bold;
}
HR { height: 1px;
border: none;
border-top: 1px solid black;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

-17
View File
@@ -1,17 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: File Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindexHL" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>H5Part File List</h1>Here is a list of all files with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="H5Part_8c.html">H5Part.c</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="H5Part_8h.html">H5Part.h</a> <a href="H5Part_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="H5PartF_8c.html">H5PartF.c</a></td><td class="indexvalue"></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
-35
View File
@@ -1,35 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
Here is a list of all class members with links to the classes they belong to:
<p>
<ul>
<li>access_prop
: <a class="el" href="structH5PartFile.html#o10">H5PartFile</a><li>count
: <a class="el" href="structH5IO__getname__t.html#o1">H5IO_getname_t</a><li>create_prop
: <a class="el" href="structH5PartFile.html#o9">H5PartFile</a><li>diskshape
: <a class="el" href="structH5PartFile.html#o11">H5PartFile</a><li>file
: <a class="el" href="structH5PartFile.html#o0">H5PartFile</a><li>index
: <a class="el" href="structH5IO__getname__t.html#o0">H5IO_getname_t</a><li>maxstep
: <a class="el" href="structH5PartFile.html#o7">H5PartFile</a><li>memshape
: <a class="el" href="structH5PartFile.html#o12">H5PartFile</a><li>mode
: <a class="el" href="structH5PartFile.html#o6">H5PartFile</a><li>name
: <a class="el" href="structH5IO__getname__t.html#o2">H5IO_getname_t</a><li>nparticles
: <a class="el" href="structH5PartFile.html#o4">H5PartFile</a><li>properties
: <a class="el" href="structH5PartFile.html#o3">H5PartFile</a><li>shape
: <a class="el" href="structH5PartFile.html#o5">H5PartFile</a><li>timegroup
: <a class="el" href="structH5PartFile.html#o2">H5PartFile</a><li>timestep
: <a class="el" href="structH5PartFile.html#o1">H5PartFile</a><li>viewend
: <a class="el" href="structH5PartFile.html#o14">H5PartFile</a><li>viewstart
: <a class="el" href="structH5PartFile.html#o13">H5PartFile</a><li>xfer_prop
: <a class="el" href="structH5PartFile.html#o8">H5PartFile</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
-35
View File
@@ -1,35 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: Class Members - Variables</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_vars.html">Variables</a></div>
<p>
<ul>
<li>access_prop
: <a class="el" href="structH5PartFile.html#o10">H5PartFile</a><li>count
: <a class="el" href="structH5IO__getname__t.html#o1">H5IO_getname_t</a><li>create_prop
: <a class="el" href="structH5PartFile.html#o9">H5PartFile</a><li>diskshape
: <a class="el" href="structH5PartFile.html#o11">H5PartFile</a><li>file
: <a class="el" href="structH5PartFile.html#o0">H5PartFile</a><li>index
: <a class="el" href="structH5IO__getname__t.html#o0">H5IO_getname_t</a><li>maxstep
: <a class="el" href="structH5PartFile.html#o7">H5PartFile</a><li>memshape
: <a class="el" href="structH5PartFile.html#o12">H5PartFile</a><li>mode
: <a class="el" href="structH5PartFile.html#o6">H5PartFile</a><li>name
: <a class="el" href="structH5IO__getname__t.html#o2">H5IO_getname_t</a><li>nparticles
: <a class="el" href="structH5PartFile.html#o4">H5PartFile</a><li>properties
: <a class="el" href="structH5PartFile.html#o3">H5PartFile</a><li>shape
: <a class="el" href="structH5PartFile.html#o5">H5PartFile</a><li>timegroup
: <a class="el" href="structH5PartFile.html#o2">H5PartFile</a><li>timestep
: <a class="el" href="structH5PartFile.html#o1">H5PartFile</a><li>viewend
: <a class="el" href="structH5PartFile.html#o14">H5PartFile</a><li>viewstart
: <a class="el" href="structH5PartFile.html#o13">H5PartFile</a><li>xfer_prop
: <a class="el" href="structH5PartFile.html#o8">H5PartFile</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
-107
View File
@@ -1,107 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindexHL" href="globals.html">File&nbsp;Members</a></div>
<div class="qindex"><a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
<div class="qindex"><a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_h">h</a></div>
<p>
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>f_h5pt_close
: <a class="el" href="H5PartF_8c.html#a34">H5PartF.c</a><li>f_h5pt_getdatasetname
: <a class="el" href="H5PartF_8c.html#a43">H5PartF.c</a><li>f_h5pt_getfileattribinfo
: <a class="el" href="H5PartF_8c.html#a60">H5PartF.c</a><li>f_h5pt_getndatasets
: <a class="el" href="H5PartF_8c.html#a41">H5PartF.c</a><li>f_h5pt_getnfileattribs
: <a class="el" href="H5PartF_8c.html#a58">H5PartF.c</a><li>f_h5pt_getnpoints
: <a class="el" href="H5PartF_8c.html#a42">H5PartF.c</a><li>f_h5pt_getnstepattribs
: <a class="el" href="H5PartF_8c.html#a57">H5PartF.c</a><li>f_h5pt_getnsteps
: <a class="el" href="H5PartF_8c.html#a40">H5PartF.c</a><li>f_h5pt_getnumpoints()
: <a class="el" href="H5PartF_8c.html#a44">H5PartF.c</a><li>f_h5pt_getstepattribinfo
: <a class="el" href="H5PartF_8c.html#a59">H5PartF.c</a><li>f_h5pt_getview()
: <a class="el" href="H5PartF_8c.html#a48">H5PartF.c</a><li>f_h5pt_hasview
: <a class="el" href="H5PartF_8c.html#a47">H5PartF.c</a><li>f_h5pt_isvalid
: <a class="el" href="H5PartF_8c.html#a35">H5PartF.c</a><li>f_h5pt_openr
: <a class="el" href="H5PartF_8c.html#a32">H5PartF.c</a><li>f_h5pt_openr_par
: <a class="el" href="H5PartF_8c.html#a2">H5PartF.c</a><li>f_h5pt_openw
: <a class="el" href="H5PartF_8c.html#a33">H5PartF.c</a><li>f_h5pt_openw_par
: <a class="el" href="H5PartF_8c.html#a3">H5PartF.c</a><li>f_h5pt_readdata
: <a class="el" href="H5PartF_8c.html#a19">H5PartF.c</a><li>f_h5pt_readdata_i8
: <a class="el" href="H5PartF_8c.html#a50">H5PartF.c</a><li>f_h5pt_readdata_r8
: <a class="el" href="H5PartF_8c.html#a49">H5PartF.c</a><li>f_h5pt_readfileattrib
: <a class="el" href="H5PartF_8c.html#a62">H5PartF.c</a><li>f_h5pt_readstepattrib
: <a class="el" href="H5PartF_8c.html#a61">H5PartF.c</a><li>f_h5pt_resetview
: <a class="el" href="H5PartF_8c.html#a46">H5PartF.c</a><li>f_h5pt_setnpoints
: <a class="el" href="H5PartF_8c.html#a36">H5PartF.c</a><li>f_h5pt_setstep
: <a class="el" href="H5PartF_8c.html#a37">H5PartF.c</a><li>f_h5pt_setview
: <a class="el" href="H5PartF_8c.html#a45">H5PartF.c</a><li>f_h5pt_writedata_i8
: <a class="el" href="H5PartF_8c.html#a39">H5PartF.c</a><li>f_h5pt_writedata_r8
: <a class="el" href="H5PartF_8c.html#a38">H5PartF.c</a><li>f_h5pt_writefileattrib_i8
: <a class="el" href="H5PartF_8c.html#a52">H5PartF.c</a><li>f_h5pt_writefileattrib_r8
: <a class="el" href="H5PartF_8c.html#a51">H5PartF.c</a><li>f_h5pt_writefileattrib_string
: <a class="el" href="H5PartF_8c.html#a53">H5PartF.c</a><li>f_h5pt_writestepattrib_i8
: <a class="el" href="H5PartF_8c.html#a55">H5PartF.c</a><li>f_h5pt_writestepattrib_r8
: <a class="el" href="H5PartF_8c.html#a54">H5PartF.c</a><li>f_h5pt_writestepattrib_string
: <a class="el" href="H5PartF_8c.html#a56">H5PartF.c</a></ul>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
<li>H5IO_getname_t
: <a class="el" href="H5Part_8c.html#a1">H5Part.c</a><li>H5IOgetname()
: <a class="el" href="H5Part_8c.html#a26">H5Part.c</a><li>H5NameExists()
: <a class="el" href="H5Part_8c.html#a40">H5Part.c</a><li>H5PART_READ
: <a class="el" href="H5Part_8h.html#a0">H5Part.h</a><li>H5PART_WRITE
: <a class="el" href="H5Part_8h.html#a1">H5Part.h</a><li>H5PartAttribcounter()
: <a class="el" href="H5Part_8c.html#a15">H5Part.c</a><li>H5PartCloseFile()
: <a class="el" href="H5Part_8h.html#a8">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a6">H5Part.c</a><li>H5PartDScounter()
: <a class="el" href="H5Part_8c.html#a25">H5Part.c</a><li>H5PartFile
: <a class="el" href="H5Part_8h.html#a5">H5Part.h</a><li>H5PartFileGetStashFileName()
: <a class="el" href="H5Part_8h.html#a38">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a45">H5Part.c</a><li>H5PartFileHasName()
: <a class="el" href="H5Part_8c.html#a41">H5Part.c</a><li>H5PartFileIsValid()
: <a class="el" href="H5Part_8h.html#a7">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a5">H5Part.c</a><li>H5PartGetDatasetName()
: <a class="el" href="H5Part_8h.html#a15">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a29">H5Part.c</a><li>H5PartGetDiskShape()
: <a class="el" href="H5Part_8c.html#a30">H5Part.c</a><li>H5PartGetFileAttribInfo()
: <a class="el" href="H5Part_8h.html#a31">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a20">H5Part.c</a><li>H5PartGetFirstDS()
: <a class="el" href="H5Part_8c.html#a32">H5Part.c</a><li>H5PartGetMemShape()
: <a class="el" href="H5Part_8c.html#a31">H5Part.c</a><li>H5PartGetNumDatasets()
: <a class="el" href="H5Part_8h.html#a14">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a28">H5Part.c</a><li>H5PartGetNumFileAttribs()
: <a class="el" href="H5Part_8h.html#a29">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a17">H5Part.c</a><li>H5PartGetNumParticles()
: <a class="el" href="H5Part_8h.html#a16">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a33">H5Part.c</a><li>H5PartGetNumStashFiles()
: <a class="el" href="H5Part_8h.html#a37">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a44">H5Part.c</a><li>H5PartGetNumStepAttribs()
: <a class="el" href="H5Part_8h.html#a28">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a16">H5Part.c</a><li>H5PartGetNumSteps()
: <a class="el" href="H5Part_8h.html#a13">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a27">H5Part.c</a><li>H5PartGetStepAttribInfo()
: <a class="el" href="H5Part_8h.html#a30">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a19">H5Part.c</a><li>H5PartGetView()
: <a class="el" href="H5Part_8h.html#a18">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a35">H5Part.c</a><li>H5PartHasView
: <a class="el" href="H5Part_8h.html#a4">H5Part.h</a><li>H5PartIOcounter()
: <a class="el" href="H5Part_8c.html#a2">H5Part.c</a><li>H5PartNormType()
: <a class="el" href="H5Part_8c.html#a18">H5Part.c</a><li>H5PartOpenFile()
: <a class="el" href="H5Part_8h.html#a6">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a4">H5Part.c</a><li>H5PartOpenFileParallel()
: <a class="el" href="H5Part_8c.html#a3">H5Part.c</a><li>H5PartOpenFileSerial
: <a class="el" href="H5Part_8h.html#a2">H5Part.h</a><li>H5PartReadAttrib()
: <a class="el" href="H5Part_8h.html#a33">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a22">H5Part.c</a><li>H5PartReadDataFloat64()
: <a class="el" href="H5Part_8h.html#a20">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a37">H5Part.c</a><li>H5PartReadDataInt64()
: <a class="el" href="H5Part_8h.html#a21">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a38">H5Part.c</a><li>H5PartReadFileAttrib()
: <a class="el" href="H5Part_8h.html#a34">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a23">H5Part.c</a><li>H5PartReadParticleStep()
: <a class="el" href="H5Part_8h.html#a22">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a39">H5Part.c</a><li>H5PartReadStepAttrib()
: <a class="el" href="H5Part_8h.html#a32">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a21">H5Part.c</a><li>H5PartResetView
: <a class="el" href="H5Part_8h.html#a3">H5Part.h</a><li>H5PartSetCanonicalView()
: <a class="el" href="H5Part_8h.html#a19">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a36">H5Part.c</a><li>H5PartSetNumParticles()
: <a class="el" href="H5Part_8h.html#a9">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a7">H5Part.c</a><li>H5PartSetStep()
: <a class="el" href="H5Part_8h.html#a12">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a24">H5Part.c</a><li>H5PartSetView()
: <a class="el" href="H5Part_8h.html#a17">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a34">H5Part.c</a><li>H5PartStashFile()
: <a class="el" href="H5Part_8h.html#a35">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a42">H5Part.c</a><li>H5PartUnstashFile()
: <a class="el" href="H5Part_8h.html#a36">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a43">H5Part.c</a><li>H5PartWriteAttrib()
: <a class="el" href="H5Part_8h.html#a25">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a13">H5Part.c</a><li>H5PartWriteDataFloat64()
: <a class="el" href="H5Part_8h.html#a10">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a8">H5Part.c</a><li>H5PartWriteDataInt64()
: <a class="el" href="H5Part_8h.html#a11">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a9">H5Part.c</a><li>H5PartWriteFileAttrib()
: <a class="el" href="H5Part_8h.html#a24">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a14">H5Part.c</a><li>H5PartWriteFileAttribString()
: <a class="el" href="H5Part_8h.html#a26">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a10">H5Part.c</a><li>H5PartWriteStepAttrib()
: <a class="el" href="H5Part_8h.html#a23">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a12">H5Part.c</a><li>H5PartWriteStepAttribString()
: <a class="el" href="H5Part_8h.html#a27">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a11">H5Part.c</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
-59
View File
@@ -1,59 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindexHL" href="globals.html">File&nbsp;Members</a></div>
<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindexHL" href="globals_defs.html">Defines</a></div>
<div class="qindex"><a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_h">h</a></div>
<p>
<p>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>f_h5pt_close
: <a class="el" href="H5PartF_8c.html#a34">H5PartF.c</a><li>f_h5pt_getdatasetname
: <a class="el" href="H5PartF_8c.html#a43">H5PartF.c</a><li>f_h5pt_getfileattribinfo
: <a class="el" href="H5PartF_8c.html#a60">H5PartF.c</a><li>f_h5pt_getndatasets
: <a class="el" href="H5PartF_8c.html#a41">H5PartF.c</a><li>f_h5pt_getnfileattribs
: <a class="el" href="H5PartF_8c.html#a58">H5PartF.c</a><li>f_h5pt_getnpoints
: <a class="el" href="H5PartF_8c.html#a42">H5PartF.c</a><li>f_h5pt_getnstepattribs
: <a class="el" href="H5PartF_8c.html#a57">H5PartF.c</a><li>f_h5pt_getnsteps
: <a class="el" href="H5PartF_8c.html#a40">H5PartF.c</a><li>f_h5pt_getstepattribinfo
: <a class="el" href="H5PartF_8c.html#a59">H5PartF.c</a><li>f_h5pt_hasview
: <a class="el" href="H5PartF_8c.html#a47">H5PartF.c</a><li>f_h5pt_isvalid
: <a class="el" href="H5PartF_8c.html#a35">H5PartF.c</a><li>f_h5pt_openr
: <a class="el" href="H5PartF_8c.html#a32">H5PartF.c</a><li>f_h5pt_openr_par
: <a class="el" href="H5PartF_8c.html#a2">H5PartF.c</a><li>f_h5pt_openw
: <a class="el" href="H5PartF_8c.html#a33">H5PartF.c</a><li>f_h5pt_openw_par
: <a class="el" href="H5PartF_8c.html#a3">H5PartF.c</a><li>f_h5pt_readdata
: <a class="el" href="H5PartF_8c.html#a19">H5PartF.c</a><li>f_h5pt_readdata_i8
: <a class="el" href="H5PartF_8c.html#a50">H5PartF.c</a><li>f_h5pt_readdata_r8
: <a class="el" href="H5PartF_8c.html#a49">H5PartF.c</a><li>f_h5pt_readfileattrib
: <a class="el" href="H5PartF_8c.html#a62">H5PartF.c</a><li>f_h5pt_readstepattrib
: <a class="el" href="H5PartF_8c.html#a61">H5PartF.c</a><li>f_h5pt_resetview
: <a class="el" href="H5PartF_8c.html#a46">H5PartF.c</a><li>f_h5pt_setnpoints
: <a class="el" href="H5PartF_8c.html#a36">H5PartF.c</a><li>f_h5pt_setstep
: <a class="el" href="H5PartF_8c.html#a37">H5PartF.c</a><li>f_h5pt_setview
: <a class="el" href="H5PartF_8c.html#a45">H5PartF.c</a><li>f_h5pt_writedata_i8
: <a class="el" href="H5PartF_8c.html#a39">H5PartF.c</a><li>f_h5pt_writedata_r8
: <a class="el" href="H5PartF_8c.html#a38">H5PartF.c</a><li>f_h5pt_writefileattrib_i8
: <a class="el" href="H5PartF_8c.html#a52">H5PartF.c</a><li>f_h5pt_writefileattrib_r8
: <a class="el" href="H5PartF_8c.html#a51">H5PartF.c</a><li>f_h5pt_writefileattrib_string
: <a class="el" href="H5PartF_8c.html#a53">H5PartF.c</a><li>f_h5pt_writestepattrib_i8
: <a class="el" href="H5PartF_8c.html#a55">H5PartF.c</a><li>f_h5pt_writestepattrib_r8
: <a class="el" href="H5PartF_8c.html#a54">H5PartF.c</a><li>f_h5pt_writestepattrib_string
: <a class="el" href="H5PartF_8c.html#a56">H5PartF.c</a></ul>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
<li>H5PART_READ
: <a class="el" href="H5Part_8h.html#a0">H5Part.h</a><li>H5PART_WRITE
: <a class="el" href="H5Part_8h.html#a1">H5Part.h</a><li>H5PartHasView
: <a class="el" href="H5Part_8h.html#a4">H5Part.h</a><li>H5PartOpenFileSerial
: <a class="el" href="H5Part_8h.html#a2">H5Part.h</a><li>H5PartResetView
: <a class="el" href="H5Part_8h.html#a3">H5Part.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
-97
View File
@@ -1,97 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindexHL" href="globals.html">File&nbsp;Members</a></div>
<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindexHL" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
<div class="qindex"><a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_h">h</a></div>
<p>
<p>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>f_h5pt_close()
: <a class="el" href="H5PartF_8c.html#a34">H5PartF.c</a><li>f_h5pt_getdatasetname()
: <a class="el" href="H5PartF_8c.html#a43">H5PartF.c</a><li>f_h5pt_getfileattribinfo()
: <a class="el" href="H5PartF_8c.html#a60">H5PartF.c</a><li>f_h5pt_getndatasets()
: <a class="el" href="H5PartF_8c.html#a41">H5PartF.c</a><li>f_h5pt_getnfileattribs()
: <a class="el" href="H5PartF_8c.html#a58">H5PartF.c</a><li>f_h5pt_getnpoints()
: <a class="el" href="H5PartF_8c.html#a42">H5PartF.c</a><li>f_h5pt_getnstepattribs()
: <a class="el" href="H5PartF_8c.html#a57">H5PartF.c</a><li>f_h5pt_getnsteps()
: <a class="el" href="H5PartF_8c.html#a40">H5PartF.c</a><li>f_h5pt_getnumpoints()
: <a class="el" href="H5PartF_8c.html#a44">H5PartF.c</a><li>f_h5pt_getstepattribinfo()
: <a class="el" href="H5PartF_8c.html#a59">H5PartF.c</a><li>f_h5pt_getview()
: <a class="el" href="H5PartF_8c.html#a48">H5PartF.c</a><li>f_h5pt_hasview()
: <a class="el" href="H5PartF_8c.html#a47">H5PartF.c</a><li>f_h5pt_isvalid()
: <a class="el" href="H5PartF_8c.html#a35">H5PartF.c</a><li>f_h5pt_openr()
: <a class="el" href="H5PartF_8c.html#a32">H5PartF.c</a><li>f_h5pt_openw()
: <a class="el" href="H5PartF_8c.html#a33">H5PartF.c</a><li>f_h5pt_readdata_i8()
: <a class="el" href="H5PartF_8c.html#a50">H5PartF.c</a><li>f_h5pt_readdata_r8()
: <a class="el" href="H5PartF_8c.html#a49">H5PartF.c</a><li>f_h5pt_readfileattrib()
: <a class="el" href="H5PartF_8c.html#a62">H5PartF.c</a><li>f_h5pt_readstepattrib()
: <a class="el" href="H5PartF_8c.html#a61">H5PartF.c</a><li>f_h5pt_resetview()
: <a class="el" href="H5PartF_8c.html#a46">H5PartF.c</a><li>f_h5pt_setnpoints()
: <a class="el" href="H5PartF_8c.html#a36">H5PartF.c</a><li>f_h5pt_setstep()
: <a class="el" href="H5PartF_8c.html#a37">H5PartF.c</a><li>f_h5pt_setview()
: <a class="el" href="H5PartF_8c.html#a45">H5PartF.c</a><li>f_h5pt_writedata_i8()
: <a class="el" href="H5PartF_8c.html#a39">H5PartF.c</a><li>f_h5pt_writedata_r8()
: <a class="el" href="H5PartF_8c.html#a38">H5PartF.c</a><li>f_h5pt_writefileattrib_i8()
: <a class="el" href="H5PartF_8c.html#a52">H5PartF.c</a><li>f_h5pt_writefileattrib_r8()
: <a class="el" href="H5PartF_8c.html#a51">H5PartF.c</a><li>f_h5pt_writefileattrib_string()
: <a class="el" href="H5PartF_8c.html#a53">H5PartF.c</a><li>f_h5pt_writestepattrib_i8()
: <a class="el" href="H5PartF_8c.html#a55">H5PartF.c</a><li>f_h5pt_writestepattrib_r8()
: <a class="el" href="H5PartF_8c.html#a54">H5PartF.c</a><li>f_h5pt_writestepattrib_string()
: <a class="el" href="H5PartF_8c.html#a56">H5PartF.c</a></ul>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
<li>H5IOgetname()
: <a class="el" href="H5Part_8c.html#a26">H5Part.c</a><li>H5NameExists()
: <a class="el" href="H5Part_8c.html#a40">H5Part.c</a><li>H5PartAttribcounter()
: <a class="el" href="H5Part_8c.html#a15">H5Part.c</a><li>H5PartCloseFile()
: <a class="el" href="H5Part_8h.html#a8">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a6">H5Part.c</a><li>H5PartDScounter()
: <a class="el" href="H5Part_8c.html#a25">H5Part.c</a><li>H5PartFileGetStashFileName()
: <a class="el" href="H5Part_8h.html#a38">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a45">H5Part.c</a><li>H5PartFileHasName()
: <a class="el" href="H5Part_8c.html#a41">H5Part.c</a><li>H5PartFileIsValid()
: <a class="el" href="H5Part_8h.html#a7">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a5">H5Part.c</a><li>H5PartGetDatasetName()
: <a class="el" href="H5Part_8h.html#a15">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a29">H5Part.c</a><li>H5PartGetDiskShape()
: <a class="el" href="H5Part_8c.html#a30">H5Part.c</a><li>H5PartGetFileAttribInfo()
: <a class="el" href="H5Part_8h.html#a31">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a20">H5Part.c</a><li>H5PartGetFirstDS()
: <a class="el" href="H5Part_8c.html#a32">H5Part.c</a><li>H5PartGetMemShape()
: <a class="el" href="H5Part_8c.html#a31">H5Part.c</a><li>H5PartGetNumDatasets()
: <a class="el" href="H5Part_8h.html#a14">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a28">H5Part.c</a><li>H5PartGetNumFileAttribs()
: <a class="el" href="H5Part_8h.html#a29">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a17">H5Part.c</a><li>H5PartGetNumParticles()
: <a class="el" href="H5Part_8h.html#a16">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a33">H5Part.c</a><li>H5PartGetNumStashFiles()
: <a class="el" href="H5Part_8h.html#a37">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a44">H5Part.c</a><li>H5PartGetNumStepAttribs()
: <a class="el" href="H5Part_8h.html#a28">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a16">H5Part.c</a><li>H5PartGetNumSteps()
: <a class="el" href="H5Part_8h.html#a13">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a27">H5Part.c</a><li>H5PartGetStepAttribInfo()
: <a class="el" href="H5Part_8h.html#a30">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a19">H5Part.c</a><li>H5PartGetView()
: <a class="el" href="H5Part_8h.html#a18">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a35">H5Part.c</a><li>H5PartIOcounter()
: <a class="el" href="H5Part_8c.html#a2">H5Part.c</a><li>H5PartNormType()
: <a class="el" href="H5Part_8c.html#a18">H5Part.c</a><li>H5PartOpenFile()
: <a class="el" href="H5Part_8h.html#a6">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a4">H5Part.c</a><li>H5PartOpenFileParallel()
: <a class="el" href="H5Part_8c.html#a3">H5Part.c</a><li>H5PartReadAttrib()
: <a class="el" href="H5Part_8h.html#a33">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a22">H5Part.c</a><li>H5PartReadDataFloat64()
: <a class="el" href="H5Part_8h.html#a20">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a37">H5Part.c</a><li>H5PartReadDataInt64()
: <a class="el" href="H5Part_8h.html#a21">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a38">H5Part.c</a><li>H5PartReadFileAttrib()
: <a class="el" href="H5Part_8h.html#a34">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a23">H5Part.c</a><li>H5PartReadParticleStep()
: <a class="el" href="H5Part_8h.html#a22">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a39">H5Part.c</a><li>H5PartReadStepAttrib()
: <a class="el" href="H5Part_8h.html#a32">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a21">H5Part.c</a><li>H5PartSetCanonicalView()
: <a class="el" href="H5Part_8h.html#a19">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a36">H5Part.c</a><li>H5PartSetNumParticles()
: <a class="el" href="H5Part_8h.html#a9">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a7">H5Part.c</a><li>H5PartSetStep()
: <a class="el" href="H5Part_8h.html#a12">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a24">H5Part.c</a><li>H5PartSetView()
: <a class="el" href="H5Part_8h.html#a17">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a34">H5Part.c</a><li>H5PartStashFile()
: <a class="el" href="H5Part_8h.html#a35">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a42">H5Part.c</a><li>H5PartUnstashFile()
: <a class="el" href="H5Part_8h.html#a36">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a43">H5Part.c</a><li>H5PartWriteAttrib()
: <a class="el" href="H5Part_8h.html#a25">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a13">H5Part.c</a><li>H5PartWriteDataFloat64()
: <a class="el" href="H5Part_8h.html#a10">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a8">H5Part.c</a><li>H5PartWriteDataInt64()
: <a class="el" href="H5Part_8h.html#a11">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a9">H5Part.c</a><li>H5PartWriteFileAttrib()
: <a class="el" href="H5Part_8h.html#a24">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a14">H5Part.c</a><li>H5PartWriteFileAttribString()
: <a class="el" href="H5Part_8h.html#a26">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a10">H5Part.c</a><li>H5PartWriteStepAttrib()
: <a class="el" href="H5Part_8h.html#a23">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a12">H5Part.c</a><li>H5PartWriteStepAttribString()
: <a class="el" href="H5Part_8h.html#a27">H5Part.h</a>, <a class="el" href="H5Part_8c.html#a11">H5Part.c</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
-19
View File
@@ -1,19 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindexHL" href="globals.html">File&nbsp;Members</a></div>
<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindexHL" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
<p>
<ul>
<li>H5IO_getname_t
: <a class="el" href="H5Part_8c.html#a1">H5Part.c</a><li>H5PartFile
: <a class="el" href="H5Part_8h.html#a5">H5Part.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
-14
View File
@@ -1,14 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: Main Page</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindexHL" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>H5Part Documentation</h1>
<p>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
@@ -1,16 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: Member List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>H5IO_getname_t Member List</h1>This is the complete list of members for <a class="el" href="structH5IO__getname__t.html">H5IO_getname_t</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structH5IO__getname__t.html#o1">count</a></td><td><a class="el" href="structH5IO__getname__t.html">H5IO_getname_t</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5IO__getname__t.html#o0">index</a></td><td><a class="el" href="structH5IO__getname__t.html">H5IO_getname_t</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5IO__getname__t.html#o2">name</a></td><td><a class="el" href="structH5IO__getname__t.html">H5IO_getname_t</a></td><td></td></tr>
</table><hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
@@ -1,97 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: H5IO_getname_t Struct Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>H5IO_getname_t Struct Reference</h1><!-- doxytag: class="H5IO_getname_t" --><a href="structH5IO__getname__t-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5IO__getname__t.html#o0">index</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5IO__getname__t.html#o1">count</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5IO__getname__t.html#o2">name</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
H5IO_getname_t: Private
<p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="o1"></a><!-- doxytag: member="H5IO_getname_t::count" ref="o1" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int <a class="el" href="structH5IO__getname__t.html#o1">H5IO_getname_t::count</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o0"></a><!-- doxytag: member="H5IO_getname_t::index" ref="o0" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int <a class="el" href="structH5IO__getname__t.html#o0">H5IO_getname_t::index</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o2"></a><!-- doxytag: member="H5IO_getname_t::name" ref="o2" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">char* <a class="el" href="structH5IO__getname__t.html#o2">H5IO_getname_t::name</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="H5Part_8c.html">H5Part.c</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
@@ -1,28 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: Member List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>H5PartFile Member List</h1>This is the complete list of members for <a class="el" href="structH5PartFile.html">H5PartFile</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o10">access_prop</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o9">create_prop</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o11">diskshape</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o0">file</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o7">maxstep</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o12">memshape</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o6">mode</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o4">nparticles</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o3">properties</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o5">shape</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o2">timegroup</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o1">timestep</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o14">viewend</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o13">viewstart</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structH5PartFile.html#o8">xfer_prop</a></td><td><a class="el" href="structH5PartFile.html">H5PartFile</a></td><td></td></tr>
</table><hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
-399
View File
@@ -1,399 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>H5Part: H5PartFile Struct Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>H5PartFile Struct Reference</h1><!-- doxytag: class="H5PartFile" --><code>#include &lt;<a class="el" href="H5Part_8h-source.html">H5Part.h</a>&gt;</code>
<p>
<a href="structH5PartFile-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">hid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o0">file</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o1">timestep</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">hid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o2">timegroup</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">hid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o3">properties</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">hsize_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o4">nparticles</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">hid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o5">shape</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o6">mode</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o7">maxstep</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">hid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o8">xfer_prop</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">hid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o9">create_prop</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">hid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o10">access_prop</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">hid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o11">diskshape</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">hid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o12">memshape</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">long long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o13">viewstart</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">long long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structH5PartFile.html#o14">viewend</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
/struct H5PartFile: This is an essentially opaque datastructure that acts as the filehandle for all practical purposes. It is created by <a class="el" href="H5Part_8c.html#a4">H5PartOpenFile&lt;xx&gt;()</a> and destroyed by <a class="el" href="H5Part_8c.html#a6">H5PartCloseFile()</a>.
<p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="o10"></a><!-- doxytag: member="H5PartFile::access_prop" ref="o10" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">hid_t <a class="el" href="structH5PartFile.html#o10">H5PartFile::access_prop</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o9"></a><!-- doxytag: member="H5PartFile::create_prop" ref="o9" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">hid_t <a class="el" href="structH5PartFile.html#o9">H5PartFile::create_prop</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o11"></a><!-- doxytag: member="H5PartFile::diskshape" ref="o11" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">hid_t <a class="el" href="structH5PartFile.html#o11">H5PartFile::diskshape</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o0"></a><!-- doxytag: member="H5PartFile::file" ref="o0" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">hid_t <a class="el" href="structH5PartFile.html#o0">H5PartFile::file</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o7"></a><!-- doxytag: member="H5PartFile::maxstep" ref="o7" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int <a class="el" href="structH5PartFile.html#o7">H5PartFile::maxstep</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o12"></a><!-- doxytag: member="H5PartFile::memshape" ref="o12" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">hid_t <a class="el" href="structH5PartFile.html#o12">H5PartFile::memshape</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o6"></a><!-- doxytag: member="H5PartFile::mode" ref="o6" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">unsigned <a class="el" href="structH5PartFile.html#o6">H5PartFile::mode</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o4"></a><!-- doxytag: member="H5PartFile::nparticles" ref="o4" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">hsize_t <a class="el" href="structH5PartFile.html#o4">H5PartFile::nparticles</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o3"></a><!-- doxytag: member="H5PartFile::properties" ref="o3" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">hid_t <a class="el" href="structH5PartFile.html#o3">H5PartFile::properties</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o5"></a><!-- doxytag: member="H5PartFile::shape" ref="o5" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">hid_t <a class="el" href="structH5PartFile.html#o5">H5PartFile::shape</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o2"></a><!-- doxytag: member="H5PartFile::timegroup" ref="o2" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">hid_t <a class="el" href="structH5PartFile.html#o2">H5PartFile::timegroup</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o1"></a><!-- doxytag: member="H5PartFile::timestep" ref="o1" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int <a class="el" href="structH5PartFile.html#o1">H5PartFile::timestep</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o14"></a><!-- doxytag: member="H5PartFile::viewend" ref="o14" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">long long <a class="el" href="structH5PartFile.html#o14">H5PartFile::viewend</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o13"></a><!-- doxytag: member="H5PartFile::viewstart" ref="o13" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">long long <a class="el" href="structH5PartFile.html#o13">H5PartFile::viewstart</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<a class="anchor" name="o8"></a><!-- doxytag: member="H5PartFile::xfer_prop" ref="o8" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">hid_t <a class="el" href="structH5PartFile.html#o8">H5PartFile::xfer_prop</a> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
</td>
</tr>
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="H5Part_8h-source.html">H5Part.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 31 11:52:45 2006 for H5Part by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
-606
View File
@@ -1,606 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>H5Part, the C/C++ API</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<!--#include virtual="/include/topIncludes.html"-->
<div id="maincenter">
<h1>The C/C++ Application Programming Interface (API)</h1>
<UL>
<LI><a href="#Opening">Opening, Closing, and Validating Datafiles</a>
<LI><a href="#SetStep">Setting the Simulation Timestep</a>
<LI><a href="#SetNumParticles">Setting the Number of Particles</a>
<LI><a href="#Writing">Writing Datasets</a>
<LI><a href="#ReadingNumTimeSteps">Reading the Number of Time Steps</a>
<LI><a href="#ReadingNumParticles">Reading the Number of Particles</a>
<LI><a href="#Reading">Reading Datasets</a>
<LI><a href="#DatasetsInfo">Reading the Number and the Names of Datasets</a>
<LI><a href="#AttributesInfo">Attributes Interface</a>
<LI><a href="#WriteAttribs">Writing Additional Attributes</a>
<LI><a href="#ReadAttribs">Reading Attributes</a>
</UL>
<br>
<a href="ReferencePages/index.html">Reference Manual (Doxygen)</a>
<br>
<hr>
<a name="Opening"><h2>Opening Datafiles</h2></a>
<P>
Just like the familiar <code>FILE*</code> type for C stdio operations, all
H5Part file operations require a file handle. The type of this handle is
<code>(H5PartFile*)</code>.
<br>
<code>H5PartOpenFile()</code> is
used to open a serial file and
<code>HDFPartOpenFileParallel()</code> is used to open a file for
Parallel I/O (in an MPI program).
After you open the file handle you can use the same set of
subroutines for operations on the file regardless of whether the
file is a parallel or serial I/O file.
The libraries manage all of this internally.<p>
</P>
<b>C Prototypes</b><br>
<P>
<b>Serial File</b><br>
<code>H5PartFile *H5PartOpenFile(const char *filename, unsigned
accessmode);</code><br>
<b>Parallel File</b><br>
<code>H5PartFile *H5PartOpenFileParallel(char *filename,int
accessmode,MPI_Comm communicator);</code><br>
<DT><i>filename</i>: </DT><DD>The name of the IEEEIO data file to
open. The typical extension for these files is <i>.h5</i></DD>
<DT><i>accessmode</i>: </DT><DD>The accessmode for the file. This is
one of 2 different access modes<br>
<code>H5PART_READ</code> : Opens a file in read-only mode.</DT><br>
<code>H5PART_WRITE</code> : Opens a file in write-only mode.
If the
file does not exist, it will be created. If it does
exist, it will be
truncated.
<DT><i>communicator</i>: </DT>
<DD>This argument is only available if the program has been
compiled with the <code>PARALLEL_IO</code> C-preprocessor flag
defined. It is used to pass in the communicator that will be
used for all collective I/O operations that target the same
file on disk.</DD>
<DT><i>Returns</i>:</DT><DD>A new filehandle with an open file or NULL if error.</DD>
</DL>
</P>
<br><b>Example Use</b><br>
<pre>
#include &lt H5Part.h &gt
. . . code . . .
/* Open an HDF5 file for writing */
H5PartFile *writer = H5PartOpenFile("datafileout.h5",H5PART_WRITE);
/* Open an HDF5 file for Parallel I/O */
H5PartFile *writer = H5PartOpenFileParallel("datafileout.h5",H5PART_WRITE,MPI_COMM_WORLD);
/* open HDF5 file for reading */
H5PartFile *reader = H5PartOpenFile("datafilein.h5",H5PART_READ);
/* open HDF5 file for parallel reads */
H5PartFile *reader = H5PartOpenFileParallel("datafilein.h5",H5PART_READ,MPI_COMM_WORLD);
. . . more code . . .
</pre> <br>
<hr>
<h2>Closing Datafiles</h2>
<P>
To close the file, you simply use H5PartCloseFile() for both
parallel and serial files. You must call H5PartCloseFile() on any
file descriptor created by H5PartFileOpen() regardless of
whether the file turns out to be valid or not.
</P>
<b>C Prototypes</b><br>
<P>
<code>void H5PartCloseFile(H5PartFile *fileID);</code>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
H5PartOpenFile() or H5PartOpenFileParallel().</DD>
<DT><i>Returns</i>:</DT><DD>void.</DD>
</DL>
</P>
<br><b>Example Use</b><br>
<pre>
#include &lt H5Part.h &gt
H5PartFile *file;
... code ...
file=H5PartOpenFileParallel("parttest.h5",H5PART_WRITE,comm);
... more code ...
H5PartCloseFile(file);
</pre>
<br>
<hr>
<h2>Validating Datafiles</h2>
<P>
You can test if the file was opened successfully using the
H5PartFileIsValid() function. It returns 1 if valid, 0 if invalid.<p>
</P>
<b>C Prototype</b><br>
<P>
<code>int H5PartFileIsValid(H5PartFile *fileID);</code>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
H5PartOpenFile() or H5PartOpenFileParallel().</DD>
<DT><i>Returns</i>:</DT><DD>1 if valid, 0 if invalid.</DD>
</DL>
</P>
<br><b>Example Use</b><br>
<P>
Here is an example of validating a newly opened file. Even if
the file is invalid, you must use H5PartCloseFile() to reclaim
the file handle.
</P>
<pre>
#include &lt H5Part.h &gt
. . . code . . .
H5PartFile *fileID = H5PartOpenFile("datafileout.h5",H5PART_WRITE);
if(!H5PartFileIsValid(fileID)){
puts("The file you specified does not exist or is not in a
readable format");
H5PartClose(fileID); /* must reclaim fileID even if file is invalid */
. . . do other cleanup . . .
}
. . . more code . . .
</pre><br>
<hr>
<a name="SetStep">
<h2>Setting the Timestep</h2>
</a>
<P>
When writing data to a file the current time step must be set (even if there is only one). In a file with N time steps, the steps are numbered from 0 to N-1.
</P>
<b>C Prototype</b><br>
<P>
<code>void H5PartSetStep((H5PartFile *fileID,int step);</code>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
H5PartOpenFile() or H5PartOpenFileParallel().</DD>
<DT><i>step</i>: </DT><DD>An integer time step.
</DD>
<DT><i>Returns</i>: </DT><DD>void.</DD>
</DL>
<br><b>Example Use</b><br>
</P>
<pre>
#include &lt H5Part.h &gt
H5PartFile *fileID;
int timeStep;
....
H5PartSetStep(fileID,timeStep);
....
</pre>
<hr>
<a name="SetNumParticles">
</a>
<h2>Setting the Number of Particles</h2>
<P>
H5PartSetNumParticles: This function's sole purpose is to
prevent needless creation of new HDF5 DataSpace handles if
the number of particles is invariant throughout the sim.
That's its only reason for existence. After you call this
subroutine, all subsequent operations will assume this
number of particles will be written.
</P>
<b>C Prototype</b><br>
<P>
<code>void H5PartSetNumParticles(H5PartFile *fileID,long long nparticles);</code>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
H5PartOpenFile() or H5PartOpenFileParallel().</DD>
<DT><i>nparticles</i>: </DT><DD>A long long integer specifying the number of particles.
</DD>
<DT><i>Returns</i>: </DT><DD>void.</DD>
</DL>
</P>
<br><b>Example Use</b><br>
<pre>
#include &lt H5Part.h &gt
H5PartFile *fileID;
long long nparticles;
....
H5PartSetStep(fileID,nparticles);
....
</pre>
<hr>
<a name="Writing">
<h2>Writing Datasets</h2>
</a>
<P>
After setting the number of particles with
<a href="#SetNumParticles">H5PartSetNumParticles()</a>
and the current timestep using
<a href="#SetStep">H5PartSetStep()</a>, you can start
writing datasets into the file. Each dataset has a name
associated with it (chosen by the user) in order to facilitate
later retrieval. The writing routines also implicitly store
the datatype of the array so that the array can be
reconstructed properly on other systems with incompatible type
representations. The data is committed to disk before the
routine returns. All data that is written after setting the
timestep is associated with that timestep. While the number of
particles can change for each timestep, you cannot change the
number of particles in the middle of a given timestep.
</P>
<b>C Prototypes</b><br>
<P>
<code>int H5PartWriteDataFloat64(H5PartFile *fileID,char
*name,double *array);</code></br>
<code>int H5PartWriteDataInt64(H5PartFile *fileID,char
*name,double *array);</code>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
<a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>name</i>: </DT><DD>A null-terminated string for the
name of the array. When retrieving datasets from disk,
you ask for them by name. There are no restrictions on
naming of arrays, but it is useful to arrive at some common
naming convention when sharing data with other groups.</DD>
<DT><i>array</i>: </DT><DD>A buffer containing an array of
particle data to commit to disk. The datatype for
elements in the buffer is implicit in the name of the
subroutine call.</DD>
<DT><i>Returns</i>: </DT><DD>1 on success, 0 on failure.</DD>
</DL>
</P>
<br><b>Example Use</b><br>
<pre>
#include &lt H5Part.h &gt
H5PartFile *fileID;
double *x,*y,*z;
int timeStep;
long long nparticles;
...
H5PartSetStep(fileID,timeStep); /* must set the current timestep in file */
H5PartSetNumParticles(fileID,nparticles); /* then set number of particles to store */
/* now write different tuples of data into this timestep of the file */
H5PartWriteDataFloat64(fileID,"x",x);
H5PartWriteDataFloat64(fileID,"y",y);
H5PartWriteDataFloat64(file,"z",z);
..
</pre>
<hr>
<a name="ReadingNumTimeSteps">
<h2>Reading the Number of Time Steps</h2>
</a>
<P>
This reads the number of datasteps that are
currently stored in the datafile.
It works for both reading and writing of files, but is probably
only typically used when you are reading.
</P>
<b>C Prototype</b><br>
<P>
<code>int H5PartGetNumSteps (H5PartFile *fileID);</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by <a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>Returns</i>: </DT><DD>The number of timesteps currently stored in the file.
</DL>
</P>
<hr>
<a name="ReadingNumParticles">
<h2>Reading the Number of Particles</h2>
</a>
<P>
This reads the number of particles that are
currently stored in the current time step.
It will arbitrarily select a timestep if you haven't
already set the timestep with H5PartSetStep().
</P>
<b>C Prototype</b><br>
<P>
<code>long long H5PartGetNumParticles (H5PartFile *fileID);</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by <a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>Returns</i>: </DT><DD>The number of particles in current timestep.
</DL>
</P>
<br><b>Example Use</b><br>
<pre>
#include &lt H5Part.h &gt
H5PartFile *fileID;
int timeStep;
long long nparticles;
H5PartSetStep(fileID,0);
nparticles=H5PartGetNumParticles(fileID);
...
</pre>
<hr>
<a name="Reading">
<h2>Reading Datasets</h2>
</a>
<P>
After setting the time step and getting the number of particles to allocate the data arrays, you can start to read the data.
</P>
<b>C Prototypes</b><br>
<P>
<code>int H5PartReadDataFloat64(H5PartFile *fileID,char *name,double *array);</code><br>
<code>int H5PartReadDataInt64(H5PartFile *fileID,char *name,long long *array);</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
<a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>name</i>: </DT><DD>A null-terminated string for the
name of the array. When retrieving datasets from disk,
you ask for them by name. There are no restrictions on
naming of arrays, but it is useful to arrive at some common
naming convention when sharing data with other groups.</DD>
<DT><i>array</i>: </DT><DD>A buffer to which the particle data will be read.i
The datatype for
elements in the buffer is implicit in the name of the
subroutine call.</DD>
<DT><i>Returns</i>: </DT><DD>1 on success, 0 on failure.</DD>
</DL>
</P>
<br><b>Example Use</b><br>
<pre>
#include &lt H5Part.h &gt
H5PartFile *fileID;
double *x,*y,*z;
int timeStep;
long long nparticles;
H5PartSetStep(fileID,0);
nparticles=H5PartGetNumParticles(fileID);
...
H5PartReadDataFloat64(file,"x",x);
H5PartReadDataFloat64(file,"y",y);
H5PartReadDataFloat64(file,"z",z);
...
</pre>
<hr>
<a name="DatasetsInfo"><h2>Reading the Number and Names of Datasets</h2></a>
<P>
H5Part provides funtions to find out how many datasets are stored at a particular timestep
and what their names are if you don't know what they are a-priori.
</P>
<b>C Prototypes</b><br>
<P>
<code>int H5PartGetNumDatasets(H5PartFile *fileID);</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
<a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>Returns</i>: </DT><DD>The number of datasets.</DD>
</DL>
</P>
<P>
<code>int H5PartGetDatasetName(H5PartFile *fileID,int index,char *name,int maxlen);</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
<a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>index</i>:</DT><DD> integer specifying the index of the dataset. If the number of datasets is
nds, the range of index is 0 to nds-1.</DD>
<DT><i>name</i>:</DT><DD> A null-terminated string for the name of the dataset.</DD>
<DT><i>maxlen</i>:</DT><DD> An integer specifying the maximum length of the name array.</DD>
<DT><i>Returns</i>: </DT><DD>1 on success, 0 on failure.</DD>
</DL>
</P>
<br><b>Example Use</b><br>
<pre>
#include &lt H5Part.h &gt
H5PartFile *fileID;
char name[64];
int index, nds;
...
nds=H5PartGetNumDatasets(fileID);
for(index=0;index&lt nds;index++){
H5PartGetDatasetName(fileID,index,name,64);
printf("\tDataset[%u] name=[%s]\n", index,name);
}
...
</pre>
<hr>
<a name="AttributesInfo">
<h2>Attributes Interface</h2></a>
<P>
In the current H5Part implemtation there are two types of attributes: file attributes which are bound to the file
and step attributes which are bound to the current timestep. You
must set the timestep explicitly before writing the attributes (just
as you must do when you write a new dataset. Currently there are no
attributes that are bound to a particular data array, but this could
easily be done if required.
</P>
<P>H5PartGetNumStepAttribs and H5PartGetNumFileAttribs return the number of attributes bound to a step and to a file respectively. H5PartGetStepAttribInfo and H5PartGetFileAttribInfo return the name, type and number of elements of type "type" bound to a step and a file respectively.
</P>
<b>C Prototypes:</b><br>
<code>int H5PartGetNumStepAttribs(H5PartFile *fileID);
</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
<a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>Returns</i> </DT><DD> The number of step attributes for the current step.</DD>
</DL>
<code>int H5PartGetNumFileAttribs(H5PartFile *fileID);
</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
<a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>Returns</i> </DT><DD> The number of file attributes.</DD>
</DL>
<code>void H5PartGetStepAttribInfo(H5PartFile *fileID,int idx, char *name,size_t maxnamelen,hid_t *type,int *nelem);
</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
<a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>idx</i>: </DT><DD>Index of the attribute.</DD>
<DT><i>name</i>: </DT><DD>A null-terminated string with the name of the attribute.</DD>
<DT><i>maxnamelen</i></DT><DD>the length of the name of the attribute.</DD>
<DT><i>type</i>: </DT><DD>One of the following: H5T_NATIVE_DOUBLE H5T_NATIVE_INT64 H5T_NATIVE_CHAR.</DD>
<DT><i>nelem</i>: </DT><DD>Number of elements of type "type".</DD>
<DT><i>Returns</i> </DT><DD> void.</DD>
</DL>
<code>void H5PartGetFileAttribInfo(H5PartFile *fileID,int idx, char *name,size_t maxnamelen, hid_t *type,int *nelem);
</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
<a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>idx</i>: </DT><DD>Index of the attribute.</DD>
<DT><i>name</i>: </DT><DD>A null-terminated string with the name of the attribute.</DD>
<DT><i>maxnamelen</i></DT><DD>the length of the name of the attribute.</DD>
<DT><i>type</i>: </DT><DD>One of the following: H5T_NATIVE_DOUBLE H5T_NATIVE_INT64 H5T_NATIVE_CHAR.</DD>
<DT><i>nelem</i>: </DT><DD>Number of elements of type "type".</DD>
<DT><i>Returns</i> </DT><DD> void.</DD>
</DL>
<a name="WriteAttribs">
<h2>Writing Attributes</h2>
</a>
<P>
An attribute can be bound to the file or after setting the time step to this time step.
</P>
<b>C Prototypes: Generic Attributes</b><br>
<P>
<code>int H5PartWriteFileAttrib(H5PartFile *fileID,char *name, hid_t type,void *value,int nelem);</code><br>
<code>int H5PartWriteStepAttrib(H5PartFile *fileID,char *name, hid_t type,void *value,int nelem);</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
<a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>name</i>: </DT><DD>A null-terminated string for the
name of the array. When retrieving datasets from disk,
you ask for them by name. There are no restrictions on
naming of arrays, but it is useful to arrive at some common
naming convention when sharing data with other groups.</DD>
<DT><i>type</i>: One of H5T_NATIVE_DOUBLE, H5T_NATIVE_INT64, H5T_NATIVE_CHAR.</DD>
<DT><i>value</i>: value of the attribute.</DD>
<DT><i>nelem</i>: number of elements of type "type".</DD>
<DT><i>Returns</i>: </DT><DD>1 on success, 0 on failure.</DD>
</DL>
</P>
<br><b>Example Use</b><br>
<pre>
#include &lt H5Part.h &gt
H5PartFile *fileID;
double actPos;
...
H5PartWriteStepAttrib(file_m,"Spos",H5T_NATIVE_DOUBLE,&actPos,1);
...
</pre>
<b>C Prototypes: String Attributes</b><br>
<P>
<code>int H5PartWriteStepAttribString(H5PartFile *fileID,char *name, char *attrib);</code><br>
<code>int H5PartWriteFileAttribString(H5PartFile *fileID,char *name, char *attrib);</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
<a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>name</i>: </DT><DD>A null-terminated string for the
name of the array. When retrieving datasets from disk,
you ask for them by name. There are no restrictions on
naming of arrays, but it is useful to arrive at some common
naming convention when sharing data with other groups.</DD>
<DT><i>attrib</i>: the attribute character string.</DD>
<DT><i>Returns</i>: </DT><DD>1 on success, 0 on failure.</DD>
</DL>
</P>
<br><b>Example Use</b><br>
<pre>
#include &lt H5Part.h &gt
H5PartFile *fileID;
char *newattrib;
char *newname;
...
H5PartWriteFileAttribString(fileID, newname,newattrib);
...
</pre>
<hr>
<a name="ReadAttribs">
<h2>Reading Attributes</h2>
</a>
<P>
<P>
As with the writing of attributes, there are two basic reading interfaces one that reads file bound attributes and one that reads
step bound attributes. If the step is not set the current one will be used.
</P>
</P>
<b>C Prototypes</b><br>
<P>
<code>void H5PartReadStepAttrib(H5PartFile *fileID,char *name,void *value);</code><br>
<code>void H5PartReadAttrib(H5PartFile *fileID,char *name,void *value);</code><br>
<code>int H5PartReadFileAttrib(H5PartFile *fileID,char *name,void *value);</code><br>
<DL>
<DT><i>fileID</i>: </DT><DD>A FileHandle opened by
<a href="#Opening">H5PartOpenFile()</a> or
<a href="#Opening">H5PartOpenFileParallel()</a>.</DD>
<DT><i>name</i>: </DT><DD>A null-terminated string for the
name of the array. When retrieving datasets from disk,
you ask for them by name. There are no restrictions on
naming of arrays, but it is useful to arrive at some common
naming convention when sharing data with other groups.</DD>
<DT><i>value</i>: value of the attribute.</DD>
<DT><i>Returns</i>: </DT><DD>1 on success, 0 on failure.</DD>
</DL>
</P>
<br>
NOTE: H5PartReadAttrib has been superseeded by H5PartSetStep.
<br>
<br><b>Example Use</b><br>
<pre>
#include &lt H5Part.h &gt
H5PartFile *fileID;
int step;
char name[MAXNAME];
...
H5PartSetStep(fileID, step);
if (H5PartReadStepAttrib(file, "filename", &name[0]) == 1){
printf("Read step from file: %s\n", name);
}
...
</pre>
</div>
<!--#include virtual="/include/dateFooter.html"-->
-504
View File
@@ -1,504 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>H5part, the Fortran API</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<!--#include virtual="/include/topIncludes.html"-->
<div id="maincenter">
<h1>The FORTRAN Application Programming Interface (API)</h1>
<P>
These references contain the information on how to access the H5Part API using FORTRAN bindings. All pointers are cast to haddr_t (a unint64_t) within the C/C++ code. In fortran, these pointers (handles) are carried as INTEGER*8
</P>
<UL>
<LI><a href="#Opening">Opening, Closing, and Validating Datafiles</a>
<LI><a href="#SetStep">Setting the Simulation Timestep</a>
<LI><a href="#SetNumParticles">Setting the Number of Particles</a>
<LI><a href="#Writing">Writing Datasets</a>
<LI><a href="#ReadingNumTimeSteps">Reading the Number of Time Steps</a>
<LI><a href="#ReadingNumTimeSteps">Reading the Number of Particles</a>
<LI><a href="#Reading">Reading Datasets</a>
<LI><a href="#DatasetsInfo">Reading the Number and the Names of Datasets</a>
<LI><a href="#AttributesInfo">Attributes Interface</a>
<LI><a href="#WriteAttribs">Writing Additional Attributes</a>
<LI><a href="#ReadAttribs">Reading Attributes</a>
</UL>
<hr>
<a name="Opening"><h2>Opening Datafiles</h2></a>
<P>
Like the familiar OPEN in FORTRAN files can be opened to read and write. Different functions are used for the serial and parallel case.
</P>
<b>FORTRAN Prototypes</b><br>
<P>
<b>Serial File</b><br>
<code>INTEGER*8 h5pt_openr</code><br>
<code>FUNCTION h5pt_openw(file)<br>
in CHARACTER file(*) : the filename to open for writing </code><br>
returns INTEGER*8 : and open filehandle for serial reads</code><br>
<br>
<code>INTEGER*8 h5pt_openw</code><br>
<code>FUNCTION h5pt_openw(file)<br>
in CHARACTER file(*) : the filename to open for writing<br>
returns INTEGER*8 : and open filehandle for serial writes</code><br>
<br>
<b>Parallel File</b><br>
<code>INTEGER*8 h5pt_openr_par</code><br>
<code>FUNCTION h5pt_openr_par(file,mpi_communicator)<br>
in CHARACTER file(*) : the filename to open for writing<br>
in INTEGER mpi_communicator : the MPI_Communicator used by the program<br>
returns INTEGER*8 : and open filehandle for parallel reads</code><br>
<br>
<code>INTEGER*8 h5pt_openw_par</code><br>
<code>FUNCTION h5pt_openw_par(file,mpi_communicator)<br>
in CHARACTER file(*) : the filename to open for writing<br>
in INTEGER mpi_communicator : the MPI_Communicator used by the program<br>
returns INTEGER*8 : and open filehandle for parallel reads</code><br>
</P>
<P>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
...
file = h5pt_openw("testfilef.h5")
...
</pre>
</P>
<hr>
<h2>Closing Datafiles</h2>
<P>
To close the file, you simply use h5pt_close() for both parallel and serial files. You must call h5pt_close() on any file descriptor created by h5pt_open*() regardless of whether the file turns out to be valid or not.</P>
<b>FORTRAN Prototype</b><br>
<code>EXTERNAL h5pt_close</code><br>
<code>SUBROUTINE h5pt_close(filehandle)<br>
in INTEGER*8 filehandle : close this open filehandle</code><br>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
...
call h5pt_close(file)
...
</pre>
</P>
<hr>
<h2> Validating Datafiles</h2>
<P>
You can test if the file was opened successfully using the
h5p_isvalid() function. It returns 1 if valid, 0 if invalid.
</P>
<b>FORTRAN Prototype</b><br>
<code>INTEGER h5pt_isvalid</code><br>
<code>FUNCTION h5pt_isvalid(filehandle)<br>
in INTEGER*8 filehandle: an open filehandle <br>
returns INTEGER : 1 if the file is valid, 0 if it is not</code><br>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
INTEGER status
...
status = h5pt_isvalid(file)
...
</pre>
</P>
<hr>
<a name="SetStep">
<h2>Setting the Timestep</h2>
</a>
<P>
When writing data to a file the current time step must be set (even if there is only one). In a file with N time steps, the steps are numbered from 0 to N-1.
</P>
<b>FORTRAN Prototype</b><br>
<code>EXTERNAL h5pt_setstep</code><br>
<code>SUBROUTINE h5pt_setstep(filehandle,step)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in INTEGER step : Set the current timestep in the file to this
</code><br>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
INTEGER I
INTEGER nstep
...
do I=1,nstep
call h5pt_setstep(file,I)
... more code ...
enddo
</pre>
</P>
<hr>
<a name="SetNumParticles">
</a>
<h2>Setting the Number of Particles</h2>
<P>
This function's sole purpose is to
prevent needless creation of new HDF5 DataSpace handles if
the number of particles is invariant throughout the sim.
That's its only reason for existence. After you call this
subroutine, all subsequent operations will assume this
number of particles will be written.
</P>
<b>FORTRAN Prototype</b><br>
<code>EXTERNAL h5pt_setnpoints</code><br>
<code>SUBROUTINE h5pt_setnpoints(filehandle,npoints)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in INTEGER*8 npoints : The number of particles on *this* processor</code><br>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
INTEGER*8 npoints
...
call h5pt_setnpoints(file,npoints)
...
</pre>
<hr>
<a name="Writing">
<h2>Writing Datasets</h2>
</a>
<P>
After setting the number of particles with
<a href="#SetNumParticles">h5pt_setnpoints()</a>
and the current timestep using
<a href="#SetStep">h5pt_setstep()</a>, you can start
writing datasets into the file. Each dataset has a name
associated with it (chosen by the user) in order to facilitate
later retrieval. The writing routines also implicitly store
the datatype of the array so that the array can be
reconstructed properly on other systems with incompatible type
representations. The data is committed to disk before the
routine returns. All data that is written after setting the
timestep is associated with that timestep. While the number of
particles can change for each timestep, you cannot change the
number of particles in the middle of a given timestep.
</P>
<b>FORTRAN Prototypes</b><br>
<P>
The two data types supported for the moment are REAL*8 and INTEGER*8 (float64 and int64).
</P>
<code>EXTERNAL h5pt_writedata_r8</code><br>
<code>SUBROUTINE h5pt_writedata_r8(filehandle,name,data)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in CHARACTER name(*) : The name of the data we are writing eg. "X" or "Y" or "PX" etc...<br>
in REAL*8 data(*) : The dataarray to write</code><br>
<br>
<code>EXTERNAL h5pt_writedata_i8</code><br>
<code>SUBROUTINE h5pt_writedata_i8(filehandle,name,data)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in CHARACTER name(*) : The name of the data we are writing eg. "X" or "Y" or "PX" etc...<br>
in INTEGER*8 data(*) : The dataarray to write</code><br>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
INTEGER nstep
INTEGER I
REAL*8,ALLOCATABLE:: X(:)
...
do I=1,nstep
call h5pt_setstep(file,I)
call h5pt_writedata_r8(file,"x",X)
enddo
...
</pre>
<hr>
<a name="ReadingNumTimeSteps">
<h2>Reading the Number of Time Steps</h2>
</a>
<P>
This reads the number of datasteps that are
currently stored in the datafile.
It works for both reading and writing of files, but is probably
only typically used when you are reading.
</P>
<b>FORTRAN Prototypes</b><br>
<code>INTEGER h5pt_getnsteps</code><br>
<code>FUNCTION h5pt_getnsteps(filehandle)<br>
in INTEGER*8 filehandle : an open filehandle<br>
returns INTEGER : number of timesteps stored in the file</code><br>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
INTEGER nstep
file = h5pt_openr("testfilef.h5")
nstep = h5pt_getnsteps(file)
</pre>
<hr>
<a name="ReadingNumParticles">
<h2>Reading the Number of Particles</h2>
</a>
<P>
This reads the number of particles that are currently stored in the current time step. It will arbitrarily select a timestep if you haven't already set the timestep with H5PartSetStep().
</P>
<b>FORTRAN Prototypes</b><br>
<code>INTEGER h5pt_getnpointss</code><br>
<code>FUNCTION h5pt_getnpoints(filehandle)<br>
in INTEGER*8 filehandle : an open filehandle<br>
returns INTEGER : number of particles in the current time step</code><br>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
INTEGER*8 npoints
INTEGET step;
file = h5pt_openr("testfilef.h5")
call h5pt_setstep(file,0)
npoints = h5pt_getnpoints(file)
...
</pre>
<hr>
<a name="Reading">
<h2>Reading Datasets</h2>
</a>
<P>
After setting the time step and getting the number of particles to allocate the data arrays, you can start to read the data.
</P>
<b>FORTRAN Prototypes</b><br>
<code>INTEGER h5pt_readdata_r8</code><br>
<code>FUNCTION h5pt_readdata_r8(filehandle,name,data)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in CHARACTER name(*) : The name of the data we are writing, eg. "X" or "Y" or "PX" etc...<br>
out REAL*8 data(*) : The data array to read. The number of points to read is either the number within
the view setby h5pt_setview() or the default (the total number of particles in the file).<br>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
INTEGER err
INTEGER*8,ALLOCATABLE:: ID(:)
...
call h5pt_setstep(file,step)
err=h5pt_readdata_i8(file,"id",ID)
...
</pre>
<hr>
<a name="DatasetsInfo"><h2>Reading the Number and Names of Datasets</h2></a>
<P>
H5Part provides funtions to find out how many datasets are stored at a particular timestep
and what their names are if you don't know what they are a-priori.
</P>
<b>FORTRAN Prototypes</b><br>
<code>INTEGER h5pt_getndatasets</code><br>
<code>FUNCTION h5pt_getndatasets(filehandle)<br>
in INTEGER*8 filehandle : an open filehandle<br>
returns INTEGER*8 : number of datasets stored per timestep</code><br>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
INTEGER ndata
...
call h5pt_setstep(file,1)
ndata = h5pt_getndatasets(file)
...
</pre>
<b>FORTRAN Prototypes</b><br>
<code>INTEGER h5pt_getdatasetname</code><br>
<code>FUNCTION h5pt_getdatasetname(filehandle,index,name)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in INTEGER index : Index for a given dataset name<br>
out CHARACTER name(*) returns the name of the dataset at that index<br>
returns INTEGER, 1 on success 0 on failure.</code><br>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
INTEGER err
CHARACTER,ALLOCATABLE:: name(:)
...
err=h5pt_getdatasetname(file, 1, name)
...
</pre>
<hr>
<a name="AttributesInfo">
<h2>Attributes Interface</h2></a>
<P>
In the current H5Part implemtation there are two types of attributes: file attributes which are bound to the file
and step attributes which are bound to the current timestep. You
must set the timestep explicitly before writing the attributes (just
as you must do when you write a new dataset. Currently there are no
attributes that are bound to a particular data array, but this could
easily be done if required.
</P>
<b>FORTRAN Prototypes</b><br>
<code>INTEGER h5pt_getnstepattribs</code><br>
<code>FUNCTION h5pt_getnstepattribs(filehandle)<br>
in INTEGER*8 filehandle : an open filehandle<br>
returns INTEGER : number of attributes bound to this particular step<br>
</code>
<br>
<code>INTEGER h5pt_getnfileattribs</code><br>
<code>FUNCTION h5pt_getnfileattribs(filehandle)<br>
in INTEGER*8 filehandle : an open filehandle<br>
returns INTEGER : number of attributes bound to the file<br>
</code>
<br>
<code>INTEGER h5pt_getstepattribinfo</code><br>
<code>FUNCTION h5pt_getstepattribinfo(filehandle,idx,attribname,nelem)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in INTEGER idx : index of the attribute being queried<br>
out CHARACTER name(*) : The name of the attribute<br>
out INTEGER nelem : Number of elements in the attrib array<br>
returns INTEGER, 1 on success 0 on failure.<br>
</code>
<br>
<code>INTEGER h5pt_getfileattribinfo</code><br>
<code>FUNCTION h5pt_getfileattribinfo(filehandle,idx,attribname,nelem)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in INTEGER idx : index of the attribute being queried<br>
out CHARACTER name(*) : The name of the attribute<br>
out INTEGER nelem : Number of elements in the attrib array<br>
returns INTEGER, 1 on success 0 on failure.
</code>
<br>
<hr>
<a name="WriteAttribs">
<h2>Writing Attributes</h2>
</a>
<P>
An attribute can be bound to the file or after setting the time step to this time step.
</P>
<b>FORTRAN Prototypes</b><br>
<code>INTEGER h5pt_writefileattrib_r8</code><br>
<code>
FUNCTION h5pt_writefileattrib_r8(filehandle,name,attrib,nelem)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in CHARACTER name(*) : The name of the attribute<br>
in REAL*8 attrib(*) : The array of data to write into the attribute<br>
in INTEGER nelem : Number of elements in the attrib array<br>
returns INTEGER, 1 on success 0 on failure<br>
</code>
<br>
<code>INTEGER h5pt_writefileattrib_i8</code><br>
<code>FUNCTION h5pt_writefileattrib_i8(filehandle,name,attrib,nelem)<br>
in INTEGER*8 filehandle : The filehandle<br>
in CHARACTER name(*) : The name of the attribute<br>
in INTEGER*8 attrib(*) : The array of data to write into the attribute<br>
in INTEGER nelem : Number of elements in the attrib array<br>
returns INTEGER, 1 on success 0 on failure<br>
</code>
<br>
<code>INTEGER h5pt_writefileattrib_string</code><br>
<code>FUNCTION h5pt_writefileattrib_string(filehandle,name,string)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in CHARACTER name(*) : The name of the attribute<br>
in CHARACTER*8 attrib(*) : The array of data to write into the attribute<br>
returns INTEGER, 1 on success 0 on failure<br>
</code>
<br>
<code>INTEGER h5pt_writestepattrib_r8</code><br>
<code>FUNCTION h5pt_writestepattrib_r8(filehandle,name,attrib,nelem)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in CHARACTER name(*) : The name of the attribute<br>
in REAL*8 attrib(*) : The array of data to write into the attribute<br>
in INTEGER nelem : Number of elements in the attrib array
returns INTEGER, 1 on success 0 on failure<br>
</code>
<br>
<code>INTEGER h5pt_writestepattrib_i8</code><br>
<code>FUNCTION h5pt_writestepattrib_i8(filehandle,name,attrib,nelem)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in CHARACTER name(*) : The name of the attribute<br>
in INTEGER*8 attrib(*) : The array of data to write into the attribute<br>
in INTEGER nelem : Number of elements in the attrib array<br>
returns INTEGER, 1 on success 0 on failure<br>
</code>
<br>
<code>INTEGER h5pt_writestepattrib_string</code><br>
<code>FUNCTION h5pt_writestepattrib_string(filehandle,name,string)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in CHARACTER name(*) : The name of the attribute<br>
in CHARACTER*8 attrib(*) : The array of data to write into the attribute<br>
returns INTEGER, 1 on success 0 on failure<br>
</code>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
REAL*8 REALTIME
INTEGER err
...
err=h5pt_writefileattrib_string(file,"Annotation","Testing 1 2 3")
err=h5pt_writestepattrib_r8(file,"RealTime",REALTIME,1)
...
</pre>
<hr>
<a name="ReadAttribs">
<h2>Reading Attributes</h2>
</a>
<P>
As with the writing of attributes, there are two basic reading interfaces one that reads file bound attributes and one that reads
step bound attributes. If the step is not set the current one will be used.
</P>
<b>FORTRAN Prototypes</b><br>
<code>INTEGER h5pt_readstepattrib</code><br>
<code>FUNCTION h5pt_readstepattrib(filehandle,name,data)<br>
in INTEGER*8 filehandle : an open filehandle<br>
in CHARACTER attributename(*) : name of the attribute to read<br>
out <anytype> data(*) : the attribute data will be read into this array<br>
returns INTEGER, 1 on success 0 on failure<br>
</code>
<br>
<code>INTEGER h5pt_readfileattrib</code><br>
<code>FUNCTION h5pt_readfileattrib(filehandle,name,data)<br>
in INTEGER*8 filehandle an open filehandle<br>
in CHARACTER attributename(*) : name of the attribute to read<br>
out <anytype> data(*) : the attribute data will be read into this array<br>
returns INTEGER, 1 on success 0 on failure<br>
</code>
<b>Example Use</b><br>
<pre>
include 'H5Part.inc'
INTEGER*8 file
REAL*8 REALTIME
...
call h5pt_setstep(file,0)
err=h5pt_readstepattrib(file,"RealTime",data)
...
</pre>
</div>
<!--#include virtual="/include/dateFooter.html"-->
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

+2
View File
@@ -0,0 +1,2 @@
</BODY>
</HTML>
-121
View File
@@ -1,121 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>H5Part: a Portable High Performance Parallel Data Interface to HDF5</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="keywords" content="scientific visualization">
<meta name="sitemap" content="put a brief descriptive phrase here that will show up in the site map:foo">
<div id="maincenter">
<font face="arial,helvetica"><h1>H5Part: a Portable High Performance Parallel Data Interface to HDF5</h1></font>
<h2><font color="red"> THESE PAGES ARE UNDER CONSTRUCTION, July 2006</h2></font>
<font face="arial,helvetica" color="#555588"><h2>Motivation</h2></font>
<P>
<TABLE>
<TR>
<TD>
<a href="collision_6.png"><img src="collision_6.s.png" width=300 height=300></a>
</TD
></TR>
<TR>
<TD>
Beam-beam collision simulation.
</TD>
</TR>
</TABLE>
</P>
<P>
Particle based simulations of accelerator beam-lines, especially in
six dimensional phase space, generate vast amounts of data. Even
though a subset of statistical information regarding phase space
or analysis needs to be preserved, reading and writing such
enormous restart files on massively parallel supercomputing
systems remains challenging.<p>
</P>
<P>
H5Part is a very simple data storage schema and provides an
API that simplifies the reading/writing of the data to the HDF5
file format. An important foundation for a stable visualization and data
analysis environment is a stable and portable file storage format and
its associated APIs. The presence of a "common file storage format,"
including associated APIs, will help foster a fundamental level of
interoperability across the project's software infrastructure. It will
also help ensure that key data analysis capabilities are present
during the earliest phases of the software development effort.
</P>
<P>
H5Part is built on top of the <a href="http://hdf.ncsa.uiuc.edu/HDF5">HDF5 (Hierarchical Data Format).</a>
HDF5 offers a self-describing machine-independent
binary file format that supports scalable parallel I/O
performance for MPI codes on a variety of supercomputing
systems, and works equally well on laptop computers. The API is
available for C, C++, and Fortran codes. The H5Part file format and APIs
enable disparate research groups with different simulation
implementations to transparently share datasets and data
analysis tools. For instance, the common file format will enable
groups that depend on completely different simulation
implementations to share data analysis tools.
</P>
<font face="arial,helvetica" color="#555588"><h2>H5Part file organization and API</h2></font>
<P>
The proposed file storage format uses HDF5 for the lowlevel
file storage and a simple API to provide a high-level
interface to that file format. A programmer can either use
the H5Part API to access the data files or write directly to
the file format using some simple conventions for organizing
and naming the objects stored in the file.
</P>
<P>
In order to store Particle Data in the HDF5 file format,
we have formalized the hierarchical arrangement of the
datasets and naming conventions for the groups and associated
datasets. The sample H5Part API formally encodes
these conventions in order to provide a simple and uniform
way to access these files from C, C++, and Fortran codes.
The API makes it easier to write very portable data adaptors
for visualization tools in order to expand the number of
tools available to access the data. Even so, anyone can use
the HDF5 h5ls utility to examine the organization of the
H5Part files and even write their own HDF5-based interface
for reading and writing the file format. The standards
offered by the sample API are completely independent of
the standard for organizing data within the file.The file
format supports the storage of multiple timesteps
of datasets that contain multiple fields.
</P>
<!--
<font face="arial,helvetica" color="#555588"><h2>Requirements Specification</h2></font>
<UL>
<LI><a href="H5PartSpecs.html">H5Part API specifications
</UL>
</a>
-->
<font face="arial,helvetica" color="#555588"><h2>Downloading and Installing H5Part</h2></font>
<UL>
<LI><a href="Downloading.html">Downloading HDF5 and H5Part
<LI><a href="BuildingHDF5.html">Building the HDF5 Library</a>
<LI><a href="Building.html">Building the H5Part Library</a>
</UL>
<font face="arial,helvetica" color="#555588"><h2>Bindings</h2></font>
<UL>
<LI><a href="UsingC.html">Using the C/C++ interface</a>
<LI><a href="UsingF.html">Using the F77/F90 interface</a>
<LI><a href="InternalLayout.html">Logical Internal HDF5 File</a>
<LI><a href="H5PartTools.html">H5Part Utility Tools</a>
<LI><a href="ReferencePages/index.html">Reference Manual</a>
</UL>
<font face="arial,helvetica" color="#555588"><h2>H5Part Visualization Tools</h2></font>
<UL>
<LI><a href="H5PartExpress.html">H5Part Express Reader</a>
<LI><a href="H5PartVisIt.html">H5Part VisIt Reader</a>
<LI><a href="H5PartIDL.html">H5Part IDL Reader</a>
<LI><a href="http://www.cscs.ch/a-display.php?id=170">H5Part sparticles Reader: developed at CSCS, Switzerland</a>
<LI><a href="H5PartPartView.html">PartView Visualization Application</a>
</UL>
</div>
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

+51
View File
@@ -0,0 +1,51 @@
#include <stdlib.h>
#include <assert.h>
#include <mpi.h>
#include <H5Part.h>
#define DATASIZE 32
int main(int argc, char** argv)
{
int i, rank, nprocs;
h5part_int32_t data[DATASIZE];
h5part_int64_t stat;
H5PartFile *file;
// initialize MPI
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
H5PartSetVerbosityLevel(H5PART_VERB_DEBUG);
char filename[8];
sprintf (filename, "%d.h5", rank);
file = H5PartOpenFileParallel(
filename,
H5PART_WRITE | H5PART_VFD_CORE,
MPI_COMM_SELF);
assert (file != NULL);
stat = H5PartSetStep(file, 0);
assert (stat == H5PART_SUCCESS);
stat = H5PartSetNumParticles(file, DATASIZE);
assert (stat == H5PART_SUCCESS);
// create fake data
for (i=0; i<DATASIZE; i++) {
data[i] = i + rank * DATASIZE;
}
// write the data
stat = H5PartWriteDataInt32(file, "data", data);
assert (stat == H5PART_SUCCESS);
H5PartCloseFile(file);
MPI_Finalize();
return EXIT_SUCCESS;
}
+45
View File
@@ -0,0 +1,45 @@
#include <stdlib.h>
#include <assert.h>
#include <mpi.h>
#include <H5Part.h>
#define XSIZE 8
#define YSIZE 8
#define ZSIZE 8
#define DATASIZE XSIZE*YSIZE*ZSIZE
#define H5OpenFileParallel H5PartOpenFileParallel
#define H5SetStep H5PartSetStep
#define H5Block3dSetLayout H5BlockDefine3DFieldLayout
#define H5CloseFile H5PartCloseFile
int main(int argc, char** argv)
{
int rank, nprocs;
h5part_float64_t ex[DATASIZE];
h5part_float64_t ey[DATASIZE];
h5part_float64_t ez[DATASIZE];
h5part_float64_t q[DATASIZE];
h5part_int64_t nparticles = DATASIZE;
H5PartFile *file;
// initialize MPI
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
H5PartSetVerbosityLevel(H5PART_VERB_DEBUG);
file = H5OpenFileParallel("fields.h5", H5PART_WRITE, MPI_COMM_WORLD);
H5SetStep(file, 0);
H5Block3dSetLayout(file,
rank*XSIZE, (rank+1)*XSIZE - 1,
0, YSIZE - 1,
0, ZSIZE - 1);
H5Block3dWriteScalarFieldFloat64(file, "Q", q);
H5Block3dWrite3dVectorFieldFloat64(file, "E", ex, ez, ey);
H5CloseFile(file);
MPI_Finalize();
return EXIT_SUCCESS;
}
+41
View File
@@ -0,0 +1,41 @@
#include <stdlib.h>
#include <assert.h>
#include <mpi.h>
#include <H5Part.h>
#define DATASIZE 32
int main(int argc, char** argv)
{
int rank, nprocs;
h5part_float64_t x[DATASIZE];
h5part_float64_t y[DATASIZE];
h5part_float64_t z[DATASIZE];
h5part_float64_t px[DATASIZE];
h5part_float64_t py[DATASIZE];
h5part_float64_t pz[DATASIZE];
h5part_int64_t nparticles = DATASIZE;
H5PartFile *file;
// initialize MPI
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
H5PartSetVerbosityLevel(H5PART_VERB_DEBUG);
file = H5PartOpenFileParallel("particles.h5", H5PART_WRITE, MPI_COMM_WORLD);
H5PartSetStep(file, 0);
H5PartSetNumParticles(file, nparticles);
H5PartWriteDataFloat64(file, "x", x);
H5PartWriteDataFloat64(file, "y", y);
H5PartWriteDataFloat64(file, "z", z);
H5PartWriteDataFloat64(file, "px", px);
H5PartWriteDataFloat64(file, "py", py);
H5PartWriteDataFloat64(file, "pz", pz);
H5PartCloseFile(file);
MPI_Finalize();
return EXIT_SUCCESS;
}
+56
View File
@@ -0,0 +1,56 @@
program H5PartTest
implicit none
include 'mpif.h'
include 'H5PartF.h'
integer :: comm, rank, ierr
integer*8 :: file_id, status, npoints, i
real*8, allocatable :: particles(:)
integer*8, allocatable :: id(:)
real*8 :: r8val
integer*8 :: i8val
comm = MPI_COMM_WORLD
call mpi_init(ierr)
call mpi_comm_rank(comm, rank, ierr)
! open the a file for parallel writing
file_id = h5pt_set_verbosity_level(5)
file_id = h5pt_openw_par('test.h5', comm)
! in the Fortran API, time steps start at 1
status = h5pt_setstep(file_id, 1_8)
! write an attribute to the file
status = h5pt_writefileattrib_string(file_id, 'desc', 'This is a test.')
r8val = 0.5
i8val = 1
status = h5pt_writefileattrib_r8(file_id, 'double', r8val, i8val)
! create fake data
npoints = 99
allocate(particles(npoints), id(npoints))
do i=1,npoints
particles(i) = real(i+npoints*rank)
id(i) = i+npoints*rank
enddo
! set the size of the 1D array
status = h5pt_setnpoints(file_id, npoints)
! write the particles
status = h5pt_writedata_r8(file_id, "x", particles)
! write the ids
status = h5pt_writedata_i8(file_id, "id", id)
! close the file
status = h5pt_close(file_id)
deallocate(particles, id)
call mpi_finalize(ierr)
end program H5PartTest
+61
View File
@@ -0,0 +1,61 @@
program H5PartTest
implicit none
include 'mpif.h'
include 'H5PartF.h'
integer :: comm, rank, ierr
integer*8 :: file_id, status, npoints, i
real*8, allocatable :: particles(:)
integer*8, allocatable :: id(:)
comm = MPI_COMM_WORLD
call mpi_init(ierr)
call mpi_comm_rank(comm, rank, ierr)
! open the a file for parallel writing
file_id = h5pt_openw_par('test.h5', comm)
! in the Fortran API, steps start at 1
status = h5pt_setstep(file_id, 1_8)
! write an attribute to the file
status = h5pt_writefileattrib_string(file_id, 'desc', 'This is a test.')
! create fake data
npoints = 99
allocate(particles(6*npoints), id(npoints))
do i=0,npoints-1
particles(6*i+1) = 0.0 + real(i+npoints*rank)
particles(6*i+2) = 0.1 + real(i+npoints*rank)
particles(6*i+3) = 0.2 + real(i+npoints*rank)
particles(6*i+4) = 0.3 + real(i+npoints*rank)
particles(6*i+5) = 0.4 + real(i+npoints*rank)
particles(6*i+6) = 0.5 + real(i+npoints*rank)
id(i+1) = i+npoints*rank
enddo
! set the striding to 6
status = h5pt_setnpoints_strided(file_id, npoints, 6_8)
! write the particles
status = h5pt_writedata_r8(file_id, "x", particles(1))
status = h5pt_writedata_r8(file_id, "y", particles(2))
status = h5pt_writedata_r8(file_id, "z", particles(3))
status = h5pt_writedata_r8(file_id, "px", particles(4))
status = h5pt_writedata_r8(file_id, "py", particles(5))
status = h5pt_writedata_r8(file_id, "pz", particles(6))
! disable the striding to write the ids
status = h5pt_setnpoints(file_id, npoints)
status = h5pt_writedata_i8(file_id, "id", id)
! close the file
status = h5pt_close(file_id)
deallocate(particles, id)
call mpi_finalize(ierr)
end program H5PartTest
+57
View File
@@ -0,0 +1,57 @@
#include <stdlib.h>
#include <assert.h>
#include <mpi.h>
#include <H5Part.h>
#define DATASIZE 32
#define ITERS 4
int main(int argc, char** argv)
{
int i, rank, nprocs;
h5part_int32_t data[ITERS*DATASIZE];
h5part_int64_t stat;
h5part_int64_t offset;
H5PartFile *file;
// initialize MPI
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
H5PartSetVerbosityLevel(H5PART_VERB_DEBUG);
file = H5PartOpenFileParallel("test.h5", H5PART_WRITE, MPI_COMM_WORLD);
assert (file != NULL);
stat = H5PartSetStep(file, 0);
assert (stat == H5PART_SUCCESS);
stat = H5PartSetNumParticles(file, ITERS*DATASIZE);
assert (stat == H5PART_SUCCESS);
// create fake data
for (i=0; i<ITERS*DATASIZE; i++) {
data[i] = i + rank * ITERS * DATASIZE;
}
offset = rank * ITERS * DATASIZE;
// iterate over arrays
for (i=0; i<ITERS; i++) {
// set the "view" to select a subset of the dataset
stat = H5PartSetView(file,
offset + i*DATASIZE,
offset + (i+1)*DATASIZE - 1);
assert (stat == H5PART_SUCCESS);
// write the data
stat = H5PartWriteDataInt32(file, "data", data + i*DATASIZE);
assert (stat == H5PART_SUCCESS);
}
H5PartCloseFile(file);
MPI_Finalize();
return EXIT_SUCCESS;
}
+2034
View File
File diff suppressed because it is too large Load Diff
+235
View File
@@ -0,0 +1,235 @@
! Declaration of subroutines for Fortran Bindings
!> \defgroup h5block_f90_api H5Block F90 API
!> \ingroup h5block_f90_api
!! \defgroup h5blockf_model Setting up the Data Model
!<
!> \ingroup h5block_f90_api
!! \defgroup h5blockf_data Reading and Writing Datasets
!<
!> \ingroup h5block_f90_api
!! \defgroup h5blockf_attrib Reading and Writing Attributes
!<
!!!!!!!! Setting up the Data Model !!!!!!!!
!> \ingroup h5blockf_model
!! See \ref H5BlockDefine3DFieldLayout
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_define3dlayout ( filehandle, i_start, i_end, j_start, j_end, k_start, k_end )
INTEGER*8, INTENT(IN) :: filehandle
INTEGER*8, INTENT(IN) :: i_start
INTEGER*8, INTENT(IN) :: i_end
INTEGER*8, INTENT(IN) :: j_start
INTEGER*8, INTENT(IN) :: j_end
INTEGER*8, INTENT(IN) :: k_start
INTEGER*8, INTENT(IN) :: k_end
END FUNCTION
!> \ingroup h5blockf_model
!! See \ref H5BlockDefine3DChunkDims
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_define3dchunkdims ( filehandle, i, j, k )
INTEGER*8, INTENT(IN) :: filehandle
INTEGER*8, INTENT(IN) :: i
INTEGER*8, INTENT(IN) :: j
INTEGER*8, INTENT(IN) :: k
END FUNCTION
!> \ingroup h5blockf_model
!! See \ref H5Block3dGetPartitionOfProc
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_get_partition_of_proc ( filehandle, proc, i_start, i_end, j_start, j_end, k_start, k_end )
INTEGER*8, INTENT(IN) :: filehandle
INTEGER*8, INTENT(OUT) :: proc
INTEGER*8, INTENT(OUT) :: i_start
INTEGER*8, INTENT(OUT) :: i_end
INTEGER*8, INTENT(OUT) :: j_start
INTEGER*8, INTENT(OUT) :: j_end
INTEGER*8, INTENT(OUT) :: k_start
INTEGER*8, INTENT(OUT) :: k_end
END FUNCTION
!> \ingroup h5blockf_model
!! See \ref H5Block3dGetReducedPartitionOfProc
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_get_reduced_partition_of_proc ( filehandle, proc, i_start, i_end, j_start, j_end, k_start, k_end )
INTEGER*8, INTENT(IN) :: filehandle
INTEGER*8, INTENT(OUT) :: proc
INTEGER*8, INTENT(OUT) :: i_start
INTEGER*8, INTENT(OUT) :: i_end
INTEGER*8, INTENT(OUT) :: j_start
INTEGER*8, INTENT(OUT) :: j_end
INTEGER*8, INTENT(OUT) :: k_start
INTEGER*8, INTENT(OUT) :: k_end
END FUNCTION
!> \ingroup h5blockf_model
!! See \ref H5Block3dGetProcOf
!! \return rank of processor error code
!<
INTEGER*8 FUNCTION h5bl_get_proc_of ( filehandle, i, j, k )
INTEGER*8, INTENT(IN) :: filehandle
INTEGER*8, INTENT(IN) :: i
INTEGER*8, INTENT(IN) :: j
INTEGER*8, INTENT(IN) :: k
END FUNCTION
!> \ingroup h5blockf_model
!! See \ref H5BlockGetNumFields
!! \return number of fields or error code
!<
INTEGER*8 FUNCTION h5bl_getnumfields ( filehandle )
INTEGER*8, INTENT(IN) :: filehandle
END FUNCTION
!> \ingroup h5blockf_model
!! See \ref H5BlockGetFieldInfo
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_getfieldinfo ( filehandle, idx, field_name, grid_rank, grid_dims, field_dims )
INTEGER*8, INTENT(IN) :: filehandle
INTEGER*8, INTENT(IN) :: idx
CHARACTER(LEN=*), INTENT(OUT) :: field_name
INTEGER*8, INTENT(OUT) :: grid_rank
INTEGER*8, INTENT(OUT) :: grid_dims(*)
INTEGER*8, INTENT(OUT) :: field_dims
INTEGER*8, INTENT(OUT) :: type
END FUNCTION
!> \ingroup h5blockf_model
!! See \ref H5BlockHasFieldData
!! \return 0 if false, 1 if true, or error code
!<
INTEGER*8 FUNCTION h5bl_has_fielddata ( filehandle )
INTEGER*8, INTENT(IN) :: filehandle
END FUNCTION
!!!!!!!! Reading and Writing Attributes !!!!!!!!
!> \ingroup h5blockf_attrib
!! See \ref H5BlockWriteFieldAttribString
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_writefieldattrib_string ( filehandle, field_name, attrib_name, attrib_value )
INTEGER*8, INTENT(IN) :: filehandle
CHARACTER(LEN=*), INTENT(IN) :: field_name ! The name of the field
CHARACTER(LEN=*), INTENT(IN) :: attrib_name ! The name of the attribute
CHARACTER(LEN=*), INTENT(IN) :: attrib_value ! The array of data to write into the attribute
END FUNCTION
!> \ingroup h5blockf_attrib
!! See \ref H5BlockGetNumFieldAttribs
!! \return number of attributes or error code
!<
INTEGER*8 FUNCTION h5bl_getnfieldattribs ( filehandle, field_name )
INTEGER*8, INTENT(IN) :: filehandle
CHARACTER(LEN=*), INTENT(IN) :: field_name ! The name of the field
END FUNCTION
!> \ingroup h5blockf_attrib
!! See \ref H5BlockGetFieldAttribInfo
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_getfieldattribinfo ( filehandle, field_name, idx, attrib_name, attrib_nelem)
INTEGER*8,INTENT(IN) :: filehandle
CHARACTER(LEN=*), INTENT(IN) :: field_name ! The name of the field
INTEGER*8,INTENT(IN) :: idx ! index of the attribute being queried
CHARACTER(LEN=*), INTENT(OUT):: attrib_name ! The name of the attribute
INTEGER*8,INTENT(OUT):: attrib_nelem ! Number of elements in the attrib array
END FUNCTION
!> \ingroup h5blockf_attrib
!! Read the attribute \c attrib_name from the field \c field_name at the
!! current timestep, and store the int64 value in \c attrib_value.
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_readfieldattrib_i8 ( filehandle, field_name, attrib_name, attrib_value )
INTEGER*8,INTENT(IN) :: filehandle
CHARACTER(LEN=*), INTENT(IN) :: field_name ! The name of the field
CHARACTER(LEN=*), INTENT(IN) :: attrib_name ! name of the attribute to read
INTEGER*8,INTENT(OUT):: attrib_value(*)! the attribute data will be read into this array
END FUNCTION
!> \ingroup h5blockf_attrib
!! Read the attribute \c attrib_name from the field \c field_name at the
!! current timestep, and store the float64 value in \c attrib_value.
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_readfieldattrib_r8 ( filehandle, field_name, attrib_name, attrib_value )
INTEGER*8,INTENT(IN) :: filehandle
CHARACTER(LEN=*), INTENT(IN) :: field_name ! The name of the field
CHARACTER(LEN=*), INTENT(IN) :: attrib_name ! name of the attribute to read
REAL*8, INTENT(OUT):: attrib_value(*)! the attribute data will be read into this array
END FUNCTION
!> \ingroup h5blockf_attrib
!! Read the attribute \c attrib_name from the field \c field_name at the
!! current timestep, and store the string value in \c attrib_value.
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_readfieldattrib_string ( filehandle, field_name, attrib_name, attrib_value )
INTEGER*8, INTENT(IN) :: filehandle
CHARACTER(LEN=*), INTENT(IN) :: field_name ! The name of the field
CHARACTER(LEN=*), INTENT(IN) :: attrib_name ! name of the attribute to read
CHARACTER(LEN=*), INTENT(IN) :: attrib_value ! The array of data to write into the attribute
END FUNCTION
!> \ingroup h5blockf_attrib
!! See \ref H5Block3dGetFieldSpacing
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_get_field_spacing ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle
CHARACTER(LEN=*), INTENT(IN) :: name
REAL*8, INTENT(OUT) :: x
REAL*8, INTENT(OUT) :: y
REAL*8, INTENT(OUT) :: z
END FUNCTION
!> \ingroup h5blockf_attrib
!! See \ref H5Block3dSetFieldSpacing
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_set_field_spacing ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle
CHARACTER(LEN=*), INTENT(IN) :: name
REAL*8, INTENT(IN) :: x
REAL*8, INTENT(IN) :: y
REAL*8, INTENT(IN) :: z
END FUNCTION
!> \ingroup h5blockf_attrib
!! See \ref H5Block3dGetFieldOrigin
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_get_field_origin ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle
CHARACTER(LEN=*), INTENT(IN) :: name
REAL*8, INTENT(OUT) :: x
REAL*8, INTENT(OUT) :: y
REAL*8, INTENT(OUT) :: z
END FUNCTION
!> \ingroup h5blockf_attrib
!! See \ref H5Block3dSetFieldOrigin
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_set_field_origin ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle
CHARACTER(LEN=*), INTENT(IN) :: name
REAL*8, INTENT(IN) :: x
REAL*8, INTENT(IN) :: y
REAL*8, INTENT(IN) :: z
END FUNCTION
+188 -179
View File
@@ -1,185 +1,194 @@
#ifndef H5BLOCK_H
#define H5BLOCK_H
#ifndef _H5BLOCK_H_
#define _H5BLOCK_H_
#ifdef __cplusplus
extern "C" {
#endif
/*!
Include read/write call variants for different data types and
field dimensions.
*/
#include "H5BlockReadWrite.h"
#define H5BLOCK_FIELD_ORIGIN_NAME "__Origin__"
#define H5BLOCK_FIELD_SPACING_NAME "__Spacing__"
/*!
Interface for block structured field data
This is used to store and retrieve scalar or vector valued field data.
With \f$ \Omega\ \f$ ....
Basic items are blocks (\f$ \Omaga_i \f$ ), cartesian subdomains of \f$ \Omega \f$ . If a \f$ \Omega_i \f$
is refined we view this \f$ \Omaga_i \f$ as a patch.
\note My note
This is to discuss the HDF5 architecture:
\timestep#k
\particles
\topo
\block
\patch1
\block
Idea: because we have more than one block per timestep
in case of AMR, the activity of a block could help.
Interface for block structured field data.
*/
h5part_int64_t
H5BlockDefine3DFieldLayout (
H5PartFile *f,
const h5part_int64_t i_start,
const h5part_int64_t i_end,
const h5part_int64_t j_start,
const h5part_int64_t j_end,
const h5part_int64_t k_start,
const h5part_int64_t k_end
);
h5part_int64_t
H5BlockDefine3DChunkDims (
H5PartFile *f,
const h5part_int64_t i,
const h5part_int64_t j,
const h5part_int64_t k
);
h5part_int64_t
H5BlockGet3DChunkDims(
H5PartFile *f,
const char *field_name,
h5part_int64_t *dims
);
h5part_int64_t
H5Block3dGetPartitionOfProc (
H5PartFile *f,
const h5part_int64_t proc,
h5part_int64_t *i_start,
h5part_int64_t *i_end,
h5part_int64_t *j_start,
h5part_int64_t *j_end,
h5part_int64_t *k_start,
h5part_int64_t *k_end
);
h5part_int64_t
H5Block3dGetReducedPartitionOfProc (
H5PartFile *f,
h5part_int64_t proc,
h5part_int64_t *i_start,
h5part_int64_t *i_end,
h5part_int64_t *j_start,
h5part_int64_t *j_end,
h5part_int64_t *k_start,
h5part_int64_t *k_end
);
h5part_int64_t
H5Block3dGetProcOf (
H5PartFile *f,
h5part_int64_t i,
h5part_int64_t j,
h5part_int64_t k
);
h5part_int64_t
H5BlockGetNumFields (
H5PartFile *f
);
h5part_int64_t
H5BlockGetFieldInfo (
H5PartFile *f,
const h5part_int64_t idx,
char *name,
const h5part_int64_t len_name,
h5part_int64_t *grid_rank,
h5part_int64_t *grid_dims,
h5part_int64_t *field_rank,
h5part_int64_t *type
);
h5part_int64_t
H5BlockGetFieldInfoByName (
H5PartFile *f,
const char *field_name,
h5part_int64_t *grid_rank,
h5part_int64_t *grid_dims,
h5part_int64_t *field_rank,
h5part_int64_t *type
);
h5part_int64_t
H5Block3dGetFieldOrigin (
H5PartFile *f,
const char *field_name,
h5part_float64_t *x_origin,
h5part_float64_t *y_origin,
h5part_float64_t *z_origin
);
h5part_int64_t
H5Block3dSetFieldOrigin (
H5PartFile *f,
const char *field_name,
const h5part_float64_t x_origin,
const h5part_float64_t y_origin,
const h5part_float64_t z_origin
);
h5part_int64_t
H5Block3dGetFieldSpacing (
H5PartFile *f,
const char *field_name,
h5part_float64_t *x_spacing,
h5part_float64_t *y_spacing,
h5part_float64_t *z_spacing
);
h5part_int64_t
H5Block3dSetFieldSpacing (
H5PartFile *f,
const char *field_name,
const h5part_float64_t x_spacing,
const h5part_float64_t y_spacing,
const h5part_float64_t z_spacing
);
h5part_int64_t
H5BlockWriteFieldAttrib (
H5PartFile *f,
const char *field_name,
const char *attrib_name,
const h5part_int64_t attrib_type,
const void *attrib_value,
const h5part_int64_t attrib_nelem
);
h5part_int64_t
H5BlockWriteFieldAttribString (
H5PartFile *f,
const char *field_name,
const char *attrib_name,
const char *attrib_value
);
h5part_int64_t
H5BlockGetNumFieldAttribs (
H5PartFile *f,
const char *field_name
);
h5part_int64_t
H5BlockGetFieldAttribInfo (
H5PartFile *f,
const char *field_name,
const h5part_int64_t attrib_idx,
char *attrib_name,
const h5part_int64_t len_of_attrib_name,
h5part_int64_t *attrib_type,
h5part_int64_t *attrib_nelem
);
h5part_int64_t
H5BlockReadFieldAttrib (
H5PartFile *f,
const char *field_name,
const char *attrib_name,
void *attrib_value
);
h5part_int64_t
H5BlockHasFieldData (
H5PartFile *f
);
//! Checks if the block of the actual time step is refined i.e. if we have a patch
/*!
\param H5PartFile *f : file handle
\param char *name : name of the data set
*/
bool H5BlockIsPatch(H5PartFile *f, char *name);
#ifdef __cplusplus
}
#endif
//! return the maximum level refinement of refinement at the current time step
/*!
\param H5PartFile *f : file handle
\param char *name : name of the data set
*/
int H5BlockGetMaxRefinementLevel(H5PartFile *f, char *name);
//! Define the field layout (FL) given the dense index space at the actual time step
/*!
\param H5PartFile *f : file handle
\param char *name : name of the data set
\param unsigned int Istart : start of index I
\param unsigned int Jstart : start of index J
\param unsigned int Kstart : start of index K
\param unsigned int Istart : end of index I
\param unsigned int Jstart : end of index J
\param unsigned int Kstart : end of index K
\note this defines \f$ \Omega \f$ and the view for HDF5
\note we have to make a 1D and 2D version
\note Q: what about a dimension independent version probably hard for the FOR-People?
*/
void H5BlockDefine3DFieldLayout(H5PartFile *f,
char *name, unsigned int Istart, unsigned int Iend,
unsigned int Jstart, unsigned int Jend,
unsigned int Kstart, unsigned int Kend);
//! Write the mesh spacing for the active (current) block
/*!
\param H5PartFile *f : file handle
\param char *name : name of teh data set
\param double dx: mesh spacing in x
\param double dy: mesh spacing in y
\param double dz: mesh spacing in z
*/
void H5BlockSetMeshSpacing(H5PartFile *f, char *name, double dx, double dy, double dz,);
//! Write a 3D real valued vector field using the defined FL for this block
/*!
\param H5PartFile *f : file handle
\param char *name : name of teh data set
\param double *xval : array of x component data
\param double *yval : array of y component data
\param double *zval : array of z component data
\note we have to make a 1D and 2D version
\note Q: what about a dimension independent version?
*/
void H5BlockWrite3DVField(H5PartFile *f,
char *name,
double *xval,
double *yval,
double *zval);
// ===========================================================================================
/*
The following reflects the fact that we have fields which are decomposed into modes.
Augment the field name with the mode number and use this name to store the field.
For the mode freqency use the same procedure.
*/
//! Read the number of stored modes at actual timestep
/*!
\param H5PartFile *f : file handle
\param char *name : name of teh data set
*/
int H5BlockGetNumberOfModes(H5PartFile *f, char *name);
//! Set the number of stored modes at actual timestep
/*!
\param H5PartFile *f : file handle
\param char *name : name of teh data set
\param int modes: the number of modes
*/
void H5BlockSetNumberOfModes(H5PartFile *f, char *name, int modes);
//! Write a 3D real valued vector field using the defined FL for this block
/*!
\param H5PartFile *f : file handle
\param char *name : name of teh data set
\param int modeNumber : the mode number of the field
\param double omega : the eingenmode of the field
\param double *xval : array of x component data
\param double *yval : array of y component data
\param double *zval : array of z component data
\note we have to make a 1D and 2D version
\note Q: what about a dimension independent version?
*/
void H5BlockWrite3DVField(H5PartFile *f,
char *name, int modeNumber, double omega,
double *xval,
double *yval,
double *zval);
//! Write the quality factor for a given mode
/*!
\param H5PartFile *f : file handle
\param char *name : name of the data set
\param int modeNumber : the mode number of the field
\param double Q: the quality factor
*/
void H5BlockSetQFactor(H5PartFile *f, char *name, int mode, double Q);
//! Write the S-parameters for a given mode
/*!
\param H5PartFile *f : file handle
\param char *name : name of the data set
\param int modeNumber : the mode number of the field
\param double **S: the quality factor
*/
void H5BlockSetSParams(H5PartFile *f, char *name, int mode, double **s);
//! Read the quality factor for a given mode
/*!
\param H5PartFile *f : file handle
\param char *name : name of the data set
\param int modeNumber : the mode number of the field
\param double *Q: the quality factor
*/
void H5BlockGetQFactor(H5PartFile *f, char *name, int mode, double *Q);
//! Read the S-parameters for a given mode
/*!
\param H5PartFile *f : file handle
\param char *name : name of the data set
\param int modeNumber : the mode number of the field
\param double **S: the quality factor
*/
void H5BlockGetSParams(H5PartFile *f, char *name, int mode, double **s);
#endif // H5BLOCK_H
#endif
+52
View File
@@ -0,0 +1,52 @@
#ifndef _H5BLOCK_ERRORS_H_
#define _H5BLOCK_ERRORS_H_
extern h5part_error_handler _err_handler;
#define CHECK_LAYOUT( f ) \
if ( ! f->block->have_layout ) \
return (*_err_handler) ( \
_H5Part_get_funcname(), \
H5PART_ERR_LAYOUT, \
"No layout defined." )
#define HANDLE_H5PART_LAYOUT_ERR \
(*_err_handler) ( \
_H5Part_get_funcname(), \
H5PART_ERR_LAYOUT, \
"Bad layout." );
#define HANDLE_H5PART_NOENT_ERR( name ) \
(*_err_handler) ( \
_H5Part_get_funcname(), \
H5PART_ERR_NOENT, \
"Object \"%s\" doesn't exists.", name );
#define HANDLE_H5PART_DATASET_RANK_ERR( m, n ) \
(*_err_handler) ( \
_H5Part_get_funcname(), \
H5PART_ERR_INVAL, \
"Wrong rank of dataset: Is %d, but should be %d", \
m, n );
#define HANDLE_H5PART_GROUP_EXISTS_ERR( name ) \
(*_err_handler) ( \
_H5Part_get_funcname(), \
H5PART_ERR_INVAL, \
"Group \"%s\" already exists", name )
#define HANDLE_H5S_CREATE_SIMPLE_3D_ERR( dims ) \
(*_err_handler) ( \
_H5Part_get_funcname(), \
H5PART_ERR_HDF5, \
"Cannot create 3d dataspace with dimension sizes " \
"\"(%lld,%lld,%lld)\".", \
(long long)dims[0], (long long)dims[1], (long long)dims[2] );
#define HANDLE_H5S_GET_SIMPLE_EXTENT_DIMS_ERR \
(*_err_handler) ( \
_H5Part_get_funcname(), \
H5PART_ERR_HDF5, \
"Cannot get dimension sizes of dataset" );
#endif
Executable
+449
View File
@@ -0,0 +1,449 @@
#include "H5Part.h"
#include "H5PartPrivate.h"
#include "H5Block.h"
#include "Underscore.h"
#if defined(F77_SINGLE_UNDERSCORE)
#define F77NAME(a,b) a
#elif defined(F77_CRAY_UNDERSCORE)
#define F77NAME(a,b) b
#elif defined(F77_NO_UNDERSCORE)
#else
#error Error, no way to determine how to construct fortran bindings
#endif
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_define3dlayout F77NAME ( \
h5bl_define3dlayout_, \
H5BL_DEFINE3DLAYOUT )
#define h5bl_define3dchunkdims F77NAME ( \
h5bl_define3dchunkdims_, \
H5BL_DEFINE3DCHUNKDIMS )
#define h5bl_get_partition_of_proc F77NAME ( \
h5bl_get_partition_of_proc_, \
H5BL_GET_PARTITION_OF_PROC )
#define h5bl_get_reduced_partition_of_proc F77NAME ( \
h5bl_get_reduced_partition_of_proc_,\
H5BL_GET_REDUCED_PARTITION_OF_PROC )
#define h5bl_get_proc_of F77NAME ( \
h5bl_get_proc_of_, \
H5BL_GET_PROC_OF )
#define h5bl_getnumfields F77NAME ( \
h5bl_getnumfields_, \
H5BL_GETNUMFIELDS )
#define h5bl_getfieldinfo F77NAME ( \
h5bl_getfieldinfo_, \
H5BL_GETFIELDINFO )
#define h5bl_writefieldattrib_string F77NAME ( \
h5bl_writefieldattrib_string_, \
H5BL_WRITEFIELDATTRIB_STRING )
#define h5bl_getnfieldattribs F77NAME ( \
h5bl_getnfieldattribs_, \
H5BL_GETNFIELDATTRIBS )
#define h5bl_getfieldattribinfo F77NAME ( \
h5bl_getfieldattribinfo_, \
h5bl_getfieldattribinfo )
#define h5bl_readfieldattrib_i8 F77NAME ( \
h5bl_readfieldattrib_i8_, \
H5BL_READFIELDATTRIB_I8 )
#define h5bl_readfieldattrib_r8 F77NAME ( \
h5bl_readfieldattrib_r8_, \
H5BL_READFIELDATTRIB_R8 )
#define h5bl_readfieldattrib_string F77NAME ( \
h5bl_readfieldattrib_string_, \
H5BL_READFIELDATTRIB_STRING )
#define h5bl_has_fielddata F77NAME ( \
h5bl_has_fielddata_, \
H5BL_HAS_FIELDDATA )
#define h5bl_3d_set_field_spacing F77NAME ( \
h5bl_3d_set_field_spacing_, \
H5BL_3D_SET_FIELD_SPACING )
#define h5bl_3d_get_field_spacing F77NAME ( \
h5bl_3d_get_field_spacing_, \
H5BL_3D_GET_FIELD_SPACING )
#define h5bl_3d_set_field_origin F77NAME ( \
h5bl_3d_set_field_origin_, \
H5BL_3D_SET_FIELD_ORIGIN )
#define h5bl_3d_get_field_origin F77NAME ( \
h5bl_3d_get_field_origin_, \
H5BL_3D_GET_FIELD_origin )
#endif
h5part_int64_t
h5bl_define3dlayout (
h5part_int64_t *f,
const h5part_int64_t *i_start, /*!< start index of i */
const h5part_int64_t *i_end, /*!< end index of i */
const h5part_int64_t *j_start, /*!< start index of j */
const h5part_int64_t *j_end, /*!< end index of j */
const h5part_int64_t *k_start, /*!< start index of k */
const h5part_int64_t *k_end /*!< end index of k */
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
return H5BlockDefine3DFieldLayout (
filehandle,
*i_start-1, *i_end-1,
*j_start-1, *j_end-1,
*k_start-1, *k_end-1 );
}
h5part_int64_t
h5bl_define3dchunkdims (
h5part_int64_t *f,
const h5part_int64_t *i,
const h5part_int64_t *j,
const h5part_int64_t *k
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
return H5BlockDefine3DChunkDims ( filehandle, *i, *j, *k );
}
h5part_int64_t
h5bl_get_partition_of_proc (
h5part_int64_t *f, /*!< file handle */
const h5part_int64_t *proc,
h5part_int64_t *i_start, /*!< start index of i */
h5part_int64_t *i_end, /*!< end index of i */
h5part_int64_t *j_start, /*!< start index of j */
h5part_int64_t *j_end, /*!< end index of j */
h5part_int64_t *k_start, /*!< start index of k */
h5part_int64_t *k_end /*!< end index of k */
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
h5part_int64_t herr = H5Block3dGetPartitionOfProc (
filehandle,
*proc,
i_start, i_end, j_start, j_end, k_start, k_end );
if ( herr < 0 ) return herr;
(*i_start)++;
(*i_end)++;
(*j_start)++;
(*j_end)++;
(*k_start)++;
(*k_end)++;
return H5PART_SUCCESS;
}
h5part_int64_t
h5bl_get_reduced_partition_of_proc (
h5part_int64_t *f,
const h5part_int64_t *proc,
h5part_int64_t *i_start,
h5part_int64_t *i_end,
h5part_int64_t *j_start,
h5part_int64_t *j_end,
h5part_int64_t *k_start,
h5part_int64_t *k_end
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
h5part_int64_t herr = H5Block3dGetReducedPartitionOfProc (
filehandle,
*proc,
i_start, i_end, j_start, j_end, k_start, k_end );
if ( herr < 0 ) return herr;
(*i_start)++;
(*i_end)++;
(*j_start)++;
(*j_end)++;
(*k_start)++;
(*k_end)++;
return H5PART_SUCCESS;
}
h5part_int64_t
h5bl_get_proc_of (
h5part_int64_t *f,
const h5part_int64_t *i,
const h5part_int64_t *j,
const h5part_int64_t *k
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
return H5Block3dGetProcOf ( filehandle, (*i)-1, (*j)-1, (*k)-1 );
}
h5part_int64_t
h5bl_getnumfields (
h5part_int64_t *f /*!< file handle */
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
return H5BlockGetNumFields ( filehandle );
}
h5part_int64_t
h5bl_getfieldinfo (
h5part_int64_t *f,
const h5part_int64_t *idx,
char *field_name,
h5part_int64_t *grid_rank,
h5part_int64_t *grid_dims,
h5part_int64_t *field_dims,
h5part_int64_t *type,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
h5part_int64_t herr = H5BlockGetFieldInfo (
filehandle, *idx, field_name, l_field_name,
grid_rank, grid_dims, field_dims, type );
_H5Part_strc2for ( field_name, l_field_name );
return herr;
}
h5part_int64_t
h5bl_writefieldattrib_string (
h5part_int64_t *f,
const char *field_name,
const char *attrib_name,
const char *attrib_value,
const int l_field_name,
const int l_attrib_name,
const int l_attrib_value
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
char *attrib_value2=_H5Part_strdupfor2c( attrib_value,l_attrib_value );
h5part_int64_t herr = H5BlockWriteFieldAttribString (
filehandle, field_name2, attrib_name2, attrib_value2 );
free ( field_name2 );
free ( attrib_name2 );
free ( attrib_value2 );
return herr;
}
h5part_int64_t
h5bl_getnfieldattribs (
h5part_int64_t *f,
const char *field_name,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5BlockGetNumFieldAttribs (
filehandle, field_name2 );
free ( field_name2 );
return herr;
}
h5part_int64_t
h5bl_getfieldattribinfo (
h5part_int64_t *f,
const char *field_name,
const h5part_int64_t *attrib_idx,
char *attrib_name,
h5part_int64_t *attrib_nelem,
const int l_field_name,
const int l_attrib_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
h5part_int64_t attrib_type;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5BlockGetFieldAttribInfo (
filehandle, field_name2, *attrib_idx,
attrib_name, l_attrib_name,
&attrib_type,
attrib_nelem );
_H5Part_strc2for ( attrib_name, l_attrib_name );
free ( field_name2 );
return herr;
}
h5part_int64_t
h5bl_readfieldattrib_i8 (
h5part_int64_t *f,
const char *field_name,
const char *attrib_name,
h5part_int64_t *attrib_value,
const int l_field_name,
const int l_attrib_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
h5part_int64_t herr = H5BlockReadFieldAttrib (
filehandle, field_name2, attrib_name2, attrib_value );
free ( field_name2 );
free ( attrib_name2 );
return herr;
}
h5part_int64_t
h5bl_readfieldattrib_r8 (
h5part_int64_t *f,
const char *field_name,
const char *attrib_name,
h5part_float64_t *attrib_value,
const int l_field_name,
const int l_attrib_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
h5part_int64_t herr = H5BlockReadFieldAttrib (
filehandle, field_name2, attrib_name2, attrib_value );
free ( field_name2 );
free ( attrib_name2 );
return herr;
}
h5part_int64_t
h5bl_readfieldattrib_string (
h5part_int64_t *f,
const char *field_name,
const char *attrib_name,
char *attrib_value,
const int l_field_name,
const int l_attrib_name,
const int l_attrib_value
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
h5part_int64_t herr = H5BlockReadFieldAttrib (
filehandle, field_name2, attrib_name2, attrib_value );
_H5Part_strc2for ( attrib_value, l_attrib_value );
free ( field_name2 );
free ( attrib_name2 );
return herr;
}
h5part_int64_t
h5bl_has_fielddata (
h5part_int64_t *f
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
return H5BlockHasFieldData ( filehandle );
}
h5part_int64_t
h5bl_3d_get_field_spacing (
h5part_int64_t *f,
const char *field_name,
h5part_float64_t *x,
h5part_float64_t *y,
h5part_float64_t *z,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dGetFieldSpacing (
filehandle, field_name2, x, y, z );
free ( field_name2 );
return herr;
}
h5part_int64_t
h5bl_3d_set_field_spacing (
h5part_int64_t *f,
const char *field_name,
const h5part_float64_t *x,
const h5part_float64_t *y,
const h5part_float64_t *z,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dSetFieldSpacing (
filehandle, field_name2, *x, *y, *z );
free ( field_name2 );
return herr;
}
h5part_int64_t
h5bl_3d_get_field_origin (
h5part_int64_t *f,
const char *field_name,
h5part_float64_t *x,
h5part_float64_t *y,
h5part_float64_t *z,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dGetFieldOrigin (
filehandle, field_name2, x, y, z );
free ( field_name2 );
return herr;
}
h5part_int64_t
h5bl_3d_set_field_origin (
h5part_int64_t *f,
const char *field_name,
const h5part_float64_t *x,
const h5part_float64_t *y,
const h5part_float64_t *z,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dSetFieldOrigin (
filehandle, field_name2, *x, *y, *z );
free ( field_name2 );
return herr;
}
+70
View File
@@ -0,0 +1,70 @@
#ifndef _H5BLOCK_PRIVATE_H_
#define _H5BLOCK_PRIVATE_H_
#define H5BLOCK_GROUPNAME_BLOCK "Block"
#define BLOCK_INIT( f ) { \
h5part_int64_t herr = _H5Block_init ( f ); \
if ( herr < 0 ) return herr; \
}
h5part_int64_t
_H5Block_init (
H5PartFile *f
);
h5part_int64_t
_H5Block_close (
H5PartFile *f
);
h5part_int64_t
_H5Block_open_field_group (
H5PartFile *f,
const char *name
);
h5part_int64_t
_H5Block_close_field_group (
H5PartFile *f
);
h5part_int64_t
_H5Block_create_field_group (
H5PartFile *f,
const char *name
);
h5part_int64_t
_H5Block_select_hyperslab_for_reading (
H5PartFile *f,
hid_t dataset
);
h5part_int64_t
_H5Block_write_data (
H5PartFile *f,
const char *name,
const void *data,
const hid_t type
);
h5part_int64_t
_H5Block_read_data (
H5PartFile *f,
const char *name,
void *data,
hid_t type
);
h5part_int64_t
_write_field_attrib (
H5PartFile *f,
const char *field_name,
const char *attrib_name,
const hid_t attrib_type,
const void *attrib_value,
const h5part_int64_t attrib_nelem
);
#endif
+769
View File
@@ -0,0 +1,769 @@
#include <stdlib.h>
#include <string.h>
#include <hdf5.h>
#include "H5Part.h"
#include "H5PartErrors.h"
#include "H5PartPrivate.h"
#include "H5BlockTypes.h"
#include "H5Block.h"
#include "H5BlockPrivate.h"
#include "H5BlockErrors.h"
/*!
\ingroup h5block_data
Write a 3-dimensional field \c name from the buffer starting at \c data
to the current time-step using the defined field layout. Values are
floating points (64-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dWriteScalarFieldFloat64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_float64_t *data /*!< IN: scalar data to write */
) {
SET_FNAME ( "H5Block3dWriteScalarFieldFloat64" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_create_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "0", data, H5T_NATIVE_DOUBLE );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
Read a 3-dimensional field \c name into the buffer starting at \c data from
the current time-step using the defined field layout. Values are
floating points (64-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dReadScalarFieldFloat64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to read */
h5part_float64_t *data /*!< OUT: ptr to read buffer */
) {
SET_FNAME ( "H5Block3dReadScalarFieldFloat64" );
BLOCK_INIT ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_open_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "0", data, H5T_NATIVE_DOUBLE );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
*/
/*!
Write a 3-dimensional field \c name with 3-dimensional vectors as values
from the buffers starting at \c x_data, \c y_data and \c z_data to the
current time-step using the defined field layout. Values are 3-dimensional
vectors with floating points (64-bit) values.
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dWrite3dVectorFieldFloat64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_float64_t *x_data, /*!< IN: X axis data */
const h5part_float64_t *y_data, /*!< IN: Y axis data */
const h5part_float64_t *z_data /*!< IN: Z axis data */
) {
SET_FNAME ( "H5Block3dWrite3dVectorFieldFloat64" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_create_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "0", x_data, H5T_NATIVE_DOUBLE );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "1", y_data, H5T_NATIVE_DOUBLE );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "2", z_data, H5T_NATIVE_DOUBLE );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
*/
/*!
Read a 3-dimensional field \c name with 3-dimensional vectors as values
from the buffers starting at \c x_data, \c y_data and \c z_data to the
current time-step using the defined field layout. Values are 3-dimensional
vectors with floating points (64-bit) values.
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dRead3dVectorFieldFloat64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
h5part_float64_t *x_data, /*!< OUT: X axis data */
h5part_float64_t *y_data, /*!< OUT: Y axis data */
h5part_float64_t *z_data /*!< OUT: Z axis data */
) {
SET_FNAME ( "H5Block3dRead3dVectorFieldFloat64" );
BLOCK_INIT ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_open_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "0", x_data, H5T_NATIVE_DOUBLE );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "1", y_data, H5T_NATIVE_DOUBLE );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "2", z_data, H5T_NATIVE_DOUBLE );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
Write a 3-dimensional field \c name from the buffer starting at \c data
to the current time-step using the defined field layout. Values are
floating points (32-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dWriteScalarFieldFloat32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_float32_t *data /*!< IN: scalar data to write */
) {
SET_FNAME ( "H5Block3dWriteScalarFieldFloat32" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_create_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "0", data, H5T_NATIVE_FLOAT );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
Read a 3-dimensional field \c name into the buffer starting at \c data from
the current time-step using the defined field layout. Values are
floating points (32-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dReadScalarFieldFloat32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to read */
h5part_float32_t *data /*!< OUT: ptr to read buffer */
) {
SET_FNAME ( "H5Block3dReadScalarFieldFloat32" );
BLOCK_INIT ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_open_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "0", data, H5T_NATIVE_FLOAT );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
*/
/*!
Write a 3-dimensional field \c name with 3-dimensional vectors as values
from the buffers starting at \c x_data, \c y_data and \c z_data to the
current time-step using the defined field layout. Values are 3-dimensional
vectors with floating points (32-bit) values.
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dWrite3dVectorFieldFloat32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_float32_t *x_data, /*!< IN: X axis data */
const h5part_float32_t *y_data, /*!< IN: Y axis data */
const h5part_float32_t *z_data /*!< IN: Z axis data */
) {
SET_FNAME ( "H5Block3dWrite3dVectorFieldFloat32" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_create_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "0", x_data, H5T_NATIVE_FLOAT );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "1", y_data, H5T_NATIVE_FLOAT );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "2", z_data, H5T_NATIVE_FLOAT );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
*/
/*!
Read a 3-dimensional field \c name with 3-dimensional vectors as values
from the buffers starting at \c x_data, \c y_data and \c z_data to the
current time-step using the defined field layout. Values are 3-dimensional
vectors with floating points (32-bit) values.
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dRead3dVectorFieldFloat32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
h5part_float32_t *x_data, /*!< OUT: X axis data */
h5part_float32_t *y_data, /*!< OUT: Y axis data */
h5part_float32_t *z_data /*!< OUT: Z axis data */
) {
SET_FNAME ( "H5Block3dRead3dVectorFieldFloat32" );
BLOCK_INIT ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_open_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "0", x_data, H5T_NATIVE_FLOAT );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "1", y_data, H5T_NATIVE_FLOAT );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "2", z_data, H5T_NATIVE_FLOAT );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
Write a 3-dimensional field \c name from the buffer starting at \c data
to the current time-step using the defined field layout. Values are
integers (64-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dWriteScalarFieldInt64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_int64_t *data /*!< IN: scalar data to write */
) {
SET_FNAME ( "H5Block3dWriteScalarFieldInt64" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_create_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "0", data, H5T_NATIVE_INT64 );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
Read a 3-dimensional field \c name into the buffer starting at \c data from
the current time-step using the defined field layout. Values are
integers (64-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dReadScalarFieldInt64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to read */
h5part_int64_t *data /*!< OUT: ptr to read buffer */
) {
SET_FNAME ( "H5Block3dReadScalarFieldInt64" );
BLOCK_INIT ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_open_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "0", data, H5T_NATIVE_INT64 );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
*/
/*!
Write a 3-dimensional field \c name with 3-dimensional vectors as values
from the buffers starting at \c x_data, \c y_data and \c z_data to the
current time-step using the defined field layout. Values are 3-dimensional
vectors with integers (64-bit) values.
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dWrite3dVectorFieldInt64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_int64_t *x_data, /*!< IN: X axis data */
const h5part_int64_t *y_data, /*!< IN: Y axis data */
const h5part_int64_t *z_data /*!< IN: Z axis data */
) {
SET_FNAME ( "H5Block3dWrite3dVectorFieldInt64" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_create_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "0", x_data, H5T_NATIVE_INT64 );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "1", y_data, H5T_NATIVE_INT64 );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "2", z_data, H5T_NATIVE_INT64 );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
*/
/*!
Read a 3-dimensional field \c name with 3-dimensional vectors as values
from the buffers starting at \c x_data, \c y_data and \c z_data to the
current time-step using the defined field layout. Values are 3-dimensional
vectors with integers (64-bit) values.
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dRead3dVectorFieldInt64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
h5part_int64_t *x_data, /*!< OUT: X axis data */
h5part_int64_t *y_data, /*!< OUT: Y axis data */
h5part_int64_t *z_data /*!< OUT: Z axis data */
) {
SET_FNAME ( "H5Block3dRead3dVectorFieldInt64" );
BLOCK_INIT ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_open_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "0", x_data, H5T_NATIVE_INT64 );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "1", y_data, H5T_NATIVE_INT64 );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "2", z_data, H5T_NATIVE_INT64 );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
Write a 3-dimensional field \c name from the buffer starting at \c data
to the current time-step using the defined field layout. Values are
integers (32-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dWriteScalarFieldInt32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_int32_t *data /*!< IN: scalar data to write */
) {
SET_FNAME ( "H5Block3dWriteScalarFieldInt32" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_create_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "0", data, H5T_NATIVE_INT32 );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
Read a 3-dimensional field \c name into the buffer starting at \c data from
the current time-step using the defined field layout. Values are
integers (32-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dReadScalarFieldInt32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to read */
h5part_int32_t *data /*!< OUT: ptr to read buffer */
) {
SET_FNAME ( "H5Block3dReadScalarFieldInt32" );
BLOCK_INIT ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_open_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "0", data, H5T_NATIVE_INT32 );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
*/
/*!
Write a 3-dimensional field \c name with 3-dimensional vectors as values
from the buffers starting at \c x_data, \c y_data and \c z_data to the
current time-step using the defined field layout. Values are 3-dimensional
vectors with integers (32-bit) values.
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dWrite3dVectorFieldInt32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_int32_t *x_data, /*!< IN: X axis data */
const h5part_int32_t *y_data, /*!< IN: Y axis data */
const h5part_int32_t *z_data /*!< IN: Z axis data */
) {
SET_FNAME ( "H5Block3dWrite3dVectorFieldInt32" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_create_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "0", x_data, H5T_NATIVE_INT32 );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "1", y_data, H5T_NATIVE_INT32 );
if ( herr < 0 ) return herr;
herr = _H5Block_write_data ( f, "2", z_data, H5T_NATIVE_INT32 );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_data
*/
/*!
Read a 3-dimensional field \c name with 3-dimensional vectors as values
from the buffers starting at \c x_data, \c y_data and \c z_data to the
current time-step using the defined field layout. Values are 3-dimensional
vectors with integers (32-bit) values.
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5Block3dRead3dVectorFieldInt32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
h5part_int32_t *x_data, /*!< OUT: X axis data */
h5part_int32_t *y_data, /*!< OUT: Y axis data */
h5part_int32_t *z_data /*!< OUT: Z axis data */
) {
SET_FNAME ( "H5Block3dRead3dVectorFieldInt32" );
BLOCK_INIT ( f );
CHECK_TIMEGROUP ( f );
CHECK_LAYOUT ( f );
h5part_int64_t herr = _H5Block_open_field_group ( f, name );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "0", x_data, H5T_NATIVE_INT32 );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "1", y_data, H5T_NATIVE_INT32 );
if ( herr < 0 ) return herr;
herr = _H5Block_read_data ( f, "2", z_data, H5T_NATIVE_INT32 );
if ( herr < 0 ) return herr;
herr = _H5Block_close_field_group ( f );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5block_attrib
Write \c attrib_value with type floating points (64-bit) as attribute \c attrib_name
to field \c field_name.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5BlockWriteFieldAttribFloat64 (
H5PartFile *f, /*!< IN: file handle */
const char *field_name, /*!< IN: field name */
const char *attrib_name, /*!< IN: attribute name */
const h5part_float64_t *attrib_value, /*!< IN: attribute value */
const h5part_int64_t attrib_nelem /*!< IN: number of elements */
) {
SET_FNAME ( "H5BlockWriteFieldAttribFloat64" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE( f );
CHECK_TIMEGROUP( f );
return _write_field_attrib (
f,
field_name,
attrib_name,
H5T_NATIVE_DOUBLE,
attrib_value,
attrib_nelem );
}
/*!
\ingroup h5block_attrib
Write \c attrib_value with type floating points (32-bit) as attribute \c attrib_name
to field \c field_name.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5BlockWriteFieldAttribFloat32 (
H5PartFile *f, /*!< IN: file handle */
const char *field_name, /*!< IN: field name */
const char *attrib_name, /*!< IN: attribute name */
const h5part_float32_t *attrib_value, /*!< IN: attribute value */
const h5part_int64_t attrib_nelem /*!< IN: number of elements */
) {
SET_FNAME ( "H5BlockWriteFieldAttribFloat32" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE( f );
CHECK_TIMEGROUP( f );
return _write_field_attrib (
f,
field_name,
attrib_name,
H5T_NATIVE_FLOAT,
attrib_value,
attrib_nelem );
}
/*!
\ingroup h5block_attrib
Write \c attrib_value with type integers (64-bit) as attribute \c attrib_name
to field \c field_name.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5BlockWriteFieldAttribInt64 (
H5PartFile *f, /*!< IN: file handle */
const char *field_name, /*!< IN: field name */
const char *attrib_name, /*!< IN: attribute name */
const h5part_int64_t *attrib_value, /*!< IN: attribute value */
const h5part_int64_t attrib_nelem /*!< IN: number of elements */
) {
SET_FNAME ( "H5BlockWriteFieldAttribInt64" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE( f );
CHECK_TIMEGROUP( f );
return _write_field_attrib (
f,
field_name,
attrib_name,
H5T_NATIVE_INT64,
attrib_value,
attrib_nelem );
}
/*!
\ingroup h5block_attrib
Write \c attrib_value with type integers (32-bit) as attribute \c attrib_name
to field \c field_name.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5BlockWriteFieldAttribInt32 (
H5PartFile *f, /*!< IN: file handle */
const char *field_name, /*!< IN: field name */
const char *attrib_name, /*!< IN: attribute name */
const h5part_int32_t *attrib_value, /*!< IN: attribute value */
const h5part_int64_t attrib_nelem /*!< IN: number of elements */
) {
SET_FNAME ( "H5BlockWriteFieldAttribInt32" );
BLOCK_INIT ( f );
CHECK_WRITABLE_MODE( f );
CHECK_TIMEGROUP( f );
return _write_field_attrib (
f,
field_name,
attrib_name,
H5T_NATIVE_INT32,
attrib_value,
attrib_nelem );
}
+224
View File
@@ -0,0 +1,224 @@
!> \ingroup h5blockf_data
!! See \ref H5Block3dWriteScalarFieldFloat64
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_r8 ( filehandle, name, data )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
REAL*8, INTENT(IN) :: data(*) !< the array of data
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dReadScalarFieldFloat64
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_r8 ( filehandle, name, data )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
REAL*8, INTENT(OUT) :: data(*) !< buffer to read the data into
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dWrite3dVectorFieldFloat64
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_r8 ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
REAL*8, INTENT(IN) :: x(*) !< the array of x data to write
REAL*8, INTENT(IN) :: y(*) !< the array of y data to write
REAL*8, INTENT(IN) :: z(*) !< the array of z data to write
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dRead3dVectorFieldFloat64
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_read_3dvector_field_r8 ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
REAL*8, INTENT(OUT) :: x(*) !< buffer to read the x data into
REAL*8, INTENT(OUT) :: y(*) !< buffer to read the y data into
REAL*8, INTENT(OUT) :: z(*) !< buffer to read the z data into
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dWriteScalarFieldFloat32
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_r4 ( filehandle, name, data )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
REAL*4, INTENT(IN) :: data(*) !< the array of data
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dReadScalarFieldFloat32
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_r4 ( filehandle, name, data )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
REAL*4, INTENT(OUT) :: data(*) !< buffer to read the data into
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dWrite3dVectorFieldFloat32
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_r4 ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
REAL*4, INTENT(IN) :: x(*) !< the array of x data to write
REAL*4, INTENT(IN) :: y(*) !< the array of y data to write
REAL*4, INTENT(IN) :: z(*) !< the array of z data to write
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dRead3dVectorFieldFloat32
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_read_3dvector_field_r4 ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
REAL*4, INTENT(OUT) :: x(*) !< buffer to read the x data into
REAL*4, INTENT(OUT) :: y(*) !< buffer to read the y data into
REAL*4, INTENT(OUT) :: z(*) !< buffer to read the z data into
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dWriteScalarFieldInt64
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_i8 ( filehandle, name, data )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
INTEGER*8, INTENT(IN) :: data(*) !< the array of data
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dReadScalarFieldInt64
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_i8 ( filehandle, name, data )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
INTEGER*8, INTENT(OUT) :: data(*) !< buffer to read the data into
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dWrite3dVectorFieldInt64
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_i8 ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
INTEGER*8, INTENT(IN) :: x(*) !< the array of x data to write
INTEGER*8, INTENT(IN) :: y(*) !< the array of y data to write
INTEGER*8, INTENT(IN) :: z(*) !< the array of z data to write
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dRead3dVectorFieldInt64
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_read_3dvector_field_i8 ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
INTEGER*8, INTENT(OUT) :: x(*) !< buffer to read the x data into
INTEGER*8, INTENT(OUT) :: y(*) !< buffer to read the y data into
INTEGER*8, INTENT(OUT) :: z(*) !< buffer to read the z data into
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dWriteScalarFieldInt32
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_i4 ( filehandle, name, data )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
INTEGER*4, INTENT(IN) :: data(*) !< the array of data
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dReadScalarFieldInt32
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_i4 ( filehandle, name, data )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
INTEGER*4, INTENT(OUT) :: data(*) !< buffer to read the data into
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dWrite3dVectorFieldInt32
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_i4 ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
INTEGER*4, INTENT(IN) :: x(*) !< the array of x data to write
INTEGER*4, INTENT(IN) :: y(*) !< the array of y data to write
INTEGER*4, INTENT(IN) :: z(*) !< the array of z data to write
END FUNCTION
!> \ingroup h5blockf_data
!! See \ref H5Block3dRead3dVectorFieldInt32
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_3d_read_3dvector_field_i4 ( filehandle, name, x, y, z )
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
INTEGER*4, INTENT(OUT) :: x(*) !< buffer to read the x data into
INTEGER*4, INTENT(OUT) :: y(*) !< buffer to read the y data into
INTEGER*4, INTENT(OUT) :: z(*) !< buffer to read the z data into
END FUNCTION
!> \ingroup h5blockf_attrib
!! See \ref H5BlockWriteFieldAttribFloat64
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_writefieldattrib_r8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
REAL*8, INTENT(IN) :: attrib_value(*) !< the array of data to write into the attribute
INTEGER*8, INTENT(IN) :: attrib_nelem !< the number of elements in the array
END FUNCTION
!> \ingroup h5blockf_attrib
!! See \ref H5BlockWriteFieldAttribFloat32
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_writefieldattrib_r4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
REAL*4, INTENT(IN) :: attrib_value(*) !< the array of data to write into the attribute
INTEGER*8, INTENT(IN) :: attrib_nelem !< the number of elements in the array
END FUNCTION
!> \ingroup h5blockf_attrib
!! See \ref H5BlockWriteFieldAttribInt64
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_writefieldattrib_i8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
INTEGER*8, INTENT(IN) :: attrib_value(*) !< the array of data to write into the attribute
INTEGER*8, INTENT(IN) :: attrib_nelem !< the number of elements in the array
END FUNCTION
!> \ingroup h5blockf_attrib
!! See \ref H5BlockWriteFieldAttribInt32
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5bl_writefieldattrib_i4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
INTEGER*4, INTENT(IN) :: attrib_value(*) !< the array of data to write into the attribute
INTEGER*8, INTENT(IN) :: attrib_nelem !< the number of elements in the array
END FUNCTION
+179
View File
@@ -0,0 +1,179 @@
#ifndef _H5BLOCK_READWRITE_H_
#define _H5BLOCK_READWRITE_H_
#ifdef __cplusplus
extern "C" {
#endif
h5part_int64_t
H5Block3dWriteScalarFieldFloat64 (
H5PartFile *f,
const char *name,
const h5part_float64_t *data
);
h5part_int64_t
H5Block3dReadScalarFieldFloat64 (
H5PartFile *f,
const char *name,
h5part_float64_t *data
);
h5part_int64_t
H5Block3dWrite3dVectorFieldFloat64 (
H5PartFile *f,
const char *name,
const h5part_float64_t *xval,
const h5part_float64_t *yval,
const h5part_float64_t *zval
);
h5part_int64_t
H5Block3dRead3dVectorFieldFloat64 (
H5PartFile *f,
const char *name,
h5part_float64_t *xval,
h5part_float64_t *yval,
h5part_float64_t *zval
);
h5part_int64_t
H5Block3dWriteScalarFieldFloat32 (
H5PartFile *f,
const char *name,
const h5part_float32_t *data
);
h5part_int64_t
H5Block3dReadScalarFieldFloat32 (
H5PartFile *f,
const char *name,
h5part_float32_t *data
);
h5part_int64_t
H5Block3dWrite3dVectorFieldFloat32 (
H5PartFile *f,
const char *name,
const h5part_float32_t *xval,
const h5part_float32_t *yval,
const h5part_float32_t *zval
);
h5part_int64_t
H5Block3dRead3dVectorFieldFloat32 (
H5PartFile *f,
const char *name,
h5part_float32_t *xval,
h5part_float32_t *yval,
h5part_float32_t *zval
);
h5part_int64_t
H5Block3dWriteScalarFieldInt64 (
H5PartFile *f,
const char *name,
const h5part_int64_t *data
);
h5part_int64_t
H5Block3dReadScalarFieldInt64 (
H5PartFile *f,
const char *name,
h5part_int64_t *data
);
h5part_int64_t
H5Block3dWrite3dVectorFieldInt64 (
H5PartFile *f,
const char *name,
const h5part_int64_t *xval,
const h5part_int64_t *yval,
const h5part_int64_t *zval
);
h5part_int64_t
H5Block3dRead3dVectorFieldInt64 (
H5PartFile *f,
const char *name,
h5part_int64_t *xval,
h5part_int64_t *yval,
h5part_int64_t *zval
);
h5part_int64_t
H5Block3dWriteScalarFieldInt32 (
H5PartFile *f,
const char *name,
const h5part_int32_t *data
);
h5part_int64_t
H5Block3dReadScalarFieldInt32 (
H5PartFile *f,
const char *name,
h5part_int32_t *data
);
h5part_int64_t
H5Block3dWrite3dVectorFieldInt32 (
H5PartFile *f,
const char *name,
const h5part_int32_t *xval,
const h5part_int32_t *yval,
const h5part_int32_t *zval
);
h5part_int64_t
H5Block3dRead3dVectorFieldInt32 (
H5PartFile *f,
const char *name,
h5part_int32_t *xval,
h5part_int32_t *yval,
h5part_int32_t *zval
);
h5part_int64_t
H5BlockWriteFieldAttribFloat64 (
H5PartFile *f, /*!< IN: file handle */
const char *field_name, /*!< IN: field name */
const char *attrib_name, /*!< IN: attribute name */
const h5part_float64_t *attrib_value, /*!< IN: attribute value */
const h5part_int64_t attrib_nelem /*!< IN: number of elements */
);
h5part_int64_t
H5BlockWriteFieldAttribFloat32 (
H5PartFile *f, /*!< IN: file handle */
const char *field_name, /*!< IN: field name */
const char *attrib_name, /*!< IN: attribute name */
const h5part_float32_t *attrib_value, /*!< IN: attribute value */
const h5part_int64_t attrib_nelem /*!< IN: number of elements */
);
h5part_int64_t
H5BlockWriteFieldAttribInt64 (
H5PartFile *f, /*!< IN: file handle */
const char *field_name, /*!< IN: field name */
const char *attrib_name, /*!< IN: attribute name */
const h5part_int64_t *attrib_value, /*!< IN: attribute value */
const h5part_int64_t attrib_nelem /*!< IN: number of elements */
);
h5part_int64_t
H5BlockWriteFieldAttribInt32 (
H5PartFile *f, /*!< IN: file handle */
const char *field_name, /*!< IN: field name */
const char *attrib_name, /*!< IN: attribute name */
const h5part_int32_t *attrib_value, /*!< IN: attribute value */
const h5part_int64_t attrib_nelem /*!< IN: number of elements */
);
#ifdef __cplusplus
}
#endif
#endif
+555
View File
@@ -0,0 +1,555 @@
#include "H5Part.h"
#include "H5PartPrivate.h"
#include "H5Block.h"
#include "H5BlockReadWrite.h"
#include "Underscore.h"
#if defined(F77_SINGLE_UNDERSCORE)
#define F77NAME(a,b) a
#elif defined(F77_CRAY_UNDERSCORE)
#define F77NAME(a,b) b
#elif defined(F77_NO_UNDERSCORE)
#else
#error Error, no way to determine how to construct fortran bindings
#endif
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_write_scalar_field_r8 F77NAME ( \
h5bl_3d_write_scalar_field_r8_, \
H5BL_3D_WRITE_SCALAR_FIELD_R8 )
#endif
h5part_int64_t
h5bl_3d_write_scalar_field_r8 (
h5part_int64_t *f,
const char *field_name,
const h5part_float64_t *data,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWriteScalarFieldFloat64 (
filehandle, field_name2, data );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_read_scalar_field_r8 F77NAME ( \
h5bl_3d_read_scalar_field_r8_, \
H5BL_3D_READ_SCALAR_FIELD_R8 )
#endif
h5part_int64_t
h5bl_3d_read_scalar_field_r8 (
h5part_int64_t *f,
const char *field_name,
h5part_float64_t *data,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWriteScalarFieldFloat64 (
filehandle, field_name2, data );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_write_3dvector_field_r8 F77NAME ( \
h5bl_3d_write_3dvector_field_r8_, \
H5BL_3D_WRITE_3DVECTOR_FIELD_R8 )
#endif
h5part_int64_t
h5bl_3d_write_3dvector_field_r8 (
h5part_int64_t *f, /*!< file handle */
const char *field_name, /*!< name of the data set */
const h5part_float64_t *xval, /*!< array of x component data */
const h5part_float64_t *yval, /*!< array of y component data */
const h5part_float64_t *zval, /*!< array of z component data */
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWrite3dVectorFieldFloat64 (
filehandle, field_name2, xval, yval, zval );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_read_3dvector_field_r8 F77NAME ( \
h5bl_3d_read_3dvector_field_r8_, \
H5BL_3D_READ_3DVECTOR_FIELD_R8 )
#endif
h5part_int64_t
h5bl_3d_read_3dvector_field_r8 (
h5part_int64_t *f, /*!< file handle */
const char *field_name, /*!< name of the data set */
h5part_float64_t *xval, /*!< array of x component data */
h5part_float64_t *yval, /*!< array of y component data */
h5part_float64_t *zval, /*!< array of z component data */
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dRead3dVectorFieldFloat64 (
filehandle, field_name2, xval, yval, zval );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_write_scalar_field_r4 F77NAME ( \
h5bl_3d_write_scalar_field_r4_, \
H5BL_3D_WRITE_SCALAR_FIELD_R4 )
#endif
h5part_int64_t
h5bl_3d_write_scalar_field_r4 (
h5part_int64_t *f,
const char *field_name,
const h5part_float32_t *data,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWriteScalarFieldFloat32 (
filehandle, field_name2, data );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_read_scalar_field_r4 F77NAME ( \
h5bl_3d_read_scalar_field_r4_, \
H5BL_3D_READ_SCALAR_FIELD_R4 )
#endif
h5part_int64_t
h5bl_3d_read_scalar_field_r4 (
h5part_int64_t *f,
const char *field_name,
h5part_float32_t *data,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWriteScalarFieldFloat32 (
filehandle, field_name2, data );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_write_3dvector_field_r4 F77NAME ( \
h5bl_3d_write_3dvector_field_r4_, \
H5BL_3D_WRITE_3DVECTOR_FIELD_R4 )
#endif
h5part_int64_t
h5bl_3d_write_3dvector_field_r4 (
h5part_int64_t *f, /*!< file handle */
const char *field_name, /*!< name of the data set */
const h5part_float32_t *xval, /*!< array of x component data */
const h5part_float32_t *yval, /*!< array of y component data */
const h5part_float32_t *zval, /*!< array of z component data */
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWrite3dVectorFieldFloat32 (
filehandle, field_name2, xval, yval, zval );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_read_3dvector_field_r4 F77NAME ( \
h5bl_3d_read_3dvector_field_r4_, \
H5BL_3D_READ_3DVECTOR_FIELD_R4 )
#endif
h5part_int64_t
h5bl_3d_read_3dvector_field_r4 (
h5part_int64_t *f, /*!< file handle */
const char *field_name, /*!< name of the data set */
h5part_float32_t *xval, /*!< array of x component data */
h5part_float32_t *yval, /*!< array of y component data */
h5part_float32_t *zval, /*!< array of z component data */
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dRead3dVectorFieldFloat32 (
filehandle, field_name2, xval, yval, zval );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_write_scalar_field_i8 F77NAME ( \
h5bl_3d_write_scalar_field_i8_, \
H5BL_3D_WRITE_SCALAR_FIELD_I8 )
#endif
h5part_int64_t
h5bl_3d_write_scalar_field_i8 (
h5part_int64_t *f,
const char *field_name,
const h5part_int64_t *data,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWriteScalarFieldInt64 (
filehandle, field_name2, data );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_read_scalar_field_i8 F77NAME ( \
h5bl_3d_read_scalar_field_i8_, \
H5BL_3D_READ_SCALAR_FIELD_I8 )
#endif
h5part_int64_t
h5bl_3d_read_scalar_field_i8 (
h5part_int64_t *f,
const char *field_name,
h5part_int64_t *data,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWriteScalarFieldInt64 (
filehandle, field_name2, data );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_write_3dvector_field_i8 F77NAME ( \
h5bl_3d_write_3dvector_field_i8_, \
H5BL_3D_WRITE_3DVECTOR_FIELD_I8 )
#endif
h5part_int64_t
h5bl_3d_write_3dvector_field_i8 (
h5part_int64_t *f, /*!< file handle */
const char *field_name, /*!< name of the data set */
const h5part_int64_t *xval, /*!< array of x component data */
const h5part_int64_t *yval, /*!< array of y component data */
const h5part_int64_t *zval, /*!< array of z component data */
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWrite3dVectorFieldInt64 (
filehandle, field_name2, xval, yval, zval );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_read_3dvector_field_i8 F77NAME ( \
h5bl_3d_read_3dvector_field_i8_, \
H5BL_3D_READ_3DVECTOR_FIELD_I8 )
#endif
h5part_int64_t
h5bl_3d_read_3dvector_field_i8 (
h5part_int64_t *f, /*!< file handle */
const char *field_name, /*!< name of the data set */
h5part_int64_t *xval, /*!< array of x component data */
h5part_int64_t *yval, /*!< array of y component data */
h5part_int64_t *zval, /*!< array of z component data */
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dRead3dVectorFieldInt64 (
filehandle, field_name2, xval, yval, zval );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_write_scalar_field_i4 F77NAME ( \
h5bl_3d_write_scalar_field_i4_, \
H5BL_3D_WRITE_SCALAR_FIELD_I4 )
#endif
h5part_int64_t
h5bl_3d_write_scalar_field_i4 (
h5part_int64_t *f,
const char *field_name,
const h5part_int32_t *data,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWriteScalarFieldInt32 (
filehandle, field_name2, data );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_read_scalar_field_i4 F77NAME ( \
h5bl_3d_read_scalar_field_i4_, \
H5BL_3D_READ_SCALAR_FIELD_I4 )
#endif
h5part_int64_t
h5bl_3d_read_scalar_field_i4 (
h5part_int64_t *f,
const char *field_name,
h5part_int32_t *data,
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWriteScalarFieldInt32 (
filehandle, field_name2, data );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_write_3dvector_field_i4 F77NAME ( \
h5bl_3d_write_3dvector_field_i4_, \
H5BL_3D_WRITE_3DVECTOR_FIELD_I4 )
#endif
h5part_int64_t
h5bl_3d_write_3dvector_field_i4 (
h5part_int64_t *f, /*!< file handle */
const char *field_name, /*!< name of the data set */
const h5part_int32_t *xval, /*!< array of x component data */
const h5part_int32_t *yval, /*!< array of y component data */
const h5part_int32_t *zval, /*!< array of z component data */
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dWrite3dVectorFieldInt32 (
filehandle, field_name2, xval, yval, zval );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_3d_read_3dvector_field_i4 F77NAME ( \
h5bl_3d_read_3dvector_field_i4_, \
H5BL_3D_READ_3DVECTOR_FIELD_I4 )
#endif
h5part_int64_t
h5bl_3d_read_3dvector_field_i4 (
h5part_int64_t *f, /*!< file handle */
const char *field_name, /*!< name of the data set */
h5part_int32_t *xval, /*!< array of x component data */
h5part_int32_t *yval, /*!< array of y component data */
h5part_int32_t *zval, /*!< array of z component data */
const int l_field_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
h5part_int64_t herr = H5Block3dRead3dVectorFieldInt32 (
filehandle, field_name2, xval, yval, zval );
free ( field_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_writefieldattrib_r8 F77NAME ( \
h5bl_writefieldattrib_r8_, \
H5BL_WRITEFIELDATTRIB_R8 )
#endif
h5part_int64_t
h5bl_writefieldattrib_r8 (
h5part_int64_t *f,
const char *field_name,
const char *attrib_name,
const h5part_float64_t *attrib_value,
const h5part_int64_t *attrib_nelem,
const int l_field_name,
const int l_attrib_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
char *attrib_name2 =_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
h5part_int64_t herr = H5BlockWriteFieldAttribFloat64 (
filehandle, field_name2, attrib_name2,
attrib_value, *attrib_nelem );
free ( field_name2 );
free ( attrib_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_writefieldattrib_r4 F77NAME ( \
h5bl_writefieldattrib_r4_, \
H5BL_WRITEFIELDATTRIB_R4 )
#endif
h5part_int64_t
h5bl_writefieldattrib_r4 (
h5part_int64_t *f,
const char *field_name,
const char *attrib_name,
const h5part_float32_t *attrib_value,
const h5part_int64_t *attrib_nelem,
const int l_field_name,
const int l_attrib_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
char *attrib_name2 =_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
h5part_int64_t herr = H5BlockWriteFieldAttribFloat32 (
filehandle, field_name2, attrib_name2,
attrib_value, *attrib_nelem );
free ( field_name2 );
free ( attrib_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_writefieldattrib_i8 F77NAME ( \
h5bl_writefieldattrib_i8_, \
H5BL_WRITEFIELDATTRIB_I8 )
#endif
h5part_int64_t
h5bl_writefieldattrib_i8 (
h5part_int64_t *f,
const char *field_name,
const char *attrib_name,
const h5part_int64_t *attrib_value,
const h5part_int64_t *attrib_nelem,
const int l_field_name,
const int l_attrib_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
char *attrib_name2 =_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
h5part_int64_t herr = H5BlockWriteFieldAttribInt64 (
filehandle, field_name2, attrib_name2,
attrib_value, *attrib_nelem );
free ( field_name2 );
free ( attrib_name2 );
return herr;
}
#if ! defined(F77_NO_UNDERSCORE)
#define h5bl_writefieldattrib_i4 F77NAME ( \
h5bl_writefieldattrib_i4_, \
H5BL_WRITEFIELDATTRIB_I4 )
#endif
h5part_int64_t
h5bl_writefieldattrib_i4 (
h5part_int64_t *f,
const char *field_name,
const char *attrib_name,
const h5part_int32_t *attrib_value,
const h5part_int64_t *attrib_nelem,
const int l_field_name,
const int l_attrib_name
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
char *attrib_name2 =_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
h5part_int64_t herr = H5BlockWriteFieldAttribInt32 (
filehandle, field_name2, attrib_name2,
attrib_value, *attrib_nelem );
free ( field_name2 );
free ( attrib_name2 );
return herr;
}
+34
View File
@@ -0,0 +1,34 @@
#ifndef _H5BLOCK_TYPES_H
#define _H5BLOCK_TYPES_H
struct H5BlockPartition {
h5part_int64_t i_start;
h5part_int64_t i_end;
h5part_int64_t j_start;
h5part_int64_t j_end;
h5part_int64_t k_start;
h5part_int64_t k_end;
};
struct H5BlockStruct {
h5part_int64_t timestep;
h5part_int64_t i_max;
h5part_int64_t j_max;
h5part_int64_t k_max;
struct H5BlockPartition *user_layout;
struct H5BlockPartition *write_layout;
int have_layout;
hsize_t chunk[3];
hid_t shape;
hid_t memshape;
hid_t diskshape;
hid_t blockgroup;
hid_t field_group_id;
hid_t create_prop;
};
#define H5PART_ERR_LAYOUT -100
#define H5PART_ERR_NOENT -101
#endif
+1316
View File
File diff suppressed because it is too large Load Diff
+78
View File
@@ -0,0 +1,78 @@
#ifndef _H5MULTIBLOCK_H_
#define _H5MULTIBLOCK_H_
#ifdef __cplusplus
extern "C" {
#endif
/*!
Include read/write call variants for different data types and
field dimensions.
*/
#include "H5MultiBlockReadWrite.h"
#define H5MULTIBLOCK_ATTR_NAME "__BlockDims__"
h5part_int64_t
H5MultiBlock3dDefineRadius (
H5PartFile *f,
const h5part_int64_t r
);
h5part_int64_t
H5MultiBlock3dDefineRadii (
H5PartFile *f,
const h5part_int64_t ri,
const h5part_int64_t rj,
const h5part_int64_t rk
);
h5part_int64_t
H5MultiBlock3dDefineDims (
H5PartFile *f,
const h5part_int64_t *field_dims,
const h5part_int64_t *block_dims
);
h5part_int64_t
H5MultiBlock3dGetFieldDims(
H5PartFile *f,
h5part_int64_t *dims
);
h5part_int64_t
H5MultiBlock3dGetBlockDims(
H5PartFile *f,
const char *field_name,
h5part_int64_t *dims
);
h5part_int64_t
H5MultiBlock3dGetOffsetsOfProc (
H5PartFile *f,
const h5part_int64_t proc,
h5part_int64_t *offsets
);
h5part_int64_t
H5MultiBlock3dCalculateDecomp (
const int nprocs,
h5part_int64_t *decomp
);
h5part_int64_t
H5MultiBlockFree (
void *block
);
h5part_int64_t
H5MultiBlockShiftProcs (
H5PartFile *f,
const int shift
);
#ifdef __cplusplus
}
#endif
#endif
+33
View File
@@ -0,0 +1,33 @@
#ifndef _H5MULTIBLOCK_ERRORS_H_
#define _H5MULTIBLOCK_ERRORS_H_
extern h5part_error_handler _err_handler;
#define CHECK_DECOMP( f ) \
if ( ! f->multiblock->have_decomp ) \
return (*_err_handler) ( \
_H5Part_get_funcname(), \
H5PART_ERR_DECOMP, \
"No dimensions defined." )
#define HANDLE_H5PART_BLOCK_DECOMP_ERR \
(*_err_handler) ( \
_H5Part_get_funcname(), \
H5PART_ERR_DECOMP, \
"Number of blocks does not equal number of procs" );
#define HANDLE_MPI_TYPE_ERR \
(*_err_handler) ( \
_H5Part_get_funcname(), \
H5PART_ERR_MPI, \
"Cannot create/commit/free strided vector MPI datatype." );
#define HANDLE_MPI_INT64_ERR \
(*_err_handler) ( \
_H5Part_get_funcname(), \
H5PART_ERR_MPI, \
"Integer overslow error! An offset/count/stride/etc. value " \
"passed to an MPI function exceeds the 32-bit limit imposed " \
"by the MPI standard." );
#endif
+35
View File
@@ -0,0 +1,35 @@
#ifndef _H5MULTIBLOCK_PRIVATE_H_
#define _H5MULTIBLOCK_PRIVATE_H_
#define MULTIBLOCK_INIT( f ) { \
h5part_int64_t herr = _H5MultiBlock_init ( f ); \
if ( herr < 0 ) return herr; \
}
h5part_int64_t
_H5MultiBlock_init (
H5PartFile *f
);
h5part_int64_t
_H5MultiBlock_close (
H5PartFile *f
);
h5part_int64_t
_H5MultiBlock_write_data (
H5PartFile *f,
const char *field_name,
const void *data,
const hid_t type
);
h5part_int64_t
_H5MultiBlock_read_data (
H5PartFile *f,
const char *field_name,
char **data,
hid_t type
);
#endif
+244
View File
@@ -0,0 +1,244 @@
#include <stdlib.h>
#include <string.h>
#include <hdf5.h>
#include "H5Part.h"
#include "H5PartErrors.h"
#include "H5PartPrivate.h"
#include "H5MultiBlockErrors.h"
#include "H5MultiBlockPrivate.h"
#ifdef PARALLEL_IO
/*!
\ingroup h5multiblock_data
Write a multiblock field \c name from the buffer starting at \c data
to the current time-step using the defined block decomposition and dimensions.
Values are floating points (64-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5MultiBlock3dWriteFieldFloat64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_float64_t *data /*!< IN: data to write */
) {
SET_FNAME( "H5MultiBlock3dWriteFieldFloat64" );
h5part_int64_t herr;
herr = _H5MultiBlock_write_data ( f, name, data, H5T_NATIVE_DOUBLE );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5multiblock_data
Allocate a buffer to hold a block from a multiblock field and place the
pointer in \c data, then read the block into the buffer. Uses the block
decomposition specified in the file and the defined halo radius.
Values are floating points (64-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5MultiBlock3dReadFieldFloat64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to read */
h5part_float64_t **data /*!< OUT: ptr to read buffer */
) {
SET_FNAME( "H5MultiBlock3dReadFieldFloat64" );
h5part_int64_t herr;
herr = _H5MultiBlock_read_data ( f, name, (char**) data, H5T_NATIVE_DOUBLE );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5multiblock_data
Write a multiblock field \c name from the buffer starting at \c data
to the current time-step using the defined block decomposition and dimensions.
Values are floating points (32-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5MultiBlock3dWriteFieldFloat32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_float32_t *data /*!< IN: data to write */
) {
SET_FNAME( "H5MultiBlock3dWriteFieldFloat32" );
h5part_int64_t herr;
herr = _H5MultiBlock_write_data ( f, name, data, H5T_NATIVE_FLOAT );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5multiblock_data
Allocate a buffer to hold a block from a multiblock field and place the
pointer in \c data, then read the block into the buffer. Uses the block
decomposition specified in the file and the defined halo radius.
Values are floating points (32-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5MultiBlock3dReadFieldFloat32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to read */
h5part_float32_t **data /*!< OUT: ptr to read buffer */
) {
SET_FNAME( "H5MultiBlock3dReadFieldFloat32" );
h5part_int64_t herr;
herr = _H5MultiBlock_read_data ( f, name, (char**) data, H5T_NATIVE_FLOAT );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5multiblock_data
Write a multiblock field \c name from the buffer starting at \c data
to the current time-step using the defined block decomposition and dimensions.
Values are integers (64-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5MultiBlock3dWriteFieldInt64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_int64_t *data /*!< IN: data to write */
) {
SET_FNAME( "H5MultiBlock3dWriteFieldInt64" );
h5part_int64_t herr;
herr = _H5MultiBlock_write_data ( f, name, data, H5T_NATIVE_INT64 );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5multiblock_data
Allocate a buffer to hold a block from a multiblock field and place the
pointer in \c data, then read the block into the buffer. Uses the block
decomposition specified in the file and the defined halo radius.
Values are integers (64-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5MultiBlock3dReadFieldInt64 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to read */
h5part_int64_t **data /*!< OUT: ptr to read buffer */
) {
SET_FNAME( "H5MultiBlock3dReadFieldInt64" );
h5part_int64_t herr;
herr = _H5MultiBlock_read_data ( f, name, (char**) data, H5T_NATIVE_INT64 );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5multiblock_data
Write a multiblock field \c name from the buffer starting at \c data
to the current time-step using the defined block decomposition and dimensions.
Values are integers (32-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5MultiBlock3dWriteFieldInt32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to write */
const h5part_int32_t *data /*!< IN: data to write */
) {
SET_FNAME( "H5MultiBlock3dWriteFieldInt32" );
h5part_int64_t herr;
herr = _H5MultiBlock_write_data ( f, name, data, H5T_NATIVE_INT32 );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
/*!
\ingroup h5multiblock_data
Allocate a buffer to hold a block from a multiblock field and place the
pointer in \c data, then read the block into the buffer. Uses the block
decomposition specified in the file and the defined halo radius.
Values are integers (32-bit).
You must use the Fortran indexing scheme to access items in \c data.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5MultiBlock3dReadFieldInt32 (
H5PartFile *f, /*!< IN: file handle */
const char *name, /*!< IN: name of dataset to read */
h5part_int32_t **data /*!< OUT: ptr to read buffer */
) {
SET_FNAME( "H5MultiBlock3dReadFieldInt32" );
h5part_int64_t herr;
herr = _H5MultiBlock_read_data ( f, name, (char**) data, H5T_NATIVE_INT32 );
if ( herr < 0 ) return herr;
return H5PART_SUCCESS;
}
#endif // PARALLEL_IO
+71
View File
@@ -0,0 +1,71 @@
#ifndef _H5MULTIBLOCK_READWRITE_H_
#define _H5MULTIBLOCK_READWRITE_H_
#ifdef __cplusplus
extern "C" {
#endif
h5part_int64_t
H5MultiBlock3dWriteFieldFloat64 (
H5PartFile *f,
const char *name,
const h5part_float64_t *data
);
h5part_int64_t
H5MultiBlock3dReadFieldFloat64 (
H5PartFile *f,
const char *name,
h5part_float64_t **data
);
h5part_int64_t
H5MultiBlock3dWriteFieldFloat32 (
H5PartFile *f,
const char *name,
const h5part_float32_t *data
);
h5part_int64_t
H5MultiBlock3dReadFieldFloat32 (
H5PartFile *f,
const char *name,
h5part_float32_t **data
);
h5part_int64_t
H5MultiBlock3dWriteFieldInt64 (
H5PartFile *f,
const char *name,
const h5part_int64_t *data
);
h5part_int64_t
H5MultiBlock3dReadFieldInt64 (
H5PartFile *f,
const char *name,
h5part_int64_t **data
);
h5part_int64_t
H5MultiBlock3dWriteFieldInt32 (
H5PartFile *f,
const char *name,
const h5part_int32_t *data
);
h5part_int64_t
H5MultiBlock3dReadFieldInt32 (
H5PartFile *f,
const char *name,
h5part_int32_t **data
);
#ifdef __cplusplus
}
#endif
#endif
+27
View File
@@ -0,0 +1,27 @@
#ifndef _H5MULTIBLOCK_TYPES_H_
#define _H5MULTIBLOCK_TYPES_H_
struct H5MultiBlockStruct {
h5part_int64_t halo_radii[3];
h5part_int64_t block_dims[3];
h5part_int64_t halo_dims[3];
h5part_int64_t field_dims[3];
h5part_int64_t decomp[3];
h5part_int64_t offsets[3];
char field_edges;
int read;
int halo;
int have_decomp;
int proc_shift;
};
#define H5PART_ERR_DECOMP -102
#define H5MB_EDGE_X0 0x01
#define H5MB_EDGE_X1 0x02
#define H5MB_EDGE_Y0 0x04
#define H5MB_EDGE_Y1 0x08
#define H5MB_EDGE_Z0 0x10
#define H5MB_EDGE_Z1 0x20
#endif
-234
View File
@@ -1,234 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <hdf5.h>
#include "H5Part++.hh"
#include <fstream>
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
#ifdef READTEST
/*
A simple regression test that shows how you use this API
to write and read multi-timestep files of particle data.
*/
#ifdef PARALLEL_IO
#else
int main(int argc,char **argv){
const int sz=5;
double x[sz],y[sz],z[sz];
long long id[sz];
char name[64];
H5PartFile *file;
int i,t,nt,nds,myproc;
int nfattribs,nsattribs;
const string fn = string(argv[1]);
cout << "Open " << fn << endl;
file= H5PartOpenFile(fn.c_str(),H5PART_READ);
nt=H5PartGetNumSteps(file); /* get number of steps in file */
H5PartSetStep(file,0);
nds=H5PartGetNumDatasets(file); /* get number of datasets in timestep 0 */
puts("\n\n===============================");
for(i=0;i<nds;i++){ /* and print out those names */
H5PartGetDatasetName(file,i,name,64);
printf("\tDataset[%u] name=[%s]\n",
i,name);
}
puts("===============================\n\n");
nfattribs=H5PartGetNumFileAttribs(file);
printf("Number of datasteps in file is %u num file attribs=%d\n",
nt,nfattribs);
H5PartCloseFile(file);
}
#endif
#endif
#ifdef REGRESSIONTEST
/*
A simple regression test that shows how you use this API
to write and read multi-timestep files of particle data.
*/
#ifdef PARALLEL_IO
int main(int argc,char *argv[]){
int sz=5;
double *x,*y,*z;
long long *id;
char name[64];
H5PartFile *file;
int i,t,nt,nds;
int nprocs,myproc;
hid_t gid;
MPI_Comm comm=MPI_COMM_WORLD;
MPI_Init(&argc,&argv);
MPI_Comm_size(comm,&nprocs);
MPI_Comm_rank(comm,&myproc);
x=(double*)malloc(sz*nprocs*sizeof(double));
y=(double*)malloc(sz*nprocs*sizeof(double));
z=(double*)malloc(sz*nprocs*sizeof(double));
id=(long long*)malloc(sz*nprocs*sizeof(long long));
/* parallel file creation */
file=H5PartOpenFileParallel("parttest.h5",H5PART_WRITE,comm);
if(!file) {
perror("File open failed: exiting!");
exit(0);
}
for(t=0;t<5;t++){
MPI_Barrier(comm);
for(i=0;i<sz;i++) {
x[i]=(double)(i+t)+10.0*(double)myproc;
y[i]=0.1 + (double)(i+t);
z[i]=0.2 + (double)(i+t*10);
id[i]=i+sz*myproc;
}
printf("Proc[%u] Writing timestep %u file=%u\n",myproc,t,file->file);
H5PartSetStep(file,t); /* must set the current timestep in file */
H5PartSetNumParticles(file,sz); /* then set number of particles to store */
/* now write different tuples of data into this timestep of the file */
H5PartWriteDataFloat64(file,"x",x);
H5PartWriteDataFloat64(file,"y",y);
H5PartWriteDataFloat64(file,"z",z);
H5PartWriteDataInt64(file,"id",id);
}
printf("AllDone p[%u]\n",myproc);
H5PartCloseFile(file);
MPI_Barrier(comm);
printf("p[%u:%u] : OK, close file and reopen for reading \n",myproc,nprocs);
if(myproc==0){ /* now only proc 0 reads the file serially */
file= H5PartOpenFileSerial("parttest.h5",H5PART_READ);
nt=H5PartGetNumSteps(file); /* get number of steps in file */
H5PartSetStep(file,0);
nds=H5PartGetNumDatasets(file); /* get number of datasets in timestep 0 */
puts("\n\n===============================");
for(i=0;i<nds;i++){ /* and print out those names */
H5PartGetDatasetName(file,i,name,64);
printf("\tDataset[%u] name=[%s]\n",
i,name);
}
puts("===============================\n\n");
printf("Number of datasteps in file is %u\n",nt);
for(t=0;t<nt;t++){
int nparticles;
H5PartSetStep(file,t); /* select a timestep */
nparticles=(int)H5PartGetNumParticles(file);
printf("Step[%u] nparticles this step=%u\n",
t,nparticles); /* get num particles this step *
H5PartReadParticleStep(file,t,/* do a mongo read of all data this step */
x,y,z,id);
printf("\tid\t\tx\t\ty\t\tz\n");
puts("\t----------------------------------------------------");
for(i=0;i<nparticles;i++) {
printf("\t%llu\t%f\t%f\t%f\n\n",id[i],x[i],y[i],z[i]);
}
}
H5PartCloseFile(file);
}
if(x) free(x);
if(y) free(y);
if(z) free(z);
if(id) free(id);
MPI_Barrier(comm);
fprintf(stderr,"proc[%u]: done\n",myproc);
return MPI_Finalize();
}
#else
int main(int argc,char *argv){
const int sz=5;
double x[sz],y[sz],z[sz];
long long id[sz];
char name[64];
H5PartFile *file;
int i,t,nt,nds,myproc;
int nfattribs,nsattribs;
file=H5PartOpenFile("parttest.h5",H5PART_WRITE);
if(!file) {
perror("File open failed: exiting!");
exit(0);
}
for(t=0;t<5;t++){
long long step=t;
printf("Writing timestep %u\n",t);
for(i=0;i<sz;i++) {
x[i]=(double)(i+t);
y[i]=0.1 + (double)(i+t);
z[i]=0.2 + (double)(i+t);
id[i]=i;
}
H5PartSetStep(file,t); /* must set the current timestep in file */
H5PartSetNumParticles(file,sz); /* then set number of particles to store */
/* now write different tuples of data into this timestep of the file */
H5PartWriteDataFloat64(file,"x",x);
H5PartWriteDataFloat64(file,"y",y);
H5PartWriteDataFloat64(file,"z",z);
H5PartWriteDataInt64(file,"id",id);
H5PartWriteStepAttrib(file,"Step",H5T_NATIVE_INT64,&step,1);
}
H5PartCloseFile(file);
printf("OK, close file and reopen for reading\n");
file= H5PartOpenFile("parttest.h5",H5PART_READ);
nt=H5PartGetNumSteps(file); /* get number of steps in file */
H5PartSetStep(file,0);
nds=H5PartGetNumDatasets(file); /* get number of datasets in timestep 0 */
puts("\n\n===============================");
for(i=0;i<nds;i++){ /* and print out those names */
H5PartGetDatasetName(file,i,name,64);
printf("\tDataset[%u] name=[%s]\n",
i,name);
}
puts("===============================\n\n");
nfattribs=H5PartGetNumFileAttribs(file);
printf("Number of datasteps in file is %u num file attribs=%d\n",
nt,nfattribs);
for(t=0;t<nt;t++){
int nparticles;
H5PartSetStep(file,t); /* select a timestep */
nparticles=(int)H5PartGetNumParticles(file);
nsattribs=H5PartGetNumStepAttribs(file);
printf("Step[%u] nparticles this step=%u stepattribs=%u\n",
t,nparticles,nsattribs); /* get num particles this step */
if(nsattribs>0){
char attrname[32];
H5PartGetStepAttribInfo(file,0,attrname,32,0,0);
printf("First Attrib name is [%s]\n",attrname);
}
H5PartReadParticleStep(file,t,/* do a mongo read of all data this step */
x,y,z,id);
printf("\tid\t\tx\t\ty\t\tz\n");
puts("\t----------------------------------------------------");
for(i=0;i<sz;i++) {
printf("\t%llu\t%f\t%f\t%f\n\n",id[i],x[i],y[i],z[i]);
}
}
H5PartCloseFile(file);
}
#endif
#endif

Some files were not shown because too many files have changed in this diff Show More