[996] | 1 | #*---------------------------------------------- |
---|
| 2 | * FlowSheet generated automaticaly by EMSO-GUI |
---|
| 3 | *----------------------------------------------*# |
---|
| 4 | |
---|
| 5 | using "streams.mso"; |
---|
| 6 | using "controllers/PIDs.mso"; |
---|
| 7 | using "mixers_splitters/splitter.mso"; |
---|
| 8 | using "pressure_changers/valve.mso"; |
---|
| 9 | using "pressure_changers/pump.mso"; |
---|
| 10 | using "controllers/heat_flow.mso"; |
---|
| 11 | using "stage_separators/condenser.mso"; |
---|
| 12 | using "stage_separators/reboiler.mso"; |
---|
| 13 | using "stage_separators/column.mso"; |
---|
| 14 | |
---|
| 15 | FlowSheet ColumnPacked_Diagram |
---|
| 16 | PARAMETERS |
---|
| 17 | PP as Plugin(Brief="Physical Properties", |
---|
| 18 | Type="PP" |
---|
| 19 | ,Components = ["propylene","propane"] |
---|
| 20 | ,LiquidModel = ["PR"] |
---|
| 21 | ,VapourModel = ["PR"] |
---|
| 22 | ); |
---|
| 23 | NComp as Integer; |
---|
| 24 | SET |
---|
| 25 | NComp = PP.NumberOfComponents; |
---|
| 26 | |
---|
| 27 | DEVICES |
---|
| 28 | feed as simple_source; |
---|
| 29 | LiquidOut as simple_sink; |
---|
| 30 | PIDT_condenser as PID; |
---|
| 31 | PIDT_reboiler as PID; |
---|
| 32 | PIDL_reboiler as PID; |
---|
| 33 | splitter_S1 as splitter_column; |
---|
| 34 | Valve_Distillate as valve_flow; |
---|
| 35 | distillate_stream as sink; |
---|
| 36 | pump_P1 as pump2; |
---|
| 37 | Valve_Bottom as valve_flow; |
---|
| 38 | PIDL_condenser as PID; |
---|
| 39 | heat_condenser as heat_flow; |
---|
| 40 | heat_reboiler as heat_flow; |
---|
| 41 | vapour_s1 as simple_sink2; |
---|
| 42 | condenser_C1 as condenser; |
---|
| 43 | reboiler_R1 as reboiler; |
---|
| 44 | PackedTower as Packed_Section_Column; |
---|
| 45 | |
---|
| 46 | CONNECTIONS |
---|
| 47 | splitter_S1.Distillate to Valve_Distillate.Inlet; |
---|
| 48 | Valve_Distillate.Outlet to distillate_stream.Inlet; |
---|
| 49 | splitter_S1.Reflux to pump_P1.Inlet; |
---|
| 50 | Valve_Bottom.Outlet to LiquidOut.Inlet; |
---|
| 51 | PIDL_reboiler.Output to Valve_Bottom.FlowFraction; |
---|
| 52 | PIDL_condenser.Output to Valve_Distillate.FlowFraction; |
---|
| 53 | PIDT_condenser.Output to heat_condenser.HeatFlowFraction; |
---|
| 54 | PIDT_reboiler.Output to heat_reboiler.HeatFlowFraction; |
---|
| 55 | condenser_C1.OutletLiquid to splitter_S1.Inlet; |
---|
| 56 | heat_condenser.HeatFlow to condenser_C1.InletQ; |
---|
| 57 | condenser_C1.TI to PIDT_condenser.Input; |
---|
| 58 | condenser_C1.LI to PIDL_condenser.Input; |
---|
| 59 | condenser_C1.OutletVapour to vapour_s1.Inlet; |
---|
| 60 | heat_reboiler.HeatFlow to reboiler_R1.InletQ; |
---|
| 61 | reboiler_R1.OutletLiquid to Valve_Bottom.Inlet; |
---|
| 62 | reboiler_R1.LI to PIDL_reboiler.Input; |
---|
| 63 | reboiler_R1.TI to PIDT_reboiler.Input; |
---|
| 64 | PackedTower.VapourOutlet to condenser_C1.InletVapour; |
---|
| 65 | pump_P1.Outlet to PackedTower.LiquidInlet; |
---|
| 66 | feed.Outlet to PackedTower.FeedStage; |
---|
| 67 | PackedTower.LiquidOutlet to reboiler_R1.InletLiquid; |
---|
| 68 | reboiler_R1.OutletVapour to PackedTower.VapourInlet; |
---|
| 69 | |
---|
| 70 | SET |
---|
| 71 | feed.ValidPhases = "Vapour-Liquid" ; |
---|
| 72 | PIDT_condenser.PID_Select = "Ideal_AWBT" ; |
---|
| 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 = "Series_AWBT" ; |
---|
| 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 = 6000 * '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 = -20000 * 'kW' ; |
---|
| 145 | heat_condenser.MaxHeatFlow = 0 * 'kW' ; |
---|
| 146 | heat_reboiler.MinHeatFlow = 0 * 'kW' ; |
---|
| 147 | heat_reboiler.MaxHeatFlow = 20000 * 'kW' ; |
---|
| 148 | condenser_C1.Kfactor = 7 ; |
---|
| 149 | condenser_C1.Levelpercent_Initial = 0.5 ; |
---|
| 150 | condenser_C1.Initial_Temperature = 299 * 'K' ; |
---|
| 151 | reboiler_R1.Initial_Temperature = 320 * 'K' ; |
---|
| 152 | reboiler_R1.Initial_Composition(1) = 0.01 ; |
---|
| 153 | reboiler_R1.Initial_Composition(2) = 0.99 ; |
---|
| 154 | PackedTower.INITIALIZATION.TopStageTemperature = 308 * 'K' ; |
---|
| 155 | PackedTower.INITIALIZATION.BottomStageTemperature = 316 * 'K' ; |
---|
| 156 | PackedTower.INITIALIZATION.TopStageComposition(1) = 0.8 ; |
---|
| 157 | PackedTower.INITIALIZATION.TopStageComposition(2) = 0.2 ; |
---|
| 158 | PackedTower.INITIALIZATION.BottomStageComposition(1) = 0.2 ; |
---|
| 159 | PackedTower.INITIALIZATION.BottomStageComposition(2) = 0.8 ; |
---|
| 160 | PackedTower.NumberOfStages = 14 ; |
---|
| 161 | PackedTower.FeedStageLocation(1) = 9 ; |
---|
| 162 | PackedTower.PackingHeight = 22 * 'm' ; |
---|
| 163 | PackedTower.HeatSupply = 0 * 'kW' ; |
---|
| 164 | PackedTower.ColumnDiameter = 3.6 * 'm' ; |
---|
| 165 | PackedTower.VoidFraction = 0.95 ; |
---|
| 166 | PackedTower.ResistanceCoeff = 0.0763 ; |
---|
| 167 | PackedTower.AreaPerPackingVol = 112 * 'm^2/m^3' ; |
---|
| 168 | |
---|
| 169 | SPECIFY |
---|
| 170 | feed.MolarComposition(1) = 0.4 ; |
---|
| 171 | feed.MolarComposition(2) = 0.6 ; |
---|
| 172 | feed.F = 612.4 * 'kmol/h' ; |
---|
| 173 | feed.T_Cdeg = 50 * 'K' ; |
---|
| 174 | feed.P = 2068 * 'kPa' ; |
---|
| 175 | PIDT_condenser.SetPoint = (273+34) ; |
---|
| 176 | PIDT_reboiler.SetPoint = (45+273) ; |
---|
| 177 | PIDL_reboiler.SetPoint = 0.7 ; |
---|
| 178 | splitter_S1.RefluxRatio = 20 ; |
---|
| 179 | pump_P1.Pincrease = 14 * 'kPa' ; |
---|
| 180 | PIDL_condenser.SetPoint = 0.7 ; |
---|
| 181 | condenser_C1.OutletVapour.F = 0 * 'kmol/h' ; |
---|
| 182 | |
---|
| 183 | INITIAL |
---|
| 184 | |
---|
| 185 | GUESS |
---|
| 186 | |
---|
| 187 | OPTIONS |
---|
| 188 | Dynamic = true; |
---|
| 189 | TimeStep = 5; |
---|
| 190 | TimeEnd = 200; |
---|
| 191 | TimeUnit = 's'; |
---|
| 192 | Integration = "original"; |
---|
| 193 | NLASolver( |
---|
| 194 | File = "sundials", |
---|
| 195 | RelativeAccuracy = 1e-3, |
---|
| 196 | AbsoluteAccuracy = 1e-6, |
---|
| 197 | MaxIterations = 100 |
---|
| 198 | ); |
---|
| 199 | DAESolver( |
---|
| 200 | File = "dassl", |
---|
| 201 | RelativeAccuracy = 1e-3, |
---|
| 202 | AbsoluteAccuracy = 1e-6, |
---|
| 203 | EventAccuracy = 1e-2 |
---|
| 204 | ); |
---|
| 205 | |
---|
| 206 | end |
---|