ornladios / ADIOS

The old ADIOS 1.x code repository. Look for ADIOS2 for new repo
https://csmd.ornl.gov/adios
Other
54 stars 40 forks source link

FLEXPATH doesn't read constants in array dimensions #152

Closed burlen closed 6 years ago

burlen commented 6 years ago

Given the following write side code

 535     std::string path = dataset_id + "/extent";
 536     adios_define_var(gh, path.c_str(), "", adios_integer, "6", "6", "0");
 537     
 538     path = dataset_id + "/origin";
 539     adios_define_var(gh, path.c_str(), "", adios_double, "3", "3", "0");
 540     
 541     path = dataset_id + "/spacing";
 542     adios_define_var(gh, path.c_str(), "", adios_double, "3", "3", "0");

the read side fails when using FLEXPATH printing

ERROR: Could not find fieldname: 6
ERROR: Could not find fieldname: 3
ERROR: Could not find fieldname: 3

However, no error code is returned from adios_perform_reads, which gives us no way to know that things didn't work out.

It seems that FLEXPATH read doesn't recognize constants in global array dimensions. FLEXPATH write does handle this, as does MPI/BP read/write.

It would be nice if constants were handled on the FLEXPATH read side. A work around is to add some dummy field to hold the fixed lengths, but this adds clutter.

burlen commented 6 years ago

@eisenhauer @mw70 level of severity == inconvenience

eisenhauer commented 6 years ago

I've fixed this in GitHub master.