Dimensionality of various outputs

Going with this idea of imposing a certain output buffer format on the unit operations, how should that look like?

  • Volume data: Easy, just a scalar value for each time point.
  • Inlet and outlet: Two options here.
    • Time-major: Time, component
    [time0comp0, time0comp1, time1comp0, time1comp1, ...]
    
    • Component-major: Component, time
    [comp0time0, comp0time1, comp0time2, ..., comp1time0, comp1time1, comp1time2, ...]
    
  • Column bulk: Similarly, several options due to combinatorial explosion. I only list options I deem reasonable.
    • Time, (radial position), axial position, component
    • Component, time, (radial position), axial position
    • Time, component, (radial position), axial position
  • Particle liquid phase:
    • Time, (radial position), axial position, particle type, particle shell, component
    • Component, time, (radial position), axial position, particle type, particle shell
    • Time, component, (radial position), axial position, particle type, particle shell
    • Component, particle type, time, (radial position), axial position, particle shell
    • Particle type, component, time, (radial position), axial position, particle shell
    • Time, particle type, component, (radial position), axial position, particle shell
    • Time, component, particle type, (radial position), axial position, particle shell
  • Particle solid phase: Same as particle liquid phase.
  • Column bulk-particle-flux:
    • Time, (radial position), axial position, particle type, component
    • Time, (radial position), axial position, component, particle type
    • Component, time, (radial position), axial position, particle type
    • Time, component, particle type, (radial position), axial position
    • Time, particle type, component, (radial position), axial position
    • Time, particle type, (radial position), axial position, component

I’d suggest the first choice for every field, because this is precisely the state vector ordering for the finite-volume-based models and, hence, incurs the least costs for copying the data into the buffer every time step(!). I’d rather prefer fast simulation and a little more costly post-processing (e.g., plotting) than a little slower simulation and a little faster post-processing. But I’m open to be convinced otherwise.

Opinions / votes?