You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* error::Internal
* Frontend implementation of appending
Also use switch statement in many frontend places for the Access enum.
With 4 variants, if statements become increasingly unreadable and it's
good to have compiler warnings if a case is forgotten. Try to avoid
default branches.
Also refactor `autoDetectPadding()` into a separate function since it is
now needed in two places.
* Backend implementation
1) Make backends aware of Append mode
2) In ADIOS1, fix use of namespaces, only use #include statements
outside of namespaces
* Documentation and testing
* Extend tests: also use variable-based encoding
* Allow overwriting old datasets in HDF5
* Test that RW-mode in group-based mode still works
* Document extended meaning of createFile task
* Apply suggestions from code review
Co-authored-by: Axel Huebl <[email protected]>
* Remove special test paths for ADIOS2
* C++17 and other CI fixes
* Add missing throw
* Apply suggestions from code review
Co-authored-by: Axel Huebl <[email protected]>
* Use H5Lexists to be more efficient in lookup
Co-authored-by: Axel Huebl <[email protected]>
Copy file name to clipboardExpand all lines: docs/source/usage/workflow.rst
+34Lines changed: 34 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,39 @@
1
1
.. _workflow:
2
2
3
+
Access modes
4
+
============
5
+
6
+
The openPMD-api distinguishes between a number of different access modes:
7
+
8
+
* **Create mode**: Used for creating a new Series from scratch.
9
+
Any file possibly existing in the specified location will be overwritten.
10
+
* **Read-only mode**: Used for reading from an existing Series.
11
+
No modifications will be made.
12
+
* **Read/Write mode**: Creates a new Series if not existing, otherwise opens an existing Series for reading and writing.
13
+
New datasets and iterations will be inserted as needed.
14
+
Not fully supported by all backends:
15
+
16
+
* ADIOS1: Automatically coerced to *Create* mode if the file does not exist yet and to *Read-only* mode if it exists.
17
+
* ADIOS2: Automatically coerced to *Create* mode if the file does not exist yet and to *Read-only* mode if it exists.
18
+
Since this happens on a per-file level, this mode allows to read from existing iterations and write to new iterations at the same time in file-based iteration encoding.
19
+
* **Append mode**: Restricted mode for appending new iterations to an existing Series that is supported by all backends at least in file-based iteration encoding, and by all but ADIOS1 in other encodings.
20
+
The API is equivalent to that of the *Create* mode, meaning that no reading is supported whatsoever.
21
+
If the Series does not exist yet, this behaves equivalently to the *Create* mode.
22
+
Existing iterations will not be deleted, newly-written iterations will be inserted.
23
+
24
+
**Warning:** When writing an iteration that already exists, the behavior is implementation-defined and depends on the chosen backend and iteration encoding:
25
+
26
+
* The new iteration might fully replace the old one.
27
+
* The new iteration might be merged into the old one.
28
+
* (To be removed in a future update) The old and new iteration might coexist in the resulting dataset.
29
+
30
+
We suggest to fully define iterations when using Append mode (i.e. as if using Create mode) to avoid implementation-specific behavior.
31
+
Appending to an openPMD Series is only supported on a per-iteration level.
32
+
33
+
**Warning:** There is no reading involved in using Append mode.
34
+
It is a user's responsibility to ensure that the appended dataset and the appended-to dataset are compatible with each other.
35
+
The results of using incompatible backend configurations are undefined.
0 commit comments