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