How to organize arrays into groups?

I have a dataset of vtkUnstructuredGrid class with many point-centered arrays (several hundred). It is necessary to organize the arrays in such a way as to facilitate the searching and selecting, it is inconvenient to search for them in the drop-down list.

I decided to use the vtkMultiBlockDataSet class, but, as far as I understand, in this case, each block will be a vtkUnstructuredGrid with a copy of points and cells.

Is it possible to organize point-centered arrays into groups more efficiently?

What do you mean by organize ?

What I would do is use multiple PassArrays filter to select only some arrays to work with.

As an example of organization, consider how temporal data is organized. To access an array, we specify the time step and the name of the array, i.e. we have two levels:
1.Time step 1
1.1. Array name 1
1.2. Array name 2
2. Time step 2
2.1. Array name 1
2.2. Array name 2

instead of a single level:

  1. Time step 1.Array name 1
  2. Time step 1.Array name 2
  3. Time step 2.Array name 1
  4. Time step 2.Array name 2

This option is being considered

In that case you would have to rework your dataset into a temporal one.

The problem is that two levels are not enough.

What would be the other levels ? What do they correspond to ?

Harmonic index → Natural frequency number → Layer number (for shells) → Array name

Ok. In that case, you have to ways to do that.

  1. Multiblocks:

Create a flter that shallow copy the geometry and topology into each blocks and copy only the needed arrays. It should be fairly easy BUT ParaView will be tricked into thinking that that data is much bigger than it actually is and will display all these duplicated points and cells if asked to.
There is no duplication in memory though.

  1. Multi outputs

Create a filters with many outputs, each output corresponds to a lead of your tree. While not as practical to develop, and interact with in ParaView, ParaView will not have the same issue of showing incorrect number of points and cells.
There is still no duplication in memory.

Please give an example of a filter with multiple outputs.