Nanofiltration (NF) membranes have pores only 1–2 nm across, so rejection is set by two independent mechanisms acting together on every solute that reaches a pore mouth — this is the qualitative picture behind the Donnan-Steric Pore Model (Bowen & Mukhtar, 1996).
Steric partitioning (Ferry, 1936):
λ = r_solute / r_pore
Φ_steric = (1−λ)² · [2−(1−λ)²] for λ < 1, else 0
Donnan (charge) exclusion:
Φ_charge = exp(−z · σ)
z = solute valence (signed), σ = fixed membrane charge term
(co-ions of the membrane's fixed charge are repelled; counter-ions pass freely)
Pass probability at the membrane face:
P_pass = Φ_steric · min(1, Φ_charge)
- Pore radius — shrinks λ for every species; once r_solute > r_pore a species is sterically excluded outright (Φ_steric = 0).
- Fixed surface charge — most real NF membranes (e.g. polyamide thin-film composite) carry a negative fixed charge. This slider sets its magnitude: anions (co-ions) see rising Donnan exclusion, and it grows with the square of valence, which is exactly why SO₄²⁻ is rejected far more strongly than Cl⁻ in real seawater/brackish NF trains, even though the two ions are similar in size.
- Applied pressure — scales the convective velocity carrying solutes toward the membrane (higher pressure → higher water flux through the pores, per Darcy's law); it does not change which species are rejected, only how fast attempts happen.
- Rejected particles are reflected back into the feed channel (a simplified stand-in for concentration polarization building up at the membrane face); passed particles continue into the permeate side.
This is why nanofiltration sits between ultrafiltration (size-only) and reverse osmosis (rejects almost everything): its pore size and its fixed charge together give it selectivity that plain sieving cannot — used industrially for water softening, dye/salt separation, and selective removal of multivalent ions.