From c8371caa6b9f25a173298ac18c857a1997df0fb9 Mon Sep 17 00:00:00 2001
From: bmribler <39579120+bmribler@users.noreply.github.com>
Date: Mon, 3 Jun 2024 08:46:41 -0400
Subject: [PATCH] Fix various mistakes in doxygen docs (#4541)
* Fix a dead link and example file names
* Add the missing content of a section
---
doxygen/dox/IntroParHDF5.dox | 15 ++++++++++-----
doxygen/dox/LearnBasics3.dox | 13 +++++++++++++
doxygen/img/tutr-lodset.png | Bin 0 -> 15071 bytes
3 files changed, 23 insertions(+), 5 deletions(-)
create mode 100755 doxygen/img/tutr-lodset.png
diff --git a/doxygen/dox/IntroParHDF5.dox b/doxygen/dox/IntroParHDF5.dox
index 884d9d254b2..b8785d43c9d 100644
--- a/doxygen/dox/IntroParHDF5.dox
+++ b/doxygen/dox/IntroParHDF5.dox
@@ -35,7 +35,8 @@ The following shows the Parallel HDF5 implementation layers:
This tutorial assumes that you are somewhat familiar with parallel programming with MPI (Message Passing Interface).
If you are not familiar with parallel programming, here is a tutorial that may be of interest:
-Tutorial on HDF5 I/O tuning at NERSC
+Tutorial on HDF5 I/O tuning at NERSC.
+(NOTE: As of 2024, the specific systems described in this tutorial are outdated.)
Some of the terms that you must understand in this tutorial are:
@@ -150,8 +151,10 @@ Following is example code for creating an access template in HDF5:
\endcode
The following example programs create an HDF5 file using Parallel HDF5:
-C: file_create.c
-F90: file_create.F90
+
+C: ph5_file_create.c
+
+F90: ph5_f90_file_create.F90
\subsection subsec_pintro_create_dset Creating and Accessing a Dataset with PHDF5
@@ -231,8 +234,10 @@ The following code demonstrates a collective write using Parallel HDF5:
\endcode
The following example programs create an HDF5 dataset using Parallel HDF5:
-C: dataset.c
-F90: dataset.F90
+
+C: ph5_dataset.c
+
+F90: ph5_f90_dataset.F90
\subsubsection subsec_pintro_hyperslabs Hyperslabs
diff --git a/doxygen/dox/LearnBasics3.dox b/doxygen/dox/LearnBasics3.dox
index ca9ba8bdc4a..3e9dd8ea090 100644
--- a/doxygen/dox/LearnBasics3.dox
+++ b/doxygen/dox/LearnBasics3.dox
@@ -48,6 +48,19 @@ Navigate back: \ref index "Main" / \ref GettingStarted / \ref LearnBasics
\section secLBDsetLayoutDesc Description of a Dataset
+The Creating a Dataset tutorial topic defines a dataset as a multidimensional array of data elements together with supporting metadata, where:
+
+\li The array of elements consists of the raw data values that a user wishes to store in HDF5.
+\li The supporting metadata describes that data. The metadata is stored in the dataset (object) header of a dataset.
+
+Datatype, dataspace, attribute, and storage layout information were introduced as part of the metadata associated with a dataset:
+
+
+
+\image html tutr-lodset.png
+ |
+
+
\section secLBDsetLayout Dataset Storage Layout
The storage information, or storage layout, defines how the raw data values in the dataset are
diff --git a/doxygen/img/tutr-lodset.png b/doxygen/img/tutr-lodset.png
new file mode 100755
index 0000000000000000000000000000000000000000..456fc32e4ee4575431be76eba9cf9fb7aa71e1af
GIT binary patch
literal 15071
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 {Gi}T{zss{wHFDySy*$)d3{F^5B@16up
zVrxqQ0D~5#Ayf7+LZ*$qw7A;x&&HRnh3}Vk#QFY-0;Ympu_a%GAhEsQi|~7~U2Zo}N~TqdVn0n(xTbe1d35jxs-!t)OCi+YO
zi7XO4+cy6SG~&Ylk@ohVix>Z2a#qu;hRnAcm5KlQ89-tn-FzVT;$gPs4HzvG-UcjI
ze+;Bo1>4j`d*nqJQria}Cfu?3T(uA0is0S^Zyo9fE=}79rX#>`Fg%U;f9QDWTPc+j
Y-RnTHx!sNf7XeX{SCcD#VE*F20Pn>MQ~&?~
literal 0
HcmV?d00001