diff --git a/src/IO/ADIOS/ADIOS2IOHandler.cpp b/src/IO/ADIOS/ADIOS2IOHandler.cpp index d97769d19b..9fdc983acd 100644 --- a/src/IO/ADIOS/ADIOS2IOHandler.cpp +++ b/src/IO/ADIOS/ADIOS2IOHandler.cpp @@ -849,10 +849,13 @@ namespace detail variable + "'."); } adios2::Dims dims; - dims.reserve(newShape.size()); - for (auto ext : newShape) + dims.assign(newShape.begin(), newShape.end()); + // keep the joined dim intact + auto joined_dim = joinedDimension(var.Shape()); + if (joined_dim.has_value()) { - dims.push_back(ext); + auto idx = joined_dim.value(); + dims[idx] = var.Shape()[idx]; } var.SetShape(dims); } @@ -2032,7 +2035,18 @@ namespace detail } else { - var.SetShape(shape); + // keep the joined dim intact + auto joined_dim = joinedDimension(var.Shape()); + if (joined_dim.has_value()) + { + adios2::Dims cc; + cc.assign(shape.begin(), shape.end()); + cc[joined_dim.value()] = var.Shape()[joined_dim.value()]; + var.SetShape(cc); + } + else + var.SetShape(shape); + if (count.size() > 0) { var.SetSelection({start, count});