# Material Operation Tables A Material Operation Table is a CSV file, where each row contains a material tracking operation. The first line of the file must contain comma-separated header identifiers. The system will look for the following reserved headers (case sensitive):
| TIME | Represents the timestamp for the operation. Contains a positive integer value that must fit in 64bits. |
| OP | It contains the operation type for the row. The possible operations are: 1. load – Starts tracking a new volume of material 2. unload – Makes material disappear from the tracking system 3. reload – Makes material re-appear in the tracking system 4. move – Tracks movement from one point in space to another 5. update – Changes attribute values for one volume of material 6. expand – Grows the volume of tracked material and branches the tracking in both space and time 7. jump – Moves material from one singularity to another The operations will be discussed in more detail below. |
| FROM\_X | Contains the X coordinate, in Project coordinates, of the source voxel |
| FROM\_Y | Contains the Y coordinate, in Project coordinates, of the source voxel |
| FROM\_Z | Contains the Z coordinate, in Project coordinates, of the source voxel |
| FROM\_TIME | A timestamp used by some singularity operations (jump and reload) to unambiguously refer to a tracked portion of material in space-time. |
| FROM\_ID | Contains the identifier of the singularity from which the material has reappeared |
| TO\_X | X coordinate, in Project coordinates, of the destination voxel |
| TO\_Y | Y coordinate, in Project coordinates, of the destination voxel |
| TO\_Z | Z coordinate, in Project coordinates, of the destination voxel |
| TO\_ID | Contains the identifier of the singularity where the material disappeared. |
| load | The load operation starts tracking a volume of material at the specified location/time. The operation also assigns values to attributes within the volume. Parameters: TIME, TO\_X, TO\_Y, TO\_Z \[, attributes\] |
| unload | The unload operation tells the system a volume of material has disappeared from the spatial domain and it has entered a singularity, for instance a truck or a crusher. The operation moves from a voxel address to an opaque singularity ID. Parameters: TIME, FROM\_X, FROM\_Y, FROM\_Z, TO\_ID |
| reload | The reload operation tells the system a volume of material has reappeared into the spatial domain from a singularity. For instance, material can temporarily disappear into a truck and emerge later from the truck at the dump location. Parameters: TIME, FROM\_X, FROM\_Y, FROM\_Z, FROM\_TIME, FROM\_ID, TO\_X, TO\_Y, TO\_Z |
| update | The update operation writes new values into attributes for the tracked material, but does not change the identity of the tracked material. This operation is used to model a situation where the contents of a tracked volume of material have changed. Parameters: TIME, FROM\_X, FROM\_Y, FROM\_Z \[, attributes\] |
| move | The move operation removes a tracked volume of material from one location and places it into a different location. Parameters: TIME, FROM\_X, FROM\_Y, FROM\_Z, TO\_X, TO\_Y, TO\_Z |
| expand | The expand operation branches the current volume of tracked material into a new location of space, and starts a new genealogy branch there. The original material ID is preserved, however, allowing to track expanded material back to its origin. Parameters: TIME, FROM\_X, FROM\_Y, FROM\_Z, TO\_X, TO\_Y, TO\_Z |
| jump | Moves material from one singularity to another. Parameters: TIME, FROM\_X, FROM\_Y, FROM\_Z, FROM\_TIME, FROM\_ID, TO\_ID |
| TIME | OP | FROM\_X | FROM\_Y | FROM\_Z | TO\_X | TO\_Y | TO\_Z | TO\_ID | fe |
| 0 | load | 0 | 0 | 0 | 10 | ||||
| 0 | load | 0 | 0 | 1 | 20 | ||||
| 0 | load | 0 | 0 | 2 | 5 | ||||
| 0 | load | 0 | 0 | 3 | 30 | ||||
| 100 | unload | 0 | 0 | 0 | DT01 | ||||
| 100 | unload | 0 | 0 | 1 | DT01 | ||||
| 100 | unload | 0 | 0 | 2 | DT01 | ||||
| 100 | unload | 0 | 0 | 3 | DT01 |
| TIME | OP | FROM\_X | FROM\_Y | FROM\_Z | FROM\_ID | TO\_X | TO\_Y | TO\_Z | fe |
| 200 | reload | 0 | 0 | 0 | DT01 | 10 | 10 | 0 | |
| 200 | reload | 0 | 0 | 1 | DT01 | 10 | 10 | 1 | |
| 200 | reload | 0 | 0 | 2 | DT01 | 10 | 10 | 2 | |
| 200 | reload | 0 | 0 | 3 | DT01 | 10 | 10 | 3 | |
| 200 | update | 10 | 10 | 0 | 16.25 | ||||
| 200 | update | 10 | 10 | 1 | 16.25 | ||||
| 200 | update | 10 | 10 | 2 | 16.25 | ||||
| 200 | update | 10 | 10 | 3 | 16.25 |
| TIME | OP | FROM\_X | FROM\_Y | FROM\_Z | TO\_X | TO\_Y | TO\_Z | fe |
| 0 | load | 0 | 0 | 0 | 10 | |||
| 0 | load | 0 | 0 | 1 | 20 | |||
| 0 | load | 0 | 0 | 2 | 5 | |||
| 0 | load | 0 | 0 | 3 | 30 | |||
| 200 | move | 0 | 0 | 0 | 10 | 10 | 0 | |
| 200 | move | 0 | 0 | 1 | 10 | 10 | 1 | |
| 200 | move | 0 | 0 | 2 | 10 | 10 | 2 | |
| 200 | move | 0 | 0 | 3 | 10 | 10 | 3 | |
| 200 | update | 10 | 10 | 0 | 16.25 | |||
| 200 | update | 10 | 10 | 1 | 16.25 | |||
| 200 | update | 10 | 10 | 2 | 16.25 | |||
| 200 | update | 10 | 10 | 3 | 16.25 |