Skip to content

Access variables and attributes inside adios groups

Allows fides to read variables and attributes within ADIOS groups that are path-like. This work will help VTK in reading a collection of datasets from ADIOS into a vtkPartitionedDataSetCollection.

  • DataSetReader::GetGroupNames() returns a list of unique group names found in the input file.
  • These group names can be passed on to the DataSetReader::ReadMetaData(paths: map, groupName: str) function one by one in order to fetch metadata of meshes and fields within that group.
  • Similarly, in order to read a dataset inside a group, assign the name of that group to the fides::keys::GROUP_SELECTION key before invoking DataSetReader::ReadDataSet(paths: map, selection: metadata::MetaData).
  • tests/test-groups.cxx shows usage of the DataSetReader::GetGroupNames(), DataSetReader::ReadMetadata(paths: map, groupName: str) and DataSetReader::ReadDataSet(paths: map, selection: metadata::MetaData).

Here's what a bpls dump of the test data groups.bp looks like:

bpls -lat ./tests/data/groups.bp
Step 0:
  string   Fides_Data_Model                                            attr   = "unstructured"
  string   Fides_Variable_Associations                                 attr   = {"points", "points", "points", "points", "points", "cell_set", "cell_set", "cell_set", "cell_set", "cell_set"}
  string   Fides_Variable_List                                         attr   = {"ids", "accel", "disp", "force", "vel", "cell_set_ids", "eqps", "mises", "pressure", "object_id"}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/accel         {27, 3}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/cell_set_ids  {8}
  uint8_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/cell_types    {8}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/connectivity  {64}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/disp          {27, 3}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/eqps          {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/force         {27, 3}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/ids           {27}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/mises         {8}
  int32_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/num_verts     {8}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/object_id     {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/points        {27, 3}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/pressure      {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_2/vel           {27, 3}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/accel         {27, 3}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/cell_set_ids  {8}
  uint8_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/cell_types    {8}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/connectivity  {64}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/disp          {27, 3}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/eqps          {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/force         {27, 3}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/ids           {27}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/mises         {8}
  int32_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/num_verts     {8}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/object_id     {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/points        {27, 3}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/pressure      {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_3/vel           {27, 3}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/accel         {27, 3}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/cell_set_ids  {8}
  uint8_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/cell_types    {8}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/connectivity  {64}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/disp          {27, 3}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/eqps          {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/force         {27, 3}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/ids           {27}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/mises         {8}
  int32_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/num_verts     {8}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/object_id     {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/points        {27, 3}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/pressure      {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_5/vel           {27, 3}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/accel         {27, 3}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/cell_set_ids  {8}
  uint8_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/cell_types    {8}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/connectivity  {64}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/disp          {27, 3}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/eqps          {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/force         {27, 3}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/ids           {27}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/mises         {8}
  int32_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/num_verts     {8}
  int64_t  IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/object_id     {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/points        {27, 3}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/pressure      {8}
  double   IOSS/assemblies/Conglomerate/Top/Prime/mesh_7/vel           {27, 3}
Edited by Jaswant Panchumarti (Kitware)

Merge request reports