openPMD-api
 
Loading...
Searching...
No Matches
ADIOS2PreloadVariables.hpp
1/* Copyright 2025 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#pragma once
22
23#include "openPMD/auxiliary/Variant.hpp"
24#include "openPMD/config.hpp"
25#include <deque>
26#include <optional>
27#include <variant>
28#if openPMD_HAVE_ADIOS2
29
30#include <adios2.h>
31#include <map>
32
33namespace openPMD::detail
34{
36{
37 // Buffered map for current step
38 using AttributeMap_t = std::map<std::string, adios2::Params>;
39 std::optional<AttributeMap_t> m_availableVariables;
40 // For which step were the above variables buffered?
41 size_t currentStep;
42 // Optimization: If variable definitions do not vary across steps, no need
43 // to recompute them
44 bool variables_are_static = false;
45
46 // Preparsed step data
48 {
49 // Variable only defined in these steps
50 std::map<std::string, std::vector<size_t>> m_partialVariables;
51
52 AttributeMap_t m_allVariables;
53 };
54 std::optional<RandomAccessPreparsed_t> m_preparsed;
55
56 /*
57 * If use_step_selection is false, but preparsed step data is available,
58 * this means that Advance(stepSelection = null) was executed previously.
59 * So, we can return m_preparsed->m_allVariables.
60 */
61 auto
62 availableVariables(size_t step, bool use_step_selection, adios2::IO &IO)
63 -> AttributeMap_t const &;
64};
65} // namespace openPMD::detail
66
67#endif // openPMD_HAVE_ADIOS2
Definition ADIOS2PreloadVariables.hpp:48
Definition ADIOS2PreloadVariables.hpp:36