The Data Model (Introduction)

2. What is a Component
Generally, a Component is an array of values with some metadata that makes the array "self-describing" to DX modules. That is, a bare array might just consist of 900 floating point values. But a DX Component would also contain the information that there were 900 items and that those items were floating point, real, scalar, ASCII or binary, and if binary, which byte order and floating point representation system was used. (Naturally, Component Arrays may be of other types such as integer, string, complex, and so on.)

 

Several people are now thinking about their own array data and want this question answered: You mean I have to reformat my data files to include all that other stuff? Answer: No. We will show you how to construct files that provide all that information but "point" to your data files. These "header" files can be read in by DX which then follows the links to get the actual array data from your file which remains unmodified.

The "data" array also has information about the "structure" of the data values, that is, whether they are scalar or vector, and if vector, how many vector components there are in each vector. (Note the potential for word confusion here: in common parlance, vectors are made up of one or more "vector components"; Fields are made up of one or more "DX Components". Presumably, the context will clarify which I refer to as we go along). If you measure, for example, a wind (air movement) vector in 3D, you'd describe the data to DX as a "3-vector" because each measurement has an X, Y, and Z component to it. When DX fetches a vector value from a Component Array, it will get as many values as necessary to make one whole vector; in this case, 3 numbers to make one 3-vector.

 

You can put the three numbers for each data point in a file in order: X0, Y0, Z0, X1, Y1, Z1, … or, you can maintain 3 separate scalar arrays and combine them together within DX: some people prefer to handle vectorial data components in this way. This might look like X0, X1, …, then Y0, Y1, …, then Z0, Z1, …