On this page
- All unit operations
- How flows are calculated
- How equipment cost scales
- Bioreactors
- Reactors & biomass processing
- Solid–liquid separation
- Membranes
- Chromatography & adsorption
- Thermal, drying & crystallisation
- Extraction & precipitation
- Conditioning, dosing & holds
- Cell disruption, milling & biomass treatment
- Chemical conversion & utilities
Unit operation equations
Every equation the untangle.bio engine uses: how flows move through a flowsheet, how each unit operation splits mass between its outlets, how it is sized, and how its cost scales with size. Taken from the code, not from a textbook.
Each operation opens with a worked example: a representative feed run through the
real equations and the real cost estimator, at the stated flow and at ten times it.
A few examples are withheld while the model behind them is revised; their
equations and cost cards stay.
Below that are its defaults, its mass balance, its sizing and energy equations, the
conditions under which it refuses to give a number, and a cost card read straight
from the cost database. Function names point into
backend/services/unit_operation_equations.py unless another module is
named. How these feed the plant cost is in the
techno-economic analysis docs.
All unit operations
- Bioreactors
- Conversion reactor
- Dilute-acid pretreatment
- Anaerobic digester
- Biomass digestion (PHA release)
- Disc-stack centrifuge
- Decanter centrifuge
- Basket centrifuge
- Three-phase decanter
- Depth filtration
- Filter press
- Rotary vacuum drum filter
- Vacuum belt filter
- Nutsche filter
- Flocculation
- Gravity thickener
- Hydrocyclone
- Microfiltration
- Ultrafiltration
- Nanofiltration
- Reverse osmosis
- Membrane distillation
- Electrodialysis
- Affinity chromatography
- Ion exchange
- Hydrophobic interaction
- Reverse phase
- Size exclusion
- Membrane chromatography
- Activated carbon
- Adsorption–elution
- Molecular sieve dehydration
- Distillation
- Evaporation
- Evaporative crystalliser
- Cooling crystallisation
- Flash drum
- Solvent recovery
- Reactive distillation (esterification)
- Dryers
- Heat sterilisation
- Pasteurisation
- Liquid–liquid extraction
- pH-swing back-extraction
- Precipitation
- pH adjustment
- Reagent dose
- Mixing vessel
- Viral inactivation
- Homogeniser & bead mill
- Hammer & ball mill
- Alkaline lysis
- Inclusion-body refold
- RNA reduction heat shock
- Ester hydrolysis
- Hydrotreater
- CHP boiler & turbogenerator
- Wastewater treatment
How flows are calculated
Every stream is a volumetric flow plus a concentration for each component. Each unit operation turns that into mass flow, splits the mass between its outlets, and converts back to concentrations. Mass is conserved exactly, water included. Volume is never assumed: it is recomputed from the masses and the density of each component.
Stream representation
stream Q [L/h], c_i [g/L], T, pH, P, vapour fraction v
mass flow m_i [g/h] = c_i · Q (kg/h = c_i · Q / 1000 in the thorough tier)
back V = Σ m_i / ρ_i; c_i = m_i / V
Solving the flowsheet
ORDER steps are solved in topological order (Kahn's algorithm on the canvas);
a step may only draw from an earlier step
INLET Q_in = Q_source_outlet · f, 0 < f ≤ 1; Σ f claimed from one outlet ≤ 1
MIXING Q_mix = Σ_k Q_k
c_i,mix = Σ_k c_i,k·Q_k / Q_mix
T_mix = Σ T_k·Q_k / Σ Q_k (thorough tier: Σ ṁ·cp·T / Σ ṁ·cp)
pH_mix = Σ pH_k·Q_k / Σ Q_k (thorough tier: from H⁺ with buffer capacity)
PARAMETERS catalogue defaults, overridden by the user's values
DISPATCH operation_type → one equation function (the sections below); unknown → pass-through
DENSITY every outlet: m_i = c_i · Q_out
CLOSURE V_liq = Σ m_i / ρ_i; V = V_liq·(1 − v) + V_gas (ideal gas at T, P)
c_i ← m_i / V; Q_out ← V
FORWARD drawn handle → matching stream type → light/heavy class;
OUTLET otherwise the outlet carrying the most target mass
| Default component density (g/mL) | |
|---|---|
| water 1.00 · alcohol 0.80 · lipid 0.92 · terpene 0.90 · cell 1.10 · polymer 1.20 | |
| organic acid, vitamin, antibiotic, metabolite, other 1.30 · protein 1.35 · amino acid, polyphenol 1.40 | |
| polysaccharide 1.50 · sugar 1.55 · salt 2.16 |
Mass balance inside a unit operation
m_in,i = c_i · Q_feed
m_ret,i = retention law of the operation (rejection, capture, partition, equilibrium …)
m_perm,i = m_in,i − m_ret,i
water split by volume share, not back-calculated: m_w,ret = m_w,in · share_ret
added water (wash, buffer, dilution) joins the outlet it enters
c_out = m_out / V_out
dry matter DM = Σ c_i over non-water components
purity P = Σ c_target / Σ c_j j excludes water and a declared solvent carrier
yield = m_target,outlet / m_target,inlet (1 if the step makes the target)
Outlets and where they go
HEAVY heavy_phase, retentate, concentrate, solid, brine, off_gas, magma
LIGHT light_phase, filtrate, permeate, product, liquid, waste, volatiles, condensate, diluate, organic_phase
ports bioreactors [broth, off_gas]; dryers [vapour → vent, product]; others [light, heavy]
billing consumed by a later step → internal; vapour → vent; sink → product or waste
billable wastewater Q_ww = Σ Q_liquid · (1 − recycled) · (1 − consumed)
Recycle loops (thorough tier)
draw m_R,i = m_out,i · φ, φ ∈ [0, 0.99]; forward keeps m_out · (1 − Σφ)
tear guessed recycle masses x, recomputed masses g after one pass
residual r = max_k |g_k − x_k| / max(|g_k|, |x_k|, 1e-9) converged when r < 1e-6, ≤ 60 passes
Wegstein s = Δg/Δx; q = clamp(s/(s − 1), −5, 0.5); x_next = max(q·x + (1 − q)·g, 0)
divergence gain ‖Δg‖₁/‖Δx‖₁ ≥ 1.0 for 4 passes in a row → declared divergent
closure per step |m_in − m_out| / m_in ≤ 1e-4; energy ≤ 5 % (10 % reactive)
How equipment cost scales
Each unit operation has a cost entry: a purchased cost at a reference size, an exponent, and a
largest single unit. That is the flow basis. Operations whose size is set by something
other than flow replace it with their own basis: bed volume for columns, vessel volume for reactors,
cake area for filters, bowl geometry for the disc stack, membrane area as a multiplier.
The cost card under each operation shows its entry as it stands in
unit_operation_costs.json.
Power law and parallel units
SINGLE UNIT
C = C_ref · (Q / Q_ref)^n
C_ref = base_cost_usd, Q = design inlet flow of the step [L/h], n = scaling_exponent
PAST THE CEILING
Q_cap = ceiling · 1.10 ceiling = max_capacity_by_grade[grade] or max_capacity_lhr
N = ⌈Q / Q_cap⌉
C = N^r · C_ref · ((Q/N) / Q_ref)^n r = repeat_unit_exponent, default 0.90
Above the ceiling the cost grows about as Q^0.90, not Q^n: the exponent collapses to the
repeat-unit exponent, because the plant buys more identical machines.
Other sizing bases
VESSEL VOLUME bioreactors, conversion reactor, enzymatic hydrolysis, digester, refold
N = ⌈V / V_max⌉; C = N^r · C_ref · ((V/N) / V_ref)^n
V_ref = reference_volume_L (else Q_ref · 48); V_max microbial 500 000, mammalian/insect 25 000, plant cell 100 000 L
anaerobic vessels use a commodity tank anchor: $1.388M at 3 785 000 L
CAKE AREA filter press, rotary drum, belt
N = max(1, ⌈A/A_max⌉, ⌈Q/Q_cap⌉); C = N^r · C_ref · ((A/N) / A_ref)^n
PACKED BED chromatography, activated carbon
N = ⌈V_bed / V_max⌉; C = N^0.90 · max(SKID + C_ref · ((V_bed/N)/V_ref)^0.75, floor)
DISC STACK C = N · C_ref · (V_bowl / V_bowl,ref)^n
MEMBRANE AREA C × clamp(A / A_nominal, 1/20, 20)^0.85
EVAPORATORS C × N_effects^0.70 (N ≤ 7), or × 1.8 for MVR
Adjustments, in order
1 floor C = max(C, cost_floor_usd) flow and volume bases
2 facility grade C × G[plant grade] / G[anchor_grade] not for bed basis or grade-independent entries
3 membrane area × ratio^0.85 (capped where the entry declares a cap)
4 effects × N^0.70 or × 1.8 (MVR)
5 CEPCI × CEPCI[cost year] / CEPCI[basis year] all entries are 2026, so 1.0 today
6 installed = purchased × installation_factor
| Facility grade | G |
|---|---|
| commodity_bulk | 0.72 |
| chemical | 0.80 |
| food_grade | 1.00 |
| industrial_biotech | 1.15 |
| single_use | 1.20 |
| food_gmp | 1.30 |
| pilot_plant | 1.70 |
| pharma_gmp | 2.00 |
| sterile_fill_finish | 2.40 |
Batch-window design flow (pharma grades)
Downstream of a batch or fed-batch vessel on a pharma_gmp or sterile_fill_finish plant,
equipment is sized to process one harvest inside a window, not at the annual average flow:
F = max(1, t_cycle / (n_vessels · t_window))
Q_design = Q_avg · F capex only; opex stays on Q_avg
window 8 h: centrifuges, depth filtration, MF, UF, ion exchange, SEC, RP, HIC, membrane chromatography
9 h: affinity 2 h: viral inactivation
From equipment cost to cost per kg
CAPITAL (itemised direct fixed capital, per facility grade)
PC = Σ purchased equipment (incl. seed train and GMP support)
TPDC = PC + installation + PC·(instrumentation + piping + insulation + electrical + buildings + yard + auxiliary)
TPC = TPDC · (1 + engineering + construction)
DFC = TPC · (1 + contractor fee + contingency)
FCI = DFC + wastewater plant installed (× 3.0)
TCI = FCI + working capital + start-up (fraction × DFC)
DFC/PC ranges from 3.67 (chemical) to 8.37 (pharma_gmp) and 9.92 (sterile fill-finish)
OPEX
maintenance 0.05·FCI, insurance 0.01·FCI, local taxes 0.015·FCI, depreciation 0.10·FCI (10 yr)
operators N_OL = √(6.29 + 31.7·P² + 0.23·N_np) P = solids steps (≤ 2), N_np = other steps
labour = operators per shift · relief · 1.18 · wage
overhead = (labour + maintenance) · overhead fraction
energy P [kW] = kW per m³/h · Q/1000; $/yr = P · hours · price (0.10 $/kWh, steam 18 $/GJ)
consumables C = C_catalogue · (Q/Q_ref)^k k = 1 for volume-driven, k = n for spare parts
OPEX = fixed + labour + QC + overhead + energy + consumables + utilities + wastewater + raw materials
hours 8000 per year by default
COST PER KG
COGS/kg = OPEX / annual product mass product = m_product · hours · (1 − batch failure)
MSP = price at which the cash-flow schedule has NPV = 0
screening capital charge/kg = CRF · installed capex / kg, CRF = i(1 + i)^n/((1 + i)^n − 1) = 0.163
Bioreactors
All four bioreactor types run one model (bioreactor_separation with
fermentation_kinetics.simulate_fermentation). The type only picks the mode:
fed_batch → fed-batch; continuous → continuous (chemostat);
everything else → batch. airlift also switches the oxygen-transfer correlation. The
fermenter is priced on its vessel volume, which comes from the cycle time the
kinetics produce.
Bioreactors stirred_tank_bioreactor fed_batch_bioreactor continuous_bioreactor airlift_bioreactor
Grows cells on a sugar and nitrogen feed and turns the substrate into biomass and product, run as a batch, fed-batch, continuous or air-lift culture.
Worked example Stirred Tank Bioreactor · stirred_tank_bioreactor
Scenario: Batch yeast ethanol fermentation
Set beyond the catalogue defaults: organism = yeast, oxygen_regime = anaerobic, temperature_c = 32, fermentation_temperature = 32
- Ethanol titer
- 41.8 g/L
- Productivity
- 1.51 g/L/h
- Batch cycle
- 30 h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Off gas |
|---|---|---|---|
| Flow, L/h | 1,000 | 1,000 | 23,200 |
| Glucose, g/L | 100 | 8.16 | – |
| Ammonium Sulfate, g/L | 25 | 20.9 | – |
| Yeast (S. cerevisiae), g/L | – | 7.5 | – |
| Ethanol, g/L | – | 41.9 | – |
V_work = Q t_cycle; V_vessel = 1.25 V_work
V_work = 1,000 L/h x 30 h = 30,000 L; V_vessel = 1.25 x V_work = 37,500 LPurchased cost: $240k for a 37,500 L vessel (vessel-volume basis, feed 1,000 L/h) (cost floor); $539k for a 430,000 L vessel (vessel-volume basis, feed 10,000 L/h).
Worked example Fed-Batch Bioreactor · fed_batch_bioreactor
Worked example withheld while this model is revised.
Worked example Continuous Bioreactor (Chemostat) · continuous_bioreactor
Worked example withheld while this model is revised.
Worked example Air-Lift Fermentor · air_lift_fermentor
Scenario: Aerobic yeast culture producing lactase in an air-lift
Modelled with the stirred-tank oxygen-transfer and agitation terms; an air-lift has no impeller, so cycle time and power are indicative.
Set beyond the catalogue defaults: organism = yeast
- Lactase titer
- 2.71 g/L
- Cell density
- 9.85 g/L
- Batch cycle
- 45.3 h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Off gas |
|---|---|---|---|
| Flow, L/h | 1,000 | 1,000 | 14,000 |
| Glucose, g/L | 40 | 8.35 | – |
| Yeast (S. cerevisiae), g/L | – | 10 | – |
| Lactase (beta-galactosidase), g/L | – | 2.75 | – |
V_work = Q t_cycle; V_vessel = 1.25 V_work
V_work = 1,000 L/h x 45.3 h = 45,300 L; V_vessel = 1.25 x V_work = 56,600 LPurchased cost: $645k for a 56,600 L vessel (vessel-volume basis, feed 1,000 L/h); $3.57M for a 604,000 L vessel (vessel-volume basis, feed 10,000 L/h) (2 units in parallel).
bioreactor_separation, _run_fermentation_kinetics · fermentation_kinetics.simulate_fermentation, size_production_vessel · gases in fermenter_gas_balance
| Parameter | Default | Note |
|---|---|---|
| titer_basis | predicted | specified, stoichiometric |
| substrate_conversion X | 0.95 | fed-batch 0.92, continuous 0.90, airlift 0.80 |
| product_titer / cell_density | 2 / 12 g/L | used when specified |
| fermentation_temperature | 37 °C | |
| head_pressure_bar / O₂ fraction | 0.5 / 0.2095 | |
| aeration_vvm | 0.5 aerobic, 0 anaerobic | |
| specific_power_kw_m3 | 2.0 aerobic, 0.3 anaerobic | max 5.0 |
| growth_model | haldane | monod, contois |
| feed_substrate_g_l | 500 | fed-batch |
| dilution_rate_per_h | 0.30·μmax | continuous |
| host defaults | μmax 0.4, Y_XS 0.4, Y_PS 0.1, Y_XO2 1.0, Ks 0.1, K_O2 1e-4, m_s 0.03, m_O2 0.02, k_d 0.02, Ki 200 | |
Yields
order user value → molecule database → stoichiometric estimate → host Y_XS (biomass) → host y_ps
degree of reduction γ = (4C + H − 2O − 3N)/C
stoichiometric Y_Cmol = min(1, γ_S/γ_P); Y_theo = Y_Cmol·(MW_P/C_P)/(MW_S/C_S); Y = 0.65·Y_theo
biomass ceiling D_G = 200 + 18(6 − C)^1.8 + exp{[(3.8 − γ)²]^0.16·(3.6 + 0.4C)} (Heijnen & van Dijken 1992)
−ΔG_cat = 118·γ aerobic, 40 anaerobic
Y_X,max = 1/(1 + D_G/ΔG_cat); Y_XS clamped to it
element check (Y_XS, Y_i) projected onto a feasible C/H/O/N/electron balance; unlocked yields only move down
Oxygen supply
u_g = vvm·V/60 / (πD²/4), D = (4V/(π·H/D))^(1/3)
kLa stirred, coalescing 3600 · 0.026 · (P/V)^0.40 · u_g^0.50 (van 't Riet 1979)
stirred, non-coalescing 3600 · 0.002 · (P/V)^0.70 · u_g^0.20
bubble column 3600 · 0.32 · u_g^0.7; airlift × 0.7
× viscosity penalty (1 + k_visc·X)^n_visc
C* water solubility at T and P_abs × 10^−(0.14·I + 0.014·c_org) factor [0.3, 1]
OUR_max = 0.90 · (vvm·60/24.5) · y_O2 · 32 g/(L·h) gas feed ceiling
Kinetics (adaptive Euler, dt 0.0005–0.25 h)
temperature m_G = 4.5·exp[−(69000/8.314)(1/T − 1/298)]; m_s, m_O2 × m_G(T)/m_G(T_ref)
pH μmax × r(pH)/r(pH_opt), r(x) = 1/(1 + 10^(pH_low − x) + 10^(x − pH_high))
substrate Monod S/(Ks + S); Haldane S/(Ks + S + S²/Ki); Contois S/(Ksx·X + S)
dissolved O₂ kLa·(C* − C) = [μmax·f_S·C/(C + K_O2)/Y_XO2 + m_O2]·X quadratic in C
product f_P = max(0, 1 − P/Pmax)^n Levenspiel
growth μ = μmax · f_S · f_O2 · f_P; if OUR > OUR_max: μ ≤ (OUR_max − m_O2·X)·Y_XO2/X
uptake q_s = μ/Y_XS + m_s + β·f_P/Y_PS Herbert–Pirt
balances dX/dt = (μ − k_d − D)·X
dP/dt = (α·μ + β·f_P)·X − D·P, α = Y_PS/Y_XS Luedeking–Piret
dS/dt = −q_s·X + D·(S_f − S)
intracellular product ≤ 0.30 g/g DCW (0.35 inclusion bodies)
DO control below 0.5·setpoint, stirrer speed N/N₀ rises (≤ 3); P/V = P₀·(N/N₀)³
FED-BATCH V₀ = 0.45·V_max
on demand F = min(0.02·V_max, [q_s·X·V + (0.05·Ki − S)·V] / S_f)
exponential plan = (μ_set/Y_XS + m_s)·X·V, μ_set = 0.25·μmax
CONTINUOUS washout if D + k_d > μmax·f_S(S_feed); steady state after 5/D at < 0.2 %/h change
STOP harvest titer → productivity peak (P/(t + t_turnaround) < 0.95 × max) → washout/steady
→ vessel full → substrate spent → stall (μ ≤ 0.02·μmax) → time limit (200 h)
HEAT metabolic 14.4 kJ/g O₂ × OUR (anaerobic 0.55 kJ/g substrate) + agitation − evaporation
Mass balance of the broth
SPECIFIED TITER
S_X = X/Y_XS, S_P = P/Y_PS, S_growth = the binding one
S_required = S_growth / (1 − f_m) f_m = maintenance fraction ≤ 0.5
fed-batch feed F = (S_req + R − S₀) / (1 − (S_req + R)/c_f), R = 3 g/L residual
shortfall X, P × S_available/S_required (a locked titer is refused instead)
nitrogen X ≤ N_available / f_N, f_N = 28.014/246.26 (biomass C10H18O5N2)
PREDICTED / STOICHIOMETRIC
S_consumed = X·S_in; X = Y_XS·S_consumed; P = Y_PS·S_consumed (or from the integrator)
titer ceiling per product min(solubility/5, top of typical range), class wall when a titer is declared
GASES (element balance, g per L broth)
CO₂ = C_substrate − C_biomass − C_products
NH₃ = max(0, N_out − N_substrate); H₂O = (H_in + H_NH3 − H_out)/2
O₂ = (O_out + O_in,CO2/H2O − O_in)/2 anaerobic: routed to an electron sink (H₂)
water stripped = 1.20 · air per L · [W(T, 1) − W(20 °C, 0.5)] · 1000, ≤ 5 % of liquid
VOLUME
Q_out = (m_in + Q_fed)·1000 / (1000 − g_net), g_net = O₂ + CO₂,fixed − CO₂ − H₂O,stripped
Sizing (sets capex)
cycle fill = drain = 0.5·(V_unit/1000)^0.35 h; sterilise 1.5; inoculate 0.5; clean 2.0 h
batch V_work = Q · t_cycle (fixed point with n vessels); V_vessel = V_work · 1.25
continuous V_work = Q / D; V_vessel = V_work · 1.25
n = ⌈V_vessel / V_max⌉ V_max microbial 500 000, mammalian/insect 25 000, plant cell 100 000 L
seed train stages N = ⌈ln(V_p/V₀)/ln(1/r)⌉ ≤ 5, r = 0.10 microbial / 0.20 mammalian, V₀ 500 / 800 L
each stage priced on its own volume × n_trains^0.90
capex C = n^0.90 · C_ref · ((V_vessel/n) / 48 000 L)^0.65, floor $150k
anaerobic commodity tank anchor $1.388M at 3 785 000 L (NREL F-300)
- Refused: aeration on an anaerobic step, no usable nitrogen source, a declared titer the substrate or kinetics cannot reach, no growth from the pitch, CO₂ fixation beyond the CO₂ fed.
- The perfusion bioreactor was removed on 2026-09-23. A flowsheet that still names it gets a named refusal pointing to
continuous_bioreactor.
- Exponent n
- 0.65
- Base cost
- $832k at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Largest vessel
- 500,000 L
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 2.0
- Cost floor
- $150k
- Power
- 60 kW per m³/h
- Exponent n
- 0.65
- Base cost
- $1.06M at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Largest vessel
- 500,000 L
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 2.1
- Cost floor
- $150k
- Power
- 120 kW per m³/h
- Exponent n
- 0.65
- Base cost
- $915k at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Largest vessel
- 500,000 L
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 2.1
- Cost floor
- $150k
- Power
- 17 kW per m³/h
- Exponent n
- 0.65
- Base cost
- $666k at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Largest vessel
- 800,000 L
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 2.0
- Cost floor
- $150k
- Power
- 30 kW per m³/h
Reactors & biomass processing
Conversion reactor conversion_reactor enzymatic_hydrolysis
Converts a feed component into a product in a stirred reactor, by a chemical reaction or by enzymes breaking down a polymer such as cellulose.
Worked example Conversion Reactor · conversion_reactor
Scenario: Saccharifying liquefied starch to glucose
Set beyond the catalogue defaults: substrate_component = Maltodextrin (DE 10), product_component = Glucose
- Maltodextrin converted
- 90 %
- Glucose out
- 304 g/L
- Reactor volume
- 30,000 L
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 1,000 | 987 |
| Maltodextrin (DE 10), g/L | 300 | 30.4 |
| Glucose, g/L | – | 304 |
V_liquid = Q tau; V_vessel = 1.25 V_liquid
V_liquid = 1,000 L/h x 24 h = 24,000 L; V_vessel = 1.25 x V_liquid = 30,000 LPurchased cost: $750k for a 30,000 L vessel (vessel-volume basis, feed 1,000 L/h); $3.76M for a 300,000 L vessel (vessel-volume basis, feed 10,000 L/h).
Worked example Enzymatic Hydrolysis · enzymatic_hydrolysis
Scenario: Cellulase hydrolysis of pretreated stover
- Cellulose converted
- 90 %
- Glucose out
- 100 g/L
- Reactor volume
- 105,000 L
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 1,000 | 996 |
| Cellulose, g/L | 100 | 10 |
| Xylose, g/L | 50 | 50.2 |
| Lignin, g/L | 50 | 50.2 |
| Glucose, g/L | – | 100 |
V_liquid = Q tau; V_vessel = 1.25 V_liquid
V_liquid = 1,000 L/h x 84 h = 84,000 L; V_vessel = 1.25 x V_liquid = 105,000 LPurchased cost: $159k for a 105,000 L vessel (vessel-volume basis, feed 1,000 L/h); $797k for a 1,050,000 L vessel (vessel-volume basis, feed 10,000 L/h).
conversion_reactor_separation, _conversion_reactor_single_row, resolve_conversion_reaction
| Parameter | Conversion reactor | Enzymatic hydrolysis preset |
|---|---|---|
| reaction | richest glucan → glucose | cellulose → glucose |
| conversion X | 0.90 | 0.90 (X_max 0.95) |
| mass yield Y | 1.111 g/g | 1.111 |
| residence time τ | 24 h | 84 h |
| temperature | 50 °C | 48 °C |
| catalyst dose / price | 10 g/kg / $5/kg | 20 g/kg / $6.5/kg |
| mixing duty | from the feed (below) | unagitated pump-around, 0.02 kW/m³ |
MODES
stoichiometric X and τ as set
equilibrium K(T) = K_ref·exp[−(ΔH·1000/8.314)(1/T − 1/T_ref)]; X ≤ K/(1 + K)
kinetic k = k_ref·exp[−(Ea·1000/8.314)(1/T − 1/T_ref)] k_ref 0.035 /h at 50 °C
k_app = k/(1 + P/K_I); x′ = X/X_max
batch/PFR τ = −ln(1 − x′)/k; CSTR τ = x′/(k(1 − x′))
enzyme decay τ = −(1/k_d)·ln[1 + (k_d/k)·ln(1 − x′)], k_d = ln2/t½; τ ≤ 168 h
BALANCE (per reaction row)
converted = X·m_S,in
product_i += converted · Y_i
substrate = (1 − X)·m_S,in
Δwater = −X·(ΣY − 1)·m_S,in X scaled down if the water runs out
DUTY
sensible (T_rx − T_in)·ṁ·4.186/3600; reaction ΔH·(converted/MW_repeat)/3600
SIZING
V_liquid = Q · max(τ, 0.1 h); V_vessel = V_liquid · 1.25 → capex on VOLUME
capex n^0.90 · C_ref · ((V/n)/V_ref)^0.70
AGITATION (one table, both tiers, on LIQUID volume; Walas 1990 Ch. 10)
duty kW/m³ band
blending 0.07 0.04–0.10
homogeneous reaction 0.20 0.10–0.30
reaction with heat transfer 0.65 0.30–1.00
liquid–liquid 1.00 0.70–1.30
gas–liquid 1.50 1.00–2.00
slurry 2.00 1.50–2.50
unagitated pump-around 0.02 NREL T-310
default duty: insoluble solids > 10 wt% (whole stream, water by volume) → slurry;
otherwise reaction with heat transfer if the step has a jacket duty, else homogeneous.
agitation_kw_per_m3 on the step wins. power = P/V · V_liquid + declared ancillary kWh/m³ · Q
- Exponent n
- 0.7
- Base cost
- $600k at 1,000 L/h
- Largest single unit
- 15,000 L/h
- Largest vessel
- 450,000 L
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 15.75 kW per m³/h
- Exponent n
- 0.7
- Base cost
- $743k at 39,600 L/h
- Largest single unit
- 11,310 L/h
- Largest vessel
- 1,200,000 L
- Repeat-unit exponent
- 0.9
- Anchor grade
- commodity_bulk
- Installation factor
- 2.0
- Cost floor
- $80k
- Power
- 2.3 kW per m³/h
Dilute-acid pretreatment pretreatment_reactor
Cooks lignocellulosic biomass in hot dilute acid so the hemicellulose dissolves and the cellulose opens up to enzymes.
Worked example Pretreatment Reactor (Dilute Acid) · pretreatment_reactor
Scenario: Dilute-acid pretreatment of corn stover
- Xylose released
- 51.7 g/L
- Combined severity
- 1.06
- Steam
- 245 kg/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Waste | Heavy phase |
|---|---|---|---|
| Flow, L/h | 1,000 | 209,000 | 1,120 |
| Cellulose, g/L | 100 | – | 81.8 |
| Hemicellulose (Xylan), g/L | 60 | – | 5.35 |
| Lignin, g/L | 50 | – | 44.6 |
| Xylose, g/L | – | – | 51.7 |
| Glucose, g/L | – | – | 7.93 |
log R0 = log10(tau exp((T - 100)/14.75)); CS = log R0 - pH
log R0 = log10(5 min x exp((158 - 100) / 14.75)) = 2.41; CS = 2.41 - 1.35 = 1.06Purchased cost: $1.35M at 1,000 L/h (cost floor); $1.35M at 10,000 L/h (cost floor).
pretreatment_reactor_separation (NREL TP-5100-47764 Area 200; Saeman 1945)
| Parameter | Default | Note |
|---|---|---|
| temperature / time | 158 °C / 5 min | |
| acid | 18 mg/g dry | H₂SO₄ |
| xylan → xylose / furfural | 0.85 / 0.05 | |
| glucan → glucose / HMF | 0.08 / 0.003 |
SEVERITY
pH = clamp(−log10 M_acid, 0.5, 3)
log R₀ = log10(τ · exp((T − 100)/14.75)); CS = log R₀ − pH
f_furf ≥ 0.02 + 0.055·max(0, CS − 0.8)
REACTIONS (g/h)
xylose = 1.1363·f_x·m_xylan furfural = 0.7273·f_f·m_xylan
glucose = 1.1111·f_g·m_glucan HMF = 0.7778·f_h·m_glucan
STEAM AND FLASH
Cp = x_s·1.4 + (1 − x_s)·4.18
steam = m·Cp·(T − T_feed)/2100 kg/h
flash = Cp·(T − 100)/2257; 30 % of the furfural leaves with the vapour
- Exponent n
- 0.78
- Base cost
- $13.8M at 250,000 L/h
- Largest single unit
- 100,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Cost floor
- $1.5M
- Power
- 4 kW per m³/h
Anaerobic digester anaerobic_digester
Lets microbes break organic waste down to biogas, a mix of methane and carbon dioxide, without oxygen.
Worked example Anaerobic Digester · anaerobic_digester
Worked example withheld while this model is revised.
anaerobic_digestion_separation (Metcalf & Eddy 5th ed., ch. 13)
| Parameter | Default | Note |
|---|---|---|
| HRT | 20 d | ≥ 10 |
| organic loading rate | 3 kg VS/m³/d | |
| temperature | 37 °C | |
| biomass yield Y_x | 0.07 g VSS/g COD |
destroyed_i = x_type · m_i sugar 0.90, organic acid 0.95, protein 0.75, lipid 0.78, cells 0.50 … ≤ 75 % of VS
COD removed = Σ COD_factor · destroyed
Y_CH4 = (22.414/64) · (1 − 1.42·Y_x) Nm³/kg COD
CH4 = Y_CH4 · COD_removed; CO2 = C_destroyed − CH4 − C in new biomass
biomass = Y_x · COD_removed
VOLUME V_liquid = max(Q·24·HRT, VS_in·24/OLR)
V_vessel = V_liquid · 1.15 (declared headroom, band 1.10–1.25) → capex on VOLUME
power 0.006 kW/m³ · V_liquid + declared ancillary 0.6 kWh/m³ feed (pumps, blower) same in both tiers
heating ṁ·4.0·ΔT·(1 − recovery)·1.18; biogas heat V_CH4·35.8 MJ/Nm³
- Exponent n
- 0.78
- Base cost
- $1.31M at 10,000 L/h
- Largest single unit
- 16,000 L/h
- Largest vessel
- 8,000,000 L
- Repeat-unit exponent
- 0.9
- Anchor grade
- commodity_bulk (grade-independent)
- Installation factor
- 2.2
- Cost floor
- $150k
- Power
- 3.5 kW per m³/h
Biomass digestion (PHA release) biomass_digestion
Digests the cell mass around PHA granules with hypochlorite, optionally with SDS, so the polymer granules are freed for recovery.
Worked example Biomass Digestion (PHA Granule Release) · biomass_digestion
Scenario: Hypochlorite digestion to release PHA granules
- PHA freed
- 57 kg/h
- Granule purity
- 98.5 %
- Molecular weight lost
- 48 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 1,000 | 4,090 |
| Bacteria (generic), g/L | 40 | 0.208 |
| Polyhydroxyalkanoate (PHA), g/L | 60 | 13.9 |
f_dig = f_max (1 - exp(-t / tau)) f_dose (hypochlorite f_max 0.98, tau 0.30 h)
f_dig = 0.98 x (1 - exp(-2 h / 0.30 h)) x 1 = 0.979Purchased cost: $661k at 1,000 L/h; $3.24M at 10,000 L/h (2 units in parallel).
biomass_digestion_separation (Berger 1989; Jacquel 2008)
| Parameter | Hypochlorite | Enzymatic |
|---|---|---|
| f_max / τ | 0.98 / 0.30 h | 0.93 / 0.80 h |
| temperature / pH | 30 °C / 10.5 | 52 °C / 8.5 |
| dose | NaOCl 20 % v/v | protease 20 g/kg, lysozyme 5 g/kg |
dilution V_req = (m_cells + m_PHA) / DCW_set(30 g/L); V_susp = max(Q, V_req)
extent f_dig = f_max · (1 − e^(−t/τ)) · f_dose
hypochlorite NaOCl demand = 1.2·m_cells (× 0.5 with SDS); f_dose = min(1, NaOCl/demand)
MW loss = clamp(0.20 + 0.10(t − 1)⁺ + 0.30(pct − 5)⁺/25, 0.20, 0.50)
masses digested = m_cells·f_dig; PHA freed = m_PHA·(1 − 0.05)
energy heat = Q_out·4180·ΔT/3.6e6; steam = heat/0.85
- Exponent n
- 0.6
- Base cost
- $460k at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 8 kW per m³/h
Solid–liquid separation
Centrifuges, cake filters and settlers split a stream into a solids-rich heavy phase and a clarified light phase. What matters is how much of the suspended material each one captures, and how dry it leaves the solids. The code settles capture from Stokes settling wherever it knows a particle size, and refuses to guess one where it does not.
Shared centrifuge balance
dissolved cap 0 for cells, lipids and insoluble species; else solubility(T, pH)
dissolved = min(C, cap); surplus = max(0, C − cap)
capture ε from the settling model (below), ≤ 0.995
heavy solids m_heavy,p = Σ surplus·Q·ε; carry-over m_light,p = Σ surplus·Q·(1 − ε)
heavy DM C_DM = clamp(dm%/100, 0.01, 0.99) · 1000 g/L
volumes V_heavy = m_heavy,p / C_DM; V_light = Q − V_heavy
cake water C_w,heavy = max(0, 1000 − C_DM − Σ dissolved); m_w,heavy = min(m_w,in, C_w,heavy·V_heavy)
each solute heavy = dissolved·V_heavy + surplus·Q·ε; light = dissolved·V_light + surplus·Q·(1 − ε)
particle basis d = Σ(size·c)/Σc; Δρ = Σ(max(5, ρ_p − 1000)·c)/Σc over cells and suspended species
Stokes v = Δρ·g·d² / (18μ)
Disc-stack centrifuge disc_centrifugation
Spins a dilute broth through a stack of conical discs so cells and debris settle out, giving a clear liquid and a concentrated sludge.
Worked example Disc Stack Centrifugation · centrifugation_disc
Worked example withheld while this model is revised.
centrifugation_separation → _size_disc_stack_capacity_and_capture → disc_stack_design.design_disc_stack (catalogue unit centrifugation_disc)
| Parameter | Default | Note |
|---|---|---|
| separation_efficiency | 0.98 | capture target |
| heavy_phase_dm | 20 % | |
| bowl_speed_rpm | 8000 | 3000–12000 |
| sigma_efficiency_factor η | 0.45 | |
| discharge_interval_min | 10 | 4–30; 8 s ejection |
| max_machines | 16 | ≤ 24 |
| particle GSD | 1.8 |
SIGMA (designed geometry)
Σ = (2π/3) · N_ch · ω²/g · (r_o³ − r_i³)/tanθ · f_corr ω = 2π·rpm/60
r_o = 0.88·R_bowl, r_i = 0.33·r_o, θ = 40°, gap 1 mm, RCF = ω²R/g ≤ 15 000
search R 0.068–0.25 m, 30–200 channels
CAPTURE
G(d) = min(1, v(d)·η·Σ / Q_machine) integrated over a log-normal size distribution
PER-MACHINE CAPACITY (uptime u = 60·t_int / (60·t_int + 8 s))
separation Σ / (Σ per L/h at the capture target) · u
hydraulic 55 m³/m²/h · πR² · 1000 · u
sludge V_sl = π(R² − r_o²)·0.65R·0.55; wet V_sl/(t_int/60)·u; dry V_sl·0.35/(t_int/60)·u
machines smallest N meeting all four limits, smallest bowl envelope
FREE OIL (above 0.5 g/L light liquid)
oil recovery 0.97 demulsified (0.95–0.99), 0.55 emulsion; water in oil 0.3 / 5 wt %
CAPEX (geometry, no repeat-unit discount)
purchased = N × $650k × (πR²H / (π·0.17²·0.4))^0.62
- Refused when solids carry no particle size and none is declared: capture would be a guess.
- Refused when more than the machine limit is needed, or when the wet discharge exceeds the feed.
- Exponent n
- 0.62
- Base cost
- $650k at 1,000 L/h
- Largest single unit
- 150,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 2.2
- Batch window
- 8 h
- Power
- 2.5 kW per m³/h
- Exponent n
- 0.67
- Base cost
- $450k at 1,000 L/h
- Largest single unit
- 50,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 2.0
- Batch window
- 8 h
- Power
- 1.5 kW per m³/h
Decanter centrifuge decanter_centrifugation
Separates a solids-heavy slurry in a horizontal spinning bowl, with a scroll that pushes the settled solids out continuously.
Worked example Decanter Centrifuge · decanter_centrifuge
Scenario: Decanting mycelium from citric acid broth
The balance applies the stated 0.90 capture; the grade-efficiency model alone would capture more of 20 um mycelium.
- Mycelium captured
- 90 %
- Cut size d50
- 1.36 um
- Machines in parallel
- 1
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Light phase | Heavy phase |
|---|---|---|---|
| Flow, L/h | 1,000 | 930 | 69.8 |
| Aspergillus niger, g/L | 25 | 2.69 | 322 |
| Citric Acid, g/L | 100 | 99.4 | 107 |
v50 = Q_m / (2 Sigma eta); d50 = sqrt(18 mu v50 / (drho g))
v50 = 2.78e-04 m3/s / (2 x 8,000 m2 x 0.2); d50 = sqrt(18 x 1.17 mPa s x v50 / (100 kg/m3 x 9.81 m/s2)) = 1.36 umPurchased cost: $475k at 1,000 L/h; $2.55M at 10,000 L/h.
centrifugation_separation → _evaluate_non_disc_centrifuge_capacity_and_capture → _model_centrifuge_sigma
| Parameter | Default | Note |
|---|---|---|
| separation_efficiency | 0.9 | |
| heavy_phase_dm | 30 % | |
| Σ per machine / η | 8000 m² / 0.20 | |
| particle / Δρ / GSD | 4 µm / 80 kg/m³ / 2.0 | fallbacks |
| max_machines | 8 |
GRADE (Ambler) v_50 = Q_m / (2·Σ·η); d50 = √(18μ·v_50 / (Δρ·g))
G(d) = min(1, 0.5·(d/d50)²) G(d50) = 0.5; integrated over the log-normal
ONE FLEET Q_σ = per-machine flow at which the grade integral reaches separation_efficiency
N = ⌈max(Q/Q_hydraulic, Q/Q_σ)⌉
capture evaluated at Q/N per machine (≥ target); capex bills the same N
N > 8 → refused: decanter_parallel_limit_exceeded
INSTALLED declared N → capture at that N, never resized; Q/N above the hydraulic rating → refused
NO SOLIDS nothing to capture → hydraulic sizing, capture 1.0
- Exponent n
- 0.73
- Base cost
- $380k at 1,000 L/h
- Largest single unit
- 80,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 3 kW per m³/h
Basket centrifuge basket_centrifugation
Spins a slurry against a filter cloth in a perforated basket, holding back crystals or coarse particles as a cake.
Worked example Basket Centrifuge · basket_centrifuge
Scenario: Dewatering fumaric acid crystals
Set beyond the catalogue defaults: heavy_phase_dm = 70
- Crystals captured
- 98 %
- Wash water
- 58.7 L/h
- Mother liquor left in cake
- 35.8 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Light phase | Heavy phase |
|---|---|---|---|
| Flow, L/h | 1,000 | 917 | 142 |
| Fumaric Acid, g/L | 150 | 13.6 | 971 |
W = V_wash / V_liq; R = 0.01 + 0.99 x exp(-2.0 W)
W = 58.7 / 112 L/h = 0.523; R = 0.01 + 0.99 x exp(-2.0 x 0.523) = 0.358Purchased cost: $625k at 1,000 L/h; $4.17M at 10,000 L/h (5 units in parallel).
centrifugation_separation (filtering centrifuge: cake wash applies)
| Parameter | Default | Note |
|---|---|---|
| separation_efficiency | 0.95 | |
| heavy_phase_dm | 30 % | |
| wash_water_ratio | 0.3 kg/kg cake | ≤ 3.0 |
CAPTURE (cloth sieving, not settling)
G(d) = 0.98 above the cloth cut, 0.70 between 0.5× and 1× the cut, 0 below (filtration ladder)
capture = ∫ G(d)·f_m(d) dd over the log-normal size basis; cloth cut default 10 µm [1–100]
refused when the median particle is below the cut; no declared size → stated capture, flagged
CAKE WASH (displacement)
V_liq = V_heavy − Σ m_solid/ρ
V_wash = ratio · m_cake / 1000; W = V_wash / V_liq
residual R = 0.01 + 0.99·e^(−2.0·W)
kept = max(R·dissolved_in_cake, saturated-liquor floor)
capacity hydraulic wall 2 000 L/h; N = ⌈Q / 2000⌉
- Exponent n
- 0.65
- Base cost
- $500k at 1,000 L/h
- Largest single unit
- 2,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 7.5 kW per m³/h
Three-phase decanter three_phase_decanter
Splits a feed into a light oil phase, a water phase and solids in one spinning bowl.
Worked example Three-Phase Decanter · three_phase_decanter
Scenario: Recovering oil from a lysed oleaginous yeast broth
- Oil recovery
- 92.1 %
- Oil left in the water
- 0.501 wt%
- Solids to the cake
- 27 kg/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Organic phase | Heavy phase |
|---|---|---|---|
| Flow, L/h | 1,000 | 61.5 | 941 |
| Triolein, g/L | 60 | 898 | 5.02 |
| Cell Debris, g/L | 30 | – | 31.9 |
unrecovered = residual% x m_heavy; recovery = 1 - unrecovered / F_oil
recovery = 1 - (0.501 % x 944 kg/h) / 60 kg/h = 0.921Purchased cost: $710k at 1,000 L/h; $3.81M at 10,000 L/h.
three_phase_decanter_separation
| Parameter | Default | Note |
|---|---|---|
| oil recovery | 0.90 | [0.85, 0.95] |
| residual_oil_wt_pct | 0.5 | [0.1, 5.0] |
| water_in_oil_wt_pct | 2.0 |
unrecovered oil = min(F_oil·(1 − rec), residual% · (m_feed − F_oil·rec))
recovery = 1 − unrecovered / F_oil
light phase oil + water x_w = m_oil·w/(1 − w)
heavy phase aqueous + all solids
- Refused when the feed has no free light liquid, when the oil is not demulsified, or when Δρ < 0.05 g/mL.
- Exponent n
- 0.73
- Base cost
- $494k at 1,000 L/h
- Largest single unit
- 60,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 3.5 kW per m³/h
Shared cake-filter balance
REJECTION σ
solid share × (0.98 if size > cutoff, 0.70 if size > 0.5·cutoff, else 0)
assumed sizes: cells 1.0 µm, colloid 0.5, crystal 5, oil 5
STATED CAPTURE (press 0.98, drum 0.95, belt 0.95)
V_cake = min(Σ m·share·capture / DM_max, 0.95·Q), ≥ Σ(m·share·capture/ρ)/0.64 (close packing)
NO STATED CAPTURE (depth, nutsche)
V_r = Q·(1 − filtrate_fraction), ≥ Σ(m·σ)/DM_max, then packing relief
STREAMS
V_wash = V_r·N; V_filtrate = Q − V_r + V_wash; V_cp = Q − V_r
liquor retained = V_r/(V_r + V_cp) · e^(−N)
solid retained = m·capture or m·V_r/(V_r + (1 − σ)·V_cp) · e^(−N(1 − σ))
CAKE AREA (press, drum, belt → capex basis)
t = (μαc / 2ΔP)·(V/A)² + μR_m·(V/A)/ΔP solved for V/A
A = Q · t_cycle / (V/A)
α = stated, else Carman–Kozeny 180(1 − ε)/(1100·d²·ε³); ε 0.4; R_m 1e11 m⁻¹
capex: N = max(1, ⌈A/A_max⌉, ⌈Q/(1.1·max_cap)⌉); C = N^0.9 · base · ((A/N)/A_ref)^n
ΔP bar t_cycle h d µm α m/kg DM g/L wash cutoff µm
filter press 12 2.0 10 1e12 350 1.0 2
rotary drum 0.7 0.03 10 1e12 250 0.5 1
belt 0.45 0.05 50 3e11 200 0.5 5
nutsche 1.0 2.0 30 Carman–Kozeny 400 2.0 2
Depth filtration depth_filtration
Traps cells and fine debris inside a thick porous filter medium, the usual step to clarify broth before sterile filtration.
Worked example Depth Filtration · depth_filtration
Scenario: Polishing fine debris out of an enzyme centrate
Set beyond the catalogue defaults: filter_cutoff = 0.5
- Enzyme recovered in the filtrate
- 97.1 %
- Debris removed
- 79.7 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Filtrate | Retentate |
|---|---|---|---|
| Flow, L/h | 1,000 | 1,000 | 80 |
| Cell Debris, g/L | 2 | 0.406 | 19.9 |
| Amylase, g/L | 3 | 2.91 | 1.1 |
A = V / loading (single-use cartridges, 400 L per m2)
A = 1,000 L/h / 400 L/m2 = 2.5 m2 of cartridge per hour; 20,000 m2/yr over 8,000 h at $25/m2 = $500,000/yr of mediaPurchased cost: $120k at 1,000 L/h; $588k at 10,000 L/h (2 units in parallel).
filtration_separation
| Parameter | Default | Note |
|---|---|---|
| filtrate_fraction | 0.92 | |
| filter_cutoff | 1.0 µm | |
| TMP | 1.5 bar | |
| loading | 400 L/m² |
balance shared filter balance, no stated capture
area ratio = clamp(100 LMH / film-theory average flux, 1, 20), CF = Q/V_r capped at 4 for capex
thorough A = (permeate/100)·ratio; N = ⌈A/200 m²⌉; price × ratio^0.85
cartridges Q·hours / 400 L/m²
- Exponent n
- 0.6
- Base cost
- $120k at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 1.6
- Batch window
- 8 h
- Power
- 1.5 kW per m³/h
Filter press filter_press_filtration
Pumps a slurry into cloth-lined chambers between plates, building a solid cake while the filtrate drains away.
Worked example Filter Press (Plate & Frame) · filter_press
Scenario: Filter-pressing mycelium from citric acid broth
- Mycelium kept in the cake
- 98 %
- Cake area
- 2.42 m2
- Average flux
- 414 L/m2/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Filtrate | Retentate |
|---|---|---|---|
| Flow, L/h | 1,000 | 1,000 | 69.8 |
| Aspergillus niger, g/L | 25 | 0.5 | 351 |
| Citric Acid, g/L | 100 | 97.4 | 36.9 |
t = (mu alpha c / 2 dP) (V/A)^2 + mu R_m (V/A) / dP; A = Q t_cycle / (V/A)
2 h = (0.001 Pa s x 1.00e+12 m/kg x 25 kg/m3 / (2 x 12 bar)) (V/A)^2 + 0.001 x 1e11 /m x (V/A) / 12 bar -> V/A = 0.827 m3/m2; A = 1 m3/h x 2 h / 0.827 m3/m2 = 2.42 m2Purchased cost: $211k at 1,000 L/h; $1.06M at 10,000 L/h.
filtration_separation · cake area in rate_based_models
stated capture 0.98; ΔP 12 bar; 2 h cycle; cake DM 350 g/L
capex on cake area A (A_ref 2.65 m², A_max 400 m² per press)
- Exponent n
- 0.7
- Base cost
- $180k at 1,000 L/h
- Largest single unit
- 20,000 L/h
- Largest unit area
- 400 m²
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 2 kW per m³/h
Rotary vacuum drum filter rotary_vacuum_filtration
Pulls liquid through a cloth on a rotating drum under vacuum, leaving a cake that is scraped off on every turn.
Worked example Rotary Vacuum Drum Filter · rotary_vacuum_filter
Scenario: Removing mycelium from citric acid broth
- Mycelium kept in the cake
- 95 %
- Cake area
- 1.43 m2
- Average flux
- 697 L/m2/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Filtrate | Retentate |
|---|---|---|---|
| Flow, L/h | 1,000 | 953 | 94.8 |
| Aspergillus niger, g/L | 25 | 1.31 | 251 |
| Citric Acid, g/L | 100 | 98.9 | 60.8 |
t = (mu alpha c / 2 dP) (V/A)^2 + mu R_m (V/A) / dP; A = Q t_cycle / (V/A)
0.03 h = (0.001 Pa s x 1.00e+12 m/kg x 25 kg/m3 / (2 x 0.7 bar)) (V/A)^2 + 0.001 x 1e11 /m x (V/A) / 0.7 bar -> V/A = 0.0209 m3/m2; A = 1 m3/h x 0.03 h / 0.0209 m3/m2 = 1.43 m2Purchased cost: $307k at 1,000 L/h; $1.61M at 10,000 L/h.
filtration_separation
stated capture 0.95; ΔP 0.7 bar; cycle 0.03 h; cake DM 250 g/L
capex on cake area A (A_ref 1.55 m², A_max 150 m² per drum)
- Exponent n
- 0.72
- Base cost
- $260k at 1,000 L/h
- Largest single unit
- 12,000 L/h
- Largest unit area
- 150 m²
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 6 kW per m³/h
Vacuum belt filter belt_filtration
Draws the liquid out of a slurry through a moving filter cloth under vacuum, washing the cake before it is discharged.
Worked example Belt Filter · belt_filter
Scenario: Belt-filtering mycelium from citric acid broth
- Mycelium kept in the cake
- 95 %
- Cake area
- 1.43 m2
- Average flux
- 700 L/m2/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Filtrate | Retentate |
|---|---|---|---|
| Flow, L/h | 1,000 | 941 | 118 |
| Aspergillus niger, g/L | 25 | 1.33 | 201 |
| Citric Acid, g/L | 100 | 98.6 | 60.8 |
t = (mu alpha c / 2 dP) (V/A)^2 + mu R_m (V/A) / dP; A = Q t_cycle / (V/A)
0.05 h = (0.001 Pa s x 3.00e+11 m/kg x 25 kg/m3 / (2 x 0.45 bar)) (V/A)^2 + 0.001 x 1e11 /m x (V/A) / 0.45 bar -> V/A = 0.035 m3/m2; A = 1 m3/h x 0.05 h / 0.035 m3/m2 = 1.43 m2Purchased cost: $178k at 1,000 L/h; $1M at 10,000 L/h.
filtration_separation
stated capture 0.95; under 3 kg polymer/t DS: capture = 0.50 + (cap − 0.50)·(dose/3)
ΔP 0.45 bar; cycle 0.05 h; cake DM 200 g/L
capex on cake area A (A_ref 1.53 m², A_max 200 m²)
polymer $/yr = V_m³/yr · 0.030 t/m³ · dose · $4/kg
- Exponent n
- 0.75
- Base cost
- $150k at 1,000 L/h
- Largest single unit
- 30,000 L/h
- Largest unit area
- 200 m²
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 1 kW per m³/h
Nutsche filter nutsche_filtration
Filters a batch of slurry through a flat filter plate in a closed vessel, where the cake can be washed in place.
Worked example Nutsche Filter · nutsche_filter
Worked example withheld while this model is revised.
filtration_separation
no stated capture; ΔP 1.0 bar; 2 h cycle; 2 diavolumes wash; DM floor 400 g/L
capex on flow, × the membrane area ratio (nominal 100 LMH) in the classic tier
- Exponent n
- 0.6
- Base cost
- $350k at 1,000 L/h
- Largest single unit
- 1,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 2 kW per m³/h
Flocculation flocculation
Adds a flocculant so fine particles clump into larger flocs that settle or filter more easily.
Worked example Flocculation / Coagulation · flocculation
Scenario: Flocculating cell debris out of an E. coli homogenate
- Debris captured
- 89 %
- Polymer dose
- 75 mg/L
- Settler area
- 1.2 m2
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Waste |
|---|---|---|---|
| Flow, L/h | 1,000 | 657 | 343 |
| Cell Debris, g/L | 15 | 2.51 | 38.9 |
| Amylase, g/L | 3 | 3.03 | 2.93 |
theta = D_s / D_sat; f_agg = 0.95 x 4 theta (1 - theta); capture = f_agg G(d_floc) + (1 - f_agg) G(d_primary)
theta = 5 / 10 kg/t DS = 0.5; f_agg = 0.95 x 4 x 0.5 x (1 - 0.5) = 0.95; capture = 0.95 x 0.937 + (1 - 0.95) x 1.71e-04 = 0.89Purchased cost: $129k at 1,000 L/h; $515k at 10,000 L/h.
flocculation_separation
DOSE (per tonne of suspended dry solids, La Mer bridging)
D_s = dose / X_ss; default dose = D_opt by class
pam_sludge 5 kg/t DS [1–10] (WEF MOP-8); cationic_harvest 50 kg/t DS [20–150] (McNerney 2015)
θ = min(1, D_s / D_sat), D_opt = 0.5·D_sat
E(θ) = 4θ(1 − θ); f_agg = 0.95·E(θ) θ > 0.8 → overdose restabilisation warning
CAPTURE f_agg·G(d_floc) + (1 − f_agg)·G(d_primary) G = the Hazen integral above
d_floc 200 µm [100–500]; floc Δρ 15 kg/m³ (flocs are mostly water)
SLUDGE V_sludge = captured dry solids / 40 g/L; dissolved species split by liquor volume
REAGENT polymer mass enters the stream and leaves with the sludge; billed kg/h × price
(cationic harvest polymers need a declared price)
sizing G·T = 6e4, G = 60 s⁻¹; V = Q·t·1.2; P = μG²V
- Exponent n
- 0.6
- Base cost
- $90k at 1,000 L/h
- Largest single unit
- 100,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 1.5
- Power
- 0.5 kW per m³/h
Gravity thickener gravity_thickening
Lets solids settle under gravity in a large tank, drawing off a thickened underflow and a clear overflow.
Worked example Gravity Thickener · gravity_thickener
Scenario: Thickening flocculated biological sludge
The flocs are declared as 150 um particles at 1.02 g/mL.
- Solids captured
- 90 %
- Settler area
- 72 m2
- Underflow solids
- 40 g/L
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Light phase | Heavy phase |
|---|---|---|---|
| Flow, L/h | 30,000 | 26,600 | 3,370 |
| Bacteria (generic), g/L | 5 | 0.563 | 40 |
A = max(solids load / solids flux, overflow / q_o,design)
A = max(3,600 kg/d / 50 kg/m2/d, 31.9 m2) = 72 m2Purchased cost: $68.2k at 30,000 L/h; $383k at 300,000 L/h.
gravity_thickener_separation (runs the centrifuge balance with capture and underflow DM)
| Parameter | Default | Note |
|---|---|---|
| solids_capture | 0.9 | [0.5, 0.999] |
| underflow_dry_matter | 40 g/L | [5, 60] |
| solids_flux | 50 kg/m²/d | [5, 200] |
solids load suspended (above-solubility) solids only
area A = max(solids load kg/d ÷ solids flux, overflow m³/d ÷ q_o,design 20 m³/m²/d)
CAPTURE (Hazen ideal settler, the Σ integral with Σ = A and g = 1)
q_o = Q_overflow / A; v_cut = q_o / η_h, η_h 0.6 [0.4–0.8] short-circuiting
G(d) = min(1, v_t(d)·η_h / q_o)
capture = min(declared solids_capture, ∫ G f_m)
underflow one shared settler balance (thickener and flocculation); feed already denser than the
target → whole feed to underflow, "capped … conserved"; below 20 g/L → dilute warning
capex on flow
- Exponent n
- 0.75
- Base cost
- $100k at 50,000 L/h
- Largest single unit
- 1,000,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical (grade-independent)
- Installation factor
- 2.2
- Power
- 0.05 kW per m³/h
Hydrocyclone hydrocyclone
Swirls a pressurised feed inside a cone so dense particles are thrown to the wall and leave at the bottom, with no moving parts.
Worked example Hydrocyclone · hydrocyclone
Scenario: Classifying fumaric acid crystals
- Crystals to the underflow
- 98.5 %
- Cut size d50
- 19.7 um
- Cyclones
- 1
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Light phase | Heavy phase |
|---|---|---|---|
| Flow, L/h | 1,000 | 819 | 181 |
| Fumaric Acid, g/L | 150 | 2.8 | 816 |
G(d) = 1 / (1 + (d50 / d)^m)
G(100 um) = 1 / (1 + (19.7 / 100)^2.5) = 0.983Purchased cost: $6.19k at 1,000 L/h; $28k at 10,000 L/h (2 units in parallel).
hydrocyclone_separation (Plitt 1976, Rietema 1961)
| Parameter | Default | Note |
|---|---|---|
| ΔP | 1.5 bar | ≥ 0.1 |
| diameter D_c | 50 mm | 10–500 |
| Plitt m | 2.5 | 2–4 |
| underflow fraction R_f | 0.10 | 0.03–0.4 |
| ρ_s | 1500 kg/m³ |
q_unit = 7.5 m³/h · (D/50)² · √(ΔP/1.5); n = ⌈Q / q_unit⌉
u = q_unit / (πD²/4); Eu = ΔP / (½ρu²); Stk50 = 0.0611 / Eu
d50 = √(Stk50 · 18μD / (Δρ·u))
G(d) = 1 / (1 + (d50/d)^m)
split particulates R = R_f + (1 − R_f)·G; solutes and water R_f
pump kW = Q/3600 · ΔP·1e5 / 0.65 / 1000
- Cells above 0.1 g/L are refused by the expert rules: they are too small and too light to cyclone.
- Exponent n
- 0.55
- Base cost
- $15k at 7,500 L/h
- Largest single unit
- 7,500 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 0.065 kW per m³/h
Membranes
Microfiltration, ultrafiltration, nanofiltration and reverse osmosis share one rejection model,
one flux model and one area integral (membrane_flux.py). Capex is priced on feed flow
and then multiplied by an area ratio: when the physics says the membrane can only
run below its nominal design flux, it needs more area and costs more.
Shared membrane equations
REJECTION σ per species
phase share σ = s·1.0 + (1 − s)·σ_dissolved s = undissolved / total (cells, colloid, crystal, oil)
UF sieving σ = Φ( (ln(MW/MWCO) + 1.2816·ln GSD_MW) / ln GSD_MW ) σ = 0.90 at MW = MWCO
GSD_MW = GSD_pore³ (default 1.4 → 2.744), σ ∈ [0, 0.999]
globular protein 1 − σ = −ln(1 − loss) / ln 20 loss interpolated from the MW-ratio table
(0.2, 0.05) (0.5, 0.30) (1.0, 0.741) (1.5, 0.97) (2.0, 0.99) (3.0, 0.999) (5.0, 0.9995)
random coil MW ratio × 2.0
NF/RO neutral σ = r^3.2 / (r^3.2 + 0.28^3.2), r = MW/MWCO, ≤ 0.99
NF/RO salt σ = max(σ_salt, σ_neutral); RO σ_salt 0.99; NF 0.50 (monovalent) / 0.95 (≥ 2 equivalents)
ionisable acid σ = f_charged(pKa, pH)·σ_salt + (1 − f_charged)·σ_neutral
RETAINED FRACTION
single stage (NF, RO, filters) m_ret/m_in = V_ret / (V_ret + (1 − σ)·V_perm)
batch (UF) m_ret/m_in = CF^−(1 − σ)
diafiltration C_N/C_0 = exp(−N·(1 − σ)) N = wash volume / retentate volume ≤ 10
UF/NF species m_ret = m·s + m·(1 − s)·f_conc(σ)·washout(σ, N)
FLUX J = min(J_osm, J_gel, J_crit)
osmotic π = i·(C/MW)·R·T [+ (1.1e-6·C² + 3.6e-9·C³)·R·T for MW ≥ 5000]
J_osm = Lp·(TMP − Σσ_i·π_i) / max(1, μ/μ_water)
gel J_gel = k·ln(C_gel/C_bulk)·3.6e6 LMH
k: spacer 0.065·Re^0.875·Sc^0.25; turbulent 0.023·Re^0.8·Sc^0.33; Lévêque 1.86(Re·Sc·dh/L)^(1/3)
dh = 0.8 mm, L = 1 m, u = 0.5 m/s; D = D_Brownian + 0.03·a²·(8u/dh)
critical MF 220 LMH, UF 160 LMH when solids are retained
fouling every term × ff: MF 0.45, UF 0.55, NF 0.75, RO 0.85
Lp MF 800, UF 150, NF 5, RO 1.5 LMH/bar
CONCENTRATION CEILINGS (UF, NF; smallest CF wins)
osmotic Σσ_i·π(C_i(CF)) ≥ TMP − NDP_min, NDP_min = clamp(0.25·TMP, 0.5, 5) bar
gel Σ C_i(CF)/Cg_i ≥ 1 (whey 275, soy 225, casein 250, gelatin 100, xanthan 50 g/L …)
packing volume relief factor > 1 (saturation / 0.90)
derate = min(1, 20·J/J_nom); V_ret = V_feed − (V_feed − V_ret,req)·derate
AREA AND COST
J_nom MF 100, UF 50, NF 25, RO 15 LMH, MD 1.64 kg/m²/h
A = Σ ΔV·(1/J_a + 4/J_mid + 1/J_b)/6 Simpson on a log volume grid, + V_final·N/J(CF) for diafiltration
J_avg = V_perm / A
ratio = clamp(J_nom / J_avg, 1, 20)
capex = flow-based cost × ratio^0.85
skids n = ⌈A / 200 m²⌉; pump P = Q·ΔP/0.65, + 3× for recirculation (not RO)
elements cost/yr = USD_per_m² · (Q/J_nom) / life
Microfiltration microfiltration
Holds back cells and particles on a porous membrane while water and dissolved molecules pass through.
Worked example Microfiltration · microfiltration
Scenario: Cell removal from an E. coli enzyme broth (concentration factor 3, 3 diafiltration volumes)
The flux shown is film theory at the feed concentration; the retentate is far more concentrated by the end, so the membrane area is optimistic.
Set beyond the catalogue defaults: filtrate_fraction = 0.667
- Enzyme recovered in the filtrate
- 98.3 %
- Cells retained
- 100 %
- Sustained flux
- 75.3 L/m2/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Filtrate | Retentate |
|---|---|---|---|
| Flow, L/h | 1,000 | 1,670 | 332 |
| E. coli cells, g/L | 30 | – | 90.3 |
| Amylase, g/L | 3 | 1.77 | 0.15 |
| Glucose, g/L | 1 | 0.59 | 0.0499 |
J_gel = k ln(C_gel / C_bulk) x 3.6e6; J = min(J_osm, J_gel, J_crit) x ff
J_gel = 2.24e-05 m/s x ln(240 / 30 g/L) x 3.6e6 = 167 L/m2/h; J = min(J_osm, J_gel, J_crit) = 167 L/m2/h; x ff 0.45 = 75.3 L/m2/h (gel-limited on the cell layer)Purchased cost: $303k at 1,000 L/h; $1.35M at 10,000 L/h.
filtration_separation (absolute membrane)
| Parameter | Default | Note |
|---|---|---|
| filter_cutoff | 0.2 µm | |
| transmembrane_pressure_bar | 1.0 | |
| filtrate_fraction | 0.9 | |
| wash_water_ratio N | 3 | diavolumes |
| max_retentate_dry_matter | 150 g/L |
V_ret = V_feed · (1 − filtrate_fraction)
relief V_ret ≥ Σ(m·σ)/DM_max ≤ 0.95·V_feed, then packing relief (8 iterations)
wash V_wash = V_ret·N, V_filtrate = V_feed − V_ret + V_wash
V_cp = V_feed − V_ret
solid m_s · [V_ret/(V_ret + (1 − σ)V_cp)] · e^(−N(1 − σ))
liquor m_l · [V_ret/(V_ret + V_cp)] · e^(−N)
σ solids 1.0; dissolved 0; assumed sizes cells 1.0 µm, colloid 0.5, crystal 5, oil 5
Sizing CF = inlet/retentate → area ratio; J_nom 100 LMH; J_crit 220 × 0.45 = 99 LMH
- TMP ≤ 0 refuses: retentate = feed.
- Exponent n
- 0.65
- Base cost
- $300k at 1,000 L/h
- Largest single unit
- 10,000 L/h; commodity_bulk 393,100; chemical 393,100
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 1.8
- Batch window
- 8 h
- Power
- 1.5 kW per m³/h
Ultrafiltration ultrafiltration_10k ultrafiltration_30k ultrafiltration_100k
Holds back proteins and other large molecules on a membrane with a set molecular-weight cut-off, to concentrate the product or exchange its buffer.
Worked example Ultrafiltration (10kDa MWCO) · ultrafiltration_10k
Scenario: Concentrating and diafiltering a clarified amylase solution
The flux shown is film theory at the feed concentration; the retentate is far more concentrated by the end, so the membrane area is optimistic.
- Enzyme recovered
- 99.9 %
- Concentration factor
- 10 x
- Diafiltration volumes
- 5
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Permeate | Retentate |
|---|---|---|---|
| Flow, L/h | 1,000 | 1,400 | 99.9 |
| Amylase, g/L | 5 | 0.00521 | 50 |
| Glucose, g/L | 1 | 0.714 | 0.00692 |
J_gel = k ln(C_gel / C_bulk) x 3.6e6; J = min(J_osm, J_gel, J_crit) x ff
J_gel = 1.32e-05 m/s x ln(313 / 5 g/L) x 3.6e6 = 196 L/m2/h; J = min(J_osm, J_gel, J_crit) = 160 L/m2/h; x ff 0.55 = 88 L/m2/h (the retained protein layer)Purchased cost: $450k at 1,000 L/h; $2.59M at 10,000 L/h (2 units in parallel).
Worked example Ultrafiltration (30kDa MWCO) · ultrafiltration_30k
Scenario: Concentrating and diafiltering a clarified antibody harvest
The flux shown is film theory at the feed concentration; the retentate is far more concentrated by the end, so the membrane area is optimistic.
- Antibody recovered
- 99.9 %
- Concentration factor
- 10 x
- Diafiltration volumes
- 5
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Permeate | Retentate |
|---|---|---|---|
| Flow, L/h | 1,000 | 1,400 | 99.9 |
| Monoclonal Antibody (IgG), g/L | 5 | 0.00521 | 50 |
| Host Cell Protein (HCP), g/L | 1 | 0.183 | 7.45 |
J_gel = k ln(C_gel / C_bulk) x 3.6e6; J = min(J_osm, J_gel, J_crit) x ff
J_gel = 1.26e-05 m/s x ln(324 / 6 g/L) x 3.6e6 = 180 L/m2/h; J = min(J_osm, J_gel, J_crit) = 160 L/m2/h; x ff 0.55 = 88 L/m2/h (the retained protein layer)Purchased cost: $783k at 1,000 L/h; $4.51M at 10,000 L/h (2 units in parallel).
Worked example Ultrafiltration (100kDa MWCO) · ultrafiltration_100k
Scenario: Concentrating and diafiltering IgM on a 100 kDa membrane
The flux shown is film theory at the feed concentration; the retentate is far more concentrated by the end, so the membrane area is optimistic.
- IgM recovered
- 99.9 %
- Concentration factor
- 10 x
- Diafiltration volumes
- 5
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Permeate | Retentate |
|---|---|---|---|
| Flow, L/h | 1,000 | 1,400 | 99.9 |
| IgM (Immunoglobulin M), g/L | 1 | 0.00104 | 9.99 |
| Host Cell Protein (HCP), g/L | 1 | 0.698 | 0.227 |
J_gel = k ln(C_gel / C_bulk) x 3.6e6; J = min(J_osm, J_gel, J_crit) x ff
J_gel = 5.54e-06 m/s x ln(325 / 1 g/L) x 3.6e6 = 115 L/m2/h; J = min(J_osm, J_gel, J_crit) = 115 L/m2/h; x ff 0.55 = 63.4 L/m2/h (the retained protein layer)Purchased cost: $832k at 1,000 L/h; $4.79M at 10,000 L/h (2 units in parallel).
ultrafiltration_separation, membrane_operating_point (batch mode)
| Parameter | Default | Note |
|---|---|---|
| mwco | 10 000 / 30 000 / 100 000 Da | by grade |
| transmembrane_pressure_bar | 2.0 | |
| crossflow | 0.8 m/s | |
| concentration_factor CF | 10 | |
| wash_water_ratio N | 5 | |
| pore_diameter_gsd | 1.4 |
1. CF clipped to the binding ceiling (≥ 1.0001)
2. V_ret = V_feed / CF
3. dry-matter relief, then packing relief (each ≤ 0.5·V_feed)
4. driving-force derate on V_ret and N
5. species: CF^−(1 − σ) × washout × stream split
6. V_perm = V_feed − V_ret + V_ret·N
Sizing: area_ratio from the flux integral; J_nom 50 LMH; J_crit 160 LMH
- Infeasible when a CF above 1 is asked for but the derate is about 0 or the delivered CF is at most 1.0002.
- The three grades differ only in MWCO (10 000, 30 000, 100 000 Da); the panel shows each grade's own catalogue default.
- Exponent n
- 0.7
- Base cost
- $450k at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 2.0
- Batch window
- 8 h
- Power
- 4 kW per m³/h
- Exponent n
- 0.7
- Base cost
- $450k at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 2.0
- Batch window
- 8 h
- Power
- 3.5 kW per m³/h
- Exponent n
- 0.7
- Base cost
- $450k at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 2.0
- Batch window
- 8 h
- Power
- 3 kW per m³/h
Nanofiltration nanofiltration
Passes water and small monovalent ions through a tight membrane while holding back sugars, divalent ions and small organic molecules.
Worked example Nanofiltration · nanofiltration
Scenario: Demineralising whey permeate
- Lactose retained
- 91.2 %
- Concentration factor delivered
- 2.79 x
- Membrane area vs nominal
- 2.46 x
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Permeate | Retentate |
|---|---|---|---|
| Flow, L/h | 1,000 | 641 | 359 |
| Lactose, g/L | 48 | 6.61 | 122 |
| Salt (NaCl), g/L | 6 | 4.42 | 8.83 |
Purchased cost: $598k at 1,000 L/h; $4.13M at 10,000 L/h (5 units in parallel).
ultrafiltration_separation (single-stage mode, dense rejection branch)
| Parameter | Default | Note |
|---|---|---|
| mwco | 500 Da | |
| concentration_factor | 5 | |
| transmembrane_pressure_bar | 15 | |
| crossflow | 0.5 m/s |
m_ret/m_in = V_ret / (V_ret + (1 − σ)·V_perm) σ from the dense branch (charge- and pH-weighted)
Lp 5 LMH/bar, ff 0.75, J_nom 25 LMH
- Exponent n
- 0.7
- Base cost
- $320k at 1,000 L/h
- Largest single unit
- 2,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 2.1
- Power
- 6 kW per m³/h
Reverse osmosis reverse_osmosis
Pushes water through a dense membrane against the osmotic pressure, leaving almost all dissolved solutes behind.
Worked example Reverse Osmosis · reverse_osmosis
Scenario: Pre-concentrating a dilute glucose stream
- Glucose retained
- 97.1 %
- Water recovery
- 73.5 %
- Glucose in the retentate
- 110 g/L
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Permeate | Retentate |
|---|---|---|---|
| Flow, L/h | 1,000 | 735 | 265 |
| Glucose, g/L | 30 | 1.19 | 110 |
| Salt (NaCl), g/L | 2 | 0.0792 | 7.34 |
Purchased cost: $112k at 1,000 L/h; $469k at 10,000 L/h.
reverse_osmosis_separation, _ro_feasible_water_recovery
| Parameter | Default | Note |
|---|---|---|
| water_recovery WR | 0.75 | [0, 0.95] |
| transmembrane_pressure_bar P | 30 | |
| design_margin_bar | 5.0 | |
| mwco | 150 Da |
V_ret = V_feed·(1 − WR), V_perm = V_feed·WR
solute m_ret = m · V_ret / (V_ret + (1 − σ)·V_perm)
water m_perm = m_w·WR
π van 't Hoff (+ virial) on the retentate; NDP = P − π
WR ceiling (bisection): infeasible if NDP ≤ 0, NDP < design margin, or C_i > solubility(T)
Sizing once-through; J_nom 15 LMH, Lp 1.5, ff 0.85; pump Q·ΔP/0.65; elements $100/m²
- If even WR = 0 is infeasible: permeate 0, retentate = feed (fatal).
- Exponent n
- 0.62
- Base cost
- $90k at 1,000 L/h
- Largest single unit
- 20,000 L/h; commodity_bulk 393,100; chemical 393,100
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 1.8
- Power
- 5 kW per m³/h
Membrane distillation membrane_distillation
Evaporates water through a hydrophobic membrane, driven by a temperature difference, to concentrate a feed without boiling it.
Worked example Membrane Distillation · membrane_distillation
Scenario: Concentrating a glucose stream by membrane distillation
- Glucose retained
- 100 %
- Concentration factor
- 5 x
- Glucose in the concentrate
- 150 g/L
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Permeate | Concentrate |
|---|---|---|---|
| Flow, L/h | 1,000 | 800 | 200 |
| Glucose, g/L | 30 | 0.0153 | 150 |
| Salt (NaCl), g/L | 2 | 0.00102 | 10 |
V_conc = V_feed / CF
V_conc = 1,000 L/h / 5 = 200 L/hPurchased cost: $522k at 1,000 L/h; $4.14M at 10,000 L/h (10 units in parallel).
membrane_distillation_separation, md_area_penalty_factor
| Parameter | Default | Note |
|---|---|---|
| concentration_factor | 5.0 | ≥ 1.01 |
| md_configuration | AGMD | DCMD / AGMD / SGMD / VMD |
| feed_temperature_c | 60 | ≤ 85 |
| permeate_temperature_c | 30 | |
| heat_recovery_gor | 3.0 | [0.5, 6.5] |
TPC B_m (kg/m²/h/Pa)
DCMD 0.65 1.8e-3
AGMD 0.80 3.6e-4
SGMD 0.75 4.0e-4
VMD 0.70 1.1e-3
T_fm = T_f − ½(1 − TPC)ΔT, T_pm = T_p + ½(1 − TPC)ΔT
p_sat = 10^(8.07131 − 1730.63/(233.426 + T)) · 133.322 Pa
J = B_m·(p_sat(T_fm)·a_w − p_sat(T_pm)) · GOR^−0.9 a_w by Raoult, salts count ions
derate = min(1, 20·J_raw/1.64); removal = (1 − 1/CF)·derate ≤ 0.999
m_w,evap = m_w,in − (V_feed/CF − V_solutes,ret)·ρ_aq fixed point
volatiles α_MD = min(50, (p_i/p_w)·γ∞·f_neutral·τ), τ 0.30 (DCMD/AGMD) or 0.70; carry = 1 − w^α
Area A = (m_w,evap/1000) / J_avg; ratio = clamp(1.64/J_avg, 1, 20)
Heat Q = V_distillate · h_fg(T)/GOR kWh/m³; cooling = Q
- Ceiling at packing, or water activity aw < 0.72. Warnings for ΔT < 5 K and wetting by surfactants or alcohols.
- Exponent n
- 0.85
- Base cost
- $600k at 1,000 L/h
- Largest single unit
- 1,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 2.2
- Power
- 1.2 kW per m³/h
Electrodialysis electrodialysis
Moves ions out of a stream through charged membranes under an electric field, to desalt it or recover an organic acid.
Worked example Electrodialysis · electrodialysis
Scenario: Desalting a glucose stream
Fixed-split model: salt removed = target removal x current efficiency, so 76.5 % comes out below the 90 % target.
- Salt removed from the product
- 76.5 %
- Glucose kept
- 98 %
- Brine volume
- 99.1 L/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Light phase | Concentrate |
|---|---|---|---|
| Flow, L/h | 1,000 | 901 | 99.1 |
| Glucose, g/L | 30 | 32.6 | 6.06 |
| Salt (NaCl), g/L | 2 | 0.522 | 15.4 |
b = removal x CE (fraction of the salt sent to the brine)
b = 0.9 x 0.85 = 0.765Purchased cost: $750k at 1,000 L/h; $4.68M at 10,000 L/h (2 units in parallel).
electrodialysis_separation
| Parameter | Default | Note |
|---|---|---|
| target_salt_removal | 0.90 | [0, 0.99] |
| current_efficiency | 0.85 | [0, 1] |
| volume_ratio r | 9.0 | diluate : concentrate |
V_dil = V_feed·r/(1 + r), V_conc = V_feed/(1 + r)
b = removal · CE (0.765 at defaults)
fraction to brine: salt b; small acids (MW < 500) 0.7·b; other charged 0.5·b;
protein, sugar, cells 0.02; other uncharged 0.05; water by r
- A fixed-fraction split. There is no stack, current or area model, so capex scales on feed flow alone.
- Exponent n
- 0.75
- Base cost
- $600k at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.2
- Power
- 3 kW per m³/h
Chromatography & adsorption
The packed columns (affinity, both ion exchangers, HIC, reverse phase, size exclusion) share one engine: each column computes the fraction of every species it retains, and the engine turns that into outlet volumes, buffer use and a bed volume. Packed columns are priced on that bed, not on flow; the flow anchor in the cost table is a fallback used only when no bed can be sized.
Shared column engine
CAPACITY
D = Σ C_i · V_f · retained_i capacity demand, g/h
fixed bed cap = q · V_bed · utilisation; if D > cap every retained_i × cap/D
DBC band affinity 35–80, HIC 10–60, IEX macromolecule 40–160 g/L resin
IEX small molecule eq/L × MW / |q| (cation 1.5–2.2, anion 1.0–1.4 eq/L)
BED RATE (bind–elute)
B = V_f / LBV LBV = load bed volumes (affinity 5, IEX 10, default 10)
B_dbc = D / (q · util)
B = min(V_f/LBV, max(B_dbc, V_f/100))
BUFFER AND OUTLETS (bind–elute)
E_cv elution CV, default 5; T_cv total CV per cycle, default 20
V_buffer = E_cv · B → leaves as the eluate (product)
V_other = (T_cv − E_cv) · B → leaves as waste
V_waste = V_f + V_other
PER-COMPONENT SPLIT
ret = m_in · retained, ft = m_in · (1 − retained)
product = ret · release + ft · (1 − throwaway) · ft_to_product
release 100 %; flow-through carryover 3 % (0 for IEX and membrane)
cut product_fraction = base_cut / √max(0.35, S), clipped [0.08, 0.55]
S = target retained / impurity retained; base cut IEX 0.28, affinity 0.18, SEC 0.32, RP 0.22, HIC 0.25
CYCLE AND BED
t_cyc 1.5 h (SEC 3.0 h)
bed = B · t_cyc
fallback bed = load_g/h · t_cyc / (DBC · 0.8)
DBC pharma: affinity 40, IEX 80, HIC 22, RP 35; industrial IEX 50
campaign bed × max(1, t_batch / (n_vessels · window)) pharma batch plants
COLUMN PRICE (bed basis, no grade multiplier)
n = ⌈bed / single-column ceiling⌉
C = n^0.90 · max(SKID + C_ref · ((bed/n)/bed_ref)^0.75, floor)
C_ref ($) bed_ref (L) floor ($) ceiling (L) skid ($)
pharma 167 100 150 0 1 000 350 000
industrial 241 155 6 592 30 000 5 000 0
GAC 400 000 20 000 100 000 20 000 0
RESIN AND BUFFER OPEX
cycles_life = cycles_before_replacement (200) × life factor (industrial: IEX 10, HIC/RP 3, SEC 2, affinity 1)
replacements = max(cycles_per_yr / cycles_life, 1/7)
resin $/yr = bed · price_per_L · replacements
pharma $/L: affinity 12 000, IEX 1 500, HIC 2 000, RP 3 000, SEC 2 500
industrial: affinity 12 000, IEX 25 (400 protein), HIC 150, RP 300, SEC 800
buffer $/yr = pumped L/h · hours · (1.00 pharma, 0.20 industrial $/L)
CIP $/yr = (1.50 pharma, 0.10 industrial) $/L resin/cycle · bed · cycles
Affinity chromatography affinity
Captures the product on a resin carrying a ligand that binds it specifically, then elutes it as a concentrated, purified pool.
Worked example Affinity Chromatography · affinity_chromatography
Worked example withheld while this model is revised.
_affinity_capture in _chromatography_separation
| Parameter | Default | Note |
|---|---|---|
| kd_target / kd_impurity | 0.5 / 40 g/L | |
| ligand_utilization target / impurity | 0.9 / 0.3 | |
| elution_efficiency target / impurity | 0.95 / 0.35 | |
| resin_capacity | 35 g/L | band 35–80 |
| resin_bed_volumes | 5 |
θ = C / (K_d + C)
retained = clip(θ · ligand_util · elution_eff, 0, 1)
then the shared engine: bind–elute, 3 % carryover, base cut 0.18, bed-priced
- Exponent n
- 0.6
- Base cost
- $800k at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 2.5
- Batch window
- 9 h
- Power
- 3 kW per m³/h
Ion exchange ion_exchange_cation ion_exchange_anion
Binds charged molecules to a charged resin and releases them with a change in salt or pH, separating them by charge.
Worked example Cation Exchange Chromatography · ion_exchange_cation
Scenario: Cation-exchange capture of an antibody
- Antibody recovered
- 93 %
- Resin bed
- 90 L
- Buffer pumped
- 1,200 L/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Waste |
|---|---|---|---|
| Flow, L/h | 1,000 | 333 | 1,870 |
| Monoclonal Antibody (IgG), g/L | 5 | 14 | 0.187 |
| Host Cell Protein (HCP), g/L | 1 | 0.09 | 0.52 |
B = min(V_f / LBV, max(D / (q util), V_f / 100)); bed = B x t_cycle
B = min(1,000 / 10, max(4,800 g/h / 80 g/L, 1,000 / 100)) L/h; bed = B x 1.5 h = 90 LPurchased cost: $464k for a 90 L bed (bed-volume basis, feed 1,000 L/h); $991k for a 900 L bed (bed-volume basis, feed 10,000 L/h).
Worked example Anion Exchange Chromatography · ion_exchange_anion
Scenario: Anion-exchange capture of lactate from a clarified broth
- Lactate recovered
- 91.3 %
- Resin bed
- 1,500 L
- Buffer pumped
- 20,000 L/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Waste |
|---|---|---|---|
| Flow, L/h | 10,000 | 5,740 | 24,300 |
| Lactic Acid, g/L | 60 | 95.5 | 2.15 |
| Glucose, g/L | 5 | 0.261 | 2 |
B = min(V_f / LBV, max(D / (q util), V_f / 100)); bed = B x t_cycle
B = min(10,000 / 10, max(549,000 g/h / 60 g/L, 10,000 / 100)) L/h; bed = B x 1.5 h = 1,500 LPurchased cost: $79.5k for a 1,500 L bed (bed-volume basis, feed 10,000 L/h); $527k for a 15,000 L bed (bed-volume basis, feed 100,000 L/h) (3 units in parallel).
_ion_exchange_capture, _iex_binding (steric mass action, Brooks & Cramer 1992)
| Parameter | Default | Note |
|---|---|---|
| load_conductivity_mS_cm | 5 (cation) / 2 (anion) | |
| resin_capacity | 80 / 60 g/L | |
| resin_bed_volumes | 10 | |
| phase_ratio R | 1.5 | |
| elution_efficiency target / co-ionic | 0.93 / 0.85 |
CHARGE
protein q = −0.12 · MW_kDa · (pH − pI), |q| ≤ 0.2 · MW_kDa
small q = n_basic − Σ 1/(1 + 10^(pKa_i − pH))
binds cation: q > 0.05; anion: q < −0.05
SMA BINDING
ν = (0.65 if protein else 1) · |q|
C_salt = max(0.005, I·1000/58.44, conductivity · 0.0085) M
log10 Keq = log10 K0 + ν · log10(Λ / C_salt) Λ = 0.30 M; K0 protein 0.3, small ion 2.0
C_elute = Λ · (K0 · R)^(1/ν)
CAPTURE
k′ = Keq · R
capture = k′/(1 + k′) · min(1, (1 + k′)/max(1, LBV))
RECOVERY TO PRODUCT CUT
target capture · 0.93 + (1 − capture) · carryover
impurity capture · 0.85 · overlap + (1 − capture) · carryover
overlap = 1 / (1 + ((r − 1)/0.10)²), r = ratio of elution salts
FLOW-THROUGH POLISH MODE (chromatography_mode = flow_through)
kd = 5.0 · clip(|q|, 0.05, 2.5) / (1 + 1.2·I); bound f = kd·R/(1 + kd·R)
salts 90 % removed; product loss 2 %
bed = max(V_f / 10 BV/h, captured · 4 / (0.8 · capacity))
t_run = clip(0.8 · capacity · bed / captured, 4, 168) h
regen 8 · bed / t_run L/h; regenerant 3.0 kg/kg captured at $0.55/kg
- Exponent n
- 0.75
- Base cost
- $700k at 1,000 L/h
- Largest single unit
- 10,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 2.3
- Batch window
- 8 h
- Power
- 2.5 kW per m³/h
- Exponent n
- 0.75
- Base cost
- $700k at 1,000 L/h
- Largest single unit
- 10,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 2.3
- Batch window
- 8 h
- Power
- 2.5 kW per m³/h
Hydrophobic interaction hydrophobic_interaction
Binds proteins by their hydrophobic surface patches at high salt and releases them as the salt drops.
Worked example Hydrophobic Interaction Chromatography · hydrophobic_interaction_chromatography
Worked example withheld while this model is revised.
_hydrophobicity_index in _chromatography_separation
| Parameter | Default | Note |
|---|---|---|
| ammonium_sulfate_load_M M | 1.5 | ≤ 3.0 |
| elution_efficiency target / impurity | 0.90 / 0.20 | |
| resin_capacity | 25 g/L | band 10–60 |
h starts 0.35; salt −0.25, sugar −0.18, organic acid +0.10, metabolite +0.08,
protein +0.22 + 0.18·exp(−|pH − pI|/1.2); −0.06·min(3, |charge|); clamp [0.02, 0.98]
log k = −5.48 + 10.0·h + 1.86·M k bounded 10^±4
retained = k/(1 + k) · elution_eff
- Exponent n
- 0.65
- Base cost
- $700k at 1,000 L/h
- Largest single unit
- 2,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 2.5
- Batch window
- 8 h
- Power
- 2.5 kW per m³/h
Reverse phase reverse_phase
Separates molecules by hydrophobicity on a non-polar resin, eluting them with an organic solvent.
Worked example Reverse Phase Chromatography · reverse_phase
Scenario: Reverse-phase purification of vancomycin
Set beyond the catalogue defaults: organic_fraction = 0.05
- Vancomycin recovered
- 76.7 %
- Resin bed
- 30 L
- Buffer pumped
- 400 L/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Waste |
|---|---|---|---|
| Flow, L/h | 200 | 112 | 488 |
| Vancomycin, g/L | 5 | 6.83 | 0.477 |
| Glucose, g/L | 2 | 0.977 | 0.595 |
log k = log k0 - S phi; bed = (V_f / LBV) x t_cycle
loaded at phi = 0.05 organic; bed = (200 L/h / 10 BV) x 1.5 h = 30 LPurchased cost: $400k for a 30 L bed (bed-volume basis, feed 200 L/h); $631k for a 300 L bed (bed-volume basis, feed 2,000 L/h).
_reverse_phase_capture
| Parameter | Default | Note |
|---|---|---|
| organic_fraction φ | 0.40 | catalogue default; read as the strength the column is loaded at |
| solvent_strength_coeff S | 3.8 | |
| elution_efficiency target / impurity | 0.9 / 0.45 |
log k0 = −0.5 + 3.5·h + 0.2 h = hydrophobicity index (as HIC)
log k = log k0 − S·φ bounded ±4
retained = k/(1 + k) · elution_eff
solvent $1 000/day × flow/100 L/h
- Exponent n
- 0.65
- Base cost
- $650k at 1,000 L/h
- Largest single unit
- 1,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 2.1
- Batch window
- 8 h
- Power
- 3.5 kW per m³/h
Size exclusion size_exclusion
Separates molecules by size as they pass through a porous gel, largest first.
Worked example Size Exclusion Chromatography · size_exclusion
Scenario: Size-exclusion polish of a concentrated antibody pool at clinical scale
SEC is not used for bulk antibody at this cost; it is shown at clinical polish scale.
- Antibody recovered
- 94 %
- Packed bed
- 750 L
- Product dilution
- 1.7 x
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Waste |
|---|---|---|---|
| Flow, L/h | 5 | 8.49 | 497 |
| Monoclonal Antibody (IgG), g/L | 30 | 16.6 | 0.0181 |
| Host Cell Protein (HCP), g/L | 0.3 | 0.0401 | 0.00233 |
B = V_f / load fraction; bed = B x 3.0 h
B = 5 L/h / 0.02 CV; bed = B x 3 h = 750 LPurchased cost: $909k for a 750 L bed (bed-volume basis, feed 5 L/h); $6.57M for a 7,500 L bed (bed-volume basis, feed 50 L/h) (8 units in parallel).
_size_exclusion_captures, _sec_cycle_cv
| Parameter | Default | Note |
|---|---|---|
| pore_radius_nm | 4.5 | |
| fraction_window_sigma σ | 0.12 | |
| target / impurity recovery scale | 0.94 / 0.55 | |
| sec_load_fraction_of_cv | 0.02 | 0.003–0.04 |
radius r = 1.25 · 0.066 · MW^(1/3) nm (or size/2)
Kav = (1 − clip(r/r_pore, 0, 1))²
captured = exp(−(Kav − Kav_target)² / (2σ²)) · scale
B = V_f / load fraction
dilution = 1.3 + 0.7 · (0.04 − LBV)/(0.04 − 0.003)
V_product = V_f · dilution; V_buffer = V_product − 0.03·V_f
bed = B · 3.0 h (150 × V_f at the 0.02 default)
- Refused outside 0.3–4 % CV load, or for desalting duty (a desalting column is a different design).
- Exponent n
- 0.6
- Base cost
- $650k at 1,000 L/h
- Largest single unit
- 2,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 2.2
- Batch window
- 8 h
- Power
- 2 kW per m³/h
Membrane chromatography membrane_chromatography
Runs flow-through or bind-and-elute chromatography on stacked adsorptive membranes in disposable capsules instead of a packed column.
Worked example Membrane Chromatography · membrane_chromatography
Scenario: Anion-exchange membrane flow-through polish of a post-capture antibody pool
- Antibody recovered
- 98.1 %
- HCP removed
- 80.3 %
- Membrane per hour of feed
- 0.6 L
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Waste |
|---|---|---|---|
| Flow, L/h | 300 | 291 | 8.52 |
| Monoclonal Antibody (IgG), g/L | 15 | 15.1 | 10 |
| Host Cell Protein (HCP), g/L | 0.015 | 0.00304 | 0.424 |
V_mem = L_target / (loading x 1000)
V_mem = 4,500 g/h / (7.5 kg/L x 1000) = 0.6 LPurchased cost: $77.4k at 300 L/h; $274k at 3,000 L/h.
Ion-exchange physics in the shared engine; sized as capsules
| Parameter | Default | Note |
|---|---|---|
| mode | flow_through, anion | |
| product_fraction | 0.95 | |
| membrane_loading_kg_per_l | 7.5 | 0.1–20 |
| resin_capacity | 30 g/L | ≤ 60 |
| capsule price | $5 000/L pharma, $3 000/L industrial |
V_product = V_f · 0.95; product = ret · 0.05 + ft · 1.0
V_mem = L_target / (loading · 1000) flow-through
= L_target / (DBC · 0.8) bind–elute
capsules L/yr = annual kg / (loading · cycles)
capex flow basis (no resin family)
- Exponent n
- 0.55
- Base cost
- $150k at 1,000 L/h
- Largest single unit
- 20,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 1.5
- Cost floor
- $75k
- Batch window
- 8 h
- Power
- 1.5 kW per m³/h
Activated carbon activated_carbon
Takes colour, odour and trace organics out of a liquid by adsorbing them onto activated carbon.
Worked example Activated Carbon Adsorption · activated_carbon
Scenario: Decolourising glucose syrup
- Colour body removed
- 98.8 %
- Glucose recovered
- 98 %
- Carbon used
- 5 kg/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Waste |
|---|---|---|---|
| Flow, L/h | 1,000 | 980 | 20.2 |
| Glucose, g/L | 300 | 300 | 300 |
| Caffeic Acid, g/L | 0.2 | 0.00241 | 9.81 |
dose = max(dose to reach the removal target, polish floor); carbon = dose x V_f / 1000
dose = max(1.96, 5) g/L; carbon = dose x 1,000 L/h / 1000 = 5 kg/hPurchased cost: $100k for a 333 L bed (bed-volume basis, feed 1,000 L/h) (cost floor); $104k for a 3,330 L bed (bed-volume basis, feed 10,000 L/h).
activated_carbon_separation, Langmuir helpers
| Parameter | Default | Note |
|---|---|---|
| carbon_dose_g_per_l | 5.0 | polish floor |
| impurity_removal_fraction | 0.90 | |
| product_loss_fraction | 0.02 | hold-up |
| ebct_min | 20 | [5, 60] |
q_eff = q_max (from molecule DB); acids × (1 − 1/(1 + 10^(pKa1 − pH)))
b = 100 · (q_max/0.10)² clamp [0.05, 1000] L/g
a = dose · 0.75 · q_eff inventory per L feed
outlet x solves b·x² + (a·b − C_in·b + 1)·x − C_in = 0
dose = max(bisection to reach the removal target, polish floor)
product = (m_in − m_ads) · (1 − hold)
carbon kg/h = dose · V_f / 1000
BED (capex, GAC anchor)
V_bed = Q · EBCT/60 · stages; velocity = depth/(EBCT/60) in 2–20 m/h
opex single use: dose · ($3.0 + $0.35 disposal)/kg; regenerated: dose · (1.5 + 0.08·3.0)
- Refused when solids exceed 0.1 g/L, the target is a cell or colloid, log P exceeds 3, or more than 5% of the target would adsorb.
- Exponent n
- 0.6
- Base cost
- $100k at 1,000 L/h
- Largest single unit
- 10,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical (grade-independent)
- Installation factor
- 1.5
- Power
- 1 kW per m³/h
Adsorption–elution adsorption_elution
Loads the product onto a resin or carbon bed, then strips it off with a smaller volume of eluent, capturing and concentrating it in one step.
Worked example Adsorption-Elution (Resin / Carbon Capture) · adsorption_elution
Scenario: Capturing chlorogenic acid on a macroporous resin
- Chlorogenic acid recovered
- 85.5 %
- Concentration factor
- 4.17 x
- Resin bed cycled
- 31.6 L/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Waste |
|---|---|---|---|
| Flow, L/h | 1,000 | 205 | 1,030 |
| Chlorogenic Acid, g/L | 3 | 12.5 | 0.421 |
| Glucose, g/L | 10 | 0.00116 | 9.68 |
R_cap = C_t (1 - f_bt) / (f_dyn q_t); bed = V_f R / rho_bed
R_cap = 3 x (1 - 0.05) / (0.7 x 0.198) = 20.5 g resin/L; bed = 1,000 L/h x 20.5 / 650 g/L = 31.6 L/hPurchased cost: $438k at 1,000 L/h; $2.19M at 10,000 L/h.
adsorption_elution_separation (macroporous resin or carbon)
| Parameter | Default | Note |
|---|---|---|
| eluent / eluent_fraction φ | ethanol / 0.7 | |
| elution / wash bed volumes | 3.0 / 1.5 | |
| dynamic_binding_fraction f_dyn | 0.7 | |
| breakthrough_loss_fraction f_bt | 0.05 | |
| max_loading_bed_volumes | 60 | |
| elution_recovery | 0.9 |
isotherm q_i = q_eff,i · b_i · C_i / (1 + Σ b_j·C_j) competitive Langmuir
R_cap = max_t C_t·(1 − f_bt) / (f_dyn · q_t) g bed per L feed
R = max(R_cap, ρ_bed / max_loading_BV) ρ_bed resin 650, carbon 480 g/L
bed = V_f · R / ρ_bed L/h
bound = min(C_i·(1 − f_bt), R·f_dyn·q_i) · V_f
washed weak species × (1 − exp(−wash_BV))
eluted = (bound − washed) · elution_recovery
eluate = eluted + elution·φ·ρ_eluent + (elution·(1 − φ) + void)·1000
bill eluent make-up = organic · (1 − 0.9); resin bed cycled / life at $35/kg
- Exponent n
- 0.7
- Base cost
- $350k at 1,000 L/h
- Largest single unit
- 10,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 1 kW per m³/h
Molecular sieve dehydration molecular_sieve_dehydration
Removes the last water from a solvent such as ethanol by adsorbing it into a zeolite bed, getting past the azeotrope that distillation cannot.
Worked example Molecular Sieve Dehydration · molecular_sieve_dehydration
Worked example withheld while this model is revised.
molecular_sieve_dehydration_separation, _sieve_solve_recycle
| Parameter | Default | Note |
|---|---|---|
| product water w_D | 0.005 | |
| purge water w_R | 0.30 | |
| stripper recovery η_s | 0.96 | |
| half-cycle / beds | 8 min / 2 | |
| working capacity / utilisation | 0.045 kg/kg / 0.60 | |
| u_s / p / T | 0.30 m/s / 2.5 bara / 140 °C |
WATER BALANCE with recycle (≤ 200 iterations)
F = m + S; w_F = (m·w_F0 + S·w_s)/F
R/D = (w_F − w_D)/(w_R − w_F); D = F/(1 + R/D); R = F − D
S = η_s · R · (1 − w_R)/(1 − w_s)
BED
W = (F·w_F − D·w_D)/1000 kg/h water removed
m_cap = W · t_h / (q_work · util)
ρ_v = p·1e5·(MW/1000) / (8.314·(T + 273.15))
A = Q_v / u_s; D_bed = √(4A/π)
L = clip(m_cap/(700·A), max(1.8, D_bed), L/D · D_bed) ≤ 8 m
ΔP/L = 150μ(1 − ε)²u/(ε³d²) + 1.75ρ_v(1 − ε)u²/(ε³d) Ergun, ε 0.37, d 3 mm
ENERGY
regeneration 2 900 kJ/kg · W; superheat 1.8 · ΔT; stripper h_vap · 3
- Refused above 15 wt% feed water or 0.5 g/L non-volatiles, when dew point + 28 K exceeds 200 °C, or when the recycle does not converge.
- Exponent n
- 0.72
- Base cost
- $750k at 1,000 L/h
- Largest single unit
- 17,000 L/h; commodity_bulk 55,000; chemical 55,000
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 400 kW per m³/h
Thermal, drying & crystallisation
Shared helpers used across this group. Every operation here is priced on flow: stage counts, reflux, dryer area, crystalliser volume and flash-drum diameter are computed and reported, and they set the energy bill, but they do not move capex.
Trouton ΔHvap = ΔS · (Tb + 273.15) ΔS = 110 J/mol/K (water, alcohol, organic/amino acid), else 88
Volatility α = exp[ −(ΔH_i/R)(1/T − 1/Tb_i) + (ΔH_w/R)(1/T − 1/373.15) ] (exponent clipped ±50)
Rayleigh f_overhead = 1 − w^α w = fraction of water remaining, α clipped [0, 20], α < 0.05 → 0
Water Tsat T = B/(A − log10 P_mmHg) − C Antoine A,B,C = 8.07131, 1730.63, 233.426 (≤100 °C)
8.14019, 1810.94, 244.485 (>100 °C)
Column α α = γ1·P1sat / (γ2·P2sat) Antoine + van Laar from ONE table (backend/data/van_laar_water.json,
read by every tier), else Raoult with
ΔHvap = K_F·Tb·(36.6 + 8.31 ln Tb) Kistiakowsky–Fishtine, K_F = 1.0 / 1.1 acid / 1.2 alcohol / 1.3 polyol
van Laar ln γ1 = A12·[A21·x2 / (A12·x1 + A21·x2)]²
acetone (2.1041, 1.5555) Perry 13-2; acetic acid (0.4185, 0.5754) ideal-vapour fit, no azeotrope;
n-butanol (3.80, 1.20) dilute-aqueous fit; each row declares its 1 atm azeotrope and a test checks it
two liquids inside a pair's mutual-solubility gap the result carries a named two_liquid_phase warning
Latent heat λ = 2256.5·[(647.096 − T)/(647.096 − 373.15)]^0.38 kJ/kg (Watson)
Steam steam_kg/h = Q_kW · 3600 / 2133
Bubble point Σ x_i·γ_i·Psat_i(T) = P (bisection, 0.5–373.9 °C)
Steam economy E(N) = 0.92·N / (1 + 0.10·(N − 1)) N ≤ 7; TVR adds 2 to N; MVR = 15 kWh per t water
Distillation distillation
Separates liquids by boiling point in a column, taking the volatile components overhead and the heavier ones from the bottom.
Worked example Distillation · distillation
Scenario: Beer stripper and rectifier: ethanol from clarified beer to near the azeotrope
The API fixes the distillate purity target at 0.99, above the 0.955 azeotrope, so the column sits at the azeotrope with reflux at its minimum.
Set beyond the catalogue defaults: n_stages = 40
- Ethanol to the distillate
- 98 %
- Distillate ethanol
- 95.5 wt%
- Ethanol left in the bottoms
- 1.05 g/L
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Light phase | Heavy phase |
|---|---|---|---|
| Flow, L/h | 1,000 | 64.3 | 948 |
| Ethanol, g/L | 50 | 761 | 1.05 |
| Glucose, g/L | 2 | – | 2.11 |
Purchased cost: $810k at 1,000 L/h; $3.62M at 10,000 L/h.
distillation_separation · energy _energy_distillation
| Parameter | Default | Note |
|---|---|---|
| n_stages | 15 | |
| murphree_efficiency EM | 0.70 | |
| reflux_ratio | 1.5 | min 0.1 |
| column pressure | 1 atm | from any declared mbar / bar / atm key |
| key_recovery | 0.98 | [0.5, 0.9999] |
| distillate / bottoms purity | 0.99 | [0.05, 0.9999] mass fraction |
Mass balance
T_op = water boiling point at column pressure
α_i = alpha_vs_water(i) at the feed pseudo-binary mole fraction
Key = volatile target with highest α; light if α_p > 1, else heavy
Light product: d_p = key_recovery · F_p
d_water = d_p/spec − d_p − Σ(non-keys in D) clamped [0, water in]
Heavy product: b_p = key_recovery · F_p
b_water = b_p/spec − b_p − Σ(non-keys in B)
Azeotrope cap on product mass fraction (water heavy key only):
override → van Laar crossing where α = 1 → static record (ethanol 0.956, IPA 0.874, …)
Fenske N_min = ln[(xd/(1−xd))·((1−xb)/xb)] / ln α α = geometric mean at xb, xf, xd, ≥ 1.01
Underwood R_min = [xd/xf − α(1−xd)/(1−xf)] / (α − 1)
Non-key split d_i/b_i = (d_k/b_k) · α_ik^N_min
Gilliland Y = 0.75·(1 − X^0.5668), X = (R − R_min)/(R + 1)
Available N_act = n_stages · E_M
Reflux needed Y = (N_act − N_min)/(N_act + 1) → X → R = (R_min + X)/(1 − X)
Design reflux R = max(reflux_ratio, R_needed, 0.1)
Stage-limited (N_act ≤ N_min,spec): key logits scaled by k = N_ach/N_min,spec
Reported N_theo = (N_min + Y)/(1 − Y), stages_required = ceil(N_theo / E_M)
Volumes V_D = V_feed · m_D/m_total
Energy & sizing
Q_reboiler = D·(R + 1)·λ_top + max(0, m_feed·cp·(T_bottom − T_in))
Q_condenser = D·(R + 1)·λ_top
Classic tier: 90 kW thermal per m³/h feed
- Refused if Ntheo > 150 or αavg < 1.05 (Kister 1992; Perry's Sec. 13).
- Refused if the target decomposes: Tb(P) > Tdecomp − 20 K; the message names the vacuum needed.
- With no volatile target: 30% of the water overhead, others by Kremser φ = αN/(1 + αN).
- Exponent n
- 0.65
- Base cost
- $900k at 1,000 L/h
- Largest single unit
- 100,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 12 kW per m³/h
Evaporation evaporation
Boils off water to concentrate a solution, often in several effects that reuse the heat in the vapour.
Worked example Thin-Film Evaporator · thin_film_evaporator
Scenario: Concentrating a glucose stream
- Water evaporated
- 800 L/h
- Glucose in the concentrate
- 150 g/L
- Concentration factor
- 5 x
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Condensate | Concentrate |
|---|---|---|---|
| Flow, L/h | 1,000 | 800 | 200 |
| Glucose, g/L | 30 | – | 150 |
| Salt (NaCl), g/L | 2 | – | 10 |
V_conc = V_feed / CF
V_conc = 1,000 L/h / 5 = 200 L/hPurchased cost: $825k at 1,000 L/h; $3.28M at 10,000 L/h.
evaporation_separation, _evaporator_water_evaporated · energy _energy_evaporation
| Parameter | Default | Note |
|---|---|---|
| concentration_factor CF | 5.0 | min 1.01 |
| evap_water_removal_fraction | 0.92 | [0.01, 0.999] |
| operating_pressure_mbar | — | sets T; otherwise evap_temperature_c = 60 |
| evap_thermal_efficiency η | 0.92 | energy only |
| number_of_effects N | by grade | industrial 4, pharma 1 |
| evaporation_mode | multi_effect | single / tvr / mvr |
Mass balance
V_conc = V_feed / CF
m_w,kept = max(0, (V_conc − Σ m_solute/ρ_solute) · 1000)
m_evap = min(m_w,in − m_w,kept, 0.92 · m_w,in)
w = 1 − m_evap / m_w,in
T_boil = Tsat(P) + boiling-point elevation (Raoult bubble point of the concentrate)
f_i = 1 − w^α_i overhead fraction of each non-water species
Energy
Multi-effect Q_heat = (sensible + λ·m_vap / E(N)) / η
MVR Q_heat = sensible / η, electricity = 15 kWh/t water evaporated
Classic tier Q = [m·4.18·(60 − 25) + m_w·λ(60 °C)/E] / 0.92
Capex flow basis × N^0.70 (× 1.8 for MVR)
- Warns when the CF needs more than the removal ceiling, and when MVR runs below 2 t/h of water.
- Exponent n
- 0.6
- Base cost
- $250k at 1,000 L/h
- Largest single unit
- 150,000 L/h; commodity_bulk 393,100; chemical 393,100
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Effects exponent
- 0.7
- Power
- 5 kW per m³/h
Evaporative crystalliser evaporative_crystallizer
Boils off solvent until the product exceeds its solubility and crystallises out.
Worked example Evaporative Crystallizer · evaporative_crystallizer
Scenario: Evaporative crystallisation of salt from brine
- Salt crystallised
- 60 %
- Water evaporated
- 590 kg/h
- Boiling point elevation
- 4.38 K
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Magma | Condensate |
|---|---|---|---|
| Flow, L/h | 1,000 | 410 | 590 |
| Salt (NaCl), g/L | 280 | 683 | – |
magma = sum m_crystallised / (m_feed - W)
magma = 168 / (1,150 - 590) kg/h = 0.3Purchased cost: $1.85M at 1,000 L/h; $9.26M at 10,000 L/h.
evaporative_crystallization_separation · energy in thorough_flowsheet
| Parameter | Default | Note |
|---|---|---|
| crystallizer_mode | evaporative | or vacuum_cooling |
| operating_pressure_mbar | 100 | water boils at 45.8 °C |
| magma_density_target | 0.30 | [0.02, 0.35] |
| crystallization_yield η | 0.70 | |
| mother_liquor_fraction | 0.30 | [0.02, 0.60] |
| mother_liquor_recycle r | 0 | ≤ 0.95 |
| hold_time_hr | 2 |
Mass balance
T_op = Tsat(P) + BPE BPE iterated 3× on fresh feed, ≥ 0
Evaporative mode:
bisect W ∈ [0, 0.95·m_w,in] (24 iterations) until
magma = Σ m_crystallised / (m_feed − W) = target
each trial runs the cooling-crystalliser equilibrium at T_op on the concentrated feed
Vacuum-cooling mode (adiabatic flash):
W·λ(T_op) = m·cp·(T_feed − T_op) + Q_cryst
Outlets: magma (heavy) + condensate W as pure water
Yield = crystallised target / target in
Selectivity = (crys_t/crys_imp)/(in_t/in_imp) clamped [0.01, 100]
Energy & sizing
net_latent = max(0, λ(T_boil)·W − Q_cryst) Q_cryst: ΔH_sol → ΔH_fus → class default (sugar 60 … 120 kJ/kg)
Steam Q_heat = (sensible + net_latent/E(N)) / 0.92
MVR Q_heat = sensible/0.92, +15 kWh/t
Vessel V = (magma kg/h ÷ 1.2 kg/L) · τ(2 h) · 1.25 reported, not priced
Capex flow basis × effects multiplier (as evaporation)
- Magma held at ≤ 0.35 solids (Myerson Ch. 6); inherits every cooling-crystalliser refusal.
- Exponent n
- 0.7
- Base cost
- $700k at 1,000 L/h
- Largest single unit
- 150,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.5
- Effects exponent
- 0.7
- Power
- 4 kW per m³/h
Cooling crystallisation crystallization
Cools a solution so the solubility of the product falls and it comes out as crystals.
Worked example Crystallization · crystallization
Scenario: Cooling crystallisation of succinic acid
- Succinic acid crystallised
- 73.1 %
- Solubility at 4 degC
- 41.4 g/L
- Crystal purity
- 100 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Magma |
|---|---|---|
| Flow, L/h | 1,000 | 1,000 |
| Succinic Acid, g/L | 150 | 150 |
| Glucose, g/L | 3 | 3 |
eq = 1 - C_sat V / m; frac = max(eta eq, 1 - 1.05 (1 - eq))
eq = 1 - 41.4 g/L x 930 L/h / 150 kg/h = 0.743; frac = max(0.7 x 0.743, 1 - 1.05 x (1 - 0.743)) = 0.731Purchased cost: $400k at 1,000 L/h; $1.79M at 10,000 L/h.
crystallization_separation, _cryst_partition, _crystallization_with_mother_liquor_recycle
| Parameter | Default | Note |
|---|---|---|
| temperature | 4 °C | |
| crystallization_yield η | 0.70 | [0, 1] |
| occluded_liquor_fraction f | 0.05 | [0.02, 0.08] |
| mother_liquor_recycle r | 0 | ≤ 0.95 |
| hold_time_hr | 4 |
Mass balance
C_sat(T, pH) van 't Hoff from the 25 °C solubility, then Henderson–Hasselbalch
factor clamped [0.1, 10], T clamped 0–100 °C, C_sat ≤ 1500 g/L
V_liquor = m_water/1000 + Σ m_dissolved/ρ_solid ρ_solid default 1350 g/L
m_solid = η · max(0, m − C_sat·V_liquor) fixed point, 12 iterations
eq = 1 − C_sat·V/m
frac = clamp(max(η·eq, 1 − 1.05·(1 − eq)), 0, eq)
Magma cap (crystals + carried)/m_total ≤ 0.35 → scaled pro rata
Occlusion m_occl = crystals · f/(1 − f) ≤ 0.5 × liquor
Recycle loop feed = fresh + r·liquor; V_loop = P_total / C_fresh
purge limit r = (K − 1)/(K·φ − φ_p), K = 0.95·C_sat/c_0
Energy & sizing
Q_cool = max(0, m·cp·(T_in − T_final) + Q_cryst), chiller electricity = Q/3
Vessel V = Q_loop · τ(4 h) · 1.25 reported, not priced
- Refused when the target is water-miscible, liquid at Top, has no solubility record, was never dissolved, or particulates exceed 2 g/L or magma 0.40.
- Exponent n
- 0.65
- Base cost
- $400k at 1,000 L/h
- Largest single unit
- 20,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 15 kW per m³/h
Flash drum flash_drum
Drops the pressure on a liquid so its volatile part vaporises at once, splitting the stream into vapour and liquid.
Worked example Flash Drum · flash_drum
Scenario: Flashing ethanol from beer
Set beyond the catalogue defaults: flash_temperature_c = 97
- Ethanol to the vapour
- 37.2 %
- Vapour flow
- 74.9 kg/h
- Ethanol activity coefficient
- 4.95
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Light phase | Heavy phase |
|---|---|---|---|
| Flow, L/h | 1,000 | 107,000 | 933 |
| Ethanol, g/L | 50 | 0.173 | 33.7 |
| Glucose, g/L | 2 | – | 2.14 |
Q_v = m_v / rho_v; D = sqrt(4 Q_v / (pi u_max))
Q_v = 74.9 kg/h / 0.699 kg/m3; D = sqrt(4 Q_v / (pi x 4.05 m/s)) = 0.0968 mPurchased cost: $72k at 1,000 L/h; $405k at 10,000 L/h.
flash_drum_separation
| Parameter | Default | Note |
|---|---|---|
| flash_temperature_c | 80 | |
| flash_pressure_mbar | 1013 |
Mass balance
K_i = γ_i(x) · Psat_i(T) / P van Laar on organic + water pseudo-binary
Rachford–Rice Σ z_i(K_i − 1) / (1 + ψ(K_i − 1)) = 0 ψ ∈ [0, 1), bisection
Vapour fraction of i = ψK_i / (1 + ψ(K_i − 1))
Non-volatile by class: cells, protein, salt, sugar, amino acid, polymer, MW ≥ 1000
Sizing (reported)
ρ_v = P·MW_v / (8314.462·T)
u_max = 0.107 · √((ρ_L − ρ_v)/ρ_v) Souders–Brown, GPSA
D = √(4·Q_v / (π·u_max)), L/D = 4
- Exponent n
- 0.75
- Base cost
- $80k at 1,000 L/h
- Largest single unit
- 100,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 5 kW per m³/h
Solvent recovery solvent_recovery
Distils spent solvent back out of a stream so it can be reused, with the unrecovered part billed as make-up.
Worked example Solvent Recovery · solvent_recovery
Worked example withheld while this model is revised.
solvent_recovery_separation
| Parameter | Default | Note |
|---|---|---|
| solvent_recovery | 0.98 | [0.95, 0.995] |
| residual_solvent_wt_pct | 0.3 | [0, 10] |
water_overhead = recovery · water_in
(azeotrope: min(water_in, solvent_in·recovery·w/(100 − w)))
unrecovered = solvent_in · (1 − recovery)
residual = min(unrecovered, spec·base/(1 − spec)) base = non-solvent + product water
overhead = solvent_in − residual
make-up = solvent_in · (1 − recovery) billed
residual ppm checked against ICH Q3C
- Exponent n
- 0.65
- Base cost
- $300k at 1,000 L/h
- Largest single unit
- 50,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 2 kW per m³/h
Reactive distillation (esterification) esterification_reactive_distillation
Runs an esterification inside a distillation column, taking the products away as they form so the reaction keeps going.
Worked example Esterification (Reactive Distillation) · esterification_reactive_distillation
Scenario: Esterifying lactic acid with methanol
Set beyond the catalogue defaults: acid_component = Lactic Acid
- Lactic acid converted
- 98 %
- Methyl lactate overhead
- 902 kg/h
- Methanol bought
- 569 kg/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Heavy phase |
|---|---|---|---|
| Flow, L/h | 1,000 | 1,670 | 31.6 |
| Lactic Acid, g/L | 800 | 0.0191 | 506 |
| Methyl Lactate, g/L | – | 538 | 143 |
| Methanol, g/L | – | 173 | 9.19 |
X_ceil = 1 - (1 - X_eq)^n; X = min(X_req, X_ceil)
X_ceil = 1 - (1 - 0.571)^8 = 0.999; X = min(0.98, 0.999) = 0.98Purchased cost: $1.3M at 1,000 L/h; $6.22M at 10,000 L/h.
esterification_reactive_distillation_separation, esterification_equilibrium_conversion
| Parameter | Default | Note |
|---|---|---|
| alcohol | methanol | ethanol, butanol |
| alcohol_to_acid_mol_ratio r | 2.0 | [1.05, 8] |
| k_eq_esterification K | 2.5 | [0.2, 20] |
| n_reactive_stages n | 8 | [1, 40] |
| target_conversion | 0.98 | [0.10, 0.999] |
| catalyst WHSV / life / price | 2 h⁻¹ / 2 yr / $12/kg |
Equilibrium K = (X + e0)(w0 + X) / ((1 − X)(r − X))
Column X_ceil = 1 − (1 − X_eq)^n Taylor & Krishna 2000
Conversion X = min(X_req, X_ceil, 0.999, 0.999·r)
MW_ester = MW_acid + MW_alcohol − 18.015
Split ester 0.995 light; free alcohol 0.999 light; acid & non-volatiles heavy (0.002 carryover)
Bottoms water = heavy_nonwater · (1/0.60 − 1)
Catalyst inventory = acid kg/h ÷ WHSV; use = inventory / (life × 8000 h)
Energy Q = λ_overhead·(R + 1) + sensible to T_bottom reaction thermoneutral
- Exponent n
- 0.68
- Base cost
- $1.3M at 1,000 L/h
- Largest single unit
- 100,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.5
- Power
- 150 kW per m³/h
Dryers spray_drying freeze_drying drum_drying fluid_bed_drying rotary_drying vacuum_tray_drying
Removes water from a product to leave a dry powder or solid, by spray, freeze, drum, fluid-bed, rotary or vacuum tray drying.
Worked example Spray Drying · spray_drying
Scenario: Spray drying whey protein concentrate
The purchased cost sits at the low end of published spray-dryer costs.
- Protein to the powder
- 97 %
- Dry product out
- 230 kg/h
- Residual moisture
- 3 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Evaporated water (vapour) | Solid |
|---|---|---|---|
| Flow, L/h | 1,000 | 1,330,000 | 170 |
| Whey Protein, g/L | 200 | 0.00452 | 1,140 |
| Lactose, g/L | 30 | 0.000678 | 171 |
product water = rm / (1 - rm) x sum retained
product water = 0.03 / (1 - 0.03) x 223 kg/h = 6.9 kg/hPurchased cost: $300k at 1,000 L/h; $1.19M at 10,000 L/h.
Worked example Freeze Drying (Lyophilization) · freeze_drying
Worked example withheld while this model is revised.
Worked example Drum Dryer · drum_dryer
Scenario: Drum drying yeast cream
- Yeast to the flakes
- 96 %
- Dry product out
- 90 kg/h
- Residual moisture
- 4 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Waste | Solid |
|---|---|---|---|
| Flow, L/h | 500 | 703,000 | 82.9 |
| Yeast (S. cerevisiae), g/L | 180 | 0.00512 | 1,040 |
product water = rm / (1 - rm) x sum retained
product water = 0.04 / (1 - 0.04) x 86.4 kg/h = 3.6 kg/hPurchased cost: $192k at 500 L/h; $964k at 5,000 L/h.
Worked example Fluid Bed Dryer · fluid_bed_dryer
Scenario: Fluid-bed drying fumaric acid crystals
- Crystals to the dry product
- 95 %
- Dry product out
- 174 kg/h
- Residual moisture
- 2 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Waste | Solid |
|---|---|---|---|
| Flow, L/h | 200 | 124,000 | 108 |
| Fumaric Acid, g/L | 900 | 0.0728 | 1,590 |
| Water, g/L | 451 | 0.701 | 32.4 |
product water = rm / (1 - rm) x sum retained
product water = 0.02 / (1 - 0.02) x 171 kg/h = 3.49 kg/hPurchased cost: $238k at 200 L/h; $947k at 2,000 L/h.
Worked example Rotary Dryer · rotary_dryer
Scenario: Drying wet distillers' grains to DDGS
- Solids to the dry product
- 95 %
- Dry product out
- 380 kg/h
- Residual moisture
- 5 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Waste | Solid |
|---|---|---|---|
| Flow, L/h | 1,000 | 1,230,000 | 283 |
| Cellulose, g/L | 170 | 0.00693 | 570 |
| Hemicellulose (Xylan), g/L | 110 | 0.00449 | 369 |
| Yeast (S. cerevisiae), g/L | 100 | 0.00408 | 335 |
| Water, g/L | 722 | 0.573 | 67 |
product water = rm / (1 - rm) x sum retained
product water = 0.05 / (1 - 0.05) x 361 kg/h = 19 kg/hPurchased cost: $360k at 1,000 L/h; $1.8M at 10,000 L/h.
Worked example Vacuum Tray Drying · vacuum_tray_drying
Scenario: Drying a wet pharmaceutical crystal cake (ampicillin)
The drying loss is routed to the vapour and condensate stream.
- Crystals to the dry product
- 93 %
- Dry product out
- 11.7 kg/h
- Residual moisture
- 5 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Condensate | Solid |
|---|---|---|---|
| Flow, L/h | 15 | 6.44 | 8.56 |
| Ampicillin, g/L | 800 | 130 | 1,300 |
| Water, g/L | 429 | 907 | 68.6 |
product water = rm / (1 - rm) x sum retained
product water = 0.05 / (1 - 0.05) x 11.2 kg/h = 0.587 kg/hPurchased cost: $529k at 15 L/h; $1.88M at 150 L/h.
drying_separation (shared mass balance) · energy _energy_drying
| Parameter | Default | Note |
|---|---|---|
| residual_moisture rm | 0.05 | 0 allowed |
| drying_yield | 0.93 | |
| drying_temperature_c | spray 60, fluid bed 70, tray 50, freeze −20, rotary 80, drum 100 |
Mass balance
w = [rm/(1 − rm) · DM · yield] / m_w,in
f_co,i = 1 − w^α_i co-evaporation (Rayleigh)
retained_i = m_i · (1 − f_co,i) · yield
product water = rm/(1 − rm) · Σ retained ≤ water fed
vapour water = water in − product water
powder volume = (DM/600) · (1 + rm)/(1 − rm)
Energy by dryer
Spray / fluid bed / rotary (convective, one formula for both tiers)
η_air = (T_in − T_out)/(T_in − T_amb) · (1 − f_loss) per-dryer heat loss in data
fluid bed 70/40 °C → 0.60; spray 0.58; rotary 0.55 (≈ 4.2 MJ/kg water for the fluid bed)
Q = λ(T_out)·m_evap/η_air + sensible, Q ≥ 4500 kJ/kg × m_evap (Baker & McKenzie 2005)
Drum
Q = latent/0.75 + sensible; area = m_evap / 20 kg/m²/h (reported)
Vacuum tray
P 10 mbar, T_evap = Tsat(P); Q = (latent + sensible)/0.75
Freeze
sublimation = m·2838/3600 kW; freezing = sensible to 0 °C + m_w·333.6 + m·2.05·25
condenser = sublimation + m·1.996·15; electricity = refrigeration/1.25 + vacuum
- Rayleigh co-evaporation overstates volatile loss from a drying droplet (Thijssen & Rulkens 1968). The code says so.
- Exponent n
- 0.6
- Base cost
- $600k at 1,000 L/h
- Largest single unit
- 100,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 2.8
- Power
- 30 kW per m³/h
- Exponent n
- 0.5
- Base cost
- $2M at 500 L/h
- Largest single unit
- 500 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 3.0
- Power
- 60 kW per m³/h
- Exponent n
- 0.7
- Base cost
- $250k at 1,000 L/h
- Largest single unit
- 10,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.2
- Power
- 5 kW per m³/h
- Exponent n
- 0.6
- Base cost
- $500k at 1,000 L/h
- Largest single unit
- 2,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 20 kW per m³/h
- Exponent n
- 0.7
- Base cost
- $400k at 1,000 L/h
- Largest single unit
- 50,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.5
- Power
- 10 kW per m³/h
- Exponent n
- 0.55
- Base cost
- $880k at 200 L/h
- Largest single unit
- 200 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.2
- Power
- 20 kW per m³/h
Heat sterilisation heat_sterilization
Heats a medium or feed long enough to kill contaminating organisms, then cools it back down.
Worked example Continuous Heat Sterilizer · continuous_heat_sterilizer
Scenario: Sterilising fermentation medium
- Del factor delivered
- 40
- Hold time
- 48.2 s
- Glucose kept intact
- 99 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 1,000 | 1,000 |
| Glucose, g/L | 100 | 99 |
| Ammonium Sulfate, g/L | 25 | 25 |
k_d = (ln10 / D121) exp(-(Ea/R)(1/T - 1/394.25)); t_hold = Del / k_d
k_d = (ln10 / 2.4 min) x exp(-(283,000 / 8.314) x (1/(140 + 273.15) - 1/394.25)); t_hold = 40 / k_d = 48.2 sPurchased cost: $359k at 1,000 L/h; $1.28M at 10,000 L/h.
heat_sterilization_separation · hold time in sterility_economics
| Parameter | Default | Note |
|---|---|---|
| hold_temp_c | 140 °C | [130, 150]; old key temperature_c still accepted |
| target_del_factor | 40 | ≥ 32.2 |
| yield_loss | 0.01 | [0, 0.15] |
| regeneration efficiency η | 0.90 | ≤ 0.95 |
Balance target_out = target_in · (1 − yield_loss) rest kept as heat-degraded
Del factor k_d = (ln10 / D121) · exp(−(Ea/R)(1/T − 1/394.25)) D121 = 2.4 min, Ea = 283 kJ/mol
t_hold = ∇ / k_d (∇ target 40 → 48 s at 140 °C, 132 s at 135 °C) or declared hold → ∇ delivered
one resolver (sterility_economics) feeds the balance, the rate panel and the TEA
Energy Q = m·cp·(T_hold − T_in)·(1 − η) billed as STEAM at the same setpoint in both tiers,
plus trim cooling water for the same duty
- Delivered Del below 32.2 is fatal ("Under-sterilised medium"), with the hold that would be needed. The old default of 135 °C for 5 s delivered Del 1.5.
- Exponent n
- 0.55
- Base cost
- $250k at 1,000 L/h
- Largest single unit
- 50,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 12.8 kW per m³/h
Pasteurisation pasteurization
Heats a liquid briefly to kill vegetative microbes, a milder treatment than sterilisation.
Worked example Pasteurizer (HTST) · pasteurizer
Scenario: HTST pasteurisation of sweet whey
- Vegetative log reduction
- 10 log
- Pasteurisation units
- 12.9 PU
- Heating after regeneration
- 40.2 kW
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 5,000 | 5,000 |
| Whey Protein, g/L | 6 | 5.97 |
| Lactose, g/L | 48 | 48 |
D_T = D_ref x 10^((72 - T)/z); log reduction = t_hold / D_T
D_T = 1.5 s x 10^((72 - 72) / 6); log reduction = 15 s / D_T = 10Purchased cost: $454k at 5,000 L/h; $1.61M at 50,000 L/h.
pasteurization_separation
| Parameter | Default | Note |
|---|---|---|
| temperature_c | 72 | > 100 refused, clamped |
| hold_time_s | 15 | |
| z_value_c | 6.0 | |
| d_ref_s | 1.5 s at 72 °C | |
| yield_loss | 0.005 | [0, 0.10] |
D_T = D_ref · 10^((72 − T)/z)
log reduction = t_hold / D_T warning below 5 log (US PMO)
spores D = 120 s · 10^((121.1 − T)/10)
PU = (t/60) · 10^((T − 60)/7)
Q = m·4.186·(T − T_in)·(1 − η) T_in 25 °C
- Exponent n
- 0.55
- Base cost
- $150k at 1,000 L/h
- Largest single unit
- 50,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 5.5 kW per m³/h
Extraction & precipitation
Liquid–liquid extraction extraction
Moves the product from the water phase into an immiscible solvent in which it dissolves better.
Worked example Liquid-Liquid Extraction · liquid_liquid_extraction
Scenario: Extracting vanillin into ethyl acetate
- Vanillin extracted
- 98 %
- Vanillin in the extract
- 5.19 g/L
- Solvent make-up
- 8.11 kg/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Organic phase | Heavy phase |
|---|---|---|---|
| Flow, L/h | 1,000 | 944 | 1,060 |
| Vanillin, g/L | 5 | 5.19 | 0.0947 |
| Glucose, g/L | 5 | 0.00305 | 4.73 |
makeup = m_extract (1 - recovery) + m_raffinate (1 - stripper)
makeup = 822 x (1 - 0.995) + 80 x (1 - 0.95) kg/h = 8.11 kg/hPurchased cost: $438k at 1,000 L/h; $1.74M at 10,000 L/h.
liquid_liquid_extraction_separation · make-up in process_solvents.solvent_makeup_kg_per_hr
| Parameter | Default | Note |
|---|---|---|
| solvent_ratio R (v/v) | 1.0 | [0.1, 10] |
| n_stages N | 3 | [1, 10] |
| extraction_pH | inlet pH, else 7.0 | |
| solvent_type | ethyl_acetate | |
| solvent_recovery / raffinate stripper | 0.995 / 0.95 |
V_org = R·F, V_aq = F
solvent lost to raffinate m_s,raff = min(m_solv, S_sw·F)
water into extract m_w,ext = min(m_w,in, m_s,ext · w/(1 − w)), w = water-in-solvent wt fraction ≤ 0.5
log P component → database → class fallback (protein −2, salt −3, sugar −2.5, acid 0.5 …)
acids / amino acids logP_eff = logP + log10(f_neutral), f_neutral = 1 − 1/(1 + 10^(pKa − pH))
K_D = 10^clamp(logP_eff + solvent correction, −5, 5)
Kremser (countercurrent) E = K_D·R
f_org = (E^(N+1) − E)/(E^(N+1) − 1), E = 1 → N/(N + 1), ≤ 0.98
make-up charge = F·R·ρ; raffinate = min(charge, S_sw·F/1000)
makeup = (charge − raffinate)(1 − recovery) + raffinate(1 − stripper)
thorough sizing V_stage = F(1 + R)·(10/60)·1.25 per stage, 0.4 kW/m³
- A water-miscible solvent (ethanol, methanol) is refused: it makes one phase, not two.
- Exponent n
- 0.6
- Base cost
- $350k at 1,000 L/h
- Largest single unit
- 20,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 1 kW per m³/h
pH-swing back-extraction ph_swing_back_extraction
Moves an acidic or basic product back out of the organic solvent into a fresh water phase by changing the pH.
Worked example pH-Swing Back Extraction · ph_swing_back_extraction
Scenario: Penicillin G extraction and back-extraction
- Penicillin recovered
- 89.2 %
- Concentration factor
- 4.91 x
- Forward extraction pH
- 2.26
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Light phase | Concentrate |
|---|---|---|---|
| Flow, L/h | 1,000 | 984 | 182 |
| Penicillin G, g/L | 30 | 2.68 | 147 |
| Glucose, g/L | 5 | 5.08 | 0.00388 |
E = D R; f = (E^(N+1) - E) / (E^(N+1) - 1) (Kremser, forward extraction)
E = 16.2 x 0.25 = 4.06; f = (4.06^(1.7 + 1) - 4.06) / (4.06^(1.7 + 1) - 1) = 0.929Purchased cost: $1.75M at 1,000 L/h; $7.82M at 10,000 L/h.
ph_swing_back_extraction_separation, _kremser_fraction, _ph_swing_distribution_ratio
| Parameter | Default | Note |
|---|---|---|
| solvent_type / ratio R | butyl_acetate / 0.25 | [0.05, 5] |
| stages forward / back | 2 / 2 | [1, 10] |
| stage_efficiency η | 0.85 | |
| back_phase_ratio | 0.2 | |
| temperature_c / acid hold | 5 °C / 1 h | |
| degradation_rate_per_hr | 0.02 at 5 °C |
pH window acid: fwd = pKa − 0.5, back = pKa + 4.5; base: fwd = pKa + 1.0, back = pKa − 4.0 (clamp 1.5–12)
D(pH) = 10^clamp(logP + log10 f_neutral(pKa, pH) + solvent correction, −5, 5)
N_eff = N·η
forward f1 = min(0.98, Kremser(D_fwd·R, N_fwd,eff))
degradation k = k_ref·2.5^((T − 5)/10); loss = 1 − exp(−k·t_hold) acid swing only
back V_back = back_ratio·R·F; E_b = (V_aq/V_solv)/D_back; f_b = min(0.98, Kremser(E_b, N_back,eff))
buffer floor V_back ≥ m_target / (1.5·c_sat(T, pH_back))
back titrant mol = m_target/MW/eq + 0.02·V_back (eq 2 for H2SO4, Ca(OH)2)
solvent makeup = s_raff(1 − stripper) + s_prod + purge·circulating
- Refused for proteins, polymers, cells or MW > 1500, and for a pKa outside acid 2–8 or base 5.5–11.5.
- Exponent n
- 0.65
- Base cost
- $700k at 1,000 L/h
- Largest single unit
- 15,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 6 kW per m³/h
Precipitation precipitation
Adds salt, solvent or acid so the product, or an impurity, becomes insoluble and drops out as a solid.
Worked example Precipitation · precipitation
Scenario: Ammonium sulfate precipitation of an enzyme
Set beyond the catalogue defaults: mechanism = salting_out
- Amylase precipitated
- 80 %
- Ammonium sulfate dosed
- 325 kg/h
- Ionic strength
- 7.38 mol/L
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Magma |
|---|---|---|
| Flow, L/h | 1,000 | 1,180 |
| Amylase, g/L | 5 | 4.22 |
| Glucose, g/L | 1 | 0.845 |
m_solid = eta max(0, m - C_sat V_liquor)
m_solid = 0.8 x max(0, 5 kg/h - 4.00e-04 g/L x 1,180 L/h) = 4 kg/hPurchased cost: $431k at 1,000 L/h; $1.72M at 10,000 L/h.
precipitation_separation, _precip_isoelectric_c_sat, shared partition _cryst_partition
| Parameter | Default | Note |
|---|---|---|
| mechanism | auto | isoelectric, salting_out, antisolvent, metal_salt, thermal |
| pH / temperature_c | 4.5 / 4 | |
| precipitant | ammonium sulfate, 325 g/L | |
| occluded_liquor_fraction | 0.05 | [0.02, 0.08] |
| hold_time_min | 30 | sizing |
PROTEIN SOLUBILITY (isoelectric / salting-out; Cohn)
q = 0.12 · MW_kDa · |pH − pI|
S_pH = min(S_w, (S_w/30) · 10^(0.25·q))
S = S_pH · 10^(−0.75·I) I = factor·dose/MW ((NH4)2SO4 3, NaCl 1, CaCl2 3, alum 15)
ANTISOLVENT
C_sat × 10^(−4.5·φ) φ: xanthan IPA 0.60, hyaluronan EtOH 0.70, default EtOH 0.67
top-up V = (φ − φ_feed)·F/(1 − φ)
METAL SALT C_sat × 0.02; THERMAL (T ≥ 60 °C) proteins C_sat × 0.05
PARTITION
m_solid = η · max(0, m − C_sat·V_liquor) η: isoelectric 0.75, salting-out 0.80, antisolvent 0.93, metal 0.85, thermal 0.85
magma ≤ 0.35 solids; occluded = crystals·f/(1 − f)
SIZING V = Q · hold/60 · 1.25, 0.3 kW/m³
- Isoelectric needs a protein with a pI and |pH − pI| ≤ 0.5. A magma above 0.40 solids is refused.
- Exponent n
- 0.6
- Base cost
- $300k at 1,000 L/h
- Largest single unit
- 50,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 1.8
- Power
- 3 kW per m³/h
Conditioning, dosing & holds
pH adjustment ph_adjustment
Adds acid or base to bring a stream to a target pH.
Worked example pH Adjustment · ph_adjustment
Scenario: Neutralising lactic acid broth
- pH
- 7
- Sodium hydroxide
- 35.1 kg/h
- Base demand
- 0.878 eq/L
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 1,000 | 1,020 |
| Lactic Acid, g/L | 90 | 88.6 |
| Glucose, g/L | 5 | 4.92 |
titrant g/h = mol/L x MW x F
NaOH = 0.878 mol/L x 39.997 g/mol x 1,000 L/h = 35.1 kg/hPurchased cost: $150k at 1,000 L/h; $597k at 10,000 L/h.
ph_adjustment_separation, ph_calculations.titrant_demand
| Parameter | Default | Note |
|---|---|---|
| target_pH | 7.0 | required |
| titrant | auto | NaOH (up), H2SO4 (down); lime, NH4OH, HCl, KOH |
charge balance SID = Kw/h − h + Σ C_i·α_i(pH), α = 1/(1 + 10^(pKa − pH))
dose D bisection (60×, 0–12.5 mol/L) until pH_after(SID + z·D) = target; deadband 0.05
H2SO4 eq = D·(1 + α_HSO4(pH)), bisulfate pKa 1.99
lime mol = D/2
NH4OH mol = D + mol·α_9.25(pH_in) fixed point
titrant g/h = mol/L · MW · F
acid dose forms a salt: g_salt = mol·F·stoich·MW_salt (e.g. (NH4)2SO4 132.14)
- Exponent n
- 0.6
- Base cost
- $120k at 1,000 L/h
- Largest single unit
- 100,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 1.6
- Power
- 0.6 kW per m³/h
Reagent dose reagent_dose
Adds a set amount of a liquid or solid reagent to a stream.
Worked example Reagent Dosing · reagent_dose
Scenario: Dosing ethanol to precipitate pullulan
- Ethanol dosed
- 1,600 kg/h
- Water left in the liquor
- 37.6 wt%
- Ethanol cost
- 1,440 USD/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 1,000 | 3,030 |
| Pullulan, g/L | 30 | 9.91 |
| Ethanol, g/L | – | 529 |
V_add = F phi / (1 - phi); m = V_add rho
V_add = 1,000 L/h x 0.67 / (1 - 0.67) = 2,030 L/h; m = V_add x 0.789 kg/L = 1,600 kg/hPurchased cost: $188k at 1,000 L/h; $746k at 10,000 L/h.
reagent_dose_separation
| Reagent | Form | ρ g/mL · $/kg |
|---|---|---|
| ethanol / isopropanol | liquid | 0.789 · 0.90 / 0.786 · 1.50 |
| ammonium sulfate | solid | 1.77 · 0.20 |
| PEG | solid | 1.20 · 2.80 |
| calcium hydroxide | solid | 2.21 · 0.18 |
| flocculant | solid | 1.10 · 4.00 |
liquid (ratio = final volume fraction φ, default 0.67) V_add = F·φ/(1 − φ); m = V_add·ρ·1000
solid (ratio = g per L feed) m = ratio·F; V_add = m/(ρ·1000)
V_out = F + V_add; every feed concentration × F/V_out
above solubility → suspended; lime bisected to pH 12.45, the rest is slurry
- Refused at φ ≥ 0.9 or ratio ≤ 0.
- Exponent n
- 0.6
- Base cost
- $150k at 1,000 L/h
- Largest single unit
- 100,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 1.8
- Power
- 1 kW per m³/h
Mixing vessel mixing_vessel
Blends streams and additions together in a stirred tank.
Worked example Mixing Vessel · mixing_vessel
Scenario: Glucose syrup diluted with process water to fermentation strength
- Glucose out
- 100 g/L
- Mixed flow
- 1,000 L/h
- Glucose recovered
- 100 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 200 | 1,000 |
| Glucose, g/L | 500 | 100 |
C_mix = sum C_k V_k / V_out
C_mix = (500 g/L x 200 L/h syrup + 0 g/L x the dilution water) / 1,000 L/h = 100 g/LPurchased cost: $160k at 200 L/h; $637k at 2,000 L/h.
mixing_vessel_separation
inlets are mixed upstream by mass: C_mix,i = Σ C_i,k·V_k / Σ V_k
target C × (1 − conversion) conversion default 0
optional target_pH → titrant_demand (NaOH / H2SO4); kg/h = kg_per_m³ · F/1000
yield = 0.99·(1 − 0.05·conversion)
sizing V = Q · residence_time/60 · 1.25 (15 min), 0.5 kW/m³
- Exponent n
- 0.6
- Base cost
- $160k at 1,000 L/h
- Largest single unit
- 100,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- food_grade
- Installation factor
- 1.6
- Power
- 0.5 kW per m³/h
Viral inactivation viral_inactivation
Holds the product at low pH for a set time so enveloped viruses are inactivated, then neutralises it.
Worked example Viral Inactivation · viral_inactivation
Scenario: Low-pH hold of a Protein A eluate
- Antibody recovered
- 98 %
- Hold pH
- 3.8
- Titrant used
- 0.00277 kg/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 300 | 300 |
| Monoclonal Antibody (IgG), g/L | 15 | 14.7 |
| Host Cell Protein (HCP), g/L | 0.03 | 0.03 |
target_out = target_in (1 - yield_loss)
target_out = 4.5 kg/h x (1 - 0.02) = 4.41 kg/hPurchased cost: $92.8k at 300 L/h; $329k at 3,000 L/h.
viral_inactivation_separation, _apply_product_loss
| Parameter | Default | Note |
|---|---|---|
| method | low_pH | solvent_detergent, heat |
| hold_pH / post-neutralisation pH | 3.8 / 7.0 | |
| yield_loss | 0.02 | [0, 0.20] |
| hold_time_min | 60 | sizing |
target_out = target_in · (1 − yield_loss) lost part kept as "(denatured)"
low pH: two titrant legs pH_in → 3.8 → 7.0, bisulfate carried between them
sizing V = Q · hold/60 · 1.25; capex design flow uses the 2 h batch window
- Exponent n
- 0.55
- Base cost
- $180k at 1,000 L/h
- Largest single unit
- 10,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 2.0
- Batch window
- 2 h
- Power
- 0.5 kW per m³/h
Cell disruption, milling & biomass treatment
Homogeniser & bead mill high_pressure_homogenizer bead_mill
Breaks cells open to release the product inside them, by forcing them through a valve at high pressure or grinding them with beads.
Worked example High-Pressure Homogenizer · high_pressure_homogenizer
Scenario: Releasing an intracellular enzyme from yeast
- Cells disrupted
- 84 %
- Pump power
- 52.3 kW
- Passes
- 2
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 1,000 | 993 |
| Yeast (S. cerevisiae), g/L | 100 | 16.1 |
| Lactase (beta-galactosidase), g/L | 5 | 4.23 |
| Lactase (beta-galactosidase) (cell-associated), g/L | – | 0.806 |
| Cell Debris, g/L | – | 44 |
R = 1 - (1 - R1)^(N (P/800)^a) (yeast R1 0.60, a 2.2)
R = 1 - (1 - 0.60)^(2 x (800 / 800)^2.2) = 0.84Purchased cost: $522k at 1,000 L/h; $3M at 10,000 L/h (2 units in parallel).
Worked example Bead Mill (Cell Disruptor) · bead_mill
Scenario: Bead-milling yeast to release an intracellular enzyme
Set beyond the catalogue defaults: bead_mill_specific_energy_kwh_per_kg_dcw = 2
- Cells disrupted
- 81.7 %
- Shaft power
- 235 kW
- Specific energy
- 2 kWh/kg DCW
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 1,000 | 993 |
| Yeast (S. cerevisiae), g/L | 100 | 18.4 |
| Lactase (beta-galactosidase), g/L | 5 | 4.12 |
| Lactase (beta-galactosidase) (cell-associated), g/L | – | 0.92 |
| Cell Debris, g/L | – | 42.8 |
R = 1 - exp(-k E) (yeast k 0.85)
R = 1 - exp(-0.85 x 2 kWh/kg) = 0.817Purchased cost: $492k at 1,000 L/h (4 units in parallel); $3.75M at 10,000 L/h (34 units in parallel).
cell_disruption_separation, _homogenizer_release_fraction, _bead_mill_release_fraction
| Parameter | Default | Note |
|---|---|---|
| passes N | 2 | [1, 5] |
| homogenizing_pressure_bar P | 800 | [300, 1500] |
| organism_class | yeast | |
| bead mill specific energy E | 1.0 kWh/kg DCW | [0.2, 5] |
| HCP release | 0.30 g/g (0.42 bacteria) | |
| non-protein solubles | 0.18 g/g |
HOMOGENISER (Hetherington / Follows, Middelberg 1995)
R = 1 − (1 − R1)^(N·(P/800)^a) ≤ 0.995
yeast (0.60, 2.2) gram-negative (0.80, 1.4) gram-positive (0.55, 1.8) mammalian (0.97, 1.0)
energy kWh/m³ = N·P·1e5/3.6e6; pump kW = kWh/m³ · Q / η(0.85)
ΔT_ad = N·P·1e5 / (1000·4180)
BEAD MILL
R = 1 − exp(−k·E) k: yeast 0.85, gram-positive 0.7, gram-negative 2.5, mammalian 5.0
P_shaft = max(E·X·Q, 0.45·E·100·Q)
heat-limited capacity Q_max = 60 kW / (E·X)
BALANCE
solubles = m_X·R·(g_HCP + g_NPS); debris = m_X·R·(1 − g_HCP − g_NPS); intact = m_X·(1 − R)
intracellular target: released m·R, the rest stays cell-associated
- Exponent n
- 0.7
- Base cost
- $600k at 1,000 L/h
- Largest single unit
- 5,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 1.8
- Power
- 52.3 kW per m³/h
- Exponent n
- 0.65
- Base cost
- $400k at 1,000 L/h
- Largest single unit
- 2,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- industrial_biotech
- Installation factor
- 1.7
- Power
- 100 kW per m³/h
Hammer & ball mill hammer_mill ball_mill
Grinds solid feed such as biomass or grain into smaller particles, with hammers or tumbling balls.
Worked example Hammer Mill · hammer_mill
Scenario: Size-reducing baled corn stover
- Specific energy
- 38.2 kWh/t
- Motor power
- 39.1 kW
- Product size P80
- 2,000 um
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 710 | 710 |
| Cellulose, g/L | 592 | 592 |
| Hemicellulose (Xylan), g/L | 395 | 395 |
| Lignin, g/L | 310 | 310 |
E = 10 Wi (1/sqrt(P80) - 1/sqrt(F80))
E = 10 x 250 kWh/t x (1/sqrt(2,000) - 1/sqrt(20,000)) = 38.2 kWh/tPurchased cost: $12.4k at 710 L/h; $69.6k at 7,100 L/h.
Worked example Ball Mill · ball_mill
Scenario: Fine grinding milled corn stover
- Specific energy
- 79 kWh/t
- Motor power
- 80.7 kW
- Product size P80
- 300 um
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 710 | 710 |
| Cellulose, g/L | 592 | 592 |
| Hemicellulose (Xylan), g/L | 395 | 395 |
| Lignin, g/L | 310 | 310 |
E = 10 Wi (1/sqrt(P80) - 1/sqrt(F80))
E = 10 x 200 kWh/t x (1/sqrt(300) - 1/sqrt(3,000)) = 79 kWh/tPurchased cost withheld while this cost model is revised.
milling_separation (Bond 1952)
| Hammer | Ball | |
|---|---|---|
| work index Wi (kWh/t) | 250 | 200 |
| feed F80 (µm) | 20 000 | 3 000 |
| target P80 (µm) | 2 000 | 300 |
E [kWh/t dry] = 10·Wi·(1/√P80 − 1/√F80)
shaft kW = E · dry t/h; motor kW = shaft / 0.90
mass unchanged; every solid leaves at size P80
- Refused above 15% moisture. P80 below 100 µm is clamped.
- Exponent n
- 0.75
- Base cost
- $100k at 10,000 L/h
- Largest single unit
- 25,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 32 kW per m³/h
- Exponent n
- 0.75
- Base cost
- $150k at 10,000 L/h
- Largest single unit
- 25,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.0
- Power
- 40 kW per m³/h
Alkaline lysis alkaline_lysis
Opens bacterial cells with alkali and detergent to release plasmid DNA, then neutralises so debris and genomic DNA precipitate.
Worked example Alkaline Lysis (Plasmid DNA Release) · alkaline_lysis
Scenario: Alkaline lysis to release plasmid DNA
- Plasmid recovered
- 78.4 %
- Lysate volume
- 900 L/h
- RNA per plasmid
- 34.2 g/g
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 200 | 913 |
| E. coli cells, g/L | 50 | 0.219 |
| Plasmid DNA (pDNA), g/L | 0.3 | 0.0515 |
| RNA, g/L | – | 1.76 |
m_wet = m_X / 0.25; V_resusp = max(F, 7.5 m_wet); V_out = 3 V_resusp
m_wet = 40 kg/h; V_resusp = max(200, 7.5 x 40) = 300 L/h; V_out = 3 x 300 = 900 L/hPurchased cost: $171k at 200 L/h; $840k at 2,000 L/h (2 units in parallel).
alkaline_lysis_separation (plasmid DNA)
| Parameter | Default |
|---|---|
| resuspension | 7.5 mL/g wet cells |
| NaOH / SDS / KAc | 0.2 M / 1.0 % / 3.0 M |
| lysis_time_min / efficiency | 4 / 0.98 |
| pdna_recovery | 0.8 |
| plasmid_size_kb | 5 |
m_wet = m_X/0.25; V_resusp = max(F, 7.5·m_wet/1000); V_out = 3·V_resusp
NaOH g = M·39.997·V; SDS g = pct·10·V; KAc g = M·98.142·V
shear loss = min(0.30, max(0, kb − 20)·0.01); over-lysis = min(0.9, max(0, t − 5)·0.03)
recovered pDNA = m·lysis_eff·pdna_recovery·(1 − shear)(1 − over-lysis)
floc = other + DNA(1 − leak) + RNA(1 − 0.8) + LPS(1 − 0.05) + 0.95·SDS + 0.9·protein
cooling = V_out·4180·ΔT/3.6e6 / COP 3
- Exponent n
- 0.6
- Base cost
- $450k at 1,000 L/h
- Largest single unit
- 1,500 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- pharma_gmp
- Installation factor
- 2.0
- Power
- 12 kW per m³/h
Inclusion-body refold inclusion_body_refold
Dissolves insoluble protein aggregates in a denaturant, then dilutes them so the protein folds back into its active form.
Worked example Inclusion Body Solubilisation & Refolding · inclusion_body_refold
Scenario: Solubilising and refolding proinsulin inclusion bodies
- Native protein, overall
- 43.7 %
- Refold pool
- 4,980 L/h
- Refold yield
- 52.7 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product | Waste |
|---|---|---|---|
| Flow, L/h | 100 | 4,960 | 233 |
| Proinsulin, g/L | 30 | 0.264 | 1.74 |
| Cell Debris, g/L | 5 | 0.0161 | 1.8 |
beta = C / C*; Y = ln(1 + beta (1 - exp(-k1 tau))) / beta; refold = Y_max Y
beta = 0.5 / 0.35 = 1.43; Y = ln(1 + 1.43 (1 - exp(-0.35 x 16))) / 1.43 = 0.62; refold = 0.85 x 0.62 = 0.527Purchased cost: $5.99M for a 93,700 L vessel (vessel-volume basis, feed 100 L/h); $47.6M for a 937,000 L vessel (vessel-volume basis, feed 1,000 L/h) (10 units in parallel).
inclusion_body_refold_separation, _ib_refold_yield_fraction
| Parameter | Default |
|---|---|
| wash cycles k / volume ratio r / loss | 2 / 5 / 0.07 |
| chaotrope | urea 8 M |
| solubilisation / refold concentration | 25 / 0.5 g/L |
| refold time / temperature / pH | 16 h / 10 °C / 8.5 |
| disulfide_bonds | 3 |
WASH dissolved kept (1/(1 + r))^k; target kept (1 − loss)^k; debris removal min(0.8, 0.5 + 0.1·M)
SOLUBILISE f_sol = 0.96 / (1 + exp(−(M_eff − 5.0)/0.45)) M_eff = M × potency (urea 1, GuHCl 2)
REFOLD V_refold = m_sol / refold_g_l
class by disulfides (Y_max, C*, k1): 0 → (0.92, 3.0, 20); ≤2 → (0.88, 0.80, 0.50); ≤4 → (0.85, 0.35, 0.35);
≤8 → (0.70, 0.10, 0.20); more → (0.50, 0.02, 0.10)
temperature C* = C*_ref·exp(50000/8.314·(1/T − 1/283.15)), k1 with the opposite sign
β = C_protein / C*; pulses n ≤ 3, β_eff = β/n
kinetic yield Y = ln(1 + β(1 − e^(−k1·τ))) / β
refold yield = Y_max · (1/n)·Σ Y(β_eff, k1, τ(n − i)/n)
non-native × 0.70 → aggregate
VESSEL V_work = V_pool · τ; sized volume = V_work / 0.85 → capex on VOLUME
- Exponent n
- 0.7
- Base cost
- $1.35M at 1,875 L/h
- Largest single unit
- 6,250 L/h
- Largest vessel
- 100,000 L
- Repeat-unit exponent
- 0.9
- Anchor grade
- food_grade
- Installation factor
- 2.2
- Power
- 250 kW per m³/h
RNA reduction heat shock rna_reduction_heat_shock
Heats harvested cells briefly so their own enzymes break down RNA, lowering the nucleic-acid content of single-cell protein.
Worked example RNA Reduction (Heat Shock) · rna_reduction_heat_shock
Scenario: RNA reduction of mycoprotein
- RNA removed
- 1.72 kg/h
- Biomass kept
- 14 kg/h
- RNA left
- 2 %
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Product |
|---|---|---|
| Flow, L/h | 1,000 | 999 |
| Mycoprotein, g/L | 20 | 14 |
m_out = m_b (1 - f); RNA removed = m_b rna_in - m_out rna_out
m_out = 20 x (1 - 0.3) = 14 kg/h; RNA removed = 20 x 0.1 - 14 x 0.02 = 1.72 kg/hPurchased cost: $200k at 1,000 L/h; $1M at 10,000 L/h.
rna_reduction_separation
defaults: 68 °C, 30 min, dry-mass loss f 0.30, RNA 0.10 → 0.02, heat regeneration 0.50
m_out = m_b · (1 − f)
RNA removed = m_b·rna_in − m_out·rna_out
leachate = max(m_b·f, RNA removed) → nucleotides + cell solubles
Q_heat = ṁ·4.186·(T_hold − T_in)·(1 − regen); Q_cool = Q_heat
- Exponent n
- 0.7
- Base cost
- $200k at 1,000 L/h
- Largest single unit
- 50,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- food_grade
- Installation factor
- 2.0
- Power
- 25 kW per m³/h
Chemical conversion & utilities
Ester hydrolysis ester_hydrolysis
Splits an ester back into its acid and alcohol with water in a reactive distillation column.
Worked example Ester Hydrolysis (Reactive Distillation) · ester_hydrolysis
Scenario: Hydrolysing methyl lactate to pure lactic acid
Set beyond the catalogue defaults: ester_component = Methyl Lactate, acid_component = Lactic Acid
- Ester hydrolysed
- 98 %
- Lactic acid product
- 848 kg/h
- Methanol recovered
- 300 kg/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Heavy phase | Light phase | Waste |
|---|---|---|---|---|
| Flow, L/h | 1,000 | 818 | 413 | 392 |
| Methyl Lactate, g/L | 1,000 | 1.22 | 46 | – |
| Lactic Acid, g/L | – | 1,040 | – | – |
| Methanol, g/L | – | – | 726 | 3.85 |
X_ceil = 1 - (1 - X_eq)^n; X = min(X_req, X_ceil)
X_ceil = 1 - (1 - 0.667)^8 = 1; X = min(0.98, 1) = 0.98Purchased cost: $1M at 1,000 L/h; $4.79M at 10,000 L/h.
ester_hydrolysis_separation, hydrolysis_equilibrium_conversion
defaults: water:ester 4.0 mol/mol, K 2.5, 8 reactive stages, target conversion 0.98
water make-up = max(0, r_w·n_ester·18.015 − water in)
equilibrium (1/K)(1 − X)(r_w − X) = (X + a0)(X + b0)
column X_ceil = 1 − (1 − X_eq)^n; X = min(X_req, X_ceil, 0.999)
acid formed = X·n·MW_acid; alcohol formed = X·n·MW_alc
heavy (acid) water = non-water · (1/0.88 − 1); light (recycle) alcohol × 0.995
- Exponent n
- 0.68
- Base cost
- $1M at 1,000 L/h
- Largest single unit
- 100,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 2.5
- Power
- 130 kW per m³/h
Hydrotreater hydrotreater_upgrading
Reacts a bio-oil or lipid with hydrogen over a catalyst to strip out oxygen and leave a hydrocarbon fuel.
Worked example Hydrotreater / Upgrader · hydrotreater_upgrading
Scenario: Hydrotreating a triglyceride oil to renewable diesel
- Renewable fuel
- 706 kg/h
- Hydrogen consumed
- 30.6 kg/h
- Quench beds
- 6
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Light phase | Heavy phase | Off gas |
|---|---|---|---|---|
| Flow, L/h | 1,000 | 924 | 109 | 57,000 |
| Triolein, g/L | 900 | – | – | – |
| Renewable hydrocarbon fuel, g/L | – | 763 | – | – |
| Unconverted oil, g/L | – | 19.5 | – | – |
M_HC = Y X M_oil
M_HC = 0.8 x 0.98 x 900 kg/h = 706 kg/hPurchased cost: $1.35M at 1,000 L/h (cost floor); $5.49M at 10,000 L/h.
hydrotreating_separation (PNNL-23227)
| Feed class | Fuel yield Y | H2 kg/kg | C content |
|---|---|---|---|
| lipid | 0.80 | 0.034 | 0.904 |
| HTL biocrude | 0.77 | 0.043 | 0.89 |
| pyrolysis oil | 0.45 | 0.060 | 0.47 |
Y ≤ max(0.05, (CC·0.855 − G·0.5)/0.855) carbon ceiling, G = gas fraction 0.07
M_H2 = y·M_oil; M_HC = Y·X·M_oil; gas = G·M_oil; X = 0.98
M_H2O = M_oil(1 + y) − M_HC − (1 − X)M_oil − gas ≤ M_oil·O_frac·18.015/16
catalyst V = (M_oil/900) / LHSV(0.6); Q_rxn = 50 MJ/kg H2
beds n = ⌈ΔT_ad / 55⌉; compression 1.35 kWh/kg H2
- Exponent n
- 0.75
- Base cost
- $13.9M at 30,000 L/h
- Largest single unit
- 200,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- chemical
- Installation factor
- 1.7
- Cost floor
- $1.5M
- Power
- 40 kW per m³/h
CHP boiler & turbogenerator chp_boiler_turbogenerator
Burns residues or biogas to raise steam, and runs a turbine on it for electricity and process heat.
Worked example CHP Boiler / Turbogenerator · chp_boiler_turbogenerator
Scenario: Burning lignin cake for steam and power
- Net electricity
- 307 kW
- Process steam
- 1,330 kW
- Fuel heat released
- 7,360 MJ/h
Selected components shown; water, salts and minor by-products omitted.
| Stream | Feed | Waste | Off gas |
|---|---|---|---|
| Flow, L/h | 1,000 | 9.11 | 5,140,000 |
| Lignin, g/L | 350 | – | – |
| Cellulose, g/L | 60 | – | – |
| Carbon Dioxide, g/L | – | – | 0.142 |
P_el = eta_el x Q_fuel / 3.6
P_el = 0.15 x 7,360 MJ/h / 3.6 = 307 kWPurchased cost: $2.49M at 1,000 L/h; $14M at 10,000 L/h.
chp_boiler_separation, _chp_flue_balance (NREL/TP-5100-47764)
defaults: boiler η_b 0.80, net electrical η_el 0.15, back-pressure mode, excess air 0.20
LHV_i = 0.94·ΔHc, else class (lipid 38, protein 23, sugar 14.6, cell 21 … MJ/kg)
Q_fuel = m_comb·LHV − m_water·2.44 MJ/h
P_el = η_el · Q_fuel / 3.6 kW
Q_steam = max(0, η_b·Q_fuel − 3.6·P_el)
flue O2 = C + H/4 + S − O/2; air = O2·(1 + EA)/0.2095
CO2 = C, H2O = H/2 + moisture, N2 = 0.7905·air + N/2
credit steam and power credited up to the plant's own demand
- Refused below 35% solids: the fuel does not burn self-supporting.
- Exponent n
- 0.75
- Base cost
- $14M at 10,000 L/h
- Largest single unit
- 100,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- commodity_bulk (grade-independent)
- Installation factor
- 2.2
- Power
- 0 kW per m³/h
Wastewater treatment wastewater_treatment
Treats the waste streams of the plant to remove their organic load before discharge.
Worked example Wastewater Treatment · wastewater_treatment_unit
Worked example withheld while this model is revised.
wastewater_treatment_separation · plant cost in wastewater_cost_lines
COD = Σ c_i · ThOD_i ThOD from formula, else class (sugar 1.07, lipid 2.9, alcohol 2.1 …)
effluent COD = COD · (1 − removal) physicochemical 0.60, aerobic 0.95, anaerobic–aerobic 0.98
PLANT COST (on every waste stream, OSBL)
hydraulic = 70 000 · (V_waste/1000)^0.75
COD capital = hydraulic · (m − 1)
installed × 3.0
opex /m³ = 2.5 kWh · price + $1.50 chemicals + $0.80 labour + surcharge
COD tier ceiling mg/L m surcharge $/m³
low 500 1.0 0
medium 2 000 1.5 1.5
high 10 000 2.5 4.0
very high 50 000 4.0 8.0 (log-linear between tiers)
- Exponent n
- 0.75
- Base cost
- $70k at 1,000 L/h
- Repeat-unit exponent
- 0.9
- Anchor grade
- commodity_bulk (grade-independent)
- Installation factor
- 2.2