SMA Detailed Partitioning and Tearing
SMA Detailed Partitioning and Tearing
SMA Detailed Partitioning and Tearing
Approach (SMA)
Basic Philosophy of Sequential Modular
Approach
• Given the input stream values and values for
equipment parameters, each unit module is written to
calculate the exit stream values
• Disadvantage of SMA:
• Can not handle design calculations
• Inefficient, nested loops making it difficult to solve optimization problems and
flowsheet with many recycles
Partitioning and Tearing a Flowsheet
• Most commercial steady-state simulators use the sequential modular
approach (SMA).
• Why partitioning?
• Can be used for linear & non-linear equations and flowsheets
Simple Example of Partitioning and
Precedence Ordering
Transformation:
• Nodes become arcs.
• Arcs become nodes.
• Direction of arc is from input to output.
Note that all process inputs and outputs have been
deleted.
Barkley & Motard’s Algorithm (Cont’d)
1. Graph Reduction
• Merge nodes with single precursor
Precursor: all nodes providing input to a given node are precursors for that node e.g. nodes
2 and 5 are precursors to node 3.
The node with a single precursor is to be represented by that precursor e.g. Node 2 has a
single precursor 1. So erase node 2 and represent it with node 1.
• Merge parallel arcs (same direction)
Barkley & Motard’s Algorithm (Cont’d)
2. Node Elimination (may see funny patterns after graph reductions)
a) Eliminate nodes with self-loops
2. Return to 2nd to the last unit and resume tracing until another unit is
repeated.
A, S1, B, S2, C, S3, D, S4, A loop
Return to Step 2 and repeat.
Loop Finder Algorithm (Cont’d)
3. If the last unit has no more outputs remaining to be traced, skip to
the next upstream unit and go to Step 2.
A, S1, B, S2, C, S5, A loop
So: C, S3, D, S6, C
A, S1, B, S2, C, S3, D, S4, A
A, S1, B, S2, C, S5, A
Construct a Loop Incidence Matrix:
Loop Finder Algorithm (Cont’d)
• Remarks:
1. The algorithm gives all valid sets of tear streams, not just one.
2. Not all valid sets of tear streams are equally desirable.
Some valid tear sets are:
{S3, S5}will break all the loops:
Computation order = Tear 3,5 --> D --> A --> B --> C -->Update tears
{S2, S6} order = Tear 2,6 --> C --> D --> A --> B --> Update tears
{S2, S3}is a valid tear set too:
But the trouble is we are breaking Loop 2 twice.
order = Tear 2,3 --> D --> C --> A --> B --> C --> Update tears
Loop Finder Algorithm (Cont’d)
• Block C is calculated twice; not desirable because of unnecessary
calculations.
• Define
• Multiplicity of a tear set = maximum # of times a loop is broken by a
tear set.
Multiplicity = 1 for {S3, S5}, {S2,S6} = (1,1,1)
= 2 for {S2,S3} = (1,2,1)
Exclusive tear set = tear set with a multiplicity of 1
Another Example of Loop Finder
Another Example of Loop Finder (Cont’d)
• This flowsheet does not contain any exclusive tear set.
• Some valid tear sets are:
1. {S4, S5, S6, S7} --> (1,1,1,1,1,3); multiplicity = 3
2. {S3, S8, S1, S6} --> (1,1,1,1,2,2); multiplicity = 2
• However, can’t say for sure which set is more desirable because all
the loops are broken 8 times in both tear sets.
Basic Tearing Algorithm
Loop S1 S2 S3 S4 …… Sj
L1 a11 a12 a13 a14 ……. a1j
L2 a21 a22 a23 a11 ……. a2j
L3 a31 a32 a33 a34 ……. a3j
. . . . . ……. …….
. . . . . ……. …….
. . . . . ……. …….
. . . . . ……. …….
𝑎𝑖𝑗 𝑦𝑗 ≥ 1, 𝑖 = 1,2, … . . 𝐿
𝑖=1
Where L is the number of loops and n is the number of streams
• We also formulate the following cost function for tear selection:
𝐿
𝑗=1 𝑤𝑗 𝑦𝑗
• And we assign a weight wj to the cost of tearing stream j. Three
alternative choices for the weights are as follows
• Weight all the streams equal
• Choose 𝑤𝑗 = 𝐿𝑖=1 𝑎𝑖𝑗 . If we sum over the loop constraints, we obtain
coefficients that indicate the number of loops that are broken by a tear
stream j. Breaking a loop more than once causes a delay in the tear variable
iteration
• wj=nj, where nj is the sum of variables in the jth stream
The set covering problem is then given by,
𝑚𝑖𝑛: 𝑤𝑗 𝑦𝑗
𝑗
𝑦𝑗 = 0,1
𝐿
With 1) 𝑤𝑗 = 𝑖=1 𝑎𝑖𝑗 2) wj=nj 3) wj=1
Reduction Rules for Minimum Number of Tear
Streams
• Let ri be the row vector ‘i‘ of the matrix A (Loop Incidence
Matrix) and cj=column vector ‘j’ of the matrix A.
• If ri has only single non zero element (ri)k,, set yk=1 and chose k as
tear stream.
• If row k dominates row l (all the instances in row l are also present
in row k) , then delete row K (a tear stream for row l automatically
satisfies the condition of breaking row l)
• If column k dominates column j s delete column j.
Basic Tearing Algorithm
Loop Incident Matrix
Reduction Rules
1. Column 2 Dominates Column 3 so delete
column 3
2. Column 1 dominates Column 4, 5, 6, 7
and 8 hence delete columns 4 to 8
1. Row 2 dominates Rows 1, 3 and 4 so delete row 2
2. Row 4 dominates row 3 so delete row 4
1. Row 1 has only single non zero element that is a12 hence
stream 2 is tear stream
2. Row 2 has only single non zero element that is a21 hence
stream 1 is tear stream