#*---------------------------------------------- * FlowSheet generated automaticaly by EMSO-GUI *----------------------------------------------*# using "streams"; using "controllers/heat_flow"; using "controllers/PIDs"; using "stage_separators/column"; using "pressure_changers/valve"; FlowSheet Column_Reactive_Diagram PARAMETERS PP as Plugin(Brief="Physical Properties", Type="PP", Components = ["acetic acid","ethanol","ethyl acetate","water"], LiquidModel = "UNIFAC", VapourModel = "Ideal" ); NComp as Integer; SET NComp = PP.NumberOfComponents; DEVICES feed as simple_source; SET feed.ValidPhases = "Vapour-Liquid"; SPECIFY feed.MolarComposition(1) = 0.4962; feed.MolarComposition(2) = 0.4808; feed.MolarComposition(3) = 0.0; feed.MolarComposition(4) = 0.0229; feed.F = 1.076 * 'mol/s'; feed.T = 300 * 'K'; feed.P = 3 * 'atm'; INITIAL GUESS DEVICES hx_condenser as heat_flow; SET hx_condenser.MinHeatFlow = -100 * 'kJ/s'; hx_condenser.MaxHeatFlow = 0 * 'kJ/s'; SPECIFY INITIAL GUESS DEVICES PIDT_reboiler as PID; SET PIDT_reboiler.PID_Select = "Ideal_AW"; PIDT_reboiler.Action = "Reverse"; PIDT_reboiler.Mode = "Automatic"; PIDT_reboiler.Clip = "Clipped"; PIDT_reboiler.alpha = 0.2; PIDT_reboiler.beta = 1; PIDT_reboiler.bias = 0.2; PIDT_reboiler.derivTime = 1 * 's'; PIDT_reboiler.intTime = 100 * 's'; PIDT_reboiler.gain = 1; PIDT_reboiler.gamma = 1; PIDT_reboiler.tau = 1 * 's'; PIDT_reboiler.tauSet = 1 * 's'; PIDT_reboiler.MinInput = 200; PIDT_reboiler.MaxInput = 400; PIDT_reboiler.MinOutput = 0; PIDT_reboiler.MaxOutput = 1; SPECIFY PIDT_reboiler.SetPoint = 366; INITIAL GUESS DEVICES PIDT_condenser as PID; SET PIDT_condenser.PID_Select = "Ideal_AW"; PIDT_condenser.Action = "Reverse"; PIDT_condenser.Mode = "Automatic"; PIDT_condenser.Clip = "Clipped"; PIDT_condenser.alpha = 0.2; PIDT_condenser.beta = 1; PIDT_condenser.bias = 0.5; PIDT_condenser.derivTime = 1 * 's'; PIDT_condenser.intTime = 100 * 's'; PIDT_condenser.gain = 0.9; PIDT_condenser.gamma = 1; PIDT_condenser.tau = 1 * 's'; PIDT_condenser.tauSet = 1 * 's'; PIDT_condenser.MinInput = 250; PIDT_condenser.MaxInput = 380; PIDT_condenser.MinOutput = 0; PIDT_condenser.MaxOutput = 1; SPECIFY PIDT_condenser.SetPoint = 346; INITIAL GUESS DEVICES Reactive_Tower as ReactiveDistillation; SET Reactive_Tower.NumberOfTrays = 11; Reactive_Tower.FeedTrayLocation = 5; Reactive_Tower.LiquidSideStreamLocation = 2; Reactive_Tower.VapourSideStreamLocation = 2; Reactive_Tower.alfacond = 100000; Reactive_Tower.beta = 0.8; Reactive_Tower.alfa = 30; Reactive_Tower.VolumeOfTray = 0.0961 * 'm^3'; Reactive_Tower.HeatSupply = 0 * 'kW'; Reactive_Tower.PlateArea = 0.07 * 'm^2'; Reactive_Tower.HolesArea = 0.04 * 'm^2'; Reactive_Tower.WeirLength = 0.457 * 'm'; Reactive_Tower.WeirHeight = 0.05 * 'm'; Reactive_Tower.stoic(1) = -1; Reactive_Tower.stoic(2) = -1; Reactive_Tower.stoic(3) = 1; Reactive_Tower.stoic(4) = 1; Reactive_Tower.Hr = 0 * 'kJ/kmol'; Reactive_Tower.INITIALIZATION.TopTemperature = 300 * 'K'; Reactive_Tower.INITIALIZATION.BottomTemperature = 310 * 'K'; Reactive_Tower.INITIALIZATION.LevelFraction = 0.1; Reactive_Tower.INITIALIZATION.TopComposition(1) = 0.4962; Reactive_Tower.INITIALIZATION.TopComposition(2) = 0.4808; Reactive_Tower.INITIALIZATION.TopComposition(3) = 0; Reactive_Tower.INITIALIZATION.TopComposition(4) = 0; Reactive_Tower.INITIALIZATION.BottomComposition(1) = 0.4962; Reactive_Tower.INITIALIZATION.BottomComposition(2) = 0.4808; Reactive_Tower.INITIALIZATION.BottomComposition(3) = 0; Reactive_Tower.INITIALIZATION.BottomComposition(4) = 0; Reactive_Tower.CONDENSER.V = 6 * 'l'; Reactive_Tower.CONDENSER.Across = 6 * 'l/m'; Reactive_Tower.CONDENSER.stoic(1) = -1; Reactive_Tower.CONDENSER.stoic(2) = -1; Reactive_Tower.CONDENSER.stoic(3) = 1; Reactive_Tower.CONDENSER.stoic(4) = 1; Reactive_Tower.CONDENSER.Hr = 0 * 'kJ/kmol'; Reactive_Tower.CONDENSER.Initial_Level = 0.4 * 'm'; Reactive_Tower.CONDENSER.Initial_Temperature = 300 * 'K'; Reactive_Tower.CONDENSER.Initial_Composition(1) = 0.4962; Reactive_Tower.CONDENSER.Initial_Composition(2) = 0.4808; Reactive_Tower.CONDENSER.Initial_Composition(3) = 0; Reactive_Tower.CONDENSER.Initial_Composition(4) = 0; Reactive_Tower.REBOILER.Across = 20 * 'l/m'; Reactive_Tower.REBOILER.V = 20 * 'l'; Reactive_Tower.REBOILER.stoic(1) = -1; Reactive_Tower.REBOILER.stoic(2) = -1; Reactive_Tower.REBOILER.stoic(3) = 1; Reactive_Tower.REBOILER.stoic(4) = 1; Reactive_Tower.REBOILER.Hr = 0 * 'kJ/kmol'; Reactive_Tower.REBOILER.Initial_Level = 0.4 * 'm'; Reactive_Tower.REBOILER.Initial_Temperature = 300 * 'K'; Reactive_Tower.REBOILER.Initial_Composition(1) = 0.4962; Reactive_Tower.REBOILER.Initial_Composition(2) = 0.4808; Reactive_Tower.REBOILER.Initial_Composition(3) = 0; Reactive_Tower.REBOILER.Initial_Composition(4) = 0; SPECIFY Reactive_Tower.VapourDrawOffFlow = 0 * 'kmol/h'; Reactive_Tower.LiquidDrawOffFlow = 0 * 'kmol/h'; Reactive_Tower.MurphreeEff = 1; Reactive_Tower.CONDENSER.OutletVapour.F = 0 * 'kmol/h'; Reactive_Tower.SPLITTER.FlowRatios(1) = 0.09; Reactive_Tower.PUMP.dP = 2 * 'atm'; INITIAL GUESS DEVICES bottom as simple_sink; SET SPECIFY INITIAL GUESS DEVICES top as simple_sink; SET SPECIFY INITIAL GUESS DEVICES valve_bottom as valve_flow; SET valve_bottom.MinFlow = 0 * 'kmol/h'; valve_bottom.MaxFlow = 6 * 'kmol/h'; SPECIFY INITIAL GUESS DEVICES PIDL_reboiler as PID; SET PIDL_reboiler.PID_Select = "Ideal_AW"; PIDL_reboiler.Action = "Reverse"; PIDL_reboiler.Mode = "Automatic"; PIDL_reboiler.Clip = "Clipped"; PIDL_reboiler.alpha = 1; PIDL_reboiler.beta = 1; PIDL_reboiler.bias = 0; PIDL_reboiler.derivTime = 0 * 's'; PIDL_reboiler.intTime = 20 * 's'; PIDL_reboiler.gain = 0.9; PIDL_reboiler.gamma = 1; PIDL_reboiler.tau = 1 * 's'; PIDL_reboiler.tauSet = 1 * 's'; PIDL_reboiler.MinInput = 0.1; PIDL_reboiler.MaxInput = 0.8; PIDL_reboiler.MinOutput = 0; PIDL_reboiler.MaxOutput = 1; SPECIFY PIDL_reboiler.SetPoint = 0.5; INITIAL GUESS DEVICES PIDL_condenser as PID; SET PIDL_condenser.PID_Select = "Ideal_AW"; PIDL_condenser.Action = "Reverse"; PIDL_condenser.Mode = "Automatic"; PIDL_condenser.Clip = "Clipped"; PIDL_condenser.alpha = 1; PIDL_condenser.beta = 1; PIDL_condenser.bias = 0.5; PIDL_condenser.derivTime = 1 * 's'; PIDL_condenser.intTime = 10 * 's'; PIDL_condenser.gain = 1; PIDL_condenser.gamma = 1; PIDL_condenser.tau = 1 * 's'; PIDL_condenser.tauSet = 1 * 's'; PIDL_condenser.MinInput = 0.1; PIDL_condenser.MaxInput = 0.8; PIDL_condenser.MinOutput = 0; PIDL_condenser.MaxOutput = 1; SPECIFY PIDL_condenser.SetPoint = 0.5; INITIAL GUESS DEVICES valve_top as valve_flow; SET valve_top.MinFlow = 0 * 'kmol/h'; valve_top.MaxFlow = 2 * 'kmol/h'; SPECIFY INITIAL GUESS DEVICES heat_flow_1 as heat_flow; SET heat_flow_1.MinHeatFlow = 0 * 'kW'; heat_flow_1.MaxHeatFlow = 150 * 'kW'; SPECIFY INITIAL GUESS CONNECTIONS PIDT_condenser.Output to hx_condenser.HeatFlowFraction; feed.Outlet to Reactive_Tower.FeedTray; hx_condenser.HeatFlow to Reactive_Tower.HeatToCondenser; Reactive_Tower.TRI to PIDT_reboiler.Input; valve_bottom.Outlet to bottom.Inlet; Reactive_Tower.BottomProduct to valve_bottom.Inlet; PIDL_reboiler.Output to valve_bottom.FlowFraction; Reactive_Tower.LRI to PIDL_reboiler.Input; Reactive_Tower.TCI to PIDT_condenser.Input; Reactive_Tower.LCI to PIDL_condenser.Input; Reactive_Tower.VapourDistillate to top.Inlet; Reactive_Tower.LiquidDistillate to valve_top.Inlet; PIDL_condenser.Output to valve_top.FlowFraction; heat_flow_1.HeatFlow to Reactive_Tower.HeatToReboiler; PIDT_reboiler.Output to heat_flow_1.HeatFlowFraction; OPTIONS Dynamic = true; TimeStep = 0.1; TimeEnd = 100; TimeUnit = 's'; Integration = "original"; NLASolver( File = "nlasolver", RelativeAccuracy = 1e-3, AbsoluteAccuracy = 1e-6, MaxIterations = 100 ); DAESolver( File = "sundials", RelativeAccuracy = 1e-2, AbsoluteAccuracy = 1e-6, EventAccuracy = 1e-2 ); end