States

A state is a “slice” through a suite at a fixed parameter value (typically time). For example, a state contains all the following that is associated with a specific time step of a simulation:

  • pointer to the computational mesh (i.e., a set);
  • pointer to the default coordinate field (an independent variable) of the mesh;
  • the time value (also an independent variable) of the state;
  • pointers to all the fields (the dependent variables) attached to the mesh at the specific time step.

What if the desired output changes from state to state?. For example, suppose a client writes various combintations of Coordinates (C), Pressure (P), Temperature (T), Velocity (V) and Stress (S) fields according to the following sequence…

1
2
3
4
5
6
7
                                 C   C
         C   C   C   C           V   V
 C   C   V   V   V   V   C   C   T   T
 V   V   T   T   T   T   V   V   P   P
 S   S   P   P   P   P   S   S   S   S
 +---+---+---+---+---+---+---+---+---+
 0   1   2   3   4   5   6   7   8   9   <-- indices
1
 0  0.5  1  1.5  2  2.5  3  3.5  4  4.5  <-- times

The client should declare a state template that contains field templates for all the fields that will be referenced at any state. In the example above, the state template should consist of field templates for C, V, T, P, and S. For the states that don’t contain all the fields, the client should pass a SAF__NOT_APPLICABLE_FIELD for those fields that aren’t applicable for the state being written.