PFS Subdiagram Blocks
In process flow simulation diagrams, subdiagram blocks represent other PFS diagrams or, starting in Version 2021, simulation RBDs within the project. Using subdiagram blocks allows you to maintain separate diagrams for portions of a system and to incorporate those diagrams as components of another diagram. PFS subdiagram blocks can have multiple inputs of various types, and multiple outputs of various types.
Subdiagram Assumptions
Like any other PFS diagram, a subdiagram begins with one or more source blocks and ends with one or more sink blocks. In order for throughput allocations to function correctly, some assumptions are made and some underlying changes are made to the subdiagram at the time of simulation. You will not see these changes within the diagram, but values related to them will appear in simulation results.
Flows: The flows exiting the source blocks in a linked subdiagram are checked against the inputs to the subdiagram block, and the flows exiting the sink blocks are checked against the outputs. The flow types are matched by name; if a match exists, the source blocks are connected to the subdiagram block inputs and the sink blocks are connected to the subdiagram block outputs; dummy tank blocks are used in these connections, as explained next. In cases where no match is found between inputs and source blocks, or between outputs and sink blocks, you will see a warning and have the opportunity to review the inconsistencies on the Notifications page of the control panel. You can cancel the simulation, or you can choose to continue with the simulation despite the inconsistencies.
Dummy tank blocks: For each flow type entering the subdiagram, a dummy tank block is underlying added at the point of entry, ahead of the affected source block(s). Similarly, for each type of output exiting the subdiagram, a dummy tank is added at the point of exit, subsequent to the affected sink block(s). These dummy tanks enable certain types of throughput allocation, as explained in the subdiagram block properties below.
Results: The connected source blocks and sink blocks are treated as tanks with a capacity of 0; the dummy tank blocks also have a capacity of 0. In the simulation results, all of these blocks will appear in the Tank Summary worksheet, denoted with an asterisk at the beginning of each name. Results are also reported for the connectors that exist underlyingly between the dummy tank blocks and the source and sink blocks.
Subdiagram Block Properties
Note: Double-clicking a subdiagram block will open the subdiagram that the block is based on. Open the Block Properties window for a subdiagram block by selecting the block and choosing Process Flow > Properties > Block Properties or pressing CTRL+E. To get a quick preview of the subdiagram without actually opening it, select the block and either press SPACE or choose Process Flow > Selection > Quick View.
To configure a subdiagram block, in addition to the common block properties, you will need to specify the diagram that the subdiagram block represents. You will be prompted for this information when you add the subdiagram block. When you are viewing or editing the subdiagram properties in the Block Properties window, you can change the diagram that it represents by choosing an existing diagram from the Based on diagram drop-down list.
Tip: You can drag a PFS diagram from the current project explorer into the current PFS diagram to create a subdiagram block based on that diagram.
In addition, you will need to specify the throughput properties. If the subdiagram block represents a PFS diagram, these are as follows:
- Throughput
- Maximum output defines, for each connected path, a maximum amount of output that can be sent to the path.
- Demand allocation
per input type allows you to specify, for each
flow type, how input is accepted into the subdiagram block
and, by extension, into the dummy tank block within the
subdiagram. This setting applies if there are multiple
incoming paths of that flow type entering the subdiagram
and the amount of input that they deliver exceeds the
subdiagram's capacity as limited by capacities within
the subdiagram itself or downstream. If all input can
be handled by the subdiagram, the selection here is ignored.
To understand the demand allocation types, consider a
block (rather than a subdiagram, for the sake of simplicity)
with a capacity of 10 units, receiving inputs A - 5 units,
B - 3 units and C - 2 units. Now assume that downstream
issues have limited the block’s capacity to 5 units.
- If Allocate according to connection priorities is selected, the input will be allocated according to the priorities specified for each connection (i.e., all input will be taken from the highest priority connector until its capacity is reached, then all input will be taken from the next highest priority connector and so on, until the subdiagram’s capacity is filled). When this option is selected, you will be able to set priorities by selecting each connector that carries input to the subdiagram block and using the commands at Process Flow > Selection > Input Priority. The input priority for each connector is shown at the end of the connector caption. In our example, if path A has the top priority, then input will be accepted only from A, because the 5 units it provides fill the block’s capacity. However, if B has the top priority, followed by A, then 3 units will be accepted from B and the remaining 2 units to fill the block’s capacity will be accepted from A.
- If Weighted allocation across paths is selected, the amount of input refused when the subdiagram’s capacity is filled will be weighted according to the capacity of each incoming path. The software calculates the total capacity of all paths and then determines the percentage of the total capacity represented by each path. An equal percentage of each path’s capacity will be refused, thereby maintaining the weights of the paths. In our example, the block’s capacity has decreased by 50%, so 50% of each path’s input will be refused. The following amounts will be accepted: A – 2.5 units, B – 1.5 units and C - 1 unit.
- If Allocate equal share to all paths is selected, an equal amount of input will be refused from each of the paths when the subdiagram's capacity is filled. In our example, the block’s capacity has decreased by 5 units, so 5/3 = 1.67 units will be refused from each path. The following amounts will be accepted: A – 3.33 units, B – 1.33 units and C – 0.33 units.
- Allocation per
input type allows you to specify, for each flow
type, how output is routed from the dummy tank block to
the source blocks within the subdiagram if there are multiple
source blocks of that flow type in the subdiagram.
- If Allocate according to connection priorities is selected, the output will be allocated according to the priorities specified for each connection (i.e., all output will go to the highest priority connector until its capacity is reached, then all output will go to the next highest priority connector and so on). In the case of PFS subdiagram blocks, connector priorities are based on the block order within the subdiagram. By default, this order is based the underlying block ID; you can customize the block order and, therefore, the connector priorities by choosing Process Flow > Selection > Diagram Actions > Set Block Order.
- If Weighted++ is selected, the allocation will be weighted according to the maximum output specified for each path (in the section directly below). The software calculates the total capacity of all possible paths and determines the percentage of the total capacity represented by each path, then sends that percentage of the "stream" to each path. Once this allocation is calculated, if a particular path is unable to handle what is allocated to it due to restrictions downstream, that path will handle only as much throughput as the restriction allows. The throughput of the other paths will be adjusted using the maximum output for all the throughput that is left beyond the restricted path.
- If Equal++ is selected, an equal share of output will be allocated to each of the paths as long as the equally allocated output is equal to or less than the total throughput. If the total throughput is greater than what can be achieved by equal allocation, then the system will allocate as much as possible using equal allocation across all the paths, then try to allocate what is left equally into the paths that still have capacity left. This is repeated until all paths have reached maximum capacity or the total throughput has been allocated across the paths.
- If Weighted allocation across paths is selected, the allocation will be weighted according to the throughput specified for each source block. The software calculates the total capacity of all possible paths and determines the percentage of the total capacity represented by each path, then sends that percentage of the "stream" to each path. Once this allocation is calculated, if a particular path is unable to handle what is allocated to it due to restrictions downstream, that path will handle only as much throughput as the restriction allows. The throughput for the other paths is not changed.
- If Allocate equal share to all paths is selected, an equal share of output will be allocated to each of the paths. If a given path's capacity is reduced, all other paths will be reduced accordingly. For example, in extreme cases, this can lead to zero throughput for all paths if any one path's flow is reduced to zero.
- Demand allocation per
output type allows
you to specify, for each flow type, how input is accepted
from the sink blocks into the dummy tank block within
the subdiagram if there are multiple sink blocks handling
that flow type.
- If Allocate according to connection priorities is selected, the input will be allocated according to the priorities specified for each connection (i.e., all input will be taken from the highest priority connector until its capacity is reached, then all input will be taken from the next highest priority connector and so on, until the dummy tank block's capacity is reached, i.e., when downstream limits are met). In the case of PFS subdiagram blocks, connector priorities are based on the block order within the subdiagram. By default, this order is based the underlying block ID; you can customize the block order and, therefore, the connector priorities by choosing Process Flow > Selection > Diagram Actions > Set Block Order.
- If Weighted allocation across paths is selected, the amount of input refused when the dummy tank block's capacity is reached (i.e., when downstream limits are met) will be weighted according to the capacity of each incoming path. The software calculates the total capacity of all paths and then determines the percentage of the total capacity represented by each path. An equal percentage of each path’s capacity will be refused, thereby maintaining the weights of the paths.
- If Allocate equal share to all paths is selected, an equal amount of input will be refused from each of the paths when the dummy tank block's capacity is reached (i.e., when downstream limits are met).
- Allocation per
output type allows you to specify, for each flow
type, how output is routed from the dummy tank block within
the subdiagram and, by extension, from the subdiagram
block itself. This setting applies if there are multiple
outgoing paths of that flow type exiting the subdiagram.
- If Allocate according to connection priorities is selected, the output will be allocated according to the priorities specified for each connection (i.e., all output go to the highest priority connector until its capacity is reached, then all output will go to the next highest priority connector and so on). When this option is selected, you will be able to set priorities by selecting each connector that carries output from the subdiagram block and using the commands at Process Flow > Selection > Output Priority. The output priority for each connector is shown at the beginning of the connector caption.
- If Weighted++ is selected, the allocation will be weighted according to the maximum output specified for each path (in the section directly below). The software calculates the total capacity of all possible paths and determines the percentage of the total capacity represented by each path, then sends that percentage of the "stream" to each path. Once this allocation is calculated, if a particular path is unable to handle what is allocated to it due to restrictions downstream, that path will handle only as much throughput as the restriction allows. The throughput of the other paths will be adjusted using the maximum output for all the throughput that is left beyond the restricted path.
- If Equal++ is selected, an equal share of output will be allocated to each of the paths as long as the equally allocated output is equal to or less than the total throughput. If the total throughput is greater than what can be achieved by equal allocation, then the system will allocate as much as possible using equal allocation across all the paths, then try to allocate what is left equally into the paths that still have capacity left. This is repeated until all paths have reached maximum capacity or the total throughput has been allocated across the paths.
- If Weighted allocation across paths is selected, the allocation will be weighted according to the throughput specified for each path exiting the subdiagram. The software calculates the total capacity of all possible paths and determines the percentage of the total capacity represented by each path, then sends that percentage of the "stream" to each path. Once this allocation is calculated, if a particular path is unable to handle what is allocated to it due to restrictions downstream, that path will handle only as much throughput as the restriction allows. The throughput for the other paths is not changed.
- If Allocate equal share to all paths is selected, an equal share of output will be allocated to each of the paths. If a given path's capacity is reduced, all other paths will be reduced accordingly. For example, in extreme cases, this can lead to zero throughput for all paths if any one path's flow is reduced to zero.
If the subdiagram represents a simulation RBD, the subdiagram block is essentially used as a process block in terms of throughput; the throughput properties are as follows:
- Throughput can
be used to define a mass balance equation (e.g., 4.032 kg
H2 + 31.998 kg O2 = 36.030 kg H2O)
that will constrain the ratios of fluids entering and exiting
the subdiagram block, or to combine or break streams in a prescribed
manner (e.g., 100kg H2O
input goes to 60kg H2O
on output A and 40kg H2O
output B). The ratios defined here constrain both input and
output; limiting input of one type will reduce the amount
of any other inputs accepted and, consequently, the amount
of output. Similarly, if there is decreased capacity in one
location downstream, the amounts of all outputs and, consequently,
the amount of inputs accepted by the subdiagram block, will be
reduced accordingly.
- Units allows you to specify the units used for measuring input/output (mass) and time. For example, you might measure throughput in terms of kilograms per hour.
- Inputs and Outputs define the mass coefficients used in the ratios that determine how much of each input is accepted and how much of each output is sent. The sum of the input coefficients must be equal to the sum of the output coefficients.
- Maximum output defines, for each connected path, a maximum amount of output that can be sent to the path.