modelBaseColumn
Information
General
Stages are counted from the bottom (n=1: lowest stage). The minimum number of stages is n=1.
Startup operation
If a rectification column at time t = 0s shall be empty and cold and the starup operation from such an empty and cold state shall be modeled, the boolean parameter "considerStartUp" has to be set to true (default value = false). An initial pressure has to be provided.
During start-up the inert gas in the column is not modelled. A variable "startUp" is used in order to determine wether the switching condition on a stage is already fulfilled or not. The switching condition is fulfilled, when the bubble pressure of the mixture attains the initial pressure specified by the user. At this time instant the variable "startUp" is set to false, vapour is leaving the stage and the equilibrium condition at the phase boundary is valid.
The equations for the liquid phase for start up have to be provided in the extending classes.
Medium Models
The liquid medium models and the vapour medium models can differ both in the number of mediums they contain as well as in the substance types. The parameter nSL is the number of substances in the liquid and nSV is the number of substances in the vapour. The parameter nS is the number of substances which are in the liquid as well as in the vapour phase. This parameter has to be supplied by the user. The arrangement of the different substances in the medium models in in theory arbitrary. The parameter mapping has to be used to map the different vectors one to another.
Example: Vapour = {N2, H2O, CO2}, Liquid = {N2, H+, HCO3- H2O, CO2} , mapping = {{1,1},{2,4},{3,5}}.
Mole Balances
The mole balances are written separately for vapour and liquid. There exist one mole balance for each component of each stage. The vapour balance is of the following structure:
Mole storage = convective molar flow rate in - convective molar flow rate out + molar flow rate over phase boundary + feed molar flow rate
The liquid balance is of the following structure:
Mole storage = convective molar flow rate in - convective molar flow rate out + molar flow rate over phase boundary + molar flow rate due to reaction + feed molar flow rate
Energy Balances
The energy balances are also written separately for vapour and liquid. There exist one energy balance for each stage. The vapour balance is of the following structure:
Energy storage of the vapour = convective enthaply flow rate in - convective enthalpy flow rate out + heat transfer between the phases + enthalpy flow rate from the liquid to the vapour phase - enthalpy flow rate from the vapour to the liquid phase + enthalpy flow rate of the feed
The liquid balance is of the following structure:
Energy storage of the vapour + energy storage of the solid material = convective enthaply flow rate in - convective enthalpy flow rate out + heat transfer to the wall + heat transfer between the phases + enthalpy flow rate from the liquid to the vapour phase - enthalpy flow rate from the vapour to the liquid phase + enthalpy flow rate of the feed
Mass Transfer and thermodynamic equilibrium
The mass transfer equations and the equations for the thermodynamic equilibrium are provided in the film model, which is instantiated in the column specific classes StructuredPackedColumn, RandomPackedColumn, TrayColumn and SprayColumn.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | n | 1 | packed column: number of discrete elements in the section; plate column: number of trays in one section |
| SI.Pressure[n] | p_v_start | 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 | cat(1, p_v_start, {p_v_start[n]}) | |
| SI.MoleFraction[n,nSL] | x_l_start | ||
| SI.MoleFraction[n,nSV] | x_v_start | ||
| SI.Temperature[n] | T_v_start | 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 | 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 | false | equilibrium model is used, no mass transfer, value provided by film model |
| Integer[nS,2] | mapping | {{i, i} for i in 1:nS} | parameter to map the different medium vectors one to another |
| Boolean[nSV] | inertVapour | fill(false, nSV) | true for each component which is inert in the vapour phase |
| Boolean[nSL] | inertLiquid | fill(false, nSL) | true for each component which is inert in the liquid phase |
| Boolean | h_evap_medium | MediumVapour.delta_hv_medium | |
| Integer | nS | number of species which are equal in vapour and liquid phase | |
| Integer | nL | MediumLiquid.nSubstance - nS | number of additional substances which are only in liquid phase |
| Integer | nV | MediumVapour.nSubstance - nS | number of additional substances which are only in the vapour phase |
| Integer | nSL | MediumLiquid.nSubstance | |
| Integer | nSV | MediumVapour.nSubstance | |
| Advanced | |||
| SI.Temperature | T_ref | systemTS.T_ref | reference temperature |
| Initialization | |||
| SI.Pressure | p_v_start_inlet | 1.9e5 | |
| SI.Pressure | p_v_start_outlet | 1.8e5 | |
| Boolean | x_l_profile | false | |
| Boolean | x_v_profile | false | |
| SI.MoleFraction[nSL] | x_l_start_const | fill(1/nSL, nSL) | |
| SI.MoleFraction[nSV] | x_v_start_const | fill(1/nSV, nSV) | |
| SI.MoleFraction[nSL] | x_l_start_in | fill(1/nSL, nSL) | |
| SI.MoleFraction[nSL] | x_l_start_out | fill(1/nSL, nSL) | |
| SI.MoleFraction[nSV] | x_v_start_in | fill(1/nSV, nSV) | |
| SI.MoleFraction[nSV] | x_v_start_out | fill(1/nSV, nSV) | |
| Real[nSV] | x_total_start | fill(1/nSV, nSV) | total mole fraction in system (vapour and liquid), component ordering as in vapour medium |
| Boolean | T_l_profile | false | |
| Boolean | T_v_profile | false | |
| SI.Temperature | T_vap_start_bottom | 300 | |
| SI.Temperature | T_vap_start_top | 300 | |
| SI.Temperature | T_liq_start_bottom | 300 | |
| SI.Temperature | T_liq_start_top | 300 | |
| SI.Temperature | T_vapour_start | 300 | |
| SI.Temperature | T_liquid_start | 300 | |
| StartUp | |||
| Boolean | considerStartUp | false | true if StartUp is to be considered |
| Real | friggelfaktor | 0.0002e5 | |
| Real | k | 0.2e-3 | large value for steep omega |
| Boolean | StartUp_CCS | false | true if StartUp of carbon capture plant is to be considered |
| Boolean | switchingCondition_Boiling | true | true if boiling state is switching condition |
| Boolean | switchingCondition_Absorber_x_v | false | true if vapour composition is switching condition |
| Real | x_v_switch | 0.05 | vapour mole fraction value which is to be achieved |
| Integer | componentNumber | 3 | number of vapour component number in model |
| Real | gain | 0.01 | controler gain to maintain initial pressure before switch |
| Boolean[nSV] | lowBoilingPoint | fill(false, nSV) | true if substance has low boiling point |
| Real | y_PID | 10 | maximal value for supply startUp PID controller |
| Real | Vdot_startUp_pressure | 0.005 | value when supply PID controller is switched off |
| ShutDown | |||
| Boolean | considerShutDown | false | true if ShutDown is to be considered |
| StartUp › Smooth Start-Up | |||
| Boolean | smooth_startUp | false | true if smooth switching is to be considered |
| Real | delay_startUp | 200 | time delay for smooth startUp |
| Initialization › Initial liquid content | |||
| Real | eps_liq_start | 0.06 | start value for liquid content if it is not exactly wetted but with more or less liquid |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| ThermalSeparation.Interfaces.GasPortIn | upStreamIn | ||
| ThermalSeparation.Interfaces.GasPortOut | upStreamOut | ||
| ThermalSeparation.Interfaces.LiquidPortIn | downStreamIn | ||
| ThermalSeparation.Interfaces.LiquidPortOut | downStreamOut |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| ThermalSeparation.SystemTS | systemTS | ||
| Boolean | useHomotopy | false | |
| HomotopyMethod | homotopyMethod | ||
| Results | results | ||
| MediumVapour.BaseProperties[n] | mediumVapour | ||
| MediumVapour.BaseProperties | mediumVapourIn | ||
| MediumLiquid.BaseProperties[n] | mediumLiquid | ||
| MediumLiquid.BaseProperties | mediumLiquidIn | ||
| MediumLiquid.ActivityCoefficient[n] | activityCoeff | ||
| MediumVapour.EvaporationEnthalpy[n] | evapEnthalpy | ||
| ThermalSeparation.Units.MolarEnthalpy[n,nSV] | delta_hv | if h_evap_medium then zeros(n, nSV) else evapEnthalpy.h | |
| SI.Density[n] | rho_v | 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 | mediumVapourIn.d | |
| SI.MolarMass[n] | MM_v | mediumVapour.MM | molar mass of the vapour mixture |
| SI.MolarMass | MM_v_in | mediumVapourIn.MM | |
| ThermalSeparation.Units.MolarEnthalpy[n] | h_v | 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 | mediumVapourIn.h | |
| SI.MolarInternalEnergy[n] | u_v | mediumVapour.u | |
| MediumVapour.ThermodynamicProperties | propsVap | mediumVapour.properties | |
| MediumVapour.ThermodynamicProperties | propsVapIn | mediumVapourIn.properties | |
| SI.Density[n] | rho_l | 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 | mediumLiquidIn.d | |
| SI.MolarMass[n] | MM_l | mediumLiquid.MM | molar mass of the liquid mixture |
| SI.MolarMass | MM_l_in | mediumLiquidIn.MM | |
| ThermalSeparation.Units.MolarEnthalpy[n] | h_l | ||
| ThermalSeparation.Units.MolarEnthalpy | h_l_in | ||
| SI.MolarInternalEnergy[n] | u_l | mediumLiquid.u | |
| MediumLiquid.ThermodynamicProperties | propsLiq | mediumLiquid.properties | |
| MediumLiquid.ThermodynamicProperties | propsLiqIn | mediumLiquidIn.properties | |
| SI.Concentration[nSV] | c_v_in | ||
| SI.Concentration[n,nSV] | c_v | ||
| SI.MoleFraction[nSV] | x_v_in | ||
| SI.MoleFraction[n,nSV] | x_v | ||
| SI.VolumeFlowRate | Vdot_v_in | ||
| SI.VolumeFlowRate[n] | Vdot_v | ||
| SI.Temperature | T_v_in | ||
| SI.MoleFraction[nSV] | x_upStreamIn_act | ||
| SI.MoleFraction[nSV] | x_upStreamOut_act | ||
| ThermalSeparation.Units.MolarEnthalpy | h_upStreamIn_act | ||
| ThermalSeparation.Units.MolarEnthalpy | h_upStreamOut_act | ||
| SI.Pressure[n + 1] | p_v | 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 | ||
| SI.Concentration[nSL] | c_l_in | molar concentration in the liquid at the liquid outlet of each stage | |
| SI.Concentration[n,nSL] | c_l | ||
| SI.MoleFraction[nSL] | x_l_in | ||
| SI.MoleFraction[n,nSL] | x_l | ||
| SI.VolumeFlowRate | Vdot_l_in | ||
| SI.VolumeFlowRate[n] | Vdot_l | ||
| SI.Temperature | T_l_in | ||
| SI.Temperature[n] | T_l | ||
| SI.MoleFraction[nSL] | x_downStreamIn_act | ||
| SI.MoleFraction[nSL] | x_downStreamOut_act | ||
| ThermalSeparation.Units.MolarEnthalpy | h_downStreamIn_act | ||
| ThermalSeparation.Units.MolarEnthalpy | h_downStreamOut_act | ||
| SI.MolarFlowRate[n,nSL] | Ndot_reac | ||
| SI.HeatFlowRate[n] | Qdot_reac | ||
| SI.VolumeFraction[n] | eps_liq | liquid volume fraction | |
| SI.VolumeFraction[n] | eps_vap | vapour volume fraction | |
| SI.Temperature[n] | T | ||
| SI.HeatFlowRate[n] | Qdot_wall | heat flow rate to wall | |
| SI.MolarFlowRate[n,nSV] | Ndot_v_transfer | ||
| SI.MolarFlowRate[n,nSL] | Ndot_l_transfer | ||
| SI.HeatFlowRate[n] | Edot_l_transfer | ||
| SI.HeatFlowRate[n] | Edot_v_transfer | ||
| SI.Temperature[n] | T_star | ||
| SI.Pressure | p_v_in | ||
| SI.Pressure[n,nSL] | p_sat_bulk | ||
| SI.VolumeFlowRate[n] | Vdot_v_feed | ||
| SI.Concentration[n,nSV] | c_v_feed | ||
| SI.SpecificEnthalpy[n] | h_v_feed | ||
| SI.VolumeFlowRate[n] | Vdot_l_feed | ||
| SI.Concentration[n,nSL] | c_l_feed | ||
| SI.SpecificEnthalpy[n] | h_l_feed | ||
| SI.Density[n] | rho_l_feed | ||
| SI.Density[n] | rho_v_feed | ||
| SI.MolarMass[n] | MM_l_feed | ||
| SI.MolarMass[n] | MM_v_feed | ||
| SI.MoleFraction[n,nSL] | x_l_star | ||
| SI.MoleFraction[n,nSV] | x_v_star | ||
| SI.MoleFraction[n,nS] | x_vap_liq | total molar fractions | |
| Real[n,nS] | n_tot | ||
| ThermoEquilibrium[n] | bubblePressure | ||
| Boolean[n] | bool_eps | ||
| SI.VolumeFlowRate[n] | Vdot_le | liquid volume flow entrained by vapour | |
| Boolean[n] | before_transition | fill(false, n) | |
| SI.Pressure | p_initial | 1e5 | |
| SI.Pressure[n] | p_bub | bubblePressure.p_bubble | mixture bubble pressure |
| SI.Pressure[n + 1] | p_hyd | hydraulic pressure | |
| Real[n] | omega | ||
| Boolean[n] | startUp | ||
| Real[n] | Ndot_source_startUp | dummy molar flow rate to account for discharge of inert gas during startUp | |
| Real[n] | sum_xl | sum(x_l[:, i] for i in 1:nSL) | |
| Real[n] | sum_xv | sum(x_v[:, i] for i in 1:nSV) | |
| SI.MolarFlowRate[nSL] | Ndot_trans | sum(Ndot_l_transfer[j, :] for j in 1:n) | |
| SI.MolarFlowRate[nSV] | Ndot_trans_vap | sum(Ndot_v_transfer[j, :] for j in 1:n) | |
| Real | Edot_l | sum(Edot_l_transfer) | |
| Real | Edot_v | sum(Edot_v_transfer) | |
| SI.MassFlowRate[n] | mdot_v | Vdot_v.*rho_v | |
| SI.MassFlowRate[n] | mdot_l | Vdot_l.*rho_l | |
| Real[n,nSV] | X_v | mass fraction vapour | |
| Real[n,nSL] | X_l | mass fraction liquid | |
| SI.Volume | V_liq | sum(A*H/n*eps*eps_liq) | |
| SI.MolarFlowRate[n] | Ndot_v | total molar flow rate vapour | |
| SI.MolarFlowRate | Ndot_v_in | total molar flow rate vapour | |
| SI.MolarFlowRate[n] | Ndot_l | total molar flow rate liquid | |
| SI.MolarFlowRate | Ndot_l_in | total molar flow rate vapour | |
| Real[n,nSL] | n_i_liq | ||
| Real[n,nSV] | n_i_vap | ||
| Real[n] | n_liq | sum(n_i_liq[:, i] for i in 1:nSL) | |
| Real[n] | n_vap | sum(n_i_vap[:, i] for i in 1:nSV) | |
| Real[n] | n_total | n_liq + n_vap | |
| Real[n] | n_mol_L | ||
| Real[n] | n_mol_V | ||
| Real[n,nSL] | n_mol_L_i | ||
| Real[n,nSV] | n_mol_V_i | ||
| ThermalSeparation.Utilities.LimPID_Input[n] | PID |
Contents
| Name | Description |
|---|---|
| HomotopyMethod | |
| MediumVapour | medium to be used in vapour phase |
| MediumLiquid | medium to be used in liquid phase |
| ThermoEquilibrium |
Revisions
created by |
Karin Dietl & Andreas Joos |
creation date |
01.01.2009 |
revised by |
nobody so far |
last revision |
this is an alpha version... |
based on |
Documentation last revised: 18.7.2011