[911] | 1 | #*---------------------------------------------- |
---|
| 2 | * FlowSheet generated automaticaly by EMSO-GUI |
---|
| 3 | *----------------------------------------------*# |
---|
| 4 | |
---|
| 5 | using "streams.mso"; |
---|
| 6 | using "controllers/PIDs.mso"; |
---|
| 7 | using "pressure_changers/valve.mso"; |
---|
| 8 | using "controllers/heat_flow.mso"; |
---|
| 9 | using "stage_separators/column.mso"; |
---|
| 10 | |
---|
| 11 | FlowSheet Section_Column_Three_Inputs |
---|
| 12 | PARAMETERS |
---|
| 13 | PP as Plugin(Brief="Physical Properties", |
---|
| 14 | Type="PP", |
---|
| 15 | Components = ["propylene","propane"], |
---|
| 16 | LiquidModel = "PR", |
---|
| 17 | VapourModel = "PR" |
---|
| 18 | ); |
---|
| 19 | NComp as Integer; |
---|
| 20 | SET |
---|
| 21 | NComp = PP.NumberOfComponents; |
---|
| 22 | |
---|
| 23 | DEVICES |
---|
| 24 | feed1 as simple_source; |
---|
| 25 | LiquidOut as simple_sink; |
---|
| 26 | PIDT_condenser as PID; |
---|
| 27 | PIDT_reboiler as PID; |
---|
| 28 | PIDL_reboiler as PID; |
---|
| 29 | splitter_S1 as splitter_column; |
---|
| 30 | Valve_Distillate as valve_flow; |
---|
| 31 | distillate_stream as sink; |
---|
| 32 | pump_P1 as pump2; |
---|
| 33 | Valve_Bottom as valve_flow; |
---|
| 34 | PIDL_condenser as PID; |
---|
| 35 | heat_condenser as heat_flow; |
---|
| 36 | heat_reboiler as heat_flow; |
---|
| 37 | feed2 as simple_source; |
---|
| 38 | feed3 as simple_source; |
---|
| 39 | column_T1 as Section_Column3; |
---|
| 40 | reboiler_R1 as reboiler; |
---|
| 41 | condenser_C1 as condenser; |
---|
| 42 | vapour_s1 as simple_sink2; |
---|
| 43 | |
---|
| 44 | CONNECTIONS |
---|
| 45 | splitter_S1.Distillate to Valve_Distillate.Inlet; |
---|
| 46 | Valve_Distillate.Outlet to distillate_stream.Inlet; |
---|
| 47 | splitter_S1.Reflux to pump_P1.Inlet; |
---|
| 48 | Valve_Bottom.Outlet to LiquidOut.Inlet; |
---|
| 49 | PIDL_reboiler.Output to Valve_Bottom.FlowFraction; |
---|
| 50 | PIDL_condenser.Output to Valve_Distillate.FlowFraction; |
---|
| 51 | PIDT_condenser.Output to heat_condenser.HeatFlowFraction; |
---|
| 52 | PIDT_reboiler.Output to heat_reboiler.HeatFlowFraction; |
---|
| 53 | feed3.Outlet to column_T1.FeedTrayThree; |
---|
| 54 | feed2.Outlet to column_T1.FeedTrayTwo; |
---|
| 55 | feed1.Outlet to column_T1.FeedTrayOne; |
---|
| 56 | pump_P1.Outlet to column_T1.LiquidInlet; |
---|
| 57 | column_T1.VapourOutlet to condenser_C1.InletVapour; |
---|
| 58 | condenser_C1.OutletLiquid to splitter_S1.Inlet; |
---|
| 59 | heat_condenser.HeatFlow to condenser_C1.InletQ; |
---|
| 60 | condenser_C1.TI to PIDT_condenser.Input; |
---|
| 61 | condenser_C1.LI to PIDL_condenser.Input; |
---|
| 62 | reboiler_R1.OutletVapour to column_T1.VapourInlet; |
---|
| 63 | column_T1.LiquidOutlet to reboiler_R1.InletLiquid; |
---|
| 64 | heat_reboiler.HeatFlow to reboiler_R1.InletQ; |
---|
| 65 | reboiler_R1.TI to PIDT_reboiler.Input; |
---|
| 66 | reboiler_R1.OutletLiquid to Valve_Bottom.Inlet; |
---|
| 67 | reboiler_R1.LI to PIDL_reboiler.Input; |
---|
| 68 | condenser_C1.OutletVapour to vapour_s1.Inlet; |
---|
| 69 | |
---|
| 70 | SET |
---|
| 71 | feed1.ValidPhases = "Vapour-Liquid" ; |
---|
| 72 | PIDT_condenser.PID_Select = "Ideal_AW" ; |
---|
| 73 | PIDT_condenser.Action = "Reverse" ; |
---|
| 74 | PIDT_condenser.Mode = "Automatic" ; |
---|
| 75 | PIDT_condenser.Clip = "Clipped" ; |
---|
| 76 | PIDT_condenser.alpha = 0.2 ; |
---|
| 77 | PIDT_condenser.beta = 1 ; |
---|
| 78 | PIDT_condenser.bias = 0.5 ; |
---|
| 79 | PIDT_condenser.derivTime = 10 * 's' ; |
---|
| 80 | PIDT_condenser.intTime = 100 * 's' ; |
---|
| 81 | PIDT_condenser.gain = 5 ; |
---|
| 82 | PIDT_condenser.gamma = 1 ; |
---|
| 83 | PIDT_condenser.tau = 1 * 's' ; |
---|
| 84 | PIDT_condenser.tauSet = 1 * 's' ; |
---|
| 85 | PIDT_condenser.MinInput = 250 ; |
---|
| 86 | PIDT_condenser.MaxInput = 380 ; |
---|
| 87 | PIDT_condenser.MinOutput = 0 ; |
---|
| 88 | PIDT_condenser.MaxOutput = 1 ; |
---|
| 89 | PIDT_reboiler.PID_Select = "Ideal_AW" ; |
---|
| 90 | PIDT_reboiler.Action = "Reverse" ; |
---|
| 91 | PIDT_reboiler.Mode = "Automatic" ; |
---|
| 92 | PIDT_reboiler.Clip = "Clipped" ; |
---|
| 93 | PIDT_reboiler.alpha = 0.2 ; |
---|
| 94 | PIDT_reboiler.beta = 1 ; |
---|
| 95 | PIDT_reboiler.bias = 0.2 ; |
---|
| 96 | PIDT_reboiler.derivTime = 1 * 's' ; |
---|
| 97 | PIDT_reboiler.intTime = 10 * 's' ; |
---|
| 98 | PIDT_reboiler.gain = 3 ; |
---|
| 99 | PIDT_reboiler.gamma = 1 ; |
---|
| 100 | PIDT_reboiler.tau = 1 * 's' ; |
---|
| 101 | PIDT_reboiler.tauSet = 1 * 's' ; |
---|
| 102 | PIDT_reboiler.MinInput = 200 ; |
---|
| 103 | PIDT_reboiler.MaxInput = 400 ; |
---|
| 104 | PIDT_reboiler.MinOutput = 0 ; |
---|
| 105 | PIDT_reboiler.MaxOutput = 1 ; |
---|
| 106 | PIDL_reboiler.PID_Select = "Ideal_AW" ; |
---|
| 107 | PIDL_reboiler.Action = "Direct" ; |
---|
| 108 | PIDL_reboiler.Mode = "Automatic" ; |
---|
| 109 | PIDL_reboiler.Clip = "Clipped" ; |
---|
| 110 | PIDL_reboiler.alpha = 1 ; |
---|
| 111 | PIDL_reboiler.beta = 1 ; |
---|
| 112 | PIDL_reboiler.bias = 0 ; |
---|
| 113 | PIDL_reboiler.derivTime = 0 * 's' ; |
---|
| 114 | PIDL_reboiler.intTime = 20 * 's' ; |
---|
| 115 | PIDL_reboiler.gain = 5 ; |
---|
| 116 | PIDL_reboiler.gamma = 1 ; |
---|
| 117 | PIDL_reboiler.tau = 1 * 's' ; |
---|
| 118 | PIDL_reboiler.tauSet = 1 * 's' ; |
---|
| 119 | PIDL_reboiler.MinInput = 0.1 ; |
---|
| 120 | PIDL_reboiler.MaxInput = 0.8 ; |
---|
| 121 | PIDL_reboiler.MinOutput = 0 ; |
---|
| 122 | PIDL_reboiler.MaxOutput = 1 ; |
---|
| 123 | Valve_Distillate.MinFlow = 0 * 'kmol/h' ; |
---|
| 124 | Valve_Distillate.MaxFlow = 400 * 'kmol/h' ; |
---|
| 125 | Valve_Bottom.MinFlow = 0 * 'kmol/h' ; |
---|
| 126 | Valve_Bottom.MaxFlow = 1000 * 'kmol/h' ; |
---|
| 127 | PIDL_condenser.PID_Select = "Ideal_AW" ; |
---|
| 128 | PIDL_condenser.Action = "Direct" ; |
---|
| 129 | PIDL_condenser.Mode = "Automatic" ; |
---|
| 130 | PIDL_condenser.Clip = "Clipped" ; |
---|
| 131 | PIDL_condenser.alpha = 1 ; |
---|
| 132 | PIDL_condenser.beta = 1 ; |
---|
| 133 | PIDL_condenser.bias = 0 ; |
---|
| 134 | PIDL_condenser.derivTime = 0 * 's' ; |
---|
| 135 | PIDL_condenser.intTime = 20 * 's' ; |
---|
| 136 | PIDL_condenser.gain = 2 ; |
---|
| 137 | PIDL_condenser.gamma = 1 ; |
---|
| 138 | PIDL_condenser.tau = 1 * 's' ; |
---|
| 139 | PIDL_condenser.tauSet = 1 * 's' ; |
---|
| 140 | PIDL_condenser.MinInput = 0.1 ; |
---|
| 141 | PIDL_condenser.MaxInput = 0.8 ; |
---|
| 142 | PIDL_condenser.MinOutput = 0 ; |
---|
| 143 | PIDL_condenser.MaxOutput = 1 ; |
---|
| 144 | heat_condenser.MinHeatFlow = -300 * 'kW' ; |
---|
| 145 | heat_condenser.MaxHeatFlow = 0 * 'kW' ; |
---|
| 146 | heat_reboiler.MinHeatFlow = 0 * 'kW' ; |
---|
| 147 | heat_reboiler.MaxHeatFlow = 450 * 'kW' ; |
---|
| 148 | feed2.ValidPhases = "Vapour-Liquid" ; |
---|
| 149 | feed3.ValidPhases = "Vapour-Liquid" ; |
---|
| 150 | column_T1.INITIALIZATION.TopTemperature = 321 * 'K' ; |
---|
| 151 | column_T1.INITIALIZATION.BottomTemperature = 328 * 'K' ; |
---|
| 152 | column_T1.INITIALIZATION.LevelFraction = 0.8 ; |
---|
| 153 | column_T1.FeedTrayLocation(1) = 5 ; |
---|
| 154 | column_T1.FeedTrayLocation(2) = 11 ; |
---|
| 155 | column_T1.FeedTrayLocation(3) = 22 ; |
---|
| 156 | column_T1.NumberOfTrays = 30 ; |
---|
| 157 | column_T1.LiquidSideStreamLocation = 2 ; |
---|
| 158 | column_T1.VapourSideStreamLocation = 2 ; |
---|
| 159 | column_T1.WeirLength = 20.95 * 'in' ; |
---|
| 160 | column_T1.WeirHeight = 0.125 * 'ft' ; |
---|
| 161 | column_T1.TrayLiquidPasses = 1 ; |
---|
| 162 | column_T1.HeatSupply = 0 * 'kW' ; |
---|
| 163 | column_T1.AerationFraction = 0.4 ; |
---|
| 164 | column_T1.DryPdropCoeff = 6 ; |
---|
| 165 | column_T1.MurphreeEff = 1 ; |
---|
| 166 | reboiler_R1.Initial_Temperature = 335 * 'K' ; |
---|
| 167 | reboiler_R1.Initial_Composition(1) = 0.01 ; |
---|
| 168 | reboiler_R1.Initial_Composition(2) = 0.99 ; |
---|
| 169 | condenser_C1.Initial_Temperature = 320 * 'K' ; |
---|
| 170 | condenser_C1.Initial_Composition(1) = 0.7 ; |
---|
| 171 | condenser_C1.Initial_Composition(2) = 0.3 ; |
---|
| 172 | |
---|
| 173 | SPECIFY |
---|
| 174 | feed1.MolarComposition(1) = 0.4 ; |
---|
| 175 | feed1.MolarComposition(2) = 0.6 ; |
---|
| 176 | feed1.F = 612.4 * 'kmol/h' ; |
---|
| 177 | feed1.T_Cdeg = 50 * 'K' ; |
---|
| 178 | feed1.P = 2068 * 'kPa' ; |
---|
| 179 | PIDT_condenser.SetPoint = (273+45) ; |
---|
| 180 | PIDT_reboiler.SetPoint = (58+273) ; |
---|
| 181 | PIDL_reboiler.SetPoint = 0.5 ; |
---|
| 182 | splitter_S1.RefluxRatio = 20 ; |
---|
| 183 | pump_P1.Pincrease = 14 * 'kPa' ; |
---|
| 184 | PIDL_condenser.SetPoint = 0.5 ; |
---|
| 185 | feed2.MolarComposition(1) = 0.4 ; |
---|
| 186 | feed2.MolarComposition(2) = 0.6 ; |
---|
| 187 | feed2.F = 6.4 * 'kmol/h' ; |
---|
| 188 | feed2.T_Cdeg = 30 * 'K' ; |
---|
| 189 | feed2.P = 2018 * 'kPa' ; |
---|
| 190 | feed3.MolarComposition(1) = 0.1 ; |
---|
| 191 | feed3.MolarComposition(2) = 0.9 ; |
---|
| 192 | feed3.F = 0.64 * 'kmol/h' ; |
---|
| 193 | feed3.T_Cdeg = 30 * 'K' ; |
---|
| 194 | feed3.P = 2018 * 'kPa' ; |
---|
| 195 | column_T1.VapourDrawOffFlow = 0 * 'kmol/h' ; |
---|
| 196 | column_T1.LiquidDrawOffFlow = 0 * 'kmol/h' ; |
---|
| 197 | condenser_C1.OutletVapour.F = 0 * 'kmol/h' ; |
---|
| 198 | |
---|
| 199 | INITIAL |
---|
| 200 | |
---|
| 201 | GUESS |
---|
| 202 | |
---|
| 203 | OPTIONS |
---|
| 204 | Dynamic = true; |
---|
| 205 | TimeStep = 0.1; |
---|
| 206 | TimeEnd = 12; |
---|
| 207 | TimeUnit = 'h'; |
---|
| 208 | Integration = "original"; |
---|
| 209 | NLASolver( |
---|
| 210 | File = "sundials", |
---|
| 211 | RelativeAccuracy = 1e-2, |
---|
| 212 | AbsoluteAccuracy = 1e-6, |
---|
| 213 | MaxIterations = 100 |
---|
| 214 | ); |
---|
| 215 | DAESolver( |
---|
| 216 | File = "dassl", |
---|
| 217 | RelativeAccuracy = 1e-2, |
---|
| 218 | AbsoluteAccuracy = 1e-6, |
---|
| 219 | EventAccuracy = 1e-2 |
---|
| 220 | ); |
---|
| 221 | end |
---|