modelRandomPackedColumn
Extends from ThermalSeparation.Icons.Color.PackedColumn, ThermalSeparation.Components.Columns.BaseClasses.FeedColumn (column with optional liquid and or vapour feed inlets).
Information
Specialized class to describe a random packed column.
Base classes for the following classes are instantiated her:
- liquid holdup
- pressure loss
- film model (BaseFilmPacked)
- geometry
- heat transfer to wall
This class also supplies the initial equation for the liquid content in the column. This value can be specified by the user, or the boolean parameter wetted is set to true, which means that the packing material at simulation start is completely wetted. For a fast simulation it is often helpful to initialize with a liquid content which is slightly above the liquid content for a wetted column.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | n (from BaseColumn) | 1 | packed column: number of discrete elements in the section; plate column: number of trays in one section |
| SI.Pressure[n] | p_v_start (from BaseColumn) | if n == 1 then {p_v_start_outlet} else linspace(p_v_start_inlet, p_v_start_outlet, n) | |
| SI.Pressure[n + 1] | p_v_start_comp (from BaseColumn) | cat(1, p_v_start, {p_v_start[n]}) | |
| SI.MoleFraction[n,nSL] | x_l_start (from BaseColumn) | ||
| SI.MoleFraction[n,nSV] | x_v_start (from BaseColumn) | ||
| SI.Temperature[n] | T_v_start (from BaseColumn) | if (T_v_profile and not n == 1) then linspace(T_vap_start_bottom, T_vap_start_top, n) else (if (T_v_profile and n == 1) then ones(n)*(T_vap_start_bottom + T_vap_start_top)/2 else ones(n)*T_vapour_start) | |
| SI.Temperature[n] | T_l_start (from BaseColumn) | if (T_l_profile and not n == 1) then linspace(T_liq_start_bottom, T_liq_start_top, n) else (if (T_l_profile and n == 1) then ones(n)*(T_liq_start_bottom + T_liq_start_top)/2 else ones(n)*T_liquid_start) | |
| Boolean | EQ (from BaseColumn) | false | equilibrium model is used, no mass transfer, value provided by film model |
| Integer[nS,2] | mapping (from BaseColumn) | {{i, i} for i in 1:nS} | parameter to map the different medium vectors one to another |
| Boolean[nSV] | inertVapour (from BaseColumn) | fill(false, nSV) | true for each component which is inert in the vapour phase |
| Boolean[nSL] | inertLiquid (from BaseColumn) | fill(false, nSL) | true for each component which is inert in the liquid phase |
| Boolean | h_evap_medium (from BaseColumn) | MediumVapour.delta_hv_medium | |
| Integer | nS (from BaseColumn) | number of species which are equal in vapour and liquid phase | |
| Integer | nL (from BaseColumn) | MediumLiquid.nSubstance - nS | number of additional substances which are only in liquid phase |
| Integer | nV (from BaseColumn) | MediumVapour.nSubstance - nS | number of additional substances which are only in the vapour phase |
| Integer | nSL (from BaseColumn) | MediumLiquid.nSubstance | |
| Integer | nSV (from BaseColumn) | MediumVapour.nSubstance | |
| Integer | numberLiquidFeedsInternal (from FeedColumn) | if hasLiquidFeed then numberLiquidFeeds else 0 | |
| Integer | numberVapourFeedsInternal (from FeedColumn) | if hasVapourFeed then numberVapourFeeds else 0 | |
| Integer[:] | aux | {1, 3, 6, 10, 15, 21, 28, 36, 45} | |
| Integer | n_elements | 2 | number of discrete elements or number of equilibrium stages (for equilibrium film model) |
| Advanced | |||
| SI.Temperature | T_ref (from BaseColumn) | systemTS.T_ref | reference temperature |
| Initialization | |||
| SI.Pressure | p_v_start_inlet (from BaseColumn) | 1.9e5 | |
| SI.Pressure | p_v_start_outlet (from BaseColumn) | 1.8e5 | |
| Boolean | x_l_profile (from BaseColumn) | false | |
| Boolean | x_v_profile (from BaseColumn) | false | |
| SI.MoleFraction[nSL] | x_l_start_const (from BaseColumn) | fill(1/nSL, nSL) | |
| SI.MoleFraction[nSV] | x_v_start_const (from BaseColumn) | fill(1/nSV, nSV) | |
| SI.MoleFraction[nSL] | x_l_start_in (from BaseColumn) | fill(1/nSL, nSL) | |
| SI.MoleFraction[nSL] | x_l_start_out (from BaseColumn) | fill(1/nSL, nSL) | |
| SI.MoleFraction[nSV] | x_v_start_in (from BaseColumn) | fill(1/nSV, nSV) | |
| SI.MoleFraction[nSV] | x_v_start_out (from BaseColumn) | fill(1/nSV, nSV) | |
| Real[nSV] | x_total_start (from BaseColumn) | fill(1/nSV, nSV) | total mole fraction in system (vapour and liquid), component ordering as in vapour medium |
| Boolean | T_l_profile (from BaseColumn) | false | |
| Boolean | T_v_profile (from BaseColumn) | false | |
| SI.Temperature | T_vap_start_bottom (from BaseColumn) | 300 | |
| SI.Temperature | T_vap_start_top (from BaseColumn) | 300 | |
| SI.Temperature | T_liq_start_bottom (from BaseColumn) | 300 | |
| SI.Temperature | T_liq_start_top (from BaseColumn) | 300 | |
| SI.Temperature | T_vapour_start (from BaseColumn) | 300 | |
| SI.Temperature | T_liquid_start (from BaseColumn) | 300 | |
| StartUp | |||
| Boolean | considerStartUp (from BaseColumn) | false | true if StartUp is to be considered |
| Real | friggelfaktor (from BaseColumn) | 0.0002e5 | |
| Real | k (from BaseColumn) | 0.2e-3 | large value for steep omega |
| Boolean | StartUp_CCS (from BaseColumn) | false | true if StartUp of carbon capture plant is to be considered |
| Boolean | switchingCondition_Boiling (from BaseColumn) | true | true if boiling state is switching condition |
| Boolean | switchingCondition_Absorber_x_v (from BaseColumn) | false | true if vapour composition is switching condition |
| Real | x_v_switch (from BaseColumn) | 0.05 | vapour mole fraction value which is to be achieved |
| Integer | componentNumber (from BaseColumn) | 3 | number of vapour component number in model |
| Real | gain (from BaseColumn) | 0.01 | controler gain to maintain initial pressure before switch |
| Boolean[nSV] | lowBoilingPoint (from BaseColumn) | fill(false, nSV) | true if substance has low boiling point |
| Real | y_PID (from BaseColumn) | 10 | maximal value for supply startUp PID controller |
| Real | Vdot_startUp_pressure (from BaseColumn) | 0.005 | value when supply PID controller is switched off |
| ShutDown | |||
| Boolean | considerShutDown (from BaseColumn) | false | true if ShutDown is to be considered |
| StartUp › Smooth Start-Up | |||
| Boolean | smooth_startUp (from BaseColumn) | false | true if smooth switching is to be considered |
| Real | delay_startUp (from BaseColumn) | 200 | time delay for smooth startUp |
| Initialization › Initial liquid content | |||
| Real | eps_liq_start (from BaseColumn) | 0.06 | start value for liquid content if it is not exactly wetted but with more or less liquid |
| Boolean | wettedInitial | true | true if package material is already wetted (i.e. if liquid enters the column there is immediately a liquid stream leaving the column) |
| Feed › Liquid Feed | |||
| Boolean | hasLiquidFeed (from FeedColumn) | false | true, if there exist a liquid feed |
| Integer | numberLiquidFeeds (from FeedColumn) | 1 | |
| Integer | stageLiquidFeed (from FeedColumn) | {2} | number of stage where feed enters the column |
| Integer[n - numberLiquidFeeds] | nonFeed_stages_l (from FeedColumn) | {i for i in 1:(n - numberLiquidFeeds)} | |
| Feed › Vapour Feed | |||
| Integer[n - numberVapourFeeds] | nonFeed_stages_v (from FeedColumn) | {i for i in 1:(n - numberVapourFeeds)} | |
| Boolean | hasVapourFeed (from FeedColumn) | false | true, if there exist a liquid feed |
| Integer | numberVapourFeeds (from FeedColumn) | 1 | |
| Integer | stageVapourFeed (from FeedColumn) | {1} | number of stage where feed enters the column |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| ThermalSeparation.Interfaces.GasPortIn | upStreamIn (from BaseColumn) | ||
| ThermalSeparation.Interfaces.GasPortOut | upStreamOut (from BaseColumn) | ||
| ThermalSeparation.Interfaces.LiquidPortIn | downStreamIn (from BaseColumn) | ||
| ThermalSeparation.Interfaces.LiquidPortOut | downStreamOut (from BaseColumn) | ||
| ThermalSeparation.Interfaces.LiquidPortIn | feedLiquid (from FeedColumn) | ||
| ThermalSeparation.Interfaces.GasPortIn | feedVapour (from FeedColumn) | ||
| ThermalSeparation.Interfaces.GasPortIn | feedVapour_dummy (from FeedColumn) | ||
| ThermalSeparation.Interfaces.LiquidPortIn | feedLiquid_dummy (from FeedColumn) | ||
| ThermalSeparation.Interfaces.GasPortOut | feedVapour_dummy2 (from FeedColumn) | ||
| ThermalSeparation.Interfaces.LiquidPortOut | feedLiquid_dummy2 (from FeedColumn) | ||
| ThermalSeparation.Interfaces.HeatPort | heatPort |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| ThermalSeparation.SystemTS | systemTS (from BaseColumn) | ||
| Boolean | useHomotopy (from BaseColumn) | false | |
| HomotopyMethod | homotopyMethod (from BaseColumn) | ||
| Results | results (from BaseColumn) | ||
| MediumVapour.BaseProperties[n] | mediumVapour (from BaseColumn) | ||
| MediumVapour.BaseProperties | mediumVapourIn (from BaseColumn) | ||
| MediumLiquid.BaseProperties[n] | mediumLiquid (from BaseColumn) | ||
| MediumLiquid.BaseProperties | mediumLiquidIn (from BaseColumn) | ||
| MediumLiquid.ActivityCoefficient[n] | activityCoeff (from BaseColumn) | ||
| MediumVapour.EvaporationEnthalpy[n] | evapEnthalpy (from BaseColumn) | ||
| ThermalSeparation.Units.MolarEnthalpy[n,nSV] | delta_hv (from BaseColumn) | if h_evap_medium then zeros(n, nSV) else evapEnthalpy.h | |
| SI.Density[n] | rho_v (from BaseColumn) | if homotopyMethod.bool_rho and homotopyMethod.useHomotopy then homotopy(actual = mediumVapour.d, simplified = fill(homotopyMethod.rho_vap, n)) else mediumVapour.d | mixture vapour density |
| SI.Density | rho_v_in (from BaseColumn) | mediumVapourIn.d | |
| SI.MolarMass[n] | MM_v (from BaseColumn) | mediumVapour.MM | molar mass of the vapour mixture |
| SI.MolarMass | MM_v_in (from BaseColumn) | mediumVapourIn.MM | |
| ThermalSeparation.Units.MolarEnthalpy[n] | h_v (from BaseColumn) | if homotopyMethod.bool_h and homotopyMethod.useHomotopy then homotopy(actual = mediumVapour.h, simplified = fill(homotopyMethod.h_vap, n)) else mediumVapour.h | |
| ThermalSeparation.Units.MolarEnthalpy | h_v_in (from BaseColumn) | mediumVapourIn.h | |
| SI.MolarInternalEnergy[n] | u_v (from BaseColumn) | mediumVapour.u | |
| MediumVapour.ThermodynamicProperties | propsVap (from BaseColumn) | mediumVapour.properties | |
| MediumVapour.ThermodynamicProperties | propsVapIn (from BaseColumn) | mediumVapourIn.properties | |
| SI.Density[n] | rho_l (from BaseColumn) | if homotopyMethod.bool_rho and homotopyMethod.useHomotopy then homotopy(actual = mediumLiquid.d, simplified = fill(homotopyMethod.rho_liq, n)) else mediumLiquid.d | mixture liquid density |
| SI.Density | rho_l_in (from BaseColumn) | mediumLiquidIn.d | |
| SI.MolarMass[n] | MM_l (from BaseColumn) | mediumLiquid.MM | molar mass of the liquid mixture |
| SI.MolarMass | MM_l_in (from BaseColumn) | mediumLiquidIn.MM | |
| ThermalSeparation.Units.MolarEnthalpy[n] | h_l (from BaseColumn) | ||
| ThermalSeparation.Units.MolarEnthalpy | h_l_in (from BaseColumn) | ||
| SI.MolarInternalEnergy[n] | u_l (from BaseColumn) | mediumLiquid.u | |
| MediumLiquid.ThermodynamicProperties | propsLiq (from BaseColumn) | mediumLiquid.properties | |
| MediumLiquid.ThermodynamicProperties | propsLiqIn (from BaseColumn) | mediumLiquidIn.properties | |
| SI.Concentration[nSV] | c_v_in (from BaseColumn) | ||
| SI.Concentration[n,nSV] | c_v (from BaseColumn) | ||
| SI.MoleFraction[nSV] | x_v_in (from BaseColumn) | ||
| SI.MoleFraction[n,nSV] | x_v (from BaseColumn) | ||
| SI.VolumeFlowRate | Vdot_v_in (from BaseColumn) | ||
| SI.VolumeFlowRate[n] | Vdot_v (from BaseColumn) | ||
| SI.Temperature | T_v_in (from BaseColumn) | ||
| SI.MoleFraction[nSV] | x_upStreamIn_act (from BaseColumn) | ||
| SI.MoleFraction[nSV] | x_upStreamOut_act (from BaseColumn) | ||
| ThermalSeparation.Units.MolarEnthalpy | h_upStreamIn_act (from BaseColumn) | ||
| ThermalSeparation.Units.MolarEnthalpy | h_upStreamOut_act (from BaseColumn) | ||
| SI.Pressure[n + 1] | p_v (from BaseColumn) | p_v[j] = pressure on the j-th stage, p_v[n+1] is the pressure in the first element of the sucesseding component | |
| SI.Temperature[n] | T_v (from BaseColumn) | ||
| SI.Concentration[nSL] | c_l_in (from BaseColumn) | molar concentration in the liquid at the liquid outlet of each stage | |
| SI.Concentration[n,nSL] | c_l (from BaseColumn) | ||
| SI.MoleFraction[nSL] | x_l_in (from BaseColumn) | ||
| SI.MoleFraction[n,nSL] | x_l (from BaseColumn) | ||
| SI.VolumeFlowRate | Vdot_l_in (from BaseColumn) | ||
| SI.VolumeFlowRate[n] | Vdot_l (from BaseColumn) | ||
| SI.Temperature | T_l_in (from BaseColumn) | ||
| SI.Temperature[n] | T_l (from BaseColumn) | ||
| SI.MoleFraction[nSL] | x_downStreamIn_act (from BaseColumn) | ||
| SI.MoleFraction[nSL] | x_downStreamOut_act (from BaseColumn) | ||
| ThermalSeparation.Units.MolarEnthalpy | h_downStreamIn_act (from BaseColumn) | ||
| ThermalSeparation.Units.MolarEnthalpy | h_downStreamOut_act (from BaseColumn) | ||
| SI.MolarFlowRate[n,nSL] | Ndot_reac (from BaseColumn) | ||
| SI.HeatFlowRate[n] | Qdot_reac (from BaseColumn) | ||
| SI.VolumeFraction[n] | eps_liq (from BaseColumn) | liquid volume fraction | |
| SI.VolumeFraction[n] | eps_vap (from BaseColumn) | vapour volume fraction | |
| SI.Temperature[n] | T (from BaseColumn) | ||
| SI.HeatFlowRate[n] | Qdot_wall (from BaseColumn) | heat flow rate to wall | |
| SI.MolarFlowRate[n,nSV] | Ndot_v_transfer (from BaseColumn) | ||
| SI.MolarFlowRate[n,nSL] | Ndot_l_transfer (from BaseColumn) | ||
| SI.HeatFlowRate[n] | Edot_l_transfer (from BaseColumn) | ||
| SI.HeatFlowRate[n] | Edot_v_transfer (from BaseColumn) | ||
| SI.Temperature[n] | T_star (from BaseColumn) | ||
| SI.Pressure | p_v_in (from BaseColumn) | ||
| SI.Pressure[n,nSL] | p_sat_bulk (from BaseColumn) | ||
| SI.VolumeFlowRate[n] | Vdot_v_feed (from BaseColumn) | ||
| SI.Concentration[n,nSV] | c_v_feed (from BaseColumn) | ||
| SI.SpecificEnthalpy[n] | h_v_feed (from BaseColumn) | ||
| SI.VolumeFlowRate[n] | Vdot_l_feed (from BaseColumn) | ||
| SI.Concentration[n,nSL] | c_l_feed (from BaseColumn) | ||
| SI.SpecificEnthalpy[n] | h_l_feed (from BaseColumn) | ||
| SI.Density[n] | rho_l_feed (from BaseColumn) | ||
| SI.Density[n] | rho_v_feed (from BaseColumn) | ||
| SI.MolarMass[n] | MM_l_feed (from BaseColumn) | ||
| SI.MolarMass[n] | MM_v_feed (from BaseColumn) | ||
| SI.MoleFraction[n,nSL] | x_l_star (from BaseColumn) | ||
| SI.MoleFraction[n,nSV] | x_v_star (from BaseColumn) | ||
| SI.MoleFraction[n,nS] | x_vap_liq (from BaseColumn) | total molar fractions | |
| Real[n,nS] | n_tot (from BaseColumn) | ||
| ThermoEquilibrium[n] | bubblePressure (from BaseColumn) | ||
| Boolean[n] | bool_eps (from BaseColumn) | ||
| SI.VolumeFlowRate[n] | Vdot_le (from BaseColumn) | liquid volume flow entrained by vapour | |
| Boolean[n] | before_transition (from BaseColumn) | fill(false, n) | |
| SI.Pressure | p_initial (from BaseColumn) | 1e5 | |
| SI.Pressure[n] | p_bub (from BaseColumn) | bubblePressure.p_bubble | mixture bubble pressure |
| SI.Pressure[n + 1] | p_hyd (from BaseColumn) | hydraulic pressure | |
| Real[n] | omega (from BaseColumn) | ||
| Boolean[n] | startUp (from BaseColumn) | ||
| Real[n] | Ndot_source_startUp (from BaseColumn) | dummy molar flow rate to account for discharge of inert gas during startUp | |
| Real[n] | sum_xl (from BaseColumn) | sum(x_l[:, i] for i in 1:nSL) | |
| Real[n] | sum_xv (from BaseColumn) | sum(x_v[:, i] for i in 1:nSV) | |
| SI.MolarFlowRate[nSL] | Ndot_trans (from BaseColumn) | sum(Ndot_l_transfer[j, :] for j in 1:n) | |
| SI.MolarFlowRate[nSV] | Ndot_trans_vap (from BaseColumn) | sum(Ndot_v_transfer[j, :] for j in 1:n) | |
| Real | Edot_l (from BaseColumn) | sum(Edot_l_transfer) | |
| Real | Edot_v (from BaseColumn) | sum(Edot_v_transfer) | |
| SI.MassFlowRate[n] | mdot_v (from BaseColumn) | Vdot_v.*rho_v | |
| SI.MassFlowRate[n] | mdot_l (from BaseColumn) | Vdot_l.*rho_l | |
| Real[n,nSV] | X_v (from BaseColumn) | mass fraction vapour | |
| Real[n,nSL] | X_l (from BaseColumn) | mass fraction liquid | |
| SI.Volume | V_liq (from BaseColumn) | sum(A*H/n*eps*eps_liq) | |
| SI.MolarFlowRate[n] | Ndot_v (from BaseColumn) | total molar flow rate vapour | |
| SI.MolarFlowRate | Ndot_v_in (from BaseColumn) | total molar flow rate vapour | |
| SI.MolarFlowRate[n] | Ndot_l (from BaseColumn) | total molar flow rate liquid | |
| SI.MolarFlowRate | Ndot_l_in (from BaseColumn) | total molar flow rate vapour | |
| Real[n,nSL] | n_i_liq (from BaseColumn) | ||
| Real[n,nSV] | n_i_vap (from BaseColumn) | ||
| Real[n] | n_liq (from BaseColumn) | sum(n_i_liq[:, i] for i in 1:nSL) | |
| Real[n] | n_vap (from BaseColumn) | sum(n_i_vap[:, i] for i in 1:nSV) | |
| Real[n] | n_total (from BaseColumn) | n_liq + n_vap | |
| Real[n] | n_mol_L (from BaseColumn) | ||
| Real[n] | n_mol_V (from BaseColumn) | ||
| Real[n,nSL] | n_mol_L_i (from BaseColumn) | ||
| Real[n,nSV] | n_mol_V_i (from BaseColumn) | ||
| ThermalSeparation.Utilities.LimPID_Input[n] | PID (from BaseColumn) | ||
| InternalFeedPort[n] | internalFeedPort (from FeedColumn) | ||
| ThermalSeparation.Utilities.MediumLink[n] | mediumLink (from FeedColumn) | ||
| MediumLiquid.BaseProperties[numberLiquidFeeds] | mediumLiquidFeed (from FeedColumn) | ||
| ThermalSeparation.Utilities.MediumLink[n] | mediumVapourLink (from FeedColumn) | ||
| MediumVapour.BaseProperties[numberVapourFeeds] | mediumVapourFeed (from FeedColumn) | ||
| SourcesSinks.SourceGas[numberVapourFeeds] | sourceGas (from FeedColumn) | ||
| SourcesSinks.SourceLiquid[numberLiquidFeeds] | sourceLiquid (from FeedColumn) | ||
| SourcesSinks.SinkGas[numberVapourFeeds] | sinkGas (from FeedColumn) | ||
| SourcesSinks.SinkLiquid[numberLiquidFeeds] | sinkLiquid (from FeedColumn) | ||
| Real[numberVapourFeeds,nSV] | c_v_feed_used (from FeedColumn) | ||
| BalanceEquations | balanceEquations | ||
| InitOption | initOption | ||
| Reaction[n] | reaction | ||
| PressureLoss | pressureLoss | ||
| Holdup | holdup | ||
| Geometry | geometry | ||
| HeatTransferWall | heatTransferWall | ||
| Real[n] | F | Vdot_v/geometry.A.*rho_v.^0.5 | F-Factor to check operating range, unit: Pa^0.5 |
| Real[n] | liquidLoad | Vdot_l/geometry.A*3600 | liquid load to check operating range, unit: m3/m2/h |
Contents
| Name | Description |
|---|---|
| BalanceEquations | |
| InitOption | |
| Reaction | |
| Geometry | |
| PressureLoss | |
| Holdup |