Terminals
- Last UpdatedAug 11, 2025
- 15 minute read
This page is available only if you have a valid Spiral Network license.
For more information about checking for installed licenses, see the Configure your Licenses topic. Contact AVEVA support (spiral.support@aveva.com) for information about obtaining new licenses.
A Terminal node is a transport point for material. Terminal nodes can be origins or destinations for transport links.
A terminal may handle any material routed to it via its transport link, or a specific set of traded materials.
Terminals must have at least one associated terminal inventory. As soon as a terminal has one inventory, it becomes restricted to only handling materials with available registered inventories.
For example, a terminal may handle jet and diesel fuel. If an inventory of diesel is added, a corresponding inventory of jet must also be available in order for the materials to be both handled by the site.
Model terminals as plants
You normally model terminals as nodes of type Terminal in the Network environment. However, you can also model terminals as discrete plants within the planning environment. In this sense the plant has no conversion or upgrading facilities, but merely buys material and then sells the same material (or blends of several feedstocks). Terminals modeled this way may have some more detailed blending configurations defined and may be reported on as single sites, rather than as nodes within the Network model.
Inventories in plant models
Plant models within a planning case may have inventories. In this sense the plant also contains a terminal with associated inventories that may build and store material within the optimization.
Inventories in plant models do not replace any inventories in the Network case, and are used alongside any inventories defined in the Network environment. Inventories in a plant model use whatever settings are defined in that plant case to constrain the optimization. For example, if the plant model case defines a closing minimum and a closing API quality, then both of these are applied in the Network optimization.
Where individual plant inventories are not required in the Network model, or where the inventory constraints need to be changed, the original source data should be modified using the Watch window, and through accessing the original plant's source watch sets.
Manage terminal operations
With terminal operations you can assign constraints and a cost to activities that occur at a terminal and involve one or more traded materials. Where a terminal is capable of performing these activities, and appropriate terminal inventories of the same traded materials are available, these terminal operation costs will be applied to the objective function. For example, if a terminal is capable of storing an inventory of ethanol, then a receiving and lifting cost can also be added to the actual inventory costs. A terminal operation must have inventories with matching traded materials in order to have an effect.

You manage terminal operations from the Terminal Operations tab of the Terminals page. Follow these steps to add a terminal operation:
-
Do either of the following:
-
Click Add Operation in the Operations group of the Home ribbon tab.
-
Right-click anywhere in the table and choose Add Terminal Operation from the context menu.
A new row is added to the table.
-
-
Enter a Name for the operation. This is used to identify the operation in places such as diagnostic messages, watch sets and case comparisons. If this is not set, a default name will be used instead, created from the Node, Traded Material and Type values.
-
Choose the Node where the operation occurs. You must have defined a node of type Terminal already.
-
Choose one or more Traded Materials associated with the operation. These must have associated terminal inventories to have an effect. Choosing more than one traded material makes sense if an operation has the same cost and constraints for all the materials.

Click the ellipsis button (...) in the drop-down list to import traded materials from the reference data, in case you want to add materials that are not yet included in your model.
-
Choose the Type of terminal operation. You can choose among Receipt (material arriving to the terminal), Lifting (material leaving the terminal) and Blending (material being blended with other materials).
-
Choose the Transport Mode associated with this operation. Only operations via this particular transport mode will have the operation cost and constraints applied.
Other available transport modes are still possible, with a suitable transport link. You will need to create a separate terminal operation for each transport mode in order to apply the correct cost to each.
-
Enter the Cost of the terminal operation, and choose the associated unit of measure.
-
Optionally, choose a Group for the terminal operation.
-
Optionally, enter a Minimum, Maximum or Fixed constraint for the flow of material related to the terminal operation. You can deactivate these constraints by clearing the corresponding Active check box.
-
Optionally, enter a Description for the operation.
To delete one or more terminal operations, select the corresponding rows in the table and do either of the following:
-
Click Delete Operation in the Operations group of the Home ribbon tab.
-
Right-click on the selected operations and choose Delete Terminal Operation from the context menu.
Manage terminal operation groups

The Terminal Operation Groups tab of the Terminals page defines the groups that terminal operations can belong to.
Hierarchy. You can group terminal operation groups together, thereby creating a hierarchy of groups. In the Group column, you can select a group to act as the parent of any other group.
Pro Rata. The check box in the Pro Rata column controls whether to pro rata the constraining amounts. When pro rata is active, the amount is divided across all periods equally (weighted with respect to period duration). When pro rata is not active, the amount is aggregated across all time so the constraint will be applied, but may all be utilized within a small set of periods. See Optimization across and within Periods for more information.
Member Limit. If the member limit is set to a number N, then no matter how many members are in a group, the optimizer will pick the best solution containing at most N of those members.
Follow these steps to add and populate a terminal operation group:
-
Create the group
-
In the Terminal Operation Groups tab, do either of the following:
-
Click Add Group in the Groups group of the Home ribbon tab.
-
Right click anywhere on the grid and choose Add Group from the context menu.
-
-
Enter the desired name for the group in the Name column.
-
In the Wgt/Vol column, choose whether the group is weight- or volume-based.
-
-
Add items to the group
-
Go to the Terminal Operations tab.
-
If you cannot see the Grouping column header, follow these steps:
-
Right click on a column header and choose Column/Band Chooser from the context menu. The Customize inventories columns window opens.
-
From the Bands tab, drag the Grouping label to the grid header. Move it along the header until two arrow icons appear, then release the mouse button. The Grouping column band is added to the grid.
-
From the Columns tab, drag the Group label to the grid, under the Grouping column band, and release it. The column is added to the grid.
-
Close the Customize inventories columns window.
-
-
In the Group column, select the group you created for each terminal operation you want to add to the group.
Follow the same steps in the Terminal Operation Groups tab if you want to add a group to another group.
-
-
Review and edit the group
In the Terminal Operations Grouped Items tab you can see a summary of those terminal operation groups you have configured, together with the members of each group. You can edit details of group members in this tab, but you cannot create new groups, nor add or delete group members.
Manage terminal inventories
Terminal Inventories allow materials to be stored at terminal nodes. Each inventory holds a unique traded material and may have an associated handling and holding cost for building and maintaining this inventory. Where there is an economic or operational factor within a multi-plant multi-period model, terminal inventories may be used to maintain levels of inventory for future use. For example, if the selling price of a traded material is greater in the future, inventory may be built to sell the material at a later date.

You manage terminal inventories from the Terminal Inventories tab of the Terminals page. Follow these steps to add a terminal inventory:
-
Do either of the following:
-
Click Add Inventory in the Inventories group of the Home ribbon tab.
-
Right-click anywhere in the table and choose Add Terminal Inventory from the context menu.
A new row is added to the table.
-
-
Make sure that the check box in the Active column is selected if you want the inventory to be active within the optimization.
-
Enter a Name for the inventory. Double click in the cell and type the new name.
-
Choose the Node where the inventory is held. You must have defined a node of type Terminal already.
-
Choose the Traded Material associated with the inventory.
-
If you want the inventory to belong to a group, choose it from the Group column. Note that this column may not be visible by default: see Customize the Grid below for how to manage columns.
-
Choose the Start and End Period of the range over which the inventory is available.
-
Enter the Opening and Closing monetary values of the inventory (per unit of material) under the Inventory Values column band. Make sure to select the correct unit of measure.
-
Enter the cost of Handling the inventory. This is applied once for the inventory across all periods, so even if there are seven periods the handling cost will only be applied once. Note that traded materials can also have terminal operation costs applied to them, such as receiving and lifting costs.
-
Enter the cost of Holding the inventory. This is applied per unit of time when the inventory is in use.
Note: A holding cost is applied for the whole period, even if in practice that inventory was only held for a small part of the period. For example, if you had a 30 day period the holding cost per day would be multiplied by 30. However in the actual terminal you may only hold the inventory for two days for scheduling reasons. This difference cannot be incorporated as is into the optimization due to the difference in period lengths.
-
Enter the Rent Cost for renting the tank. Rent is always applied when the inventory is active even if the inventory is not used. Note that this column may not be visible by default: see Customize the Grid below for how to manage columns.
-
Enter any Opening amount of material that may be present in the inventory. The opening material is defined as an existing feedstock.
-
Optionally, enter a Closing Minimum and Closing Maximum amount that can be present in the inventory in the final period. You can deactivate these constraints by clearing the corresponding Active check box.
In depth: Holding inventory generally implies a loss in value, since the inventory is not sold as product, so in the final period it is usual to drive the inventory to zero. In some modeling scenario though it may be required to hold inventory for a subsequent time frame which is not currently being explicitly modeled.
For example, you may be modeling the current year only and yet know that for January of the subsequent year you will need at least some inventory. In order to ensure that inventory does remain at the end of the final period, you can enter a closing minimum and maximum. The closing inventory is different from the normal minimum or maximum, which may only refer to storage capacity and are not related to ensuring stable results in time frames not being modeled. -
Optionally, enter a Minimum, a Maximum or a Fixed constraint for the amount of inventory that can be present in the inventory in any period. These constraints apply to each period individually, and may be overridden in the final period by the closing minimum and maximum. You can deactivate these constraints by clearing the corresponding Active check box.
-
From the UoM column just before the Description column select the unit of measure for the values in the Opening, Closing Minimum, Closing Maximum, Minimum, Maximum and Fixed columns.
-
Optionally, enter a Description of the terminal inventory.
Warning: If any of the plant models within the case have inventories, these are separate from to the terminal inventories configured here. These inventories can be configured using the associated Watch Set items.
To delete one or more terminal inventories, select the corresponding rows in the table and do either of the following:
-
Click Delete Inventory in the Inventories group of the Home ribbon tab.
-
Right-click on the selected inventories and choose Delete Terminal Inventory from the context menu.
Manage terminal inventory groups

The Terminal Inventory Groups tab of the Terminals page defines the groups that terminal inventories can belong to.
Hierarchy. You can group terminal inventory groups together, thereby creating a hierarchy of groups. In the Group column, you can select a group to act as the parent of any other group. For example, a group of gasoline inventories and a group of diesel inventories can themselves be added into a group.
Pro Rata. The check box in the Pro Rata column controls whether to pro rata the constraining amounts. When pro rata is active, the amount is divided across all periods equally (weighted with respect to period duration) so that inventory is approximately equal in all periods. When pro rata is not active, the amount is aggregated across all time so the constraint will be applied, but may all be utilized within a small set of periods. See Optimization across and within Periods for more information.
Member Limit. If the member limit is set to a number N, then no matter how many members are in a group, the optimizer will pick the best solution containing at most N of those members.
Follow these steps to add and populate a terminal inventory group:
-
Create the group
-
In the Terminal Inventory Groups tab, do either of the following:
-
Click Add Group in the Groups group of the Home ribbon tab.
-
Right click anywhere on the grid and choose Add Group from the context menu.
-
-
Enter the desired name for the group in the Name column.
-
In the Wgt/Vol column, choose whether the group is weight- or volume-based.
-
-
Add items to the group
-
Go to the Terminal Inventories tab.
-
If you cannot see the Grouping column header, follow these steps:
-
Right click on a column header and choose Column/Band Chooser from the context menu. The Customize inventories columns window opens.
-
From the Bands tab, drag the Grouping label to the grid header. Move it along the header until two arrow icons appear, then release the mouse button. The Grouping column band is added to the grid.
-
From the Columns tab, drag the Group and Ratio labels to the grid, under the Grouping column band, and release them. The two columns are added to the grid.
-
Close the Customize inventories columns window.
-
-
In the Group column, select the group you created for each terminal inventory you want to add to the group.
-
-
Review and edit the group
In the Grouped Terminal Inventories tab you can see a summary of those terminal inventory groups you have configured, together with the members of each group. You can edit details of group members in this tab, but you cannot create new groups, nor add or delete group members.
Manage terminal blends

Terminal Blends allow final product grades to be manufactured at terminals by blending two intermediate traded materials together. This grade can then be shipped to demands available to this terminal or other downstream links. You can use terminal blends to simulate blending operations at depots with limited processing capability.
The blends can be defined in terms of recipe, or by the final required specifications.
You manage terminal blends from the Terminal Blends tab of the Terminals page. Follow these steps to add a terminal blend:
-
Do either of the following:
-
Click Add Blend in the Terminal Blends group of the Home ribbon tab.
-
Right-click anywhere in the table and choose Add Terminal Blend from the context menu.
A new row is added to the table.
-
-
Make sure that the check box in the Active column is selected if you want the blend to be active within the optimization.
-
Enter a Name for the blend. Double click in the cell and type the new name.
-
Choose the Terminal where the blend occurs. You must have defined a node of type Terminal already.
-
Choose the Grade being manufactured during blending.
-
In the Recipe column, choose how the component materials are blended:
-
By Volume: the ratio of the blend components as entered by volume.
-
By Weight: the ratio of the blend components as entered by weight.
-
To Spec: the ratio is adjusted to meet the grade specifications.
-
-
Choose the Traded Material and the Proportion for each of the two blend components. Note that you cannot specify the proportion if you have chosen To Spec as the blend recipe, since in this case the proportion is adjusted automatically to meet the grade specifications.
-
Optionally, enter a Description for the blend.
The Solution column shows the solution value for each blend. Choose the units of measure for the solution values from the UoM column.
To delete one or more terminal blends, select the corresponding rows in the table and do either of the following:
-
Click Delete Blend in the Terminal Blends group of the Home ribbon tab.
-
Right-click on the selected blends and choose Delete Terminal Blend from the context menu.
You cannot use a traded material as component of a terminal blend and sell the same traded material directly as a demand. This is not supported and prevents the model from optimizing correctly.
Use this workaround to achieve the same result:
-
In the plant producing the material, create two grades with different traded materials, one for terminal blending and one to be sold directly. Both grades should be produced from the same components and with the same property specifications.
-
In the Network model, use one grade for terminal blending and the other grade for the demand.
The result is conceptually the same as using a single traded material.
Other tasks
The following are additional tasks you can carry out from the tabs of the Terminals page. Some of the ribbon groups described in the following sections are not available from all tabs.
Show differences with the master case
Whenever a value in the row is different from the value in the parent case within
the model, the unnamed column next to the Active column shows a double arrow icon (
) . Note that this column may not be present in all views.
The Deltas group of the Home ribbon tab lets you further manage these differences:

-
Click the Show button to display a blue triangle icon in the top right corner of every cell whose value overrides the value in the parent case. This allows you to pinpoint the specific cells with overridden values, rather than whole rows.
-
A dark blue triangle means that the value is different from the parent case value.
-
A light blue triangle means that the value is the same as in the parent case, but has been entered manually, so it is still treated as an override. Future changes in the parent case value will not be reflected in the subcase value.

-
-
Click Restore to change the values of the selected cells back to those of the parent case. You can also right click and choose Restore from the context menu.
Tip: To show all the differences between cases within a model, see Compare Cases.
To merge differences across cases, see Update Cases.
Customize the grid

Customize the grid from the Grid group of the Home ribbon tab:
-
Click Find to show or hide a text field at the top of the grid to filter the grid contents. Type in the text field to show only the rows with text matching what you have typed. The matching text is highlighted in the grid. See Filters for more details.
-
Click Columns to open a small dialog windows where you can drag column headers to remove columns from the grid. You can then drag the headers back to the grid to restore the columns. See Add and Remove Columns in Manage Columns for more details.
-
Choose a View from the list, or click the cogwheel icon to remove a view or save any changes. See Views for more details.
Show per-period information

Click the Periods button in the Periods group of the Home ribbon tab to expands each row of the grid to show per-period optimization results.