MaximaLabs
All unit operations

TFF / UF-DF simulation

feed -> retentate (concentrated) + permeate

Governing equations

The exact equations the solver works for a tff / uf-df — the same math shown in the app's "Theory" panel, not a black box.

J=kln ⁣(cwcb)=ΔPΔπ(cw)μRm(solved together)J = k\,\ln\!\left(\frac{c_w}{c_b}\right) = \frac{\Delta P - \Delta\pi(c_w)}{\mu R_m}\quad(\text{solved together})
π(c)=RTcM(1+A2c+A3c2)\pi(c) = \frac{RTc}{M}\left(1 + A_2 c + A_3 c^2\right)
cc0=eN(1σ)(diafiltration, N diavolumes)\frac{c}{c_0} = e^{-N(1-\sigma)}\quad(\text{diafiltration, } N \text{ diavolumes})
JJ
permeate flux [m/s]
kk
mass-transfer coefficient [m/s]
cwc_w
wall concentration [kg/m^3]
cbc_b
bulk concentration [kg/m^3]
ΔP\Delta P
transmembrane pressure [Pa]
Δπ\Delta\pi
osmotic-pressure difference [Pa]
μ\mu
viscosity [Pa.s]
RmR_m
membrane resistance [1/m]
MM
product molar mass [kg/mol]
A2,A3A_2, A_3
second and third virial coefficients (measured)
NN
diavolumes
σ\sigma
rejection of the washed species (0 = free passage)

Parameters

product [component id the membrane retains], product_molar_mass [kg/mol, e.g. 148 for a 148 kDa mAb]; a concentration target — final_concentration [kg/m^3] or concentration_factor [x fold]. Optional: rejection [default 1.0 for the product], rejections [{component: 0-1} for the rest, default 0 so buffer salts pass], tmp [Pa], mass_transfer_coefficient [m/s, set by your crossflow], viscosity, membrane_resistance [1/m], a2/a3 [virial coefficients, measured for your protein in your buffer], c_gel, area [m^2] + batch_time [s] to report the step time, diavolumes + salt_rejection for a diafiltration.

Example flowsheets that use it

Stop fighting legacy software. Build your first flowsheet in 60 seconds.