Three components and their relations define a time-stepping simulator
based on regular gridding and stencil field updates:
a collection of (discrete) dynamic and static (coefficient) fields;
model-specific functions implementing time step stencils,
determining space and time grids and stencil shape, and
sanity-checking coefficient fields;
a list of i/o procedures to populate the fields at initial and
intermediate times, and to extract results at final and intermediate
times.
Definitions and interfaces for these three components form the core of
IWAVE. The critical functions and data structures are static members of the IWaveInfo class;
definining them completely defines the application. Declarations
appear in
iwave/core/include/iwaveinfo.hh, which should be
consulted for function signatures etc. Applications must supply
definitions, each unique (as is requlred for static global data), as
described in the final paragraphs of this section.