Skip to content

Model equations ​

A fixed bed in Mocca is a one-dimensional, axially dispersed plug flow model of a packed column, as in Haghpanah et al. (2013). The gas is ideal, flow follows Darcy's law, mass transfer to the sorbent is a linear driving force, and the energy balance covers the gas, the sorbent and the column wall. The beds are connected to the feed, products and each other through flow devices (valves and flow controllers), whose settings change from step to step of the cycle.

All quantities are in SI units. The symbols are listed in the nomenclature at the end of this page, with the inputs they come from.

0Lzbottom port, z = 0top port, z = LGas between the particlesP, T, yi​, velocity u · bed porosity εεAdsorbent particlediameter dp​porosity εp​tortuosity τloading qi​ → qi​*Column walltemperature Tw​ · ρw​, cpw​, Kw​hin​: bed to wallhout​: wall to surroundings at Ta​rin​rout​cross-section
A fixed bed. Gas flows through the voids between the particles in either direction, entering or leaving through the ports at each end. The particles take up CO₂ towards the equilibrium loading of the isotherm, and heat passes from the bed to the wall and from the wall to the surroundings. Symbols as in the nomenclature.

Fixed bed ​

Component mass balance ​

For each component of the gas,

is the loading in mol per m³ of adsorbent (particles), so   converts it to bed volume.

Momentum: Darcy's law ​

The superficial velocity follows Darcy's law with the Kozeny–Carman (Blake–Kozeny) permeability of a packed bed,

This is the viscous (laminar) term of the Ergun equation; the inertial term is not included. The interstitial velocity is  . Give permeability to add_bed! to override .

Axial dispersion ​

where is the molecular diffusivity of the gas (diffusivity of Gas, that of the first component if given per component) and the interstitial feed velocity of the bed's adsorption step. is evaluated once, when the process is built, and is constant along the bed and through the cycle. Set dispersion_velocity or dispersion in add_bed! to fix it yourself.

Adsorption rate: linear driving force ​

This is macropore diffusion control: the particle porosity , tortuosity and diameter of the Adsorbent set the rate.

Isotherm: dual-site Langmuir ​

The affinities are on a concentration basis (m³/mol), and the saturation capacities in mol per m³ of adsorbent, or in mol/kg with basis = :mass, which Mocca multiplies by the adsorbent density. The single-site langmuir isotherm has  . Check an isotherm against its source with equilibrium_loading and isotherm_table, which report mol/kg.

The pure-component isotherms of zeolite 13X from Haghpanah et al. (2013), at three temperatures. CO₂ is held far more strongly than N₂, and both less at higher temperature, so the heat released by adsorption, which warms the bed, lowers what it can hold:

The heat of adsorption of each component is constant, the average of its two site energies weighted by their capacities at the reference temperature (reference_temperature, default 298.15 K):

Energy balance of the column ​

Written in terms of temperature and pressure:

with molar heat capacities of the gas and the adsorbed phase from the per-mass values of each component,

 , so adsorption heats the bed.

Wall energy balance ​

At both ends the wall conducts heat to the surroundings at .

Thermal options ​

The thermal keyword of add_bed! chooses the energy model:

thermalEnergy model
WithWall() (default)Column and wall energy balances, as above
Adiabatic()Column energy balance without the wall term ( )
Isothermal(T)Temperature fixed at T, no energy balance

Flow devices and boundary conditions ​

Each end of a bed (:bottom at  , :top at  ) connects to one or more flow devices. A device has an inlet and an outlet port and carries a molar flow [mol/s], positive from inlet to outlet. The port attached to the bed takes the pressure, temperature and composition of the end cell. The other port is either another bed (a link) or a boundary at a prescribed pressure, temperature and composition. The flow enters or leaves the bed's end cell carrying the composition and enthalpy   of the upstream port.

In each step of the cycle every device is closed, a valve or a flow controller:

LawFlow
Closed 
LinearValve    
VolumetricFlow (flow controller)  

Here is the valve conductance [m³/(s·Pa)] and "up" is the upstream port. A feed given as an interstitial velocity is a flow controller with  .

By default a valve has the conductance of half a cell at the bed end it is attached to,   , so that it adds no more resistance than the bed itself and the bed end follows the pressure on the far side of the valve. Give conductance to a step to model a smaller valve.

During pressurisation, blowdown and evacuation, the pressure on the far side of the valve moves exponentially from where the step starts to where it ends:

with the ramp_rate (default 0.5 s⁻¹) of the step or the Process. A blowdown from 1 to 0.1 bar at three ramp rates; at the default rate the pressure on the far side of the valve has made 99% of its change after about 10 s:

For the four-step VSA cycle this gives the boundary conditions of Haghpanah et al. (2013):

StepBottom ( )Top ( )
Pressurisationfeed valve, ramps  closed
Adsorptionfeed at velocity product valve at
Blowdownclosedproduct valve, ramps  
Evacuationvacuum valve, ramps  closed

Performance ​

performance measures a process over its last simulated cycle, from the streams through its devices. The device roles (see add_device!) say which streams count. For the key component (the first component of the gas unless key_component is given to Process), with the moles of component that passed through all devices of role over the cycle:

with the volume of adsorbent,   times the bed volume, summed over the beds. Productivity is in mol/(m³ adsorbent · s); multiply by   for tonnes per m³ per day.

The energy counts a vacuum pump on every outlet device (roles :product, :extract, :waste) while it discharges below ambient pressure, and a compressor on every inlet device (:feed, :light_inlet) while it delivers above ambient pressure. Both compress adiabatically between the ambient pressure and the device's pressure :

reported in kWh per tonne of key component. , and are the ambient_pressure (101325 Pa), pump_efficiency (0.72) and heat_capacity_ratio (1.4) of the Process. Haghpanah et al. count the vacuum pumps only; vacuum_pump_energy gives the energy of one device, to report it their way.

Steady state of the cycle ​

The cycle maps the state of the beds at its start, , to the state at its end, . Performance is measured at the cyclic steady state,  . How Mocca finds it, and its options, are on the Cyclic steady state page.

Numerical method ​

Each bed is divided into ncells equal cells (30 by default). Fluxes between cells are two-point, with upwinded advection, and time stepping is fully implicit (backward Euler), solved by Newton's method with exact derivatives from automatic differentiation. Each step of the cycle starts with time steps of first_dt that double up to max_dt (see TimeStepping), which carries the solver through the abrupt start of a step. Gradients for optimisation come from the adjoint of the same discrete equations.

Nomenclature ​

SymbolMeaningUnitSet by
Column cross-section, m²Column radius
Affinity at infinite temperature, sites b and dm³/molisotherm b0, d0
Gas concentration of component , totalmol/m³state
Heat capacity of adsorbed component J/(kg·K)Adsorbent adsorbed_heat_capacity
Heat capacity of gas component J/(kg·K)Gas heat_capacities
Heat capacity of the adsorbentJ/(kg·K)Adsorbent heat_capacity
Heat capacity of the wallJ/(kg·K)Wall heat_capacity
Valve conductancem³/(s·Pa)step conductance
Particle diametermAdsorbent particle_diameter
Axial dispersion coefficientm²/scomputed, or add_bed! dispersion
Molecular diffusivitym²/sGas diffusivity
Molar flow through a devicemol/sstate
Heat transfer coefficient, bed to wall and wall to ambientW/(m²·K)Column inner_heat_transfer, outer_heat_transfer
Bed permeabilitym²computed, or add_bed! permeability
Axial thermal conductivity of the bedW/(m·K)Column axial_conductivity
Thermal conductivity of the wallW/(m·K)Wall conductivity
Column lengthmColumn length
Molar masskg/molGas molar_masses
PressurePastate
Loading and equilibrium loadingmol/m³ adsorbentstate
Saturation capacity, sites b and dmol/m³ adsorbentisotherm qsb, qsd
Inner and outer radius of the column wallmColumn radius, outer_radius
Gas constant, 8.314J/(mol·K)
Gas and sorbent, wall and ambient temperatureKstate; Column ambient_temperature
Superficial and interstitial velocitym/sstate; step velocity
Gas mole fraction–state
Internal energy of adsorption, sites b and dJ/molisotherm ΔUb, ΔUd
Bed porosity (void fraction between particles)–Column porosity
Particle porosity–Adsorbent particle_porosity
Heat capacity ratio and efficiency of pumps and compressors–Process
Pressure ramp rate1/sstep or Process ramp_rate
Gas viscosityPa·sGas viscosity
Density of the adsorbent and of the wallkg/m³Adsorbent density, Wall density
Tortuosity–Adsorbent tortuosity