ADIOS2 misinterprets byte/char arrays

Created by: pnorbert

This may be a bug. A byte (or char) array from ADIOS1 is interpreted in ADIOS2 as a string scalar.

In ADIOS1 there are string scalars for string scalars and byte arrays for arrays of bytes or characters, including Fortran character(*) types. Fortran cannot write string scalars, only byte arrays in ADIOS1.

Debatable what is good for 1D arrays, but it is also misinterpreted for multi-dim byte arrays. Example is the timer_labels which is a 2D byte array.

To reconstruct the bug, use adiosvm Tutorial/heat_transfer, adios1 target with POSIX method:

adiosvm/Tutorial/heat_transfer$ mpirun -n 1 ./heat_transfer_adios1   heat   1 1   4 5   1  1
 Process number        : 1 x 1
 Array size per process at first step: 4 x 5
Step    1:
Total runtime =  0.001s
adiosvm/Tutorial/heat_transfer$ bpls -l heat.bp
 ...
  byte     /__adios__/timer_labels_1  {8, 16} = 0 / 119 / null  / null 
  double   /__adios__/timers_1        {1, 8} = 0 / 0 / null  / null 

adiosvm/Tutorial/heat_transfer$ bpls2 -l heat.bp
  signed char  /__adios__/timer_labels_1  1*scalar 0
  double       /__adios__/timers_1        1*{1, 8}  0 / 0