openPMD-api 0.16.1__tar.gz → 0.17.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/CMakeLists.txt +116 -38
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/PKG-INFO +10 -10
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/README.md +5 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/cmake/dependencies/pybind11.cmake +2 -2
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/10_streaming_read.cpp +31 -9
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/10_streaming_read.py +3 -12
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/10_streaming_write.cpp +34 -8
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/10_streaming_write.py +2 -11
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/11_particle_dataframe.py +10 -9
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/12_span_write.cpp +22 -7
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/12_span_write.py +2 -7
- openpmd_api-0.17.0/examples/13_write_dynamic_configuration.cpp +245 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/13_write_dynamic_configuration.py +15 -23
- openpmd_api-0.17.0/examples/14_toml_template.cpp +131 -0
- openpmd_api-0.17.0/examples/15_compression.cpp +292 -0
- openpmd_api-0.17.0/examples/15_compression.py +315 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/1_structure.cpp +8 -11
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/2_read_serial.cpp +10 -7
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/2_read_serial.py +8 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/2a_read_thetaMode_serial.cpp +7 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/2a_read_thetaMode_serial.py +5 -3
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/3_write_serial.cpp +10 -10
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/3_write_serial.py +8 -10
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/3a_write_thetaMode_serial.cpp +8 -12
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/3a_write_thetaMode_serial.py +5 -9
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/3b_write_resizable_particles.cpp +7 -12
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/3b_write_resizable_particles.py +4 -3
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/4_read_parallel.cpp +10 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/4_read_parallel.py +7 -4
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/5_write_parallel.cpp +11 -15
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/5_write_parallel.py +8 -14
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/6_dump_filebased_series.cpp +46 -40
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/7_extended_write_serial.cpp +34 -11
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/7_extended_write_serial.py +12 -14
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/8_benchmark_parallel.cpp +21 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/8a_benchmark_write_parallel.cpp +17 -17
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/8b_benchmark_read_parallel.cpp +16 -16
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/examples/9_particle_write_serial.py +9 -11
- openpmd_api-0.17.0/include/openPMD/ChunkInfo.hpp +599 -0
- openpmd_api-0.17.0/include/openPMD/Dataset.hpp +106 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/Datatype.hpp +10 -31
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/DatatypeHelpers.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/DatatypeMacros.hpp +21 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/Error.hpp +26 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/ADIOS/ADIOS2Auxiliary.hpp +18 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/ADIOS/ADIOS2File.hpp +35 -19
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/ADIOS/ADIOS2FilePosition.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/ADIOS/ADIOS2IOHandler.hpp +158 -18
- openpmd_api-0.17.0/include/openPMD/IO/ADIOS/ADIOS2PreloadAttributes.hpp +215 -0
- openpmd_api-0.17.0/include/openPMD/IO/ADIOS/ADIOS2PreloadVariables.hpp +67 -0
- openpmd_api-0.17.0/include/openPMD/IO/ADIOS/macros.hpp +49 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/AbstractFilePosition.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/AbstractIOHandler.hpp +65 -44
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/AbstractIOHandlerHelper.hpp +10 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/AbstractIOHandlerImpl.hpp +26 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/AbstractIOHandlerImplCommon.hpp +1 -1
- openpmd_api-0.17.0/include/openPMD/IO/Access.hpp +209 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/DummyIOHandler.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/Format.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/HDF5/HDF5Auxiliary.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/HDF5/HDF5FilePosition.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/HDF5/HDF5IOHandler.hpp +6 -2
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/HDF5/HDF5IOHandlerImpl.hpp +5 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/HDF5/ParallelHDF5IOHandler.hpp +10 -3
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/HDF5/ParallelHDF5IOHandlerImpl.hpp +2 -3
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/IOTask.hpp +184 -73
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/InvalidatableFile.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/JSON/JSONFilePosition.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/JSON/JSONIOHandler.hpp +4 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/JSON/JSONIOHandlerImpl.hpp +86 -12
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/Iteration.hpp +61 -30
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IterationEncoding.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/Mesh.hpp +102 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/ParticleSpecies.hpp +1 -1
- openpmd_api-0.17.0/include/openPMD/ReadIterations.hpp +94 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/Record.hpp +6 -4
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/RecordComponent.hpp +35 -15
- openpmd_api-0.17.0/include/openPMD/RecordComponent.tpp +172 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/Series.hpp +152 -36
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/Span.hpp +4 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/Streaming.hpp +21 -9
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/ThrowError.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/UnitDimension.hpp +28 -1
- openpmd_api-0.17.0/include/openPMD/WriteIterations.hpp +25 -0
- {openpmd_api-0.16.1/include/openPMD/benchmark/mpi → openpmd_api-0.17.0/include/openPMD/auxiliary}/BlockSlicer.hpp +6 -2
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/Filesystem.hpp +1 -1
- openpmd_api-0.17.0/include/openPMD/auxiliary/JSON.hpp +120 -0
- openpmd_api-0.17.0/include/openPMD/auxiliary/JSONMatcher.hpp +140 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/JSON_internal.hpp +41 -8
- openpmd_api-0.17.0/include/openPMD/auxiliary/Memory.hpp +103 -0
- openpmd_api-0.17.0/include/openPMD/auxiliary/Memory_internal.hpp +30 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/Mpi.hpp +40 -0
- {openpmd_api-0.16.1/include/openPMD/benchmark/mpi → openpmd_api-0.17.0/include/openPMD/auxiliary}/OneDimensionalBlockSlicer.hpp +8 -3
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/OutOfRangeMsg.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/ShareRaw.hpp +3 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/ShareRawInternal.hpp +3 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/StringManip.hpp +36 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/TypeTraits.hpp +8 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/UniquePtr.hpp +45 -39
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/Variant.hpp +30 -18
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/backend/Attributable.hpp +97 -25
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/backend/Attribute.hpp +47 -58
- openpmd_api-0.17.0/include/openPMD/backend/BaseRecord.hpp +400 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/backend/BaseRecordComponent.hpp +2 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/backend/Container.hpp +56 -315
- openpmd_api-0.17.0/include/openPMD/backend/ContainerImpl.tpp +441 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/backend/MeshRecordComponent.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/backend/PatchRecord.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/backend/PatchRecordComponent.hpp +1 -3
- openpmd_api-0.17.0/include/openPMD/backend/Variant_internal.hpp +61 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/backend/Writable.hpp +11 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/benchmark/MemoryProfiler.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/benchmark/Timer.hpp +1 -1
- openpmd_api-0.17.0/include/openPMD/benchmark/mpi/BlockSlicer.hpp +31 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/benchmark/mpi/DatasetFiller.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/benchmark/mpi/MPIBenchmark.hpp +13 -15
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/benchmark/mpi/MPIBenchmarkReport.hpp +4 -3
- openpmd_api-0.17.0/include/openPMD/benchmark/mpi/OneDimensionalBlockSlicer.hpp +32 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/benchmark/mpi/RandomDatasetFiller.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/binding/python/Common.hpp +15 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/binding/python/Container.H +23 -14
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/binding/python/Mpi.hpp +36 -11
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/binding/python/Numpy.hpp +1 -1
- openpmd_api-0.17.0/include/openPMD/binding/python/Pickle.hpp +109 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/binding/python/UnitDimension.hpp +25 -3
- openpmd_api-0.17.0/include/openPMD/binding/python/auxiliary.hpp +68 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/cli/ls.hpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/openPMD.hpp +6 -3
- openpmd_api-0.17.0/include/openPMD/snapshots/ContainerImpls.hpp +191 -0
- openpmd_api-0.17.0/include/openPMD/snapshots/ContainerTraits.hpp +168 -0
- openpmd_api-0.17.0/include/openPMD/snapshots/IteratorHelpers.hpp +42 -0
- openpmd_api-0.17.0/include/openPMD/snapshots/IteratorTraits.hpp +161 -0
- openpmd_api-0.17.0/include/openPMD/snapshots/RandomAccessIterator.hpp +95 -0
- openpmd_api-0.17.0/include/openPMD/snapshots/Snapshots.hpp +176 -0
- openpmd_api-0.17.0/include/openPMD/snapshots/StatefulIterator.hpp +437 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/version.hpp +32 -6
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/openPMD_api.egg-info/PKG-INFO +10 -10
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/openPMD_api.egg-info/SOURCES.txt +66 -2
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/setup.py +3 -4
- openpmd_api-0.17.0/share/openPMD/json_schema/Makefile +15 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/README.md +47 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/attribute_defs.toml +253 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/attributes.toml +92 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/check.py +80 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/dataset_defs.toml +144 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/iteration.toml +77 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/mesh.toml +101 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/mesh_record_component.toml +27 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/particle_patches.toml +48 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/particle_species.toml +40 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/patch_record.toml +37 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/record.toml +83 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/record_component.toml +68 -0
- openpmd_api-0.17.0/share/openPMD/json_schema/series.toml +137 -0
- openpmd_api-0.17.0/src/ChunkInfo.cpp +991 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/Dataset.cpp +16 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/Datatype.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/Error.cpp +26 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/Format.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/ADIOS/ADIOS2Auxiliary.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/ADIOS/ADIOS2File.cpp +182 -117
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/ADIOS/ADIOS2IOHandler.cpp +722 -287
- openpmd_api-0.17.0/src/IO/ADIOS/ADIOS2PreloadAttributes.cpp +353 -0
- openpmd_api-0.17.0/src/IO/ADIOS/ADIOS2PreloadVariables.cpp +121 -0
- openpmd_api-0.17.0/src/IO/AbstractIOHandler.cpp +177 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/AbstractIOHandlerHelper.cpp +32 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/AbstractIOHandlerImpl.cpp +75 -36
- openpmd_api-0.17.0/src/IO/Access.cpp +56 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/DummyIOHandler.cpp +9 -2
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/FlushParams.cpp +3 -2
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/HDF5/HDF5Auxiliary.cpp +2 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/HDF5/HDF5IOHandler.cpp +628 -216
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/HDF5/ParallelHDF5IOHandler.cpp +29 -13
- openpmd_api-0.17.0/src/IO/IOTask.cpp +310 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/InvalidatableFile.cpp +1 -1
- openpmd_api-0.17.0/src/IO/JSON/JSONFilePosition.cpp +29 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/JSON/JSONIOHandler.cpp +8 -6
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IO/JSON/JSONIOHandlerImpl.cpp +913 -203
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/Iteration.cpp +190 -70
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/IterationEncoding.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/Mesh.cpp +242 -28
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/ParticlePatches.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/ParticleSpecies.cpp +29 -12
- openpmd_api-0.17.0/src/ReadIterations.cpp +84 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/Record.cpp +40 -14
- openpmd_api-0.17.0/src/RecordComponent.cpp +1058 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/Series.cpp +938 -268
- openpmd_api-0.17.0/src/UnitDimension.cpp +79 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/auxiliary/Filesystem.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/auxiliary/JSON.cpp +152 -28
- openpmd_api-0.17.0/src/auxiliary/JSONMatcher.cpp +308 -0
- openpmd_api-0.17.0/src/auxiliary/Memory.cpp +229 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/auxiliary/Mpi.cpp +20 -0
- {openpmd_api-0.16.1/src/benchmark/mpi → openpmd_api-0.17.0/src/auxiliary}/OneDimensionalBlockSlicer.cpp +39 -28
- openpmd_api-0.17.0/src/auxiliary/UniquePtr.cpp +112 -0
- openpmd_api-0.17.0/src/auxiliary/Variant.cpp +85 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/backend/Attributable.cpp +51 -30
- openpmd_api-0.17.0/src/backend/Attribute.cpp +151 -0
- openpmd_api-0.17.0/src/backend/BaseRecord.cpp +873 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/backend/BaseRecordComponent.cpp +3 -2
- openpmd_api-0.17.0/src/backend/Container.cpp +56 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/backend/MeshRecordComponent.cpp +9 -3
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/backend/PatchRecord.cpp +11 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/backend/PatchRecordComponent.cpp +1 -18
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/backend/Writable.cpp +11 -5
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/Access.cpp +25 -3
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/Attributable.cpp +9 -6
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/BaseRecordComponent.cpp +1 -1
- openpmd_api-0.17.0/src/binding/python/ChunkInfo.cpp +361 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/Dataset.cpp +21 -11
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/Datatype.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/Error.cpp +2 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/Iteration.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/Mesh.cpp +87 -6
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/MeshRecordComponent.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/ParticlePatches.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/ParticleSpecies.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/PatchRecord.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/PatchRecordComponent.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/Record.cpp +16 -3
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/RecordComponent.cpp +64 -52
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/Series.cpp +340 -141
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/UnitDimension.cpp +22 -2
- openpmd_api-0.17.0/src/binding/python/auxiliary.cpp +33 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/openPMD.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/openpmd_api/DaskDataFrame.py +9 -4
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/openpmd_api/DataFrame.py +43 -11
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/openpmd_api/pipe/__main__.py +215 -74
- openpmd_api-0.17.0/src/cli/convert-toml-json.cpp +93 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/cli/ls.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/config.cpp +1 -1
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/helper/list_series.cpp +10 -3
- openpmd_api-0.17.0/src/snapshots/ContainerImpls.cpp +525 -0
- openpmd_api-0.17.0/src/snapshots/ContainerTraits.cpp +134 -0
- openpmd_api-0.17.0/src/snapshots/IteratorHelpers.cpp +34 -0
- openpmd_api-0.17.0/src/snapshots/IteratorTraits.cpp +173 -0
- openpmd_api-0.17.0/src/snapshots/RandomAccessIterator.cpp +115 -0
- openpmd_api-0.17.0/src/snapshots/Snapshots.cpp +151 -0
- openpmd_api-0.17.0/src/snapshots/StatefulIterator.cpp +978 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/version.cpp +17 -3
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/test/AuxiliaryTest.cpp +40 -10
- openpmd_api-0.17.0/test/CatchMain.cpp +22 -0
- openpmd_api-0.17.0/test/CatchRunner.cpp +57 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/test/CoreTest.cpp +354 -72
- openpmd_api-0.17.0/test/Files_Core/CoreTests.hpp +26 -0
- openpmd_api-0.17.0/test/Files_Core/automatic_variable_encoding.cpp +358 -0
- openpmd_api-0.17.0/test/Files_ParallelIO/ParallelIOTests.hpp +103 -0
- openpmd_api-0.17.0/test/Files_ParallelIO/bug_1655_bp5_writer_hangup.cpp +66 -0
- openpmd_api-0.17.0/test/Files_ParallelIO/iterate_nonstreaming_series.cpp +221 -0
- openpmd_api-0.17.0/test/Files_ParallelIO/read_variablebased_randomaccess.cpp +268 -0
- openpmd_api-0.17.0/test/Files_SerialIO/SerialIOTests.hpp +38 -0
- openpmd_api-0.17.0/test/Files_SerialIO/close_and_reopen_test.cpp +426 -0
- openpmd_api-0.17.0/test/Files_SerialIO/components_without_extent.cpp +268 -0
- openpmd_api-0.17.0/test/Files_SerialIO/filebased_write_test.cpp +136 -0
- openpmd_api-0.17.0/test/Files_SerialIO/issue_1744_unique_ptrs_at_close_time.cpp +53 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/test/JSONTest.cpp +224 -2
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/test/ParallelIOTest.cpp +724 -196
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/test/SerialIOTest.cpp +739 -442
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/test/python/unittest/API/APITest.py +285 -63
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/test/python/unittest/Test.py +6 -1
- openpmd_api-0.16.1/examples/13_write_dynamic_configuration.cpp +0 -141
- openpmd_api-0.16.1/include/openPMD/ChunkInfo.hpp +0 -136
- openpmd_api-0.16.1/include/openPMD/Dataset.hpp +0 -68
- openpmd_api-0.16.1/include/openPMD/IO/ADIOS/macros.hpp +0 -42
- openpmd_api-0.16.1/include/openPMD/IO/Access.hpp +0 -138
- openpmd_api-0.16.1/include/openPMD/ReadIterations.hpp +0 -182
- openpmd_api-0.16.1/include/openPMD/RecordComponent.tpp +0 -396
- openpmd_api-0.16.1/include/openPMD/WriteIterations.hpp +0 -109
- openpmd_api-0.16.1/include/openPMD/auxiliary/JSON.hpp +0 -65
- openpmd_api-0.16.1/include/openPMD/auxiliary/Memory.hpp +0 -217
- openpmd_api-0.16.1/include/openPMD/backend/BaseRecord.hpp +0 -1022
- openpmd_api-0.16.1/include/openPMD/binding/python/Pickle.hpp +0 -75
- openpmd_api-0.16.1/src/ChunkInfo.cpp +0 -168
- openpmd_api-0.16.1/src/IO/AbstractIOHandler.cpp +0 -46
- openpmd_api-0.16.1/src/IO/IOTask.cpp +0 -164
- openpmd_api-0.16.1/src/IO/JSON/JSONFilePosition.cpp +0 -9
- openpmd_api-0.16.1/src/ReadIterations.cpp +0 -658
- openpmd_api-0.16.1/src/RecordComponent.cpp +0 -567
- openpmd_api-0.16.1/src/WriteIterations.cpp +0 -124
- openpmd_api-0.16.1/src/binding/python/ChunkInfo.cpp +0 -103
- openpmd_api-0.16.1/test/CatchMain.cpp +0 -2
- openpmd_api-0.16.1/test/CatchRunner.cpp +0 -37
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/COPYING +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/COPYING.LESSER +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/MANIFEST.in +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/cmake/dependencies/catch.cmake +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/cmake/dependencies/json.cmake +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/cmake/dependencies/toml11.cmake +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/cmake/openPMDFunctions.cmake +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/ChunkInfo_internal.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/Datatype.tpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/Datatype_internal.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/IO/FlushParametersInternal.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/ParticlePatches.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/UndefDatatypeMacros.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/Date.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/DerefDynamicCast.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/Environment.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/auxiliary/Export.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/backend/ParsePreference.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/binding/python/RecordComponent.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/config.hpp.in +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/include/openPMD/helper/list_series.hpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/openPMD.pc.in +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/openPMDConfig.cmake.in +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/openPMD_api.egg-info/dependency_links.txt +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/openPMD_api.egg-info/entry_points.txt +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/openPMD_api.egg-info/not-zip-safe +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/openPMD_api.egg-info/requires.txt +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/openPMD_api.egg-info/top_level.txt +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/pyproject.toml +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/requirements.txt +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/setup.cfg +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/share/openPMD/download_samples.ps1 +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/share/openPMD/download_samples.sh +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/share/openPMD/validate_files.sh +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/auxiliary/Date.cpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/Helper.cpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/IterationEncoding.cpp +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/openpmd_api/DaskArray.py +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/openpmd_api/__init__.py +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/openpmd_api/ls/__init__.py +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/openpmd_api/ls/__main__.py +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/binding/python/openpmd_api/pipe/__init__.py +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/src/cli/pipe.py +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/test/python/unittest/API/__init__.py +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/test/python/unittest/TestUtilities/TestUtilities.py +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/test/python/unittest/TestUtilities/__init__.py +0 -0
- {openpmd_api-0.16.1 → openpmd_api-0.17.0}/test/python/unittest/__init__.py +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
cmake_minimum_required(VERSION 3.22.0)
|
|
4
4
|
|
|
5
|
-
project(openPMD VERSION 0.
|
|
5
|
+
project(openPMD VERSION 0.17.0) # LANGUAGES CXX
|
|
6
6
|
|
|
7
7
|
# the openPMD "markup"/"schema" standard version
|
|
8
8
|
set(openPMD_STANDARD_VERSION 1.1.0)
|
|
@@ -151,6 +151,8 @@ option(openPMD_USE_INTERNAL_TOML11 "Use internally shipped toml11" ${op
|
|
|
151
151
|
|
|
152
152
|
option(openPMD_USE_INVASIVE_TESTS "Enable unit tests that modify source code" OFF)
|
|
153
153
|
option(openPMD_USE_VERIFY "Enable internal VERIFY (assert) macro independent of build type" ON)
|
|
154
|
+
option(openPMD_USE_FILESYSTEM_HEADER "Enable filesystem header. May be disabled for old compiler versions." OFF)
|
|
155
|
+
mark_as_advanced(openPMD_USE_FILESYSTEM_HEADER)
|
|
154
156
|
|
|
155
157
|
set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo")
|
|
156
158
|
if(NOT CMAKE_BUILD_TYPE)
|
|
@@ -231,6 +233,7 @@ message(STATUS "openPMD-api superbuild: ${openPMD_SUPERBUILD}")
|
|
|
231
233
|
# Clang+MPI: Potentially needed MPI::MPI_C targets in the past
|
|
232
234
|
# (exact MPI flavor & Clang version lost)
|
|
233
235
|
# BullMPI: PUBLIC dependency to MPI::MPI_CXX is missing in MPI::MPI_C target
|
|
236
|
+
set(MPI_CXX_SKIP_MPICXX ON) # We do not use MPI-2 only MPI C++ bindings
|
|
234
237
|
set(openPMD_MPI_LINK_C_DEFAULT OFF)
|
|
235
238
|
option(openPMD_MPI_LINK_C "Also link the MPI C targets" ${openPMD_MPI_LINK_C_DEFAULT})
|
|
236
239
|
mark_as_advanced(openPMD_MPI_LINK_C)
|
|
@@ -326,8 +329,9 @@ if(openPMD_HAVE_HDF5)
|
|
|
326
329
|
endif()
|
|
327
330
|
# we imply support for parallel I/O if MPI variant is ON
|
|
328
331
|
if(openPMD_HAVE_MPI AND openPMD_HAVE_HDF5
|
|
329
|
-
AND NOT HDF5_IS_PARALLEL # FindHDF5.cmake
|
|
330
|
-
|
|
332
|
+
AND NOT (HDF5_IS_PARALLEL # FindHDF5.cmake
|
|
333
|
+
OR HDF5_ENABLE_PARALLEL # hdf5-config.cmake < 2.0.0
|
|
334
|
+
OR HDF5_PROVIDES_PARALLEL) # hdf5-config.cmake >= 2.0.0
|
|
331
335
|
)
|
|
332
336
|
string(CONCAT openPMD_HDF5_STATUS
|
|
333
337
|
"Found MPI but only serial version of HDF5. Either set "
|
|
@@ -335,9 +339,11 @@ if(openPMD_HAVE_MPI AND openPMD_HAVE_HDF5
|
|
|
335
339
|
"to disable HDF5 or provide a parallel install of HDF5.\n")
|
|
336
340
|
endif()
|
|
337
341
|
# HDF5 includes mpi.h in the public header H5public.h if parallel
|
|
338
|
-
if(openPMD_HAVE_HDF5 AND
|
|
339
|
-
|
|
340
|
-
|
|
342
|
+
if(openPMD_HAVE_HDF5 AND NOT openPMD_HAVE_MPI
|
|
343
|
+
AND (HDF5_IS_PARALLEL # FindHDF5.cmake
|
|
344
|
+
OR HDF5_ENABLE_PARALLEL # hdf5-config.cmake < 2.0.0
|
|
345
|
+
OR HDF5_PROVIDES_PARALLEL) # hdf5-config.cmake >= 2.0.0
|
|
346
|
+
)
|
|
341
347
|
string(CONCAT openPMD_HDF5_STATUS
|
|
342
348
|
"Found only parallel version of HDF5 but no MPI. Either set "
|
|
343
349
|
"openPMD_USE_MPI=ON to force using MPI or set openPMD_USE_HDF5=OFF "
|
|
@@ -365,14 +371,14 @@ if(openPMD_HAVE_MPI)
|
|
|
365
371
|
list(APPEND openPMD_REQUIRED_ADIOS2_COMPONENTS MPI)
|
|
366
372
|
endif()
|
|
367
373
|
if(openPMD_USE_ADIOS2 STREQUAL AUTO)
|
|
368
|
-
find_package(ADIOS2 2.
|
|
374
|
+
find_package(ADIOS2 2.9.0 CONFIG COMPONENTS ${openPMD_REQUIRED_ADIOS2_COMPONENTS})
|
|
369
375
|
if(ADIOS2_FOUND)
|
|
370
376
|
set(openPMD_HAVE_ADIOS2 TRUE)
|
|
371
377
|
else()
|
|
372
378
|
set(openPMD_HAVE_ADIOS2 FALSE)
|
|
373
379
|
endif()
|
|
374
380
|
elseif(openPMD_USE_ADIOS2)
|
|
375
|
-
find_package(ADIOS2 2.
|
|
381
|
+
find_package(ADIOS2 2.9.0 REQUIRED CONFIG COMPONENTS ${openPMD_REQUIRED_ADIOS2_COMPONENTS})
|
|
376
382
|
set(openPMD_HAVE_ADIOS2 TRUE)
|
|
377
383
|
else()
|
|
378
384
|
set(openPMD_HAVE_ADIOS2 FALSE)
|
|
@@ -397,28 +403,43 @@ set(CORE_SOURCE
|
|
|
397
403
|
src/Mesh.cpp
|
|
398
404
|
src/ParticlePatches.cpp
|
|
399
405
|
src/ParticleSpecies.cpp
|
|
400
|
-
src/ReadIterations.cpp
|
|
401
406
|
src/Record.cpp
|
|
407
|
+
src/ReadIterations.cpp
|
|
402
408
|
src/RecordComponent.cpp
|
|
403
409
|
src/Series.cpp
|
|
410
|
+
src/UnitDimension.cpp
|
|
404
411
|
src/version.cpp
|
|
405
|
-
src/WriteIterations.cpp
|
|
406
412
|
src/auxiliary/Date.cpp
|
|
407
413
|
src/auxiliary/Filesystem.cpp
|
|
408
414
|
src/auxiliary/JSON.cpp
|
|
415
|
+
src/auxiliary/JSONMatcher.cpp
|
|
416
|
+
src/auxiliary/Memory.cpp
|
|
409
417
|
src/auxiliary/Mpi.cpp
|
|
418
|
+
src/auxiliary/UniquePtr.cpp
|
|
419
|
+
src/auxiliary/Variant.cpp
|
|
410
420
|
src/backend/Attributable.cpp
|
|
421
|
+
src/backend/Attribute.cpp
|
|
422
|
+
src/backend/BaseRecord.cpp
|
|
411
423
|
src/backend/BaseRecordComponent.cpp
|
|
424
|
+
src/backend/Container.cpp
|
|
412
425
|
src/backend/MeshRecordComponent.cpp
|
|
413
426
|
src/backend/PatchRecord.cpp
|
|
414
427
|
src/backend/PatchRecordComponent.cpp
|
|
415
428
|
src/backend/Writable.cpp
|
|
416
|
-
src/
|
|
417
|
-
src/helper/list_series.cpp
|
|
429
|
+
src/auxiliary/OneDimensionalBlockSlicer.cpp
|
|
430
|
+
src/helper/list_series.cpp
|
|
431
|
+
src/snapshots/ContainerImpls.cpp
|
|
432
|
+
src/snapshots/ContainerTraits.cpp
|
|
433
|
+
src/snapshots/IteratorHelpers.cpp
|
|
434
|
+
src/snapshots/IteratorTraits.cpp
|
|
435
|
+
src/snapshots/RandomAccessIterator.cpp
|
|
436
|
+
src/snapshots/Snapshots.cpp
|
|
437
|
+
src/snapshots/StatefulIterator.cpp)
|
|
418
438
|
set(IO_SOURCE
|
|
419
439
|
src/IO/AbstractIOHandler.cpp
|
|
420
440
|
src/IO/AbstractIOHandlerImpl.cpp
|
|
421
441
|
src/IO/AbstractIOHandlerHelper.cpp
|
|
442
|
+
src/IO/Access.cpp
|
|
422
443
|
src/IO/DummyIOHandler.cpp
|
|
423
444
|
src/IO/IOTask.cpp
|
|
424
445
|
src/IO/FlushParams.cpp
|
|
@@ -429,6 +450,8 @@ set(IO_SOURCE
|
|
|
429
450
|
src/IO/JSON/JSONIOHandlerImpl.cpp
|
|
430
451
|
src/IO/JSON/JSONFilePosition.cpp
|
|
431
452
|
src/IO/ADIOS/ADIOS2IOHandler.cpp
|
|
453
|
+
src/IO/ADIOS/ADIOS2PreloadAttributes.cpp
|
|
454
|
+
src/IO/ADIOS/ADIOS2PreloadVariables.cpp
|
|
432
455
|
src/IO/ADIOS/ADIOS2File.cpp
|
|
433
456
|
src/IO/ADIOS/ADIOS2Auxiliary.cpp
|
|
434
457
|
src/IO/InvalidatableFile.cpp)
|
|
@@ -524,10 +547,18 @@ endif()
|
|
|
524
547
|
|
|
525
548
|
# ADIOS2 Backend
|
|
526
549
|
if(openPMD_HAVE_ADIOS2)
|
|
527
|
-
if(
|
|
528
|
-
|
|
550
|
+
if(${ADIOS2_VERSION} VERSION_GREATER_EQUAL 2.11.0)
|
|
551
|
+
if(openPMD_HAVE_MPI)
|
|
552
|
+
target_link_libraries(openPMD PUBLIC adios2::cxx_mpi)
|
|
553
|
+
else()
|
|
554
|
+
target_link_libraries(openPMD PUBLIC adios2::cxx)
|
|
555
|
+
endif()
|
|
529
556
|
else()
|
|
530
|
-
|
|
557
|
+
if(openPMD_HAVE_MPI)
|
|
558
|
+
target_link_libraries(openPMD PUBLIC adios2::cxx11_mpi)
|
|
559
|
+
else()
|
|
560
|
+
target_link_libraries(openPMD PUBLIC adios2::cxx11)
|
|
561
|
+
endif()
|
|
531
562
|
endif()
|
|
532
563
|
endif()
|
|
533
564
|
|
|
@@ -542,6 +573,7 @@ endif()
|
|
|
542
573
|
if(openPMD_HAVE_PYTHON)
|
|
543
574
|
add_library(openPMD.py MODULE
|
|
544
575
|
src/binding/python/openPMD.cpp
|
|
576
|
+
src/binding/python/auxiliary.cpp
|
|
545
577
|
src/binding/python/Access.cpp
|
|
546
578
|
src/binding/python/Attributable.cpp
|
|
547
579
|
src/binding/python/BaseRecordComponent.cpp
|
|
@@ -671,11 +703,12 @@ set(openPMD_TEST_NAMES
|
|
|
671
703
|
# command line tools
|
|
672
704
|
set(openPMD_CLI_TOOL_NAMES
|
|
673
705
|
ls
|
|
706
|
+
convert-toml-json
|
|
674
707
|
)
|
|
675
708
|
set(openPMD_PYTHON_CLI_TOOL_NAMES
|
|
676
709
|
pipe
|
|
677
710
|
)
|
|
678
|
-
set(openPMD_PYTHON_CLI_MODULE_NAMES
|
|
711
|
+
set(openPMD_PYTHON_CLI_MODULE_NAMES ls)
|
|
679
712
|
# examples
|
|
680
713
|
set(openPMD_EXAMPLE_NAMES
|
|
681
714
|
1_structure
|
|
@@ -695,6 +728,8 @@ set(openPMD_EXAMPLE_NAMES
|
|
|
695
728
|
10_streaming_read
|
|
696
729
|
12_span_write
|
|
697
730
|
13_write_dynamic_configuration
|
|
731
|
+
14_toml_template
|
|
732
|
+
15_compression
|
|
698
733
|
)
|
|
699
734
|
set(openPMD_PYTHON_EXAMPLE_NAMES
|
|
700
735
|
2_read_serial
|
|
@@ -711,6 +746,7 @@ set(openPMD_PYTHON_EXAMPLE_NAMES
|
|
|
711
746
|
11_particle_dataframe
|
|
712
747
|
12_span_write
|
|
713
748
|
13_write_dynamic_configuration
|
|
749
|
+
15_compression
|
|
714
750
|
)
|
|
715
751
|
|
|
716
752
|
if(openPMD_USE_INVASIVE_TESTS)
|
|
@@ -721,6 +757,18 @@ if(openPMD_USE_INVASIVE_TESTS)
|
|
|
721
757
|
target_compile_definitions(openPMD PRIVATE openPMD_USE_INVASIVE_TESTS=1)
|
|
722
758
|
endif()
|
|
723
759
|
|
|
760
|
+
function(set_filesystem_header_for_target target)
|
|
761
|
+
if(openPMD_USE_FILESYSTEM_HEADER)
|
|
762
|
+
target_compile_definitions(${target} PRIVATE openPMD_USE_FILESYSTEM_HEADER=1)
|
|
763
|
+
else()
|
|
764
|
+
target_compile_definitions(${target} PRIVATE openPMD_USE_FILESYSTEM_HEADER=0)
|
|
765
|
+
endif()
|
|
766
|
+
endfunction()
|
|
767
|
+
set_filesystem_header_for_target(openPMD)
|
|
768
|
+
if(openPMD_HAVE_PYTHON)
|
|
769
|
+
set_filesystem_header_for_target(openPMD.py)
|
|
770
|
+
endif()
|
|
771
|
+
|
|
724
772
|
if(openPMD_BUILD_TESTING)
|
|
725
773
|
# compile Catch2 implementation part separately
|
|
726
774
|
add_library(CatchRunner ${_openpmd_lib_type}
|
|
@@ -772,8 +820,32 @@ if(openPMD_BUILD_TESTING)
|
|
|
772
820
|
target_compile_definitions(CatchRunner PUBLIC openPMD_HAVE_MPI=1)
|
|
773
821
|
endif()
|
|
774
822
|
|
|
823
|
+
macro(additional_testing_sources test_name out_list)
|
|
824
|
+
if(${test_name} STREQUAL "SerialIO")
|
|
825
|
+
list(APPEND ${out_list}
|
|
826
|
+
test/Files_SerialIO/close_and_reopen_test.cpp
|
|
827
|
+
test/Files_SerialIO/filebased_write_test.cpp
|
|
828
|
+
test/Files_SerialIO/issue_1744_unique_ptrs_at_close_time.cpp
|
|
829
|
+
test/Files_SerialIO/components_without_extent.cpp
|
|
830
|
+
)
|
|
831
|
+
elseif(${test_name} STREQUAL "ParallelIO" AND openPMD_HAVE_MPI)
|
|
832
|
+
list(APPEND ${out_list}
|
|
833
|
+
test/Files_ParallelIO/read_variablebased_randomaccess.cpp
|
|
834
|
+
test/Files_ParallelIO/iterate_nonstreaming_series.cpp
|
|
835
|
+
test/Files_ParallelIO/bug_1655_bp5_writer_hangup.cpp
|
|
836
|
+
)
|
|
837
|
+
elseif(${test_name} STREQUAL "Core")
|
|
838
|
+
list(APPEND ${out_list}
|
|
839
|
+
test/Files_Core/automatic_variable_encoding.cpp
|
|
840
|
+
)
|
|
841
|
+
endif()
|
|
842
|
+
endmacro()
|
|
843
|
+
|
|
775
844
|
foreach(testname ${openPMD_TEST_NAMES})
|
|
776
|
-
|
|
845
|
+
set(ADDITIONAL_SOURCE_FILES "")
|
|
846
|
+
additional_testing_sources(${testname} ADDITIONAL_SOURCE_FILES)
|
|
847
|
+
add_executable(${testname}Tests test/${testname}Test.cpp ${ADDITIONAL_SOURCE_FILES})
|
|
848
|
+
target_include_directories(${testname}Tests PRIVATE test/Files_${testname}/)
|
|
777
849
|
openpmd_cxx_required(${testname}Tests)
|
|
778
850
|
set_target_properties(${testname}Tests PROPERTIES
|
|
779
851
|
COMPILE_PDB_NAME ${testname}Tests
|
|
@@ -844,6 +916,9 @@ if(openPMD_BUILD_CLI_TOOLS)
|
|
|
844
916
|
endif()
|
|
845
917
|
|
|
846
918
|
target_link_libraries(openpmd-${toolname} PRIVATE openPMD)
|
|
919
|
+
target_include_directories(openpmd-${toolname} SYSTEM PRIVATE
|
|
920
|
+
$<TARGET_PROPERTY:openPMD::thirdparty::nlohmann_json,INTERFACE_INCLUDE_DIRECTORIES>
|
|
921
|
+
$<TARGET_PROPERTY:openPMD::thirdparty::toml11,INTERFACE_INCLUDE_DIRECTORIES>)
|
|
847
922
|
endforeach()
|
|
848
923
|
endif()
|
|
849
924
|
|
|
@@ -1286,27 +1361,30 @@ if(openPMD_BUILD_TESTING)
|
|
|
1286
1361
|
)
|
|
1287
1362
|
add_test(NAME CLI.pipe.py
|
|
1288
1363
|
COMMAND sh -c
|
|
1289
|
-
"${MPI_TEST_EXE} ${Python_EXECUTABLE}
|
|
1290
|
-
${openPMD_RUNTIME_OUTPUT_DIRECTORY}/openpmd-pipe
|
|
1291
|
-
--infile ../samples/git-sample/data%T.h5
|
|
1292
|
-
--outfile ../samples/git-sample/data%T.bp &&
|
|
1293
|
-
|
|
1294
|
-
${MPI_TEST_EXE} ${Python_EXECUTABLE}
|
|
1295
|
-
${openPMD_RUNTIME_OUTPUT_DIRECTORY}/openpmd-pipe
|
|
1296
|
-
--infile ../samples/git-sample/data00000100.h5
|
|
1297
|
-
--outfile
|
|
1298
|
-
../samples/git-sample/single_iteration_%T.bp &&
|
|
1299
|
-
|
|
1300
|
-
${MPI_TEST_EXE} ${Python_EXECUTABLE}
|
|
1301
|
-
${openPMD_RUNTIME_OUTPUT_DIRECTORY}/openpmd-pipe
|
|
1302
|
-
--infile ../samples/git-sample/thetaMode/data%T.h5
|
|
1303
|
-
--outfile
|
|
1304
|
-
../samples/git-sample/thetaMode/data_%T.bp &&
|
|
1305
|
-
|
|
1306
|
-
${MPI_TEST_EXE} ${Python_EXECUTABLE}
|
|
1307
|
-
${openPMD_RUNTIME_OUTPUT_DIRECTORY}/openpmd-pipe
|
|
1308
|
-
--infile ../samples/git-sample/thetaMode/data_%T.bp
|
|
1309
|
-
--outfile ../samples/git-sample/thetaMode/data%T.json
|
|
1364
|
+
"${MPI_TEST_EXE} ${MPIEXEC_NUMPROC_FLAG} 2 ${Python_EXECUTABLE} \
|
|
1365
|
+
${openPMD_RUNTIME_OUTPUT_DIRECTORY}/openpmd-pipe \
|
|
1366
|
+
--infile ../samples/git-sample/data%T.h5 \
|
|
1367
|
+
--outfile ../samples/git-sample/data%T.bp && \
|
|
1368
|
+
\
|
|
1369
|
+
${MPI_TEST_EXE} ${Python_EXECUTABLE} \
|
|
1370
|
+
${openPMD_RUNTIME_OUTPUT_DIRECTORY}/openpmd-pipe \
|
|
1371
|
+
--infile ../samples/git-sample/data00000100.h5 \
|
|
1372
|
+
--outfile \
|
|
1373
|
+
../samples/git-sample/single_iteration_%T.bp && \
|
|
1374
|
+
\
|
|
1375
|
+
${MPI_TEST_EXE} ${MPIEXEC_NUMPROC_FLAG} 2 ${Python_EXECUTABLE} \
|
|
1376
|
+
${openPMD_RUNTIME_OUTPUT_DIRECTORY}/openpmd-pipe \
|
|
1377
|
+
--infile ../samples/git-sample/thetaMode/data%T.h5 \
|
|
1378
|
+
--outfile \
|
|
1379
|
+
../samples/git-sample/thetaMode/data_%T.bp && \
|
|
1380
|
+
\
|
|
1381
|
+
${MPI_TEST_EXE} ${Python_EXECUTABLE} \
|
|
1382
|
+
${openPMD_RUNTIME_OUTPUT_DIRECTORY}/openpmd-pipe \
|
|
1383
|
+
--infile ../samples/git-sample/thetaMode/data_%T.bp \
|
|
1384
|
+
--outfile ../samples/git-sample/thetaMode/data%T.json \
|
|
1385
|
+
--outconfig ' \
|
|
1386
|
+
json.attribute.mode = \"short\" \n\
|
|
1387
|
+
json.dataset.mode = \"template_no_warn\"' \
|
|
1310
1388
|
"
|
|
1311
1389
|
WORKING_DIRECTORY ${openPMD_RUNTIME_OUTPUT_DIRECTORY}
|
|
1312
1390
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: openPMD-api
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.17.0
|
|
4
4
|
Summary: C++ & Python API for Scientific I/O with openPMD
|
|
5
5
|
Home-page: https://www.openPMD.org
|
|
6
6
|
Author: Axel Huebl, Franz Poeschel, Fabian Koller, Junmin Gu
|
|
@@ -22,14 +22,13 @@ Classifier: Topic :: Scientific/Engineering
|
|
|
22
22
|
Classifier: Topic :: Database :: Front-Ends
|
|
23
23
|
Classifier: Programming Language :: C++
|
|
24
24
|
Classifier: Programming Language :: Python :: 3
|
|
25
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
26
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
27
25
|
Classifier: Programming Language :: Python :: 3.10
|
|
28
26
|
Classifier: Programming Language :: Python :: 3.11
|
|
29
27
|
Classifier: Programming Language :: Python :: 3.12
|
|
30
28
|
Classifier: Programming Language :: Python :: 3.13
|
|
29
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
31
30
|
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
|
|
32
|
-
Requires-Python: >=3.
|
|
31
|
+
Requires-Python: >=3.10
|
|
33
32
|
Description-Content-Type: text/markdown
|
|
34
33
|
License-File: COPYING
|
|
35
34
|
License-File: COPYING.LESSER
|
|
@@ -41,6 +40,7 @@ Dynamic: description
|
|
|
41
40
|
Dynamic: description-content-type
|
|
42
41
|
Dynamic: home-page
|
|
43
42
|
Dynamic: keywords
|
|
43
|
+
Dynamic: license-file
|
|
44
44
|
Dynamic: maintainer
|
|
45
45
|
Dynamic: maintainer-email
|
|
46
46
|
Dynamic: project-url
|
|
@@ -158,14 +158,14 @@ Shipped internally (downloaded by CMake unless `openPMD_SUPERBUILD=OFF` is set):
|
|
|
158
158
|
I/O backends:
|
|
159
159
|
* [JSON](https://en.wikipedia.org/wiki/JSON)
|
|
160
160
|
* [HDF5](https://support.hdfgroup.org/HDF5) 1.8.13+ (optional)
|
|
161
|
-
* [ADIOS2](https://github.com/ornladios/ADIOS2) 2.
|
|
161
|
+
* [ADIOS2](https://github.com/ornladios/ADIOS2) 2.9.0+ (optional)
|
|
162
162
|
|
|
163
163
|
while those can be built either with or without:
|
|
164
164
|
* MPI 2.1+, e.g. OpenMPI 1.6.5+ or MPICH2
|
|
165
165
|
|
|
166
166
|
Optional language bindings:
|
|
167
167
|
* Python:
|
|
168
|
-
* Python 3.
|
|
168
|
+
* Python 3.10 - 3.14
|
|
169
169
|
* pybind11 2.13.0+
|
|
170
170
|
* numpy 1.15+
|
|
171
171
|
* mpi4py 2.1+ (optional, for MPI)
|
|
@@ -354,7 +354,7 @@ export CMAKE_PREFIX_PATH=$HOME/somepath:$CMAKE_PREFIX_PATH
|
|
|
354
354
|
Use the following lines in your project's `CMakeLists.txt`:
|
|
355
355
|
```cmake
|
|
356
356
|
# supports: COMPONENTS MPI NOMPI HDF5 ADIOS2
|
|
357
|
-
find_package(openPMD 0.
|
|
357
|
+
find_package(openPMD 0.17.0 CONFIG)
|
|
358
358
|
|
|
359
359
|
if(openPMD_FOUND)
|
|
360
360
|
target_link_libraries(YourTarget PRIVATE openPMD::openPMD)
|
|
@@ -382,7 +382,7 @@ set(openPMD_INSTALL OFF) # or instead use:
|
|
|
382
382
|
set(openPMD_USE_PYTHON OFF)
|
|
383
383
|
FetchContent_Declare(openPMD
|
|
384
384
|
GIT_REPOSITORY "https://github.com/openPMD/openPMD-api.git"
|
|
385
|
-
GIT_TAG "0.
|
|
385
|
+
GIT_TAG "0.17.0")
|
|
386
386
|
FetchContent_MakeAvailable(openPMD)
|
|
387
387
|
```
|
|
388
388
|
|
|
@@ -431,7 +431,7 @@ The following people and institutions [contributed](https://github.com/openPMD/o
|
|
|
431
431
|
|
|
432
432
|
Maintained by the following research groups:
|
|
433
433
|
|
|
434
|
-
* [Computational Radiation Physics (
|
|
434
|
+
* [Computational Radiation Physics (CRP)](https://www.casus.science/casus/team/) at CASUS/HZDR, led by [Michael Bussmann](https://github.com/bussmann)
|
|
435
435
|
* [Accelerator Modeling Program (AMP)](https://atap.lbl.gov/accelerator-modeling-program/) at LBNL, led by [Jean-Luc Vay](https://github.com/jlvay)
|
|
436
436
|
* [Scientific Data Management (SDM)](https://crd.lbl.gov/divisions/scidata/sdm/) at LBNL, led by [Kesheng (John) Wu](https://github.com/john18)
|
|
437
437
|
|
|
@@ -108,14 +108,14 @@ Shipped internally (downloaded by CMake unless `openPMD_SUPERBUILD=OFF` is set):
|
|
|
108
108
|
I/O backends:
|
|
109
109
|
* [JSON](https://en.wikipedia.org/wiki/JSON)
|
|
110
110
|
* [HDF5](https://support.hdfgroup.org/HDF5) 1.8.13+ (optional)
|
|
111
|
-
* [ADIOS2](https://github.com/ornladios/ADIOS2) 2.
|
|
111
|
+
* [ADIOS2](https://github.com/ornladios/ADIOS2) 2.9.0+ (optional)
|
|
112
112
|
|
|
113
113
|
while those can be built either with or without:
|
|
114
114
|
* MPI 2.1+, e.g. OpenMPI 1.6.5+ or MPICH2
|
|
115
115
|
|
|
116
116
|
Optional language bindings:
|
|
117
117
|
* Python:
|
|
118
|
-
* Python 3.
|
|
118
|
+
* Python 3.10 - 3.14
|
|
119
119
|
* pybind11 2.13.0+
|
|
120
120
|
* numpy 1.15+
|
|
121
121
|
* mpi4py 2.1+ (optional, for MPI)
|
|
@@ -304,7 +304,7 @@ export CMAKE_PREFIX_PATH=$HOME/somepath:$CMAKE_PREFIX_PATH
|
|
|
304
304
|
Use the following lines in your project's `CMakeLists.txt`:
|
|
305
305
|
```cmake
|
|
306
306
|
# supports: COMPONENTS MPI NOMPI HDF5 ADIOS2
|
|
307
|
-
find_package(openPMD 0.
|
|
307
|
+
find_package(openPMD 0.17.0 CONFIG)
|
|
308
308
|
|
|
309
309
|
if(openPMD_FOUND)
|
|
310
310
|
target_link_libraries(YourTarget PRIVATE openPMD::openPMD)
|
|
@@ -332,7 +332,7 @@ set(openPMD_INSTALL OFF) # or instead use:
|
|
|
332
332
|
set(openPMD_USE_PYTHON OFF)
|
|
333
333
|
FetchContent_Declare(openPMD
|
|
334
334
|
GIT_REPOSITORY "https://github.com/openPMD/openPMD-api.git"
|
|
335
|
-
GIT_TAG "0.
|
|
335
|
+
GIT_TAG "0.17.0")
|
|
336
336
|
FetchContent_MakeAvailable(openPMD)
|
|
337
337
|
```
|
|
338
338
|
|
|
@@ -381,7 +381,7 @@ The following people and institutions [contributed](https://github.com/openPMD/o
|
|
|
381
381
|
|
|
382
382
|
Maintained by the following research groups:
|
|
383
383
|
|
|
384
|
-
* [Computational Radiation Physics (
|
|
384
|
+
* [Computational Radiation Physics (CRP)](https://www.casus.science/casus/team/) at CASUS/HZDR, led by [Michael Bussmann](https://github.com/bussmann)
|
|
385
385
|
* [Accelerator Modeling Program (AMP)](https://atap.lbl.gov/accelerator-modeling-program/) at LBNL, led by [Jean-Luc Vay](https://github.com/jlvay)
|
|
386
386
|
* [Scientific Data Management (SDM)](https://crd.lbl.gov/divisions/scidata/sdm/) at LBNL, led by [Kesheng (John) Wu](https://github.com/john18)
|
|
387
387
|
|
|
@@ -83,9 +83,9 @@ set(openPMD_pybind11_branch "v2.13.6"
|
|
|
83
83
|
"Repository branch for openPMD_pybind11_repo if(openPMD_USE_INTERNAL_PYBIND11)")
|
|
84
84
|
|
|
85
85
|
if(openPMD_USE_PYTHON STREQUAL AUTO)
|
|
86
|
-
find_package(Python 3.
|
|
86
|
+
find_package(Python 3.10.0 COMPONENTS Interpreter Development.Module)
|
|
87
87
|
elseif(openPMD_USE_PYTHON)
|
|
88
|
-
find_package(Python 3.
|
|
88
|
+
find_package(Python 3.10.0 COMPONENTS Interpreter Development.Module REQUIRED)
|
|
89
89
|
else()
|
|
90
90
|
set(openPMD_HAVE_PYTHON FALSE)
|
|
91
91
|
endif()
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
/* Copyright 2025 Franz Poeschel, Luca Fedeli
|
|
2
|
+
*
|
|
3
|
+
* This file is part of openPMD-api.
|
|
4
|
+
*
|
|
5
|
+
* openPMD-api is free software: you can redistribute it and/or modify
|
|
6
|
+
* it under the terms of of either the GNU General Public License or
|
|
7
|
+
* the GNU Lesser General Public License as published by
|
|
8
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
* (at your option) any later version.
|
|
10
|
+
*
|
|
11
|
+
* openPMD-api is distributed in the hope that it will be useful,
|
|
12
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
* GNU General Public License and the GNU Lesser General Public License
|
|
15
|
+
* for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU General Public License
|
|
18
|
+
* and the GNU Lesser General Public License along with openPMD-api.
|
|
19
|
+
* If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
+
*/
|
|
1
21
|
#include <openPMD/openPMD.hpp>
|
|
2
22
|
|
|
3
23
|
#include <algorithm>
|
|
@@ -18,6 +38,15 @@ int main()
|
|
|
18
38
|
return 0;
|
|
19
39
|
}
|
|
20
40
|
|
|
41
|
+
// Access the Series linearly. This means that upon opening the Series, no
|
|
42
|
+
// data is accessed yet. Instead, the single Iterations are processed
|
|
43
|
+
// collectively, one after the other, and data access only happens upon
|
|
44
|
+
// explicitly accessing an Iteration from `Series::snapshots()`. Note that
|
|
45
|
+
// the Container API of `Series::snapshots()` will work in a restricted mode
|
|
46
|
+
// compared to the `READ_RANDOM_ACCESS` access type, refer also to the
|
|
47
|
+
// documentation of the `Snapshots` class in `snapshots/Snapshots.hpp`. This
|
|
48
|
+
// restricted workflow enables performance optimizations in the backends,
|
|
49
|
+
// and more importantly is compatible with streaming I/O.
|
|
21
50
|
Series series = Series("electrons.sst", Access::READ_LINEAR, R"(
|
|
22
51
|
{
|
|
23
52
|
"adios2": {
|
|
@@ -29,15 +58,9 @@ int main()
|
|
|
29
58
|
}
|
|
30
59
|
})");
|
|
31
60
|
|
|
32
|
-
|
|
33
|
-
// intentionally restricted APIs that ensure a workflow which also works
|
|
34
|
-
// in streaming setups, e.g. an iteration cannot be opened again once
|
|
35
|
-
// it has been closed.
|
|
36
|
-
// `Series::iterations` can be directly accessed in random-access workflows.
|
|
37
|
-
for (IndexedIteration iteration : series.readIterations())
|
|
61
|
+
for (auto &[index, iteration] : series.snapshots())
|
|
38
62
|
{
|
|
39
|
-
std::cout << "Current iteration: " <<
|
|
40
|
-
<< std::endl;
|
|
63
|
+
std::cout << "Current iteration: " << index << std::endl;
|
|
41
64
|
Record electronPositions = iteration.particles["e"]["position"];
|
|
42
65
|
std::array<RecordComponent::shared_ptr_dataset_types, 3> loadedChunks;
|
|
43
66
|
std::array<Extent, 3> extents;
|
|
@@ -54,7 +77,6 @@ int main()
|
|
|
54
77
|
|
|
55
78
|
// The iteration can be closed in order to help free up resources.
|
|
56
79
|
// The iteration's content will be flushed automatically.
|
|
57
|
-
// An iteration once closed cannot (yet) be reopened.
|
|
58
80
|
iteration.close();
|
|
59
81
|
|
|
60
82
|
for (size_t i = 0; i < 3; ++i)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
import json
|
|
3
2
|
import sys
|
|
4
3
|
|
|
5
4
|
import openpmd_api as io
|
|
@@ -18,19 +17,11 @@ if __name__ == "__main__":
|
|
|
18
17
|
print("SST engine not available in ADIOS2.")
|
|
19
18
|
sys.exit(0)
|
|
20
19
|
|
|
21
|
-
series = io.Series("simData.sst", io.Access_Type.read_linear,
|
|
22
|
-
json.dumps(config))
|
|
20
|
+
series = io.Series("simData.sst", io.Access_Type.read_linear, config)
|
|
23
21
|
|
|
24
22
|
# Read all available iterations and print electron position data.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
# instead of `series.iterations`.
|
|
28
|
-
# `Series.write_iterations()` and `Series.read_iterations()` are
|
|
29
|
-
# intentionally restricted APIs that ensure a workflow which also works
|
|
30
|
-
# in streaming setups, e.g. an iteration cannot be opened again once
|
|
31
|
-
# it has been closed.
|
|
32
|
-
for iteration in series.read_iterations():
|
|
33
|
-
print("Current iteration {}".format(iteration.iteration_index))
|
|
23
|
+
for index, iteration in series.snapshots().items():
|
|
24
|
+
print("Current iteration {}".format(index))
|
|
34
25
|
electronPositions = iteration.particles["e"]["position"]
|
|
35
26
|
loadedChunks = []
|
|
36
27
|
shapes = []
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
/* Copyright 2025 Axel Huebl, Franz Poeschel
|
|
2
|
+
*
|
|
3
|
+
* This file is part of openPMD-api.
|
|
4
|
+
*
|
|
5
|
+
* openPMD-api is free software: you can redistribute it and/or modify
|
|
6
|
+
* it under the terms of of either the GNU General Public License or
|
|
7
|
+
* the GNU Lesser General Public License as published by
|
|
8
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
* (at your option) any later version.
|
|
10
|
+
*
|
|
11
|
+
* openPMD-api is distributed in the hope that it will be useful,
|
|
12
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
* GNU General Public License and the GNU Lesser General Public License
|
|
15
|
+
* for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU General Public License
|
|
18
|
+
* and the GNU Lesser General Public License along with openPMD-api.
|
|
19
|
+
* If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
+
*/
|
|
21
|
+
#include "openPMD/Series.hpp"
|
|
22
|
+
#include "openPMD/snapshots/Snapshots.hpp"
|
|
1
23
|
#include <openPMD/openPMD.hpp>
|
|
2
24
|
|
|
3
25
|
#include <algorithm>
|
|
@@ -20,12 +42,21 @@ int main()
|
|
|
20
42
|
}
|
|
21
43
|
|
|
22
44
|
// open file for writing
|
|
23
|
-
|
|
45
|
+
// use QueueFullPolicy = Discard in order to create a situation where from
|
|
46
|
+
// the reader's perspective steps are skipped. This tests the bug reported
|
|
47
|
+
// in https://github.com/openPMD/openPMD-api/issues/1747.
|
|
48
|
+
// Create the Series with linear write access, i.e. one Iteration after
|
|
49
|
+
// the other. The alternative would be random-access where multiple
|
|
50
|
+
// Iterations can be accessed independently from one another. This more
|
|
51
|
+
// restricted mode enables performance optimizations in the backends, and
|
|
52
|
+
// more importantly is compatible with streaming I/O.
|
|
53
|
+
Series series = Series("electrons.sst", Access::CREATE_LINEAR, R"(
|
|
24
54
|
{
|
|
25
55
|
"adios2": {
|
|
26
56
|
"engine": {
|
|
27
57
|
"parameters": {
|
|
28
|
-
"DataTransport": "WAN"
|
|
58
|
+
"DataTransport": "WAN",
|
|
59
|
+
"QueueFullPolicy": "Discard"
|
|
29
60
|
}
|
|
30
61
|
}
|
|
31
62
|
}
|
|
@@ -38,12 +69,7 @@ int main()
|
|
|
38
69
|
std::shared_ptr<position_t> local_data(
|
|
39
70
|
new position_t[length], [](position_t const *ptr) { delete[] ptr; });
|
|
40
71
|
|
|
41
|
-
|
|
42
|
-
// intentionally restricted APIs that ensure a workflow which also works
|
|
43
|
-
// in streaming setups, e.g. an iteration cannot be opened again once
|
|
44
|
-
// it has been closed.
|
|
45
|
-
// `Series::iterations` can be directly accessed in random-access workflows.
|
|
46
|
-
WriteIterations iterations = series.writeIterations();
|
|
72
|
+
auto iterations = series.snapshots();
|
|
47
73
|
for (size_t i = 0; i < 100; ++i)
|
|
48
74
|
{
|
|
49
75
|
Iteration iteration = iterations[i];
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
import json
|
|
3
2
|
import sys
|
|
4
3
|
|
|
5
4
|
import numpy as np
|
|
@@ -21,21 +20,13 @@ if __name__ == "__main__":
|
|
|
21
20
|
|
|
22
21
|
# create a series and specify some global metadata
|
|
23
22
|
# change the file extension to .json, .h5 or .bp for regular file writing
|
|
24
|
-
series = io.Series("simData.sst", io.Access_Type.
|
|
25
|
-
json.dumps(config))
|
|
23
|
+
series = io.Series("simData.sst", io.Access_Type.create_linear, config)
|
|
26
24
|
series.set_author("Franz Poeschel <f.poeschel@hzdr.de>")
|
|
27
25
|
series.set_software("openPMD-api-python-examples")
|
|
28
26
|
|
|
29
27
|
# now, write a number of iterations (or: snapshots, time steps)
|
|
30
28
|
for i in range(10):
|
|
31
|
-
|
|
32
|
-
# For streaming support, `series.write_iterations()` needs to be used
|
|
33
|
-
# instead of `series.iterations`.
|
|
34
|
-
# `Series.write_iterations()` and `Series.read_iterations()` are
|
|
35
|
-
# intentionally restricted APIs that ensure a workflow which also works
|
|
36
|
-
# in streaming setups, e.g. an iteration cannot be opened again once
|
|
37
|
-
# it has been closed.
|
|
38
|
-
iteration = series.write_iterations()[i]
|
|
29
|
+
iteration = series.snapshots()[i]
|
|
39
30
|
|
|
40
31
|
#######################
|
|
41
32
|
# write electron data #
|