IWAVE Structure and Basic Use Cases |
The basic control structure of IWAVE is its internal grid, which describes the global state space of IWAVE simulations. This rectangular grid is logically equivalent to a tuple of axes; each axis is regularly sampled, hence described by the usual triple familiar from RSF. [In common with conventional usage for this subject, ``axis'' in this discussion will mean ``finite regularly sampled interval on an axis''.]
Like RSF, the restriction to regular sampling implies some workarounds for cases in which data sampling is actually not regular - the notable instance being trace acquisition geometry. Irregular sampling parameters find a natural home in the attributes of IWaveSampler i/o objects, which encapsulate all of the information required for i/o of a given type or format. A reference to the internal grid is an key data member of every IWaveSampler instance.
The spatial axes are obvious members of the internal grid, as is the time axis. The IWaveSim constructor creates a version of the time axis that combines the various time axes of associated data objects that have them, and resets the time step to one appropriate for the simulation (returned by the TIMESTEP member function of IWaveInfo). Thus for example the source time axis may even end earlier than the output trace time axis begins; the internal time axis contains the union of the two, resampled to the simulation time step.
Other axes represent other aspects of simulation - most important, other sampled parameters such as source positions that parametrize individual shots within a simulation. The internal grid allocates additional axes to record these parameters. For instance, SEGY data is organized shot coordinates, on a shot axis. All coordinates are recorded in the IWaveSampler for SEGY data, but only one additional axis with stride is introduced to describe the various shots.
Additional axes may represent internal degrees of freedom available to the simulation, for instance space- or time-shift simulation (Symes, 2008). The use of these internal degrees of freedom will be described in another report.
With many axes interacting, it is essential to provide some method to determine their roles. Other data handling systems either carry out this task in a similar way to that described here (eg. DDS,...) or ignore it (not an option for IWAVE!). The additional information is arranged as additional keywords in RSF data files, mentioned earlier in the discussion of movie output:
IWAVE Structure and Basic Use Cases |