OGS
XdmfData.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#include "XdmfData.h"
5
6#include <cassert>
7#include <map>
8
9#include "BaseLib/Error.h"
10#include "partition.h"
11
12namespace MeshLib::IO
13{
15 std::size_t const size_tuple,
16 MeshPropertyDataType const mesh_property_data_type,
17 std::string const& name,
18 std::optional<MeshLib::MeshItemType> const attribute_center,
19 unsigned int const n_files,
20 std::optional<ParentDataType> const parent_data_type)
21 : starts(
22 [&size_tuple]()
23 {
24 if (size_tuple > 1)
25 {
26 return std::vector<XdmfDimType>{0, 0};
27 }
28 else
29 {
30 return std::vector<XdmfDimType>{0};
31 }
32 }()),
33 strides(
34 [&size_tuple]()
35 {
36 if (size_tuple > 1)
37 {
38 return std::vector<XdmfDimType>{1, 1};
39 }
40 else
41 {
42 return std::vector<XdmfDimType>{1};
43 }
44 }()),
45 data_type(mesh_property_data_type),
46 size_partitioned_dim(size_partitioned_dim),
47 name(name),
48 attribute_center(attribute_center),
49 parent_data_type(parent_data_type)
50{
51 auto partition_info = getPartitionInfo(size_partitioned_dim, n_files);
52 assert(partition_info.local_length <
53 std::numeric_limits<unsigned int>::max());
54 auto const ui_global_components =
55 static_cast<unsigned int>(partition_info.global_length);
56 auto const ui_tuple_size = static_cast<unsigned int>(size_tuple);
57
58 if (ui_tuple_size == 1)
59 {
60 global_block_dims = {ui_global_components};
61 }
62 else
63 {
64 global_block_dims = {ui_global_components, ui_tuple_size};
65 }
66
67 DBUG(
68 "XDMF: dataset name: {:s}, offset: {:d} "
69 "global_blocks: {:d}, tuples: {:d}",
70 name, partition_info.local_offset, global_block_dims[0], ui_tuple_size);
71}
72} // namespace MeshLib::IO
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:22
MeshPropertyDataType
PartitionInfo getPartitionInfo(std::size_t const size, unsigned int const n_files)
std::optional< MeshLib::MeshItemType > attribute_center
Definition XdmfData.h:55
std::vector< XdmfDimType > starts
Definition XdmfData.h:49
XdmfData(std::size_t size_partitioned_dim, std::size_t size_tuple, MeshPropertyDataType mesh_property_data_type, std::string const &name, std::optional< MeshLib::MeshItemType > attribute_center, unsigned int n_files, std::optional< ParentDataType > parent_data_type)
XdmfData contains meta data to be passed to the XdmfWriter - it does not contain the actual values!...
Definition XdmfData.cpp:14
std::size_t size_partitioned_dim
Definition XdmfData.h:53
std::string name
Definition XdmfData.h:54
std::optional< ParentDataType > parent_data_type
Definition XdmfData.h:56